ক্যালেন্ডার পপআপে ক্লিক করা যেতে পারে এমন দিনগুলি কাস্টমাইজ করুন


10

আমি ফর্ম এপিআই দিয়ে ড্রুপাল 7 এ একটি ফর্ম তৈরি করছি। এখনই, আমি নিম্নলিখিত কোড সহ একটি সাধারণ ক্যালেন্ডার ইনপুট ফিল্ড তৈরি করতে পারি:

   $form['services_tab']['schedule_datepicker'] = array(
    '#title' => t('Pick the desired date'),
    '#type' => 'date_popup',
    '#date_year_range' => '0:0',
    '#date_format' => 'Y-m-d',
    '#prefix' => '<div id="datepicker-schedule">',
    '#suffix' => '</div>',
  );

এখনই আমি সুন্দর ক্যালেন্ডার পপআপ উপস্থিত হতে পারি can আমি যা অর্জনের চেষ্টা করছি তা হ'ল একটি নিয়মের ভিত্তিতে নির্দিষ্ট তারিখগুলি সক্ষম বা অক্ষম করে: সমস্ত শনিবার এবং রবিবার অক্ষম করে; বা জাতীয় ছুটির তালিকার ভিত্তিতে নির্দিষ্ট তারিখগুলি থেকে ক্লিকের রাষ্ট্রটি সরিয়ে দিন ...

এটি কি এমন কিছু যা পিএইচপি কোডিংয়ের মাধ্যমে অর্জন করা যায়, বা এটি jQuery দিয়ে করা দরকার? যদি জিকিউরির সমাধান হয় তবে আমি কীভাবে এটি করব সে সম্পর্কে আমি কোনও ইঙ্গিতকে প্রশংসা করব ... ক্যালেন্ডারটি একটি টেবিল, তবে টেবিলের ঘরে একটি আইডি বা এমন কিছু নেই যা কোনও নিয়মের ভিত্তিতে সেগুলি খুঁজে পেতে এবং অক্ষম করতে আমাকে সহায়তা করতে পারে। ..

ধন্যবাদ.


1
এই "[সপ্তাহান্তে কীভাবে অক্ষম করবেন] [1]" উত্তর আপনাকে সাপ্তাহিক ছুটির দিন এবং কিছু দিন অক্ষম করার জন্য সহায়তা করবে। [1]: stackoverflow.com/questions/501943/...
Nikit

উত্তর:


8

আপনি পিএইচপি থেকে তারিখ-পপআপ উপাদানগুলিতে '# তারিখপিকার_প্যাশনস' কী দ্বারা কিছু তারিখপিকার বিকল্পগুলি পাস করতে পারেন :

<?php
$form['date'] = array(
  '#title' => t('Pick the desired date'),
  '#type' => 'date_popup',
  '#datepicker_options' => array(
    'minDate' => 0,
  ),
);

এই পদ্ধতির সাহায্যে আপনি প্রায় কোনও বিকল্প পাস করতে পারেন তবে যেগুলি beforeShowDayনিকট দ্বারা রেফারেন্স করা উত্তর অনুসারে সাপ্তাহিক ছুটি বা ছুটির দিনগুলি সীমাবদ্ধ করার জন্য প্রয়োজনীয় হিসাবে একটি ফাংশনকে মান হিসাবে গ্রহণ করে: /programming/501943/can- -jQuery-ui এ-datepicker-করা বানানো টু-অক্ষম-শনিবার-এবং-রবিবার-এবং-holid

সুতরাং, জাভাস্ক্রিপ্ট প্রয়োজনীয়। প্রথমে আপনাকে আপনার মডিউল কোড থেকে একটি কাস্টম জেএস ফাইল অন্তর্ভুক্ত করতে হবে:

<?php
drupal_add_js(drupal_get_path('module', 'FOO') . '/FOO.js');

এবং FOO.jsআমাদের নিজস্ব বিকল্পগুলির সাথে তারিখ_পপআপ মডিউল দ্বারা সেট সেটিংস প্রসারিত করতে কিছু কোড সরবরাহ করুন।

এখানে একটি উদাহরণ যা পৃষ্ঠায় সমস্ত ডেটপিকার উইজেটগুলির উইকএন্ড নিষ্ক্রিয় করতে মৌলিক বিকল্পটি যুক্ত করে:

(function ($) {
Drupal.behaviors.FOO = {
  attach: function (context) {
    for (var id in Drupal.settings.datePopup) {
      Drupal.settings.datePopup[id].settings.beforeShowDay = $.datepicker.noWeekends;
    }
  }
};
})(jQuery);

পাঠকদের জন্য অনুশীলন হিসাবে ছুটির দিনগুলি বাড়ানো :)

নোট: তিন occurences FOOআমার উদাহরণ একই আক্ষরিক হতে অর্থাত দরকার নেই: যদি আপনি প্রদান করতে পারেন BAZমধ্যে আচরণ BAR.jsথেকে FOO.module

