farmOS/themes/farm_theme/js/vbo.js

65 lines
2.5 KiB
JavaScript

(function ($) {
Drupal.behaviors.farm_theme_vbo = {
attach: function (context, settings) {
// Reset the visibility of the VBO buttons if the VBO form is clicked.
$('.vbo-views-form', context).click(function(event) {
Drupal.behaviors.farm_theme_vbo.reset_buttons(event.target);
});
// Hide VBO buttons by default.
$('.vbo-views-form .form-wrapper', context).hide();
// Reset the buttons.
Drupal.behaviors.farm_theme_vbo.reset_buttons(context);
// When a VBO config form is displayed, we want to hide everything else
// on the page. This is accomplished by passing in a few variables to JS
// via hook_views_bulk_operations_form_alter() when the step is config.
if ((typeof Drupal.settings.farm_theme !== 'undefined') && (typeof Drupal.settings.farm_theme.vbo_hide !== 'undefined')) {
// Hide everything within the page content, and then show only the
// View. (use both the View's name and display when building the
// selector to ensure specificity).
var view_name = Drupal.settings.farm_theme.view_name;
var view_display = Drupal.settings.farm_theme.view_display;
var selector = '.view-id-' + view_name + '.view-display-id-' + view_display;
$('.region-content > :not(' + selector + ')', context).hide();
$(selector, context).appendTo('.region-content');
// Hide page-top map, breadcrumbs, tabs, and action links as well.
$('.region-page-top .farm-map', context).hide();
$('.breadcrumb', context).hide();
$('.tabs--primary', context).hide();
$('.action-links', context).hide();
}
},
// Reset the visibility of the VBO buttons.
reset_buttons: function (context) {
// Find all checked boxes within the given VBO.
var checked = $(context).closest('.vbo-views-form').find('input:checked');
// Get the VBO buttons fieldset.
var buttons = $(context).closest('.vbo-views-form').find('.form-wrapper');
// Check to see if the VBO buttons are visible.
var visible = buttons.is(':visible');
// If any boxes are checked, show the VBO buttons.
var show = (checked.length) ? true : false;
// If the VBO buttons are hidden and we want to show them, slide down.
if (!visible && show) {
buttons.slideDown();
}
// Or, if the buttons are visible, and we want to hide them, slide up.
else if (visible && !show) {
buttons.slideUp();
}
}
};
})(jQuery);