root / drupal7 / misc / form.js @ 5a4b9049
1 | 85ad3d82 | Assos Assos | (function ($) { |
---|---|---|---|
2 | |||
3 | /**
|
||
4 | * Retrieves the summary for the first element.
|
||
5 | */
|
||
6 | $.fn.drupalGetSummary = function () { |
||
7 | var callback = this.data('summaryCallback'); |
||
8 | return (this[0] && callback) ? $.trim(callback(this[0])) : ''; |
||
9 | }; |
||
10 | |||
11 | /**
|
||
12 | * Sets the summary for all matched elements.
|
||
13 | *
|
||
14 | * @param callback
|
||
15 | * Either a function that will be called each time the summary is
|
||
16 | * retrieved or a string (which is returned each time).
|
||
17 | */
|
||
18 | $.fn.drupalSetSummary = function (callback) { |
||
19 | var self = this; |
||
20 | |||
21 | // To facilitate things, the callback should always be a function. If it's
|
||
22 | // not, we wrap it into an anonymous function which just returns the value.
|
||
23 | if (typeof callback != 'function') { |
||
24 | var val = callback;
|
||
25 | callback = function () { return val; }; |
||
26 | } |
||
27 | |||
28 | return this |
||
29 | .data('summaryCallback', callback)
|
||
30 | // To prevent duplicate events, the handlers are first removed and then
|
||
31 | // (re-)added.
|
||
32 | .unbind('formUpdated.summary')
|
||
33 | .bind('formUpdated.summary', function () { |
||
34 | self.trigger('summaryUpdated');
|
||
35 | }) |
||
36 | // The actual summaryUpdated handler doesn't fire when the callback is
|
||
37 | // changed, so we have to do this manually.
|
||
38 | .trigger('summaryUpdated');
|
||
39 | }; |
||
40 | |||
41 | /**
|
||
42 | * Sends a 'formUpdated' event each time a form element is modified.
|
||
43 | */
|
||
44 | Drupal.behaviors.formUpdated = { |
||
45 | attach: function (context) { |
||
46 | // These events are namespaced so that we can remove them later.
|
||
47 | var events = 'change.formUpdated click.formUpdated blur.formUpdated keyup.formUpdated'; |
||
48 | $(context)
|
||
49 | // Since context could be an input element itself, it's added back to
|
||
50 | // the jQuery object and filtered again.
|
||
51 | .find(':input').andSelf().filter(':input') |
||
52 | // To prevent duplicate events, the handlers are first removed and then
|
||
53 | // (re-)added.
|
||
54 | .unbind(events).bind(events, function () {
|
||
55 | $(this).trigger('formUpdated'); |
||
56 | }); |
||
57 | } |
||
58 | }; |
||
59 | |||
60 | /**
|
||
61 | * Prepopulate form fields with information from the visitor cookie.
|
||
62 | */
|
||
63 | Drupal.behaviors.fillUserInfoFromCookie = { |
||
64 | attach: function (context, settings) { |
||
65 | $('form.user-info-from-cookie').once('user-info-from-cookie', function () { |
||
66 | var formContext = this; |
||
67 | $.each(['name', 'mail', 'homepage'], function () { |
||
68 | var $element = $('[name=' + this + ']', formContext); |
||
69 | var cookie = $.cookie('Drupal.visitor.' + this); |
||
70 | if ($element.length && cookie) { |
||
71 | $element.val(cookie);
|
||
72 | } |
||
73 | }); |
||
74 | }); |
||
75 | } |
||
76 | }; |
||
77 | |||
78 | })(jQuery); |