আপডেট: কাস্টম দিনের প্রাপ্যতার জন্য উপরের প্রসারিত করতে, পরামিতিগুলির দ্বারা প্রাপ্ত দিনের জন্য সত্য / মিথ্যা প্রত্যাবর্তন করে কেবল একটি ফাংশন যুক্ত করুন।

(function ($) {
Drupal.behaviors.FOO = {
  attach: function (context) {
    for (var id in Drupal.settings.datePopup) {
      Drupal.settings.datePopup[id].settings.beforeShowDay = checkDate;
    }
  }
};

function checkDate(date) {
  if ((date.getDate() % 2) == 0) {
    return [false, 'Even days not available'];
  }
  else {
    return [true, 'Odd days are fine'];
  }
}
})(jQuery);

আপনি তারিখ সীমাবদ্ধতা মডিউলটিতে আরও একটি সম্পূর্ণ উদাহরণ খুঁজে পেতে পারেন ।


ধন্যবাদ, জোনহাটন! আমি সাফল্যের সাথে মিনিটেট সেট করেছি এবং এটি বিগত সমস্ত দিন অক্ষম করে। এটি আমার জন্য দুর্দান্ত শুরু। আমি অবাক হয়েছি যে আমি যদি একটি সর্বোচ্চ তারিখের মতো কিছু সেট করতে পারি, কারণ আমি কেবল 15 দিনের সক্ষমতা রাখতে চাই। আমি দেখতে পাচ্ছি যে একটি 'fromTo' বৈশিষ্ট্য রয়েছে তবে এটি কী করবে সে সম্পর্কে কোনও ধারণা নেই। আমার ধারণা হ'ল অতীতের সমস্ত তারিখগুলি (সম্পন্ন) এবং ভবিষ্যতে সমস্ত তারিখগুলি (এখন থেকে প্রায় 15 দিন) (অক্ষম করা) to মাঝখানে, আমি খোলার কিছু দিন ব্যক্তিগতভাবে কীভাবে অক্ষম করতে হয় তা দেখতে তারিখ পিকির জাভাস্ক্রিপ্ট ডকুমেন্টেশনগুলি যাচাই করব।
মার্কোস বুয়ার্ক

1
হ্যাঁ, একটি সর্বাধিক তারিখও রয়েছে: api.jqueryui.com/datepicker/#option-maxDate
jonhattan

ধন্যবাদ, কোনও কারণে, যখন আমি ডেট_পপআপ ফিল্ডের ডকুমেন্টেশন সন্ধান করছিলাম তখন আমি সর্বোচ্চ তারিখ বিকল্পের তথ্য খুঁজে পাইনি। এটি আমার পক্ষে কাজ করেছে এবং ক্যালেন্ডারকে সর্বাধিক তারিখের মধ্যে সীমাবদ্ধ করেছে: '#datepicker_options' => অ্যারে ('minDate' => 0, 'সর্বোচ্চ তারিখ' => 30,),
মার্কোস বুয়ার্ক

জোনহাটন, আমি আবার জিজ্ঞাসা করে দুঃখিত। আমি একটি কাস্টম ফাংশন সম্পাদন করার চেষ্টা করে আমার চুল টানছি। আমি আপনার মডেলটি বাস্তবায়ন করেছি এবং এটি আমার পক্ষে দুর্দান্ত কাজ করে। তবে এখন আমি কেবল নির্দিষ্ট তারিখের অনুমতি দেওয়ার জন্য একটি কাস্টম ফাংশন সম্পাদন করতে চাই। আমি দেখতে পাচ্ছি যে আপনি ছুটির পাঠকদের জন্য অনুশীলন হিসাবে পরামর্শ দিয়েছেন ;-) এই সমস্যাটি সমাধান করার চেষ্টা করে এই পাঠক প্রায় পাগল। যদি এটি আপনার পক্ষে বিশাল অতিরিক্ত কাজ না হয় তবে আপনি কীভাবে সমাধান করবেন তা পোস্ট করার বিষয়ে কি আপত্তি আছে? বিশদ সম্পর্কে মাথা ঘামান না, কাস্টমফংশন (তারিখ) এ কল করার জন্য আমার কেবল সামগ্রিক সহায়তা দরকার। ধন্যবাদ!
মার্কোস বুয়ার্ক

মার্কোস, আমি আমার উত্তরটি একটি কাস্টম ফাংশন ব্যবহারের সাধারণ উদাহরণ সহ আপডেট করেছি।
জনহট্টান

0

আমি তারিখ সীমাবদ্ধতা মডিউল ব্যবহার করেছি। স্থির তারিখ, আপেক্ষিক তারিখ ইত্যাদির মতো প্যারামিটারের সংখ্যার উপর তারিখ সীমাবদ্ধ করার জন্য এটি সরবরাহ এবং বিকল্পটি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.