danielebarchiesi@0
|
1 (function ($) {
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * Webform node form interface enhancments.
|
danielebarchiesi@0
|
5 */
|
danielebarchiesi@0
|
6
|
danielebarchiesi@0
|
7 Drupal.behaviors.webformAdmin = {};
|
danielebarchiesi@0
|
8 Drupal.behaviors.webformAdmin.attach = function(context) {
|
danielebarchiesi@0
|
9 // Apply special behaviors to fields with default values.
|
danielebarchiesi@0
|
10 Drupal.webform.defaultValues(context);
|
danielebarchiesi@0
|
11 // On click or change, make a parent radio button selected.
|
danielebarchiesi@0
|
12 Drupal.webform.setActive(context);
|
danielebarchiesi@0
|
13 // Update the template select list upon changing a template.
|
danielebarchiesi@0
|
14 Drupal.webform.updateTemplate(context);
|
danielebarchiesi@0
|
15 // Select all link for file extensions.
|
danielebarchiesi@0
|
16 Drupal.webform.selectCheckboxesLink(context);
|
danielebarchiesi@0
|
17 // Enhance the normal tableselect.js file to support indentations.
|
danielebarchiesi@0
|
18 Drupal.webform.tableSelectIndentation(context);
|
danielebarchiesi@0
|
19 }
|
danielebarchiesi@0
|
20
|
danielebarchiesi@0
|
21 Drupal.webform = Drupal.webform || {};
|
danielebarchiesi@0
|
22
|
danielebarchiesi@0
|
23 Drupal.webform.defaultValues = function(context) {
|
danielebarchiesi@0
|
24 var $fields = $('.webform-default-value:not(.error)', context);
|
danielebarchiesi@0
|
25 var $forms = $fields.parents('form:first');
|
danielebarchiesi@0
|
26 $fields.each(function() {
|
danielebarchiesi@0
|
27 this.defaultValue = $(this).attr('rel');
|
danielebarchiesi@0
|
28 if (this.value != this.defaultValue) {
|
danielebarchiesi@0
|
29 $(this).removeClass('webform-default-value');
|
danielebarchiesi@0
|
30 }
|
danielebarchiesi@0
|
31 $(this).focus(function() {
|
danielebarchiesi@0
|
32 if (this.value == this.defaultValue) {
|
danielebarchiesi@0
|
33 this.value = '';
|
danielebarchiesi@0
|
34 $(this).removeClass('webform-default-value');
|
danielebarchiesi@0
|
35 }
|
danielebarchiesi@0
|
36 });
|
danielebarchiesi@0
|
37 $(this).blur(function() {
|
danielebarchiesi@0
|
38 if (this.value == '') {
|
danielebarchiesi@0
|
39 $(this).addClass('webform-default-value');
|
danielebarchiesi@0
|
40 this.value = this.defaultValue;
|
danielebarchiesi@0
|
41 }
|
danielebarchiesi@0
|
42 });
|
danielebarchiesi@0
|
43 });
|
danielebarchiesi@0
|
44
|
danielebarchiesi@0
|
45 // Clear all the form elements before submission.
|
danielebarchiesi@0
|
46 $forms.submit(function() {
|
danielebarchiesi@0
|
47 $fields.focus();
|
danielebarchiesi@0
|
48 });
|
danielebarchiesi@0
|
49 };
|
danielebarchiesi@0
|
50
|
danielebarchiesi@0
|
51 Drupal.webform.setActive = function(context) {
|
danielebarchiesi@0
|
52 var setActive = function(e) {
|
danielebarchiesi@0
|
53 $('.form-radio', $(this).parent().parent()).attr('checked', true);
|
danielebarchiesi@0
|
54 e.preventDefault();
|
danielebarchiesi@0
|
55 };
|
danielebarchiesi@0
|
56 $('.webform-set-active', context).click(setActive).change(setActive);
|
danielebarchiesi@0
|
57 };
|
danielebarchiesi@0
|
58
|
danielebarchiesi@0
|
59 Drupal.webform.updateTemplate = function(context) {
|
danielebarchiesi@0
|
60 var defaultTemplate = $('#edit-templates-default').val();
|
danielebarchiesi@0
|
61 var $templateSelect = $('#webform-template-fieldset select#edit-template-option', context);
|
danielebarchiesi@0
|
62 var $templateTextarea = $('#webform-template-fieldset textarea:visible', context);
|
danielebarchiesi@0
|
63
|
danielebarchiesi@0
|
64 var updateTemplateSelect = function() {
|
danielebarchiesi@0
|
65 if ($(this).val() == defaultTemplate) {
|
danielebarchiesi@0
|
66 $templateSelect.val('default');
|
danielebarchiesi@0
|
67 }
|
danielebarchiesi@0
|
68 else {
|
danielebarchiesi@0
|
69 $templateSelect.val('custom');
|
danielebarchiesi@0
|
70 }
|
danielebarchiesi@0
|
71 }
|
danielebarchiesi@0
|
72
|
danielebarchiesi@0
|
73 var updateTemplateText = function() {
|
danielebarchiesi@0
|
74 if ($(this).val() == 'default' && $templateTextarea.val() != defaultTemplate) {
|
danielebarchiesi@0
|
75 if (confirm(Drupal.settings.webform.revertConfirm)) {
|
danielebarchiesi@0
|
76 $templateTextarea.val(defaultTemplate);
|
danielebarchiesi@0
|
77 }
|
danielebarchiesi@0
|
78 else {
|
danielebarchiesi@0
|
79 $(this).val('custom');
|
danielebarchiesi@0
|
80 }
|
danielebarchiesi@0
|
81 }
|
danielebarchiesi@0
|
82 }
|
danielebarchiesi@0
|
83
|
danielebarchiesi@0
|
84 $templateTextarea.keyup(updateTemplateSelect);
|
danielebarchiesi@0
|
85 $templateSelect.change(updateTemplateText);
|
danielebarchiesi@0
|
86 }
|
danielebarchiesi@0
|
87
|
danielebarchiesi@0
|
88 Drupal.webform.selectCheckboxesLink = function(context) {
|
danielebarchiesi@0
|
89 function selectCheckboxes() {
|
danielebarchiesi@0
|
90 var group = this.className.replace(/.*?webform-select-link-([^ ]*).*/, '$1');
|
danielebarchiesi@0
|
91 var $checkboxes = $('.webform-select-group-' + group + ' input[type=checkbox]');
|
danielebarchiesi@0
|
92 var reverseCheck = !$checkboxes[0].checked;
|
danielebarchiesi@0
|
93 $checkboxes.each(function() {
|
danielebarchiesi@0
|
94 this.checked = reverseCheck;
|
danielebarchiesi@0
|
95 });
|
danielebarchiesi@0
|
96 $checkboxes.trigger('change');
|
danielebarchiesi@0
|
97 return false;
|
danielebarchiesi@0
|
98 }
|
danielebarchiesi@0
|
99 $('a.webform-select-link', context).click(selectCheckboxes);
|
danielebarchiesi@0
|
100 }
|
danielebarchiesi@0
|
101
|
danielebarchiesi@0
|
102 Drupal.webform.tableSelectIndentation = function(context) {
|
danielebarchiesi@0
|
103 var $tables = $('th.select-all', context).parents('table');
|
danielebarchiesi@0
|
104 $tables.find('input.form-checkbox').change(function() {
|
danielebarchiesi@0
|
105 var $rows = $(this).parents('table:first').find('tr');
|
danielebarchiesi@0
|
106 var row = $(this).parents('tr:first').get(0);
|
danielebarchiesi@0
|
107 var rowNumber = $rows.index(row);
|
danielebarchiesi@0
|
108 var rowTotal = $rows.size();
|
danielebarchiesi@0
|
109 var indentLevel = $(row).find('div.indentation').size();
|
danielebarchiesi@0
|
110 for (var n = rowNumber + 1; n < rowTotal; n++) {
|
danielebarchiesi@0
|
111 if ($rows.eq(n).find('div.indentation').size() <= indentLevel) {
|
danielebarchiesi@0
|
112 break;
|
danielebarchiesi@0
|
113 }
|
danielebarchiesi@0
|
114 $rows.eq(n).find('input.form-checkbox').attr('checked', this.checked);
|
danielebarchiesi@0
|
115 }
|
danielebarchiesi@0
|
116 });
|
danielebarchiesi@0
|
117 }
|
danielebarchiesi@0
|
118
|
danielebarchiesi@0
|
119 })(jQuery);
|