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);
 |