danielebarchiesi@0: (function ($) { danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Webform node form interface enhancments. danielebarchiesi@0: */ danielebarchiesi@0: danielebarchiesi@0: Drupal.behaviors.webformAdmin = {}; danielebarchiesi@0: Drupal.behaviors.webformAdmin.attach = function(context) { danielebarchiesi@0: // Apply special behaviors to fields with default values. danielebarchiesi@0: Drupal.webform.defaultValues(context); danielebarchiesi@0: // On click or change, make a parent radio button selected. danielebarchiesi@0: Drupal.webform.setActive(context); danielebarchiesi@0: // Update the template select list upon changing a template. danielebarchiesi@0: Drupal.webform.updateTemplate(context); danielebarchiesi@0: // Select all link for file extensions. danielebarchiesi@0: Drupal.webform.selectCheckboxesLink(context); danielebarchiesi@0: // Enhance the normal tableselect.js file to support indentations. danielebarchiesi@0: Drupal.webform.tableSelectIndentation(context); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: Drupal.webform = Drupal.webform || {}; danielebarchiesi@0: danielebarchiesi@0: Drupal.webform.defaultValues = function(context) { danielebarchiesi@0: var $fields = $('.webform-default-value:not(.error)', context); danielebarchiesi@0: var $forms = $fields.parents('form:first'); danielebarchiesi@0: $fields.each(function() { danielebarchiesi@0: this.defaultValue = $(this).attr('rel'); danielebarchiesi@0: if (this.value != this.defaultValue) { danielebarchiesi@0: $(this).removeClass('webform-default-value'); danielebarchiesi@0: } danielebarchiesi@0: $(this).focus(function() { danielebarchiesi@0: if (this.value == this.defaultValue) { danielebarchiesi@0: this.value = ''; danielebarchiesi@0: $(this).removeClass('webform-default-value'); danielebarchiesi@0: } danielebarchiesi@0: }); danielebarchiesi@0: $(this).blur(function() { danielebarchiesi@0: if (this.value == '') { danielebarchiesi@0: $(this).addClass('webform-default-value'); danielebarchiesi@0: this.value = this.defaultValue; danielebarchiesi@0: } danielebarchiesi@0: }); danielebarchiesi@0: }); danielebarchiesi@0: danielebarchiesi@0: // Clear all the form elements before submission. danielebarchiesi@0: $forms.submit(function() { danielebarchiesi@0: $fields.focus(); danielebarchiesi@0: }); danielebarchiesi@0: }; danielebarchiesi@0: danielebarchiesi@0: Drupal.webform.setActive = function(context) { danielebarchiesi@0: var setActive = function(e) { danielebarchiesi@0: $('.form-radio', $(this).parent().parent()).attr('checked', true); danielebarchiesi@0: e.preventDefault(); danielebarchiesi@0: }; danielebarchiesi@0: $('.webform-set-active', context).click(setActive).change(setActive); danielebarchiesi@0: }; danielebarchiesi@0: danielebarchiesi@0: Drupal.webform.updateTemplate = function(context) { danielebarchiesi@0: var defaultTemplate = $('#edit-templates-default').val(); danielebarchiesi@0: var $templateSelect = $('#webform-template-fieldset select#edit-template-option', context); danielebarchiesi@0: var $templateTextarea = $('#webform-template-fieldset textarea:visible', context); danielebarchiesi@0: danielebarchiesi@0: var updateTemplateSelect = function() { danielebarchiesi@0: if ($(this).val() == defaultTemplate) { danielebarchiesi@0: $templateSelect.val('default'); danielebarchiesi@0: } danielebarchiesi@0: else { danielebarchiesi@0: $templateSelect.val('custom'); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: var updateTemplateText = function() { danielebarchiesi@0: if ($(this).val() == 'default' && $templateTextarea.val() != defaultTemplate) { danielebarchiesi@0: if (confirm(Drupal.settings.webform.revertConfirm)) { danielebarchiesi@0: $templateTextarea.val(defaultTemplate); danielebarchiesi@0: } danielebarchiesi@0: else { danielebarchiesi@0: $(this).val('custom'); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: $templateTextarea.keyup(updateTemplateSelect); danielebarchiesi@0: $templateSelect.change(updateTemplateText); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: Drupal.webform.selectCheckboxesLink = function(context) { danielebarchiesi@0: function selectCheckboxes() { danielebarchiesi@0: var group = this.className.replace(/.*?webform-select-link-([^ ]*).*/, '$1'); danielebarchiesi@0: var $checkboxes = $('.webform-select-group-' + group + ' input[type=checkbox]'); danielebarchiesi@0: var reverseCheck = !$checkboxes[0].checked; danielebarchiesi@0: $checkboxes.each(function() { danielebarchiesi@0: this.checked = reverseCheck; danielebarchiesi@0: }); danielebarchiesi@0: $checkboxes.trigger('change'); danielebarchiesi@0: return false; danielebarchiesi@0: } danielebarchiesi@0: $('a.webform-select-link', context).click(selectCheckboxes); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: Drupal.webform.tableSelectIndentation = function(context) { danielebarchiesi@0: var $tables = $('th.select-all', context).parents('table'); danielebarchiesi@0: $tables.find('input.form-checkbox').change(function() { danielebarchiesi@0: var $rows = $(this).parents('table:first').find('tr'); danielebarchiesi@0: var row = $(this).parents('tr:first').get(0); danielebarchiesi@0: var rowNumber = $rows.index(row); danielebarchiesi@0: var rowTotal = $rows.size(); danielebarchiesi@0: var indentLevel = $(row).find('div.indentation').size(); danielebarchiesi@0: for (var n = rowNumber + 1; n < rowTotal; n++) { danielebarchiesi@0: if ($rows.eq(n).find('div.indentation').size() <= indentLevel) { danielebarchiesi@0: break; danielebarchiesi@0: } danielebarchiesi@0: $rows.eq(n).find('input.form-checkbox').attr('checked', this.checked); danielebarchiesi@0: } danielebarchiesi@0: }); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: })(jQuery);