92 lines
2.8 KiB
JavaScript
92 lines
2.8 KiB
JavaScript
// $Id$
|
|
(function ($) {
|
|
|
|
/**
|
|
* Retrieves the summary for the first element.
|
|
*/
|
|
$.fn.getSummary = function () {
|
|
var callback = this.data('summaryCallback');
|
|
return (this[0] && callback) ? $.trim(callback(this[0])) : '';
|
|
};
|
|
|
|
/**
|
|
* Sets the summary for all matched elements.
|
|
*
|
|
* @param callback
|
|
* Either a function that will be called each time the summary is
|
|
* retrieved or a string (which is returned each time).
|
|
*/
|
|
$.fn.setSummary = function (callback) {
|
|
var that = this;
|
|
|
|
// To facilitate things, the callback should always be a function. If it's
|
|
// not, we wrap it into an anonymous function which just returns the value.
|
|
if (typeof callback != 'function') {
|
|
var val = callback;
|
|
callback = function () { return val; };
|
|
}
|
|
|
|
return this
|
|
.data('summaryCallback', callback)
|
|
// To prevent duplicate events, the handlers are first removed and then
|
|
// (re-)added.
|
|
.unbind('formUpdated.summary')
|
|
.bind('formUpdated.summary', function () {
|
|
that.trigger('summaryUpdated');
|
|
})
|
|
// The actual summaryUpdated handler doesn't fire when the callback is
|
|
// changed, so we have to do this manually.
|
|
.trigger('summaryUpdated');
|
|
};
|
|
|
|
/**
|
|
* Sends a 'formUpdated' event each time a form element is modified.
|
|
*/
|
|
Drupal.behaviors.formUpdated = {
|
|
attach: function (context) {
|
|
// These events are namespaced so that we can remove them later.
|
|
var events = 'change.formUpdated click.formUpdated blur.formUpdated keyup.formUpdated';
|
|
$(context)
|
|
// Since context could be an input element itself, it's added back to
|
|
// the jQuery object and filtered again.
|
|
.find(':input').andSelf().filter(':input')
|
|
// To prevent duplicate events, the handlers are first removed and then
|
|
// (re-)added.
|
|
.unbind(events).bind(events, function () {
|
|
$(this).trigger('formUpdated');
|
|
});
|
|
}
|
|
};
|
|
|
|
Drupal.behaviors.multiselectSelector = {
|
|
attach: function (context, settings) {
|
|
// Automatically selects the right radio button in a multiselect control.
|
|
$('.multiselect select:not(.multiselectSelector-processed)', context)
|
|
.addClass('multiselectSelector-processed').change(function () {
|
|
$('.multiselect input:radio[value="' + this.id.substr(5) + '"]')
|
|
.attr('checked', true);
|
|
});
|
|
}
|
|
};
|
|
|
|
|
|
/**
|
|
* Automatically display the guidelines of the selected text format.
|
|
*/
|
|
Drupal.behaviors.filterGuidelines = {
|
|
attach: function (context) {
|
|
$('.filter-guidelines:not(.filter-guidelines-processed)', context)
|
|
.addClass('filter-guidelines-processed')
|
|
.find('label').hide()
|
|
.parents('.filter-wrapper').find('select.filter-list')
|
|
.bind('change', function () {
|
|
$(this).parents('.filter-wrapper')
|
|
.find('.filter-guidelines-item').hide()
|
|
.siblings('#filter-guidelines-' + this.value).show();
|
|
})
|
|
.change();
|
|
}
|
|
};
|
|
|
|
})(jQuery);
|