Projet

Général

Profil

Paste
Télécharger (3,74 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / webform / js / webform-admin.js @ ca0757b9

1
(function ($) {
2

    
3
/**
4
 * Webform node form interface enhancments.
5
 */
6

    
7
Drupal.behaviors.webformAdmin = {};
8
Drupal.behaviors.webformAdmin.attach = function(context) {
9
  // Apply special behaviors to fields with default values.
10
  Drupal.webform.defaultValues(context);
11
  // On click or change, make a parent radio button selected.
12
  Drupal.webform.setActive(context);
13
  // Update the template select list upon changing a template.
14
  Drupal.webform.updateTemplate(context);
15
  // Select all link for file extensions.
16
  Drupal.webform.selectCheckboxesLink(context);
17
  // Enhance the normal tableselect.js file to support indentations.
18
  Drupal.webform.tableSelectIndentation(context);
19
}
20

    
21
Drupal.webform = Drupal.webform || {};
22

    
23
Drupal.webform.defaultValues = function(context) {
24
  var $fields = $('.webform-default-value:not(.error)', context);
25
  var $forms = $fields.parents('form:first');
26
  $fields.each(function() {
27
    this.defaultValue = $(this).attr('rel');
28
    if (this.value != this.defaultValue) {
29
      $(this).removeClass('webform-default-value');
30
    }
31
    $(this).focus(function() {
32
      if (this.value == this.defaultValue) {
33
        this.value = '';
34
        $(this).removeClass('webform-default-value');
35
      }
36
    });
37
    $(this).blur(function() {
38
      if (this.value == '') {
39
        $(this).addClass('webform-default-value');
40
        this.value = this.defaultValue;
41
      }
42
    });
43
  });
44

    
45
  // Clear all the form elements before submission.
46
  $forms.submit(function() {
47
    $fields.focus();
48
  });
49
};
50

    
51
Drupal.webform.setActive = function(context) {
52
  var setActive = function(e) {
53
    $('.form-radio', $(this).parent().parent()).attr('checked', true);
54
    e.preventDefault();
55
  };
56
  $('.webform-set-active', context).click(setActive).change(setActive);
57
};
58

    
59
Drupal.webform.updateTemplate = function(context) {
60
  var defaultTemplate = $('#edit-templates-default').val();
61
  var $templateSelect = $('#webform-template-fieldset select#edit-template-option', context);
62
  var $templateTextarea = $('#webform-template-fieldset textarea:visible', context);
63

    
64
  var updateTemplateSelect = function() {
65
    if ($(this).val() == defaultTemplate) {
66
      $templateSelect.val('default');
67
    }
68
    else {
69
      $templateSelect.val('custom');
70
    }
71
  }
72

    
73
  var updateTemplateText = function() {
74
    if ($(this).val() == 'default' && $templateTextarea.val() != defaultTemplate) {
75
      if (confirm(Drupal.settings.webform.revertConfirm)) {
76
        $templateTextarea.val(defaultTemplate);
77
      }
78
      else {
79
        $(this).val('custom');
80
      }
81
    }
82
  }
83

    
84
  $templateTextarea.keyup(updateTemplateSelect);
85
  $templateSelect.change(updateTemplateText);
86
}
87

    
88
Drupal.webform.selectCheckboxesLink = function(context) {
89
  function selectCheckboxes() {
90
    var group = this.className.replace(/.*?webform-select-link-([^ ]*).*/, '$1');
91
    var $checkboxes = $('.webform-select-group-' + group + ' input[type=checkbox]');
92
    var reverseCheck = !$checkboxes[0].checked;
93
    $checkboxes.each(function() {
94
      this.checked = reverseCheck;
95
    });
96
    $checkboxes.trigger('change');
97
    return false;
98
  }
99
  $('a.webform-select-link', context).click(selectCheckboxes);
100
}
101

    
102
Drupal.webform.tableSelectIndentation = function(context) {
103
  var $tables = $('th.select-all', context).parents('table');
104
  $tables.find('input.form-checkbox').change(function() {
105
    var $rows = $(this).parents('table:first').find('tr');
106
    var row = $(this).parents('tr:first').get(0);
107
    var rowNumber = $rows.index(row);
108
    var rowTotal = $rows.size();
109
    var indentLevel = $(row).find('div.indentation').size();
110
    for (var n = rowNumber + 1; n < rowTotal; n++) {
111
      if ($rows.eq(n).find('div.indentation').size() <= indentLevel) {
112
        break;
113
      }
114
      $rows.eq(n).find('input.form-checkbox').attr('checked', this.checked);
115
    }
116
  });
117
}
118

    
119
})(jQuery);