82 lines
2.4 KiB
JavaScript
82 lines
2.4 KiB
JavaScript
(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);
|