first import
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
(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.
|
||||
$('.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);
|
Reference in New Issue
Block a user