diff --git a/core/includes/form.inc b/core/includes/form.inc index 7ff1e24..84bd974 100644 --- a/core/includes/form.inc +++ b/core/includes/form.inc @@ -3025,7 +3025,8 @@ function theme_form_datetime($variables) { * - text: No HTML5 element, use a normal text field * - none: Do not display a date element * - #date_date_callbacks: Array of optional callbacks for the date element. - * Can be used to add a jQuery datepicker. + * Can be used to add a jQuery datepicker, for instance. Drupal provides the + * 'datetime_jquery_datepicker_callback' as one possible choice. * - #date_time_element: The time element. * Options are: * - time: Use a HTML5 time element type diff --git a/core/misc/datepicker.js b/core/misc/datepicker.js new file mode 100644 index 0000000..3fef66a --- /dev/null +++ b/core/misc/datepicker.js @@ -0,0 +1,29 @@ +/** + * Attaches the datepicker behavior to all required fields + */ +(function ($) { +Drupal.behaviors.dateTime = { + attach: function (context, settings) { + + var i = document.createElement("input"); + i.setAttribute("type", "date"); + if (i.type == "text") { + // No native date picker support? Use jQueryUI. + for (var id in Drupal.settings.dateTime) { + $(id).bind('focus', Drupal.settings.dateTime[id], function(e) { + if (!$(this).hasClass('date-popup-init')) { + var dateTime = e.data; + $(this) + .datepicker(dateTime) + .addClass('date-popup-init') + $(this).click(function(){ + $(this).focus(); + }); + } + }); + } + } + } +}; +})(jQuery); + diff --git a/core/modules/field/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatepicker.php b/core/modules/field/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatepicker.php index 1c99a9c..12674b8 100644 --- a/core/modules/field/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatepicker.php +++ b/core/modules/field/modules/datetime/lib/Drupal/datetime/Plugin/field/widget/DatetimeDatepicker.php @@ -99,7 +99,7 @@ public function formElement(array $items, $delta, array $element, $langcode, arr '#date_increment' => 1, '#date_date_format'=> $date_format, '#date_date_element' => $date_type, - '#date_date_callbacks' => array(), + '#date_date_callbacks' => array('datetime_jquery_datepicker_callback'), '#date_time_format' => $time_format, '#date_time_element' => $time_type, '#date_time_callbacks' => array(), diff --git a/core/modules/system/system.module b/core/modules/system/system.module index 26891d1..d4111e2 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -491,7 +491,7 @@ function system_element_info() { '#theme_wrappers' => array('form_element'), '#date_date_format' => variable_get('date_format_html_date', 'Y-m-d'), '#date_date_element' => 'date', - '#date_date_callbacks' => array(), + '#date_date_callbacks' => array('datetime_jquery_datepicker_callback'), '#date_time_format' => variable_get('date_format_html_time', 'H:i:s'), '#date_time_element' => 'time', '#date_time_callbacks' => array(), @@ -1969,6 +1969,21 @@ function system_library_info() { ), ); + $libraries['drupal.datepicker'] = array( + 'title' => 'Drupal datepicker', + 'version' => VERSION, + 'js' => array( + 'core/misc/datepicker.js' => array(), + ), + 'dependencies' => array( + array('system', 'jquery'), + array('system', 'drupal'), + array('system', 'drupalSettings'), + array('system', 'jquery.once'), + array('system', 'jquery.ui.datepicker'), + ), + ); + $libraries['drupal.system'] = array( 'title' => 'System', 'version' => VERSION,