(function ($) { Drupal.behaviors.dateAdmin = {}; Drupal.behaviors.dateAdmin.attach = function (context, settings) { // Remove timezone handling options for fields without hours granularity. var $hour = $('#edit-field-settings-granularity-hour').once('date-admin'); if ($hour.length) { new Drupal.dateAdmin.TimezoneHandler($hour); } }; Drupal.dateAdmin = {}; /** * Constructor for the TimezoneHandler object. * * This object is responsible for showing the timezone handling options dropdown * when the user has chosen to collect hours as part of the date field, and * hiding it otherwise. */ Drupal.dateAdmin.TimezoneHandler = function ($checkbox) { this.$checkbox = $checkbox; this.$dropdown = $('#edit-field-settings-tz-handling'); this.$timezoneDiv = $('.form-item-field-settings-tz-handling'); // Store the initial value of the timezone handling dropdown. this.storeTimezoneHandling(); // Toggle the timezone handling section when the user clicks the "Hour" // checkbox. this.$checkbox.bind('click', $.proxy(this.clickHandler, this)); // Trigger the click handler so that if the checkbox is unchecked on initial // page load, the timezone handling section will be hidden. this.clickHandler(); }; /** * Event handler triggered when the user clicks the "Hour" checkbox. */ Drupal.dateAdmin.TimezoneHandler.prototype.clickHandler = function () { if (this.$checkbox.is(':checked')) { this.restoreTimezoneHandlingOptions(); } else { this.hideTimezoneHandlingOptions(); } }; /** * Hide the timezone handling options section of the form. */ Drupal.dateAdmin.TimezoneHandler.prototype.hideTimezoneHandlingOptions = function () { this.storeTimezoneHandling(); this.$dropdown.val('none'); this.$timezoneDiv.hide(); }; /** * Show the timezone handling options section of the form. */ Drupal.dateAdmin.TimezoneHandler.prototype.restoreTimezoneHandlingOptions = function () { var val = this.getTimezoneHandling(); this.$dropdown.val(val); this.$timezoneDiv.show(); }; /** * Store the current value of the timezone handling dropdown. */ Drupal.dateAdmin.TimezoneHandler.prototype.storeTimezoneHandling = function () { this._timezoneHandling = this.$dropdown.val(); }; /** * Return the stored value of the timezone handling dropdown. */ Drupal.dateAdmin.TimezoneHandler.prototype.getTimezoneHandling = function () { return this._timezoneHandling; }; })(jQuery);