Saltar al contenido

Drupal: personalice los días en los que se puede hacer clic en una ventana emergente de Calendario

La guía paso a paso o código que verás en este artículo es la resolución más fácil y efectiva que encontramos a tus dudas o problema.

Solución:

Puede pasar algunas opciones de selector de fecha de php al elemento date_popup a través de ‘#datepicker_options’ key:

 t('Pick the desired date'),
  '#type' => 'date_popup',
  '#datepicker_options' => array(
    'minDate' => 0,
  ),
);

Con este método puedes pasar casi cualquier opción menos aquellas que aceptan una función como valor, como beforeShowDayel necesario para restringir fines de semana o días festivos según la respuesta a la que hace referencia Nikit: https://stackoverflow.com/questions/501943/can-the-jquery-ui-datepicker-be-made-to-disable-saturdays-and -domingos-y-festivos

Por lo tanto, se requiere javascript. Primero debe incluir un archivo js personalizado de su código de módulo:

y proporcionar algo de código en FOO.js para ampliar la configuración establecida por el módulo date_popup con nuestras propias opciones.

Aquí hay un ejemplo que agrega la opción básica para deshabilitar los fines de semana para todos los widgets de selección de fechas en la página:

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

Extender a vacaciones se deja como ejercicio al lector 🙂

Nota: las tres apariciones de FOO en mis ejemplos no necesita ser el mismo literal, es decir: puede proporcionar un BAZ comportamiento en BAR.js de FOO.module.

Actualización: para extender lo anterior para la disponibilidad de días personalizados, solo agregue una función que regrese true/false para el día recibido por parámetros.

(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);

Puede encontrar un ejemplo más completo en el módulo Restricciones de fecha.

Reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *