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