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