Projet

Général

Profil

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

root / drupal7 / sites / all / modules / module_filter / js / update_status.js @ 7d7b5830

1
(function($) {
2

    
3
Drupal.behaviors.moduleFilterUpdateStatus = {
4
  attach: function(context) {
5
    $('#module-filter-update-status-form').once('update-status', function() {
6
      var filterInput = $('input[name="module_filter[name]"]', context);
7
      filterInput.moduleFilter('table.update > tbody > tr', {
8
        wrapper: $('table.update:first').parent(),
9
        delay: 300,
10
        childSelector: 'div.project a',
11
        rules: [
12
          function(moduleFilter, item) {
13
            switch (moduleFilter.options.show) {
14
              case 'all':
15
                return true;
16
              case 'updates':
17
                if (item.state == 'warning' || item.state == 'error') {
18
                  return true;
19
                }
20
                break;
21
              case 'security':
22
                if (item.state == 'error') {
23
                  return true;
24
                }
25
                break;
26
              case 'ignore':
27
                if (item.state == 'ignored') {
28
                  return true;
29
                }
30
                break;
31
              case 'unknown':
32
                if (item.state == 'unknown') {
33
                  return true;
34
                }
35
                break;
36
            }
37
            return false;
38
          }
39
        ],
40
        buildIndex: [
41
          function(moduleFilter, item) {
42
            if ($('.version-status', item.element).text() == Drupal.t('Ignored from settings')) {
43
              item.state = 'ignored';
44
              return item;
45
            }
46
            if (item.element.is('.ok')) {
47
              item.state = 'ok';
48
            }
49
            else if (item.element.is('.warning')) {
50
              item.state = 'warning';
51
            }
52
            else if (item.element.is('.error')) {
53
              item.state = 'error';
54
            }
55
            else if (item.element.is('.unknown')) {
56
              item.state = 'unknown';
57
            }
58
            return item;
59
          }
60
        ],
61
        show: $('#edit-module-filter-show input[name="module_filter[show]"]', context).val()
62
      });
63

    
64
      var moduleFilter = filterInput.data('moduleFilter');
65

    
66
      if (Drupal.settings.moduleFilter.rememberUpdateState) {
67
        var updateShow = Drupal.ModuleFilter.getState('updateShow');
68
        if (updateShow) {
69
          moduleFilter.options.show = updateShow;
70
          $('#edit-module-filter-show input[name="module_filter[show]"][value="' + updateShow + '"]', context).click();
71
        }
72
      }
73

    
74
      $('#edit-module-filter-show input[name="module_filter[show]"]', context).change(function() {
75
        moduleFilter.options.show = $(this).val();
76
        Drupal.ModuleFilter.setState('updateShow', moduleFilter.options.show);
77
        moduleFilter.applyFilter();
78
      });
79

    
80
      moduleFilter.element.bind('moduleFilter:start', function() {
81
        $('table.update').each(function() {
82
          $(this).show().prev('h3').show();
83
        });
84
      });
85

    
86
      moduleFilter.element.bind('moduleFilter:finish', function(e, data) {
87
        $('table.update').each(function() {
88
          var $table = $(this);
89
          if ($('tbody tr', $(this)).filter(':visible').length == 0) {
90
            $table.hide().prev('h3').hide();
91
          }
92
        });
93
      });
94

    
95
      moduleFilter.element.bind('moduleFilter:keyup', function() {
96
        if (moduleFilter.clearOffset == undefined) {
97
          moduleFilter.inputWidth = filterInput.width();
98
          moduleFilter.clearOffset = moduleFilter.element.parent().find('.module-filter-clear a').width();
99
        }
100
        if (moduleFilter.text) {
101
          filterInput.width(moduleFilter.inputWidth - moduleFilter.clearOffset - 5).parent().css('margin-right', moduleFilter.clearOffset + 5);
102
        }
103
        else {
104
          filterInput.width(moduleFilter.inputWidth).parent().css('margin-right', 0);
105
        }
106
      });
107

    
108
      moduleFilter.element.parent().find('.module-filter-clear a').click(function() {
109
        filterInput.width(moduleFilter.inputWidth).parent().css('margin-right', 0);
110
      });
111

    
112
      moduleFilter.applyFilter();
113
    });
114
  }
115
};
116

    
117
})(jQuery);