123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- (function ($) {
- Drupal.behaviors.vbo = {
- attach: function(context) {
- $('.vbo-views-form', context).each(function() {
- Drupal.vbo.initTableBehaviors(this);
- Drupal.vbo.initGenericBehaviors(this);
- });
- }
- }
- Drupal.vbo = Drupal.vbo || {};
- Drupal.vbo.initTableBehaviors = function(form) {
- // If the table is not grouped, "Select all on this page / all pages"
- // markup gets inserted below the table header.
- var selectAllMarkup = $('.vbo-table-select-all-markup', form);
- if (selectAllMarkup.length) {
- $('.views-table > tbody', form).prepend('<tr class="views-table-row-select-all even">></tr>');
- var colspan = $('table th', form).length;
- $('.views-table-row-select-all', form).html('<td colspan="' + colspan + '">' + selectAllMarkup.html() + '</td>');
- $('.vbo-table-select-all-pages', form).click(function() {
- Drupal.vbo.tableSelectAllPages(form);
- return false;
- });
- $('.vbo-table-select-this-page', form).click(function() {
- Drupal.vbo.tableSelectThisPage(form);
- return false;
- });
- }
- $('.vbo-table-select-all', form).show();
- // This is the "select all" checkbox in (each) table header.
- $('.vbo-table-select-all', form).click(function() {
- var table = $(this).closest('table')[0];
- $('input[id^="edit-views-bulk-operations"]:not(:disabled)', table).attr('checked', this.checked);
- // Toggle the visibility of the "select all" row (if any).
- if (this.checked) {
- $('.views-table-row-select-all', table).show();
- }
- else {
- $('.views-table-row-select-all', table).hide();
- // Disable "select all across pages".
- Drupal.vbo.tableSelectThisPage(form);
- }
- });
- // Set up the ability to click anywhere on the row to select it.
- if (Drupal.settings.vbo.row_clickable) {
- $('.views-table tbody tr', form).click(function(event) {
- if (event.target.tagName.toLowerCase() != 'input' && event.target.tagName.toLowerCase() != 'a') {
- $('input[id^="edit-views-bulk-operations"]:not(:disabled)', this).each(function() {
- var checked = this.checked;
- // trigger() toggles the checkmark *after* the event is set,
- // whereas manually clicking the checkbox toggles it *beforehand*.
- // that's why we manually set the checkmark first, then trigger the
- // event (so that listeners get notified), then re-set the checkmark
- // which the trigger will have toggled. yuck!
- this.checked = !checked;
- $(this).trigger('click');
- this.checked = !checked;
- });
- }
- });
- }
- }
- Drupal.vbo.tableSelectAllPages = function(form) {
- $('.vbo-table-this-page', form).hide();
- $('.vbo-table-all-pages', form).show();
- // Modify the value of the hidden form field.
- $('.select-all-rows', form).val('1');
- }
- Drupal.vbo.tableSelectThisPage = function(form) {
- $('.vbo-table-all-pages', form).hide();
- $('.vbo-table-this-page', form).show();
- // Modify the value of the hidden form field.
- $('.select-all-rows', form).val('0');
- }
- Drupal.vbo.initGenericBehaviors = function(form) {
- // Show the "select all" fieldset.
- $('.vbo-select-all-markup', form).show();
- $('.vbo-select-this-page', form).click(function() {
- $('input[id^="edit-views-bulk-operations"]', form).attr('checked', this.checked);
- $('.vbo-select-all-pages', form).attr('checked', false);
- // Toggle the "select all" checkbox in grouped tables (if any).
- $('.vbo-table-select-all', form).attr('checked', this.checked);
- });
- $('.vbo-select-all-pages', form).click(function() {
- $('input[id^="edit-views-bulk-operations"]', form).attr('checked', this.checked);
- $('.vbo-select-this-page', form).attr('checked', false);
- // Toggle the "select all" checkbox in grouped tables (if any).
- $('.vbo-table-select-all', form).attr('checked', this.checked);
- // Modify the value of the hidden form field.
- $('.select-all-rows', form).val(this.checked);
- });
- $('.vbo-select', form).click(function() {
- // If a checkbox was deselected, uncheck any "select all" checkboxes.
- if (!this.checked) {
- $('.vbo-select-this-page', form).attr('checked', false);
- $('.vbo-select-all-pages', form).attr('checked', false);
- // Modify the value of the hidden form field.
- $('.select-all-rows', form).val('0')
- var table = $(this).closest('table')[0];
- if (table) {
- // Uncheck the "select all" checkbox in the table header.
- $('.vbo-table-select-all', table).attr('checked', false);
- // If there's a "select all" row, hide it.
- if ($('.vbo-table-select-this-page', table).length) {
- $('.views-table-row-select-all', table).hide();
- // Disable "select all across pages".
- Drupal.vbo.tableSelectThisPage(form);
- }
- }
- }
- });
- }
- })(jQuery);
|