107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.3 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 self = 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 () {
 | 
						|
      self.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', context).once('multiselect').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', context).once('filter-guidelines')
 | 
						|
      .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();
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Prepopulate form fields with information from the visitor cookie.
 | 
						|
 */
 | 
						|
Drupal.behaviors.fillUserInfoFromCookie = {
 | 
						|
  attach: function (context, settings) {
 | 
						|
    $('form.user-info-from-cookie').once('user-info-from-cookie', function () {
 | 
						|
      var formContext = this;
 | 
						|
      $.each(['name', 'mail', 'homepage'], function () {
 | 
						|
        var $element = $('[name=' + this + ']', formContext);
 | 
						|
        var cookie = $.cookie('Drupal.visitor.' + this);
 | 
						|
        if ($element.length && cookie) {
 | 
						|
          $element.val(cookie);
 | 
						|
        }
 | 
						|
      });
 | 
						|
    });
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
})(jQuery);
 |