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