commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-old / views_bulk_operations / js / views_bulk_operations.js
1 (function ($) {
2 Drupal.behaviors.vbo = {
3 attach: function(context) {
4 $('.vbo-views-form', context).each(function() {
5 Drupal.vbo.initTableBehaviors(this);
6 Drupal.vbo.initGenericBehaviors(this);
7 });
8 }
9 }
10
11 Drupal.vbo = Drupal.vbo || {};
12 Drupal.vbo.initTableBehaviors = function(form) {
13 // If the table is not grouped, "Select all on this page / all pages"
14 // markup gets inserted below the table header.
15 var selectAllMarkup = $('.vbo-table-select-all-markup', form);
16 if (selectAllMarkup.length) {
17 $('.views-table > tbody', form).prepend('<tr class="views-table-row-select-all even">></tr>');
18 var colspan = $('table th', form).length;
19 $('.views-table-row-select-all', form).html('<td colspan="' + colspan + '">' + selectAllMarkup.html() + '</td>');
20
21 $('.vbo-table-select-all-pages', form).click(function() {
22 Drupal.vbo.tableSelectAllPages(form);
23 return false;
24 });
25 $('.vbo-table-select-this-page', form).click(function() {
26 Drupal.vbo.tableSelectThisPage(form);
27 return false;
28 });
29 }
30
31 $('.vbo-table-select-all', form).show();
32 // This is the "select all" checkbox in (each) table header.
33 $('.vbo-table-select-all', form).click(function() {
34 var table = $(this).closest('table')[0];
35 $('input[id^="edit-views-bulk-operations"]:not(:disabled)', table).attr('checked', this.checked);
36
37 // Toggle the visibility of the "select all" row (if any).
38 if (this.checked) {
39 $('.views-table-row-select-all', table).show();
40 }
41 else {
42 $('.views-table-row-select-all', table).hide();
43 // Disable "select all across pages".
44 Drupal.vbo.tableSelectThisPage(form);
45 }
46 });
47
48 // Set up the ability to click anywhere on the row to select it.
49 if (Drupal.settings.vbo.row_clickable) {
50 $('.views-table tbody tr', form).click(function(event) {
51 if (event.target.tagName.toLowerCase() != 'input' && event.target.tagName.toLowerCase() != 'a') {
52 $('input[id^="edit-views-bulk-operations"]:not(:disabled)', this).each(function() {
53 var checked = this.checked;
54 // trigger() toggles the checkmark *after* the event is set,
55 // whereas manually clicking the checkbox toggles it *beforehand*.
56 // that's why we manually set the checkmark first, then trigger the
57 // event (so that listeners get notified), then re-set the checkmark
58 // which the trigger will have toggled. yuck!
59 this.checked = !checked;
60 $(this).trigger('click');
61 this.checked = !checked;
62 });
63 }
64 });
65 }
66 }
67
68 Drupal.vbo.tableSelectAllPages = function(form) {
69 $('.vbo-table-this-page', form).hide();
70 $('.vbo-table-all-pages', form).show();
71 // Modify the value of the hidden form field.
72 $('.select-all-rows', form).val('1');
73 }
74 Drupal.vbo.tableSelectThisPage = function(form) {
75 $('.vbo-table-all-pages', form).hide();
76 $('.vbo-table-this-page', form).show();
77 // Modify the value of the hidden form field.
78 $('.select-all-rows', form).val('0');
79 }
80
81 Drupal.vbo.initGenericBehaviors = function(form) {
82 // Show the "select all" fieldset.
83 $('.vbo-select-all-markup', form).show();
84
85 $('.vbo-select-this-page', form).click(function() {
86 $('input[id^="edit-views-bulk-operations"]', form).attr('checked', this.checked);
87 $('.vbo-select-all-pages', form).attr('checked', false);
88
89 // Toggle the "select all" checkbox in grouped tables (if any).
90 $('.vbo-table-select-all', form).attr('checked', this.checked);
91 });
92 $('.vbo-select-all-pages', form).click(function() {
93 $('input[id^="edit-views-bulk-operations"]', form).attr('checked', this.checked);
94 $('.vbo-select-this-page', form).attr('checked', false);
95
96 // Toggle the "select all" checkbox in grouped tables (if any).
97 $('.vbo-table-select-all', form).attr('checked', this.checked);
98
99 // Modify the value of the hidden form field.
100 $('.select-all-rows', form).val(this.checked);
101 });
102
103 $('.vbo-select', form).click(function() {
104 // If a checkbox was deselected, uncheck any "select all" checkboxes.
105 if (!this.checked) {
106 $('.vbo-select-this-page', form).attr('checked', false);
107 $('.vbo-select-all-pages', form).attr('checked', false);
108 // Modify the value of the hidden form field.
109 $('.select-all-rows', form).val('0')
110
111 var table = $(this).closest('table')[0];
112 if (table) {
113 // Uncheck the "select all" checkbox in the table header.
114 $('.vbo-table-select-all', table).attr('checked', false);
115
116 // If there's a "select all" row, hide it.
117 if ($('.vbo-table-select-this-page', table).length) {
118 $('.views-table-row-select-all', table).hide();
119 // Disable "select all across pages".
120 Drupal.vbo.tableSelectThisPage(form);
121 }
122 }
123 }
124 });
125 }
126
127 })(jQuery);