Иногда возникает необходимость сделать datepicker в exposed фильтре вьюва для страндартного поля у любого entity - created или changed. В друпале по дефолту такие поля можно сделать только у поля date используя виджет date_popup (для этого нужен модуль date и date_popup).
Для того чтобы сделать datepicker у стандартных полей, нужно:
Параметры я частично позаимствовал из модуля date_popup.
dateFormat используется такой, потому что в таком формате дату принимает стандартный вьюс фильтр.
Еще есть различные колбеки, например beforeShow, в которых можно добавить стили или изменить позиционирование datepicker. Для дополнительной информации лучше посетить http://jqueryui.com/datepicker/
(function ($) {
Drupal.behaviors.initDatepicker = {
attach: function (context, settings) {
// Init date picker.
$(context).find('#edit-created').once('my-datepicker', function () {
$(this).datepicker({
autoSize: true,
changeMonth: true,
changeYear: true,
autoPopUp: 'focus',
closeAtTop: false,
dateFormat: 'yy-mm-dd 00:00:00',
disabled: false,
firstDay: 1,
prevText: '',
nextText: '',
closeText: '',
showSpeed: 'slow',
buttonImageOnly: true,
beforeShow: function (input, inst) {
var $datepicker = inst.dpDiv;
setTimeout(function () {
$datepicker.css('z-index', 30000);
}, 0);
}}
);
});
}
};
})(jQuery);
Для того чтобы сделать datepicker у стандартных полей, нужно:
- Создать во вьюве фильтр для created или changed.
- Сделать фильтр exposed.
- Подключить jquery ui datepicker, он уже лежит в друпале в папке misc/ui. Это можно сделать используя hook_library(). Например drupal_add_library('system', 'ui.datepicker');
- Создать и подключить js, в котором вы реализуете behaviour с вызовом datepicker для вышего поля.
Параметры я частично позаимствовал из модуля date_popup.
dateFormat используется такой, потому что в таком формате дату принимает стандартный вьюс фильтр.
Еще есть различные колбеки, например beforeShow, в которых можно добавить стили или изменить позиционирование datepicker. Для дополнительной информации лучше посетить http://jqueryui.com/datepicker/
(function ($) {
Drupal.behaviors.initDatepicker = {
attach: function (context, settings) {
// Init date picker.
$(context).find('#edit-created').once('my-datepicker', function () {
$(this).datepicker({
autoSize: true,
changeMonth: true,
changeYear: true,
autoPopUp: 'focus',
closeAtTop: false,
dateFormat: 'yy-mm-dd 00:00:00',
disabled: false,
firstDay: 1,
prevText: '',
nextText: '',
closeText: '',
showSpeed: 'slow',
buttonImageOnly: true,
beforeShow: function (input, inst) {
var $datepicker = inst.dpDiv;
setTimeout(function () {
$datepicker.css('z-index', 30000);
}, 0);
}}
);
});
}
};
})(jQuery);
Комментариев нет:
Отправить комментарий