diff --git a/js/scheduler_default_time.js b/js/scheduler_default_time.js new file mode 100644 index 0000000..3bf87a2 --- /dev/null +++ b/js/scheduler_default_time.js @@ -0,0 +1,32 @@ +/** + * @file + * JQuery to set default time for DateTime Widget. + */ + +(function ($, drupalSettings) { + + 'use strict'; + + /** + * Provide default time if a defaultSchedulerTime is set. + * + * DefaultSchedulerTime is set on a backend, + * if default time is set and + * publishing/un-publishing is required. + * However, here we need to add additional check, if + * a value is empty (so the node is new). + */ + Drupal.behaviors.setdefaultSchedulerTime = { + attach: function (context) { + if (typeof drupalSettings.defaultSchedulerTime !== "undefined") { + var operations = ["publish", "unpublish"]; + operations.forEach(function (value) { + var element = $("input#edit-" + value + "-on-0-value-time", context); + if (!element.val() && element.prop("required")) { + element.val(drupalSettings.defaultSchedulerTime); + } + }); + } + } + }; +})(jQuery, drupalSettings); diff --git a/scheduler.info.yml b/scheduler.info.yml index f11b4b0..dce2939 100644 --- a/scheduler.info.yml +++ b/scheduler.info.yml @@ -13,3 +13,4 @@ test_dependencies: libraries: - scheduler/admin - vertical-tabs + - default-time diff --git a/scheduler.libraries.yml b/scheduler.libraries.yml index 87143ee..861dca8 100644 --- a/scheduler.libraries.yml +++ b/scheduler.libraries.yml @@ -4,3 +4,8 @@ vertical-tabs: dependencies: - core/jquery - core/drupal.ajax +default-time: + js: + js/scheduler_default_time.js: {} + dependencies: + - core/jquery diff --git a/scheduler.module b/scheduler.module index 9f86b4d..1517e7f 100644 --- a/scheduler.module +++ b/scheduler.module @@ -133,9 +133,19 @@ function scheduler_form_node_form_alter(&$form, FormStateInterface $form_state) // Show the default time so users know what they will get if they do not // enter a time. $default_time = strtotime($config->get('default_time')); + $default_formatted_time = $date_formatter->format($default_time, 'custom', 'H:i:s'); $descriptions['default'] = t('The default time is @default_time.', [ - '@default_time' => $date_formatter->format($default_time, 'custom', 'H:i:s'), + '@default_time' => $default_formatted_time, ]); + + // Pass default time to the drupalSettings if publishing/unpublishing + // is required. + if ($publishing_required || $unpublishing_required) { + + // Attach the javascript for the default time. + $form['scheduler_settings']['#attached']['library'][] = 'scheduler/default-time'; + $form['scheduler_settings']['#attached']['drupalSettings']['defaultSchedulerTime'] = $default_formatted_time; + } } else { $descriptions['format'] = t('Enter a date and time.');