diff --git a/core/modules/views/views_ui/js/views-admin.js b/core/modules/views/views_ui/js/views-admin.js index c5a3fc0..c576e7c 100644 --- a/core/modules/views/views_ui/js/views-admin.js +++ b/core/modules/views/views_ui/js/views-admin.js @@ -4,19 +4,21 @@ */ Drupal.viewsUi = {}; +(function($){ + +"use strict"; + Drupal.behaviors.viewsUiEditView = {}; /** * Improve the user experience of the views edit interface. */ -Drupal.behaviors.viewsUiEditView.attach = function (context, settings) { - - "use strict"; +Drupal.behaviors.viewsUiEditView.attach = function () { // Only show the SQL rewrite warning when the user has chosen the // corresponding checkbox. - jQuery('#edit-query-options-disable-sql-rewrite').click(function () { - jQuery('.sql-rewrite-warning').toggleClass('js-hide'); + $('#edit-query-options-disable-sql-rewrite').click(function () { + $('.sql-rewrite-warning').toggleClass('js-hide'); }); }; @@ -26,11 +28,8 @@ Drupal.behaviors.viewsUiAddView = {}; * In the add view wizard, use the view name to prepopulate form fields such as * page title and menu link. */ -Drupal.behaviors.viewsUiAddView.attach = function (context, settings) { - - "use strict"; +Drupal.behaviors.viewsUiAddView.attach = function (context) { - var $ = jQuery; var exclude, replace, suffix; // Set up regular expressions to allow only numbers, letters, and dashes. exclude = new RegExp('[^a-z0-9\\-]+', 'g'); @@ -96,9 +95,6 @@ Drupal.behaviors.viewsUiAddView.attach = function (context, settings) { */ Drupal.viewsUi.FormFieldFiller = function ($target, exclude, replace, suffix) { - "use strict"; - - var $ = jQuery; this.source = $('#edit-human-name'); this.target = $target; this.exclude = exclude || false; @@ -123,8 +119,6 @@ Drupal.viewsUi.FormFieldFiller = function ($target, exclude, replace, suffix) { */ Drupal.viewsUi.FormFieldFiller.prototype.bind = function () { - "use strict"; - this.unbind(); // Populate the form field when the source changes. this.source.bind('keyup.viewsUi change.viewsUi', this.populate); @@ -137,8 +131,6 @@ Drupal.viewsUi.FormFieldFiller.prototype.bind = function () { */ Drupal.viewsUi.FormFieldFiller.prototype.getTransliterated = function () { - "use strict"; - var from = this.source.val(); if (this.exclude) { from = from.toLowerCase().replace(this.exclude, this.replace); @@ -151,8 +143,6 @@ Drupal.viewsUi.FormFieldFiller.prototype.getTransliterated = function () { */ Drupal.viewsUi.FormFieldFiller.prototype._populate = function () { - "use strict"; - var transliterated = this.getTransliterated(); this.target.val(transliterated); }; @@ -162,8 +152,6 @@ Drupal.viewsUi.FormFieldFiller.prototype._populate = function () { */ Drupal.viewsUi.FormFieldFiller.prototype._unbind = function () { - "use strict"; - this.source.unbind('keyup.viewsUi change.viewsUi', this.populate); this.target.unbind('focus.viewsUi', this.unbind); }; @@ -173,8 +161,6 @@ Drupal.viewsUi.FormFieldFiller.prototype._unbind = function () { */ Drupal.viewsUi.FormFieldFiller.prototype.rebind = function ($fields) { - "use strict"; - this.target = $fields; this.bind(); }; @@ -182,9 +168,6 @@ Drupal.viewsUi.FormFieldFiller.prototype.rebind = function ($fields) { Drupal.behaviors.addItemForm = {}; Drupal.behaviors.addItemForm.attach = function (context) { - "use strict"; - - var $ = jQuery; // The add item form may have an id of views-ui-add-item-form--n. var $form = $(context).find('form[id^="views-ui-add-item-form"]').first(); // Make sure we don't add more than one event handler to the same form. @@ -196,10 +179,8 @@ Drupal.behaviors.addItemForm.attach = function (context) { Drupal.viewsUi.addItemForm = function($form) { - "use strict"; - this.$form = $form; - this.$form.find('.views-filterable-options :checkbox').click(jQuery.proxy(this.handleCheck, this)); + this.$form.find('.views-filterable-options :checkbox').click($.proxy(this.handleCheck, this)); // Find the wrapper of the displayed text. this.$selected_div = this.$form.find('.views-selected-options').parent(); this.$selected_div.hide(); @@ -208,18 +189,15 @@ Drupal.viewsUi.addItemForm = function($form) { Drupal.viewsUi.addItemForm.prototype.handleCheck = function (event) { - "use strict"; - - var $target = jQuery(event.target); - var label = jQuery.trim($target.next().text()); + var $target = $(event.target); + var label = $.trim($target.next().text()); // Add/remove the checked item to the list. if ($target.is(':checked')) { this.$selected_div.show(); this.checkedItems.push(label); } else { - var length = this.checkedItems.length; - var position = jQuery.inArray(label, this.checkedItems); + var position = $.inArray(label, this.checkedItems); // Delete the item from the list and take sure that the list doesn't have undefined items left. for (var i = 0; i < this.checkedItems.length; i++) { if (i === position) { @@ -241,8 +219,6 @@ Drupal.viewsUi.addItemForm.prototype.handleCheck = function (event) { */ Drupal.viewsUi.addItemForm.prototype.refreshCheckedItems = function() { - "use strict"; - // Perhaps we should precache the text div, too. this.$selected_div.find('.views-selected-options').html(this.checkedItems.join(', ')); Drupal.viewsUi.resizeModal('', true); @@ -255,11 +231,8 @@ Drupal.viewsUi.addItemForm.prototype.refreshCheckedItems = function() { */ Drupal.behaviors.viewsUiRenderAddViewButton = {}; -Drupal.behaviors.viewsUiRenderAddViewButton.attach = function (context, settings) { - - "use strict"; +Drupal.behaviors.viewsUiRenderAddViewButton.attach = function (context) { - var $ = jQuery; // Build the add display menu and pull the display input buttons into it. var $menu = $('#views-display-menu-tabs', context).once('views-ui-render-add-view-button-processed'); @@ -295,7 +268,7 @@ Drupal.behaviors.viewsUiRenderAddViewButton.attach = function (context, settings // We use the live binder because the open class on this item will be // toggled on and off and we want the handler to take effect in the cases // that the class is present, but not when it isn't. - $('li.add', $menu).on('mouseleave', function (event) { + $('li.add', $menu).on('mouseleave', function () { var $this = $(this); var $trigger = $this.children('a[href="#"]'); if ($this.children('.action-list').is(':visible')) { @@ -310,8 +283,6 @@ Drupal.behaviors.viewsUiRenderAddViewButton.attach = function (context, settings */ Drupal.behaviors.viewsUiRenderAddViewButton.toggleMenu = function ($trigger) { - "use strict"; - $trigger.parent().toggleClass('open'); $trigger.next().slideToggle('fast'); }; @@ -320,9 +291,6 @@ Drupal.behaviors.viewsUiSearchOptions = {}; Drupal.behaviors.viewsUiSearchOptions.attach = function (context) { - "use strict"; - - var $ = jQuery; // The add item form may have an id of views-ui-add-item-form--n. var $form = $(context).find('form[id^="views-ui-add-item-form"]').first(); // Make sure we don't add more than one event handler to the same form. @@ -341,12 +309,10 @@ Drupal.behaviors.viewsUiSearchOptions.attach = function (context) { */ Drupal.viewsUi.OptionsSearch = function ($form) { - "use strict"; - this.$form = $form; // Add a keyup handler to the search box. this.$searchBox = this.$form.find('#edit-options-search'); - this.$searchBox.keyup(jQuery.proxy(this.handleKeyup, this)); + this.$searchBox.keyup($.proxy(this.handleKeyup, this)); // Get a list of option labels and their corresponding divs and maintain it // in memory, so we have as little overhead as possible at keyup time. this.options = this.getOptions(this.$form.find('.filterable-option')); @@ -369,9 +335,6 @@ Drupal.viewsUi.OptionsSearch = function ($form) { */ Drupal.viewsUi.OptionsSearch.prototype.getOptions = function ($allOptions) { - "use strict"; - - var $ = jQuery; var i, $label, $description, $option; var options = []; var length = $allOptions.length; @@ -394,9 +357,7 @@ Drupal.viewsUi.OptionsSearch.prototype.getOptions = function ($allOptions) { /** * Keyup handler for the search box that hides or shows the relevant options. */ -Drupal.viewsUi.OptionsSearch.prototype.handleKeyup = function (event) { - - "use strict"; +Drupal.viewsUi.OptionsSearch.prototype.handleKeyup = function () { var found, i, j, option, search, words, wordsLength, zebraClass, zebraCounter; @@ -438,11 +399,7 @@ Drupal.viewsUi.OptionsSearch.prototype.handleKeyup = function (event) { }; Drupal.behaviors.viewsUiPreview = {}; -Drupal.behaviors.viewsUiPreview.attach = function (context, settings) { - - "use strict"; - - var $ = jQuery; +Drupal.behaviors.viewsUiPreview.attach = function (context) { // Only act on the edit view form. var contextualFiltersBucket = $('.views-display-column .views-ui-display-tab-bucket.contextual-filters', context); @@ -468,11 +425,8 @@ Drupal.behaviors.viewsUiPreview.attach = function (context, settings) { }; Drupal.behaviors.viewsUiRearrangeFilter = {}; -Drupal.behaviors.viewsUiRearrangeFilter.attach = function (context, settings) { - - "use strict"; +Drupal.behaviors.viewsUiRearrangeFilter.attach = function (context) { - var $ = jQuery; // Only act on the rearrange filter form. if (typeof Drupal.tableDrag === 'undefined' || typeof Drupal.tableDrag['views-rearrange-filters'] === 'undefined') { return; @@ -490,9 +444,6 @@ Drupal.behaviors.viewsUiRearrangeFilter.attach = function (context, settings) { */ Drupal.viewsUi.rearrangeFilterHandler = function (table, operator) { - "use strict"; - - var $ = jQuery; // Keep a reference to the being altered and to the div containing // the filter groups operator dropdown (if it exists). this.table = table; @@ -548,10 +499,6 @@ Drupal.viewsUi.rearrangeFilterHandler = function (table, operator) { */ Drupal.viewsUi.rearrangeFilterHandler.prototype.insertAddRemoveFilterGroupLinks = function () { - "use strict"; - - var $ = jQuery; - // Insert a link for adding a new group at the top of the page, and make it // match the action links styling used in a typical page.tpl.php. Note that // Drupal does not provide a theme function for this markup, so this is the @@ -566,7 +513,7 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.insertAddRemoveFilterGroupLinks // Find each (visually hidden) button for removing a filter group and insert // a link next to it. var length = this.removeGroupButtons.length; - for (i = 0; i < length; i++) { + for (var i = 0; i < length; i++) { var $removeGroupButton = $(this.removeGroupButtons[i]); var buttonId = $removeGroupButton.attr('id'); $('' + Drupal.t('Remove group') + '') @@ -583,8 +530,6 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.insertAddRemoveFilterGroupLinks */ Drupal.viewsUi.rearrangeFilterHandler.prototype.clickAddGroupButton = function () { - "use strict"; - // Due to conflicts between Drupal core's AJAX system and the Views AJAX // system, the only way to get this to work seems to be to trigger both the // .mousedown() and .submit() events. @@ -602,12 +547,10 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.clickAddGroupButton = function ( */ Drupal.viewsUi.rearrangeFilterHandler.prototype.clickRemoveGroupButton = function (event) { - "use strict"; - // For some reason, here we only need to trigger .submit(), unlike for // Drupal.viewsUi.rearrangeFilterHandler.prototype.clickAddGroupButton() // where we had to trigger .mousedown() also. - jQuery('input#' + event.data.buttonId, this.table).submit(); + $('input#' + event.data.buttonId, this.table).submit(); event.preventDefault(); }; @@ -617,9 +560,6 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.clickRemoveGroupButton = functio */ Drupal.viewsUi.rearrangeFilterHandler.prototype.duplicateGroupsOperator = function () { - "use strict"; - - var $ = jQuery; var dropdowns, newRow; var titleRows = $('tr.views-group-title'), titleRow; @@ -659,14 +599,12 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.duplicateGroupsOperator = functi */ Drupal.viewsUi.rearrangeFilterHandler.prototype.syncGroupsOperators = function () { - "use strict"; - if (this.dropdowns.length < 2) { // We only have one dropdown (or none at all), so there's nothing to sync. return; } - this.dropdowns.change(jQuery.proxy(this, 'operatorChangeHandler')); + this.dropdowns.change($.proxy(this, 'operatorChangeHandler')); }; /** @@ -676,9 +614,6 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.syncGroupsOperators = function ( */ Drupal.viewsUi.rearrangeFilterHandler.prototype.operatorChangeHandler = function (event) { - "use strict"; - - var $ = jQuery; var $target = $(event.target); var operators = this.dropdowns.find('select').not($target); @@ -688,8 +623,6 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.operatorChangeHandler = function Drupal.viewsUi.rearrangeFilterHandler.prototype.modifyTableDrag = function () { - "use strict"; - var tableDrag = Drupal.tableDrag['views-rearrange-filters']; var filterHandler = this; @@ -709,7 +642,7 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.modifyTableDrag = function () { // Make sure the row that just got moved (this.group) is inside one of // the filter groups (i.e. below an empty marker row or a draggable). If // it isn't, move it down one. - var thisRow = jQuery(this.group); + var thisRow = $(this.group); var previousRow = thisRow.prev('tr'); if (previousRow.length && !previousRow.hasClass('group-message') && !previousRow.hasClass('draggable')) { // Move the dragged row down one. @@ -729,8 +662,6 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.modifyTableDrag = function () { * Override the onDrop method from tabledrag.js. */ tableDrag.onDrop = function () { - var $ = jQuery; - // If the tabledrag change marker (i.e., the "*") has been inserted inside // a row after the operator label (i.e., "And" or "Or") rearrange the items // so the operator label continues to appear last. @@ -763,10 +694,7 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.modifyTableDrag = function () { */ Drupal.viewsUi.rearrangeFilterHandler.prototype.redrawOperatorLabels = function () { - "use strict"; - - var $ = jQuery; - for (i = 0; i < this.draggableRows.length; i++) { + for (var i = 0; i < this.draggableRows.length; i++) { // Within the row, the operator labels are displayed inside the first table // cell (next to the filter name). var $draggableRow = $(this.draggableRows[i]); @@ -811,9 +739,6 @@ Drupal.viewsUi.rearrangeFilterHandler.prototype.redrawOperatorLabels = function */ Drupal.viewsUi.rearrangeFilterHandler.prototype.updateRowspans = function () { - "use strict"; - - var $ = jQuery; var i, $row, $currentEmptyRow, draggableCount, $operatorCell; var rows = $(this.table).find('tr'); var length = rows.length; @@ -848,9 +773,6 @@ Drupal.behaviors.viewsFilterConfigSelectAll = {}; */ Drupal.behaviors.viewsFilterConfigSelectAll.attach = function(context) { - "use strict"; - - var $ = jQuery; // Show the select all checkbox. $('#views-ui-config-item-form div.form-item-options-value-all', context).once(function() { $(this).show(); @@ -877,12 +799,10 @@ Drupal.behaviors.viewsFilterConfigSelectAll.attach = function(context) { * Remove icon class from elements that are themed as buttons or dropbuttons. */ Drupal.behaviors.viewsRemoveIconClass = {}; -Drupal.behaviors.viewsRemoveIconClass.attach = function (context, settings) { - - "use strict"; +Drupal.behaviors.viewsRemoveIconClass.attach = function (context) { - jQuery(context).find('.dropbutton').once('dropbutton-icon', function () { - jQuery(this).find('.icon').removeClass('icon'); + $(context).find('.dropbutton').once('dropbutton-icon', function () { + $(this).find('.icon').removeClass('icon'); }); }; @@ -890,11 +810,8 @@ Drupal.behaviors.viewsRemoveIconClass.attach = function (context, settings) { * Change "Expose filter" buttons into checkboxes. */ Drupal.behaviors.viewsUiCheckboxify = {}; -Drupal.behaviors.viewsUiCheckboxify.attach = function (context, settings) { - - "use strict"; +Drupal.behaviors.viewsUiCheckboxify.attach = function () { - var $ = jQuery; var $buttons = $('#edit-options-expose-button-button, #edit-options-group-button-button').once('views-ui-checkboxify'); var length = $buttons.length; var i; @@ -908,11 +825,8 @@ Drupal.behaviors.viewsUiCheckboxify.attach = function (context, settings) { * selected widget for the exposed group. */ Drupal.behaviors.viewsUiChangeDefaultWidget = {}; -Drupal.behaviors.viewsUiChangeDefaultWidget.attach = function (context, settings) { +Drupal.behaviors.viewsUiChangeDefaultWidget.attach = function () { - "use strict"; - - var $ = jQuery; function change_default_widget(multiple) { if (multiple) { $('input.default-radios').hide(); @@ -941,9 +855,6 @@ Drupal.behaviors.viewsUiChangeDefaultWidget.attach = function (context, settings */ Drupal.viewsUi.Checkboxifier = function (button) { - "use strict"; - - var $ = jQuery; this.$button = $(button); this.$parent = this.$button.parent('div.views-expose, div.views-grouped'); this.$input = this.$parent.find('input:checkbox, input:radio'); @@ -958,9 +869,7 @@ Drupal.viewsUi.Checkboxifier = function (button) { /** * When the checkbox is checked or unchecked, simulate a button press. */ -Drupal.viewsUi.Checkboxifier.prototype.clickHandler = function (e) { - - "use strict"; +Drupal.viewsUi.Checkboxifier.prototype.clickHandler = function () { this.$button.mousedown(); this.$button.submit(); @@ -970,11 +879,8 @@ Drupal.viewsUi.Checkboxifier.prototype.clickHandler = function (e) { * Change the Apply button text based upon the override select state. */ Drupal.behaviors.viewsUiOverrideSelect = {}; -Drupal.behaviors.viewsUiOverrideSelect.attach = function (context, settings) { +Drupal.behaviors.viewsUiOverrideSelect.attach = function (context) { - "use strict"; - - var $ = jQuery; $('#edit-override-dropdown', context).once('views-ui-override-button-text', function() { // Closures! :( var $submit = $('#edit-submit', context); @@ -1004,17 +910,16 @@ Drupal.behaviors.viewsUiOverrideSelect.attach = function (context, settings) { Drupal.viewsUi.resizeModal = function (e, no_shrink) { - "use strict"; - - var $ = jQuery; - var $modal = $('.views-ui-dialog'); - var $scroll = $('.scroll', $modal); + var $modal = $('.views-ui-dialog'), + $scroll = $('.scroll', $modal); if ($modal.size() === 0 || $modal.css('display') === 'none') { return; } - var maxWidth = parseInt($(window).width() * .85); // 70% of window - var minWidth = parseInt($(window).width() * .6); // 70% of window + var windowWidth = $(window).width(), + windowHeight = $(window).height(), + maxWidth = parseInt(windowWidth * 0.85, 10), // 70% of window + minWidth = parseInt(windowWidth * 0.6, 10); // 70% of window // Set the modal to the minwidth so that our width calculation of // children works. @@ -1022,8 +927,8 @@ Drupal.viewsUi.resizeModal = function (e, no_shrink) { var width = minWidth; // Don't let the window get more than 80% of the display high. - var maxHeight = parseInt($(window).height() * .8); - var minHeight = 200; + var maxHeight = parseInt(windowHeight * 0.8, 10), + minHeight = 200; if (no_shrink) { minHeight = $modal.height(); } @@ -1037,8 +942,8 @@ Drupal.viewsUi.resizeModal = function (e, no_shrink) { // Calculate the height of the 'scroll' region. var scrollHeight = 0; - scrollHeight += parseInt($scroll.css('padding-top')); - scrollHeight += parseInt($scroll.css('padding-bottom')); + scrollHeight += parseInt($scroll.css('padding-top'), 10); + scrollHeight += parseInt($scroll.css('padding-bottom'), 10); $scroll.children().each(function() { var w = $(this).innerWidth(); @@ -1052,8 +957,8 @@ Drupal.viewsUi.resizeModal = function (e, no_shrink) { // will be. var difference = 0; - difference += parseInt($scroll.css('padding-top')); - difference += parseInt($scroll.css('padding-bottom')); + difference += parseInt($scroll.css('padding-top'), 10); + difference += parseInt($scroll.css('padding-bottom'), 10); difference += $('.views-override').outerHeight(true); difference += $('.views-messages').outerHeight(true); difference += $('#views-ajax-title').outerHeight(true); @@ -1076,8 +981,8 @@ Drupal.viewsUi.resizeModal = function (e, no_shrink) { } // Get where we should move content to - var top = ($(window).height() / 2) - (height / 2); - var left = ($(window).width() / 2) - (width / 2); + var top = (windowHeight / 2) - (height / 2); + var left = (windowWidth / 2) - (width / 2); $modal.css({ 'top': top + 'px', @@ -1096,10 +1001,13 @@ Drupal.viewsUi.resizeModal = function (e, no_shrink) { }; -jQuery(function() { - - "use strict" - - jQuery(window).bind('resize', Drupal.viewsUi.resizeModal); - jQuery(window).bind('scroll', Drupal.viewsUi.resizeModal); +$(function() { + // $(window).bind('resize', Drupal.viewsUi.resizeModal); + // $(window).bind('scroll', Drupal.viewsUi.resizeModal); + $(window).on({ + resize: Drupal.viewsUi.resizeModal, + scroll: Drupal.viewsUi.resizeModal + }); }); + +})(jQuery); \ No newline at end of file