WordPress.org

Make WordPress Core

Ticket #36202: 36202.diff

File 36202.diff, 4.7 KB (added by ryankienstra, 5 years ago)
  • src/wp-admin/js/common.js

    diff --git a/src/wp-admin/js/common.js b/src/wp-admin/js/common.js
    index 200d3e4..9335d60 100644
    a b  
    1 /* global setUserSetting, ajaxurl, commonL10n, alert, confirm, pagenow */
     1/* global setUserSetting, commonL10n, alert, confirm, pagenow */
    22var showNotice, adminMenu, columns, validateForm, screenMeta;
    33( function( $, window, undefined ) {
    44        var $document = $( document ),
    columns = { 
    2828
    2929                        columns.saveManageColumnsState();
    3030                });
     31
     32                $( '#adv-settings' ).on( 'submit', columns.delaySubmitIfAjaxRequest );
    3133        },
    3234
    33         saveManageColumnsState : function() {
     35        saveManageColumnsState : _.debounce( function() {
    3436                var hidden = this.hidden();
    35                 $.post(ajaxurl, {
    36                         action: 'hidden-columns',
     37
     38                if ( columns.ajaxRequest ) {
     39                        columns.ajaxRequest.abort();
     40                }
     41                columns.ajaxRequest = wp.ajax.post( 'hidden-columns', {
    3742                        hidden: hidden,
    38                         screenoptionnonce: $('#screenoptionnonce').val(),
     43                        screenoptionnonce: $( '#screenoptionnonce' ).val(),
    3944                        page: pagenow
    4045                });
     46                columns.ajaxRequest.always( function() {
     47                        columns.ajaxRequest = null;
     48                } );
     49        }, 2000, true ),
     50
     51        delaySubmitIfAjaxRequest: function( event ) {
     52                if ( columns.ajaxRequest ) {
     53                        event.preventDefault();
     54                        columns.ajaxRequest.always( function() {
     55                                $( event.currentTarget ).trigger( event.type );
     56                        } );
     57                } else {
     58                        return true;
     59                }
    4160        },
    4261
    4362        checked : function(column) {
  • src/wp-admin/js/nav-menu.js

    diff --git a/src/wp-admin/js/nav-menu.js b/src/wp-admin/js/nav-menu.js
    index abb437d..7673cb0 100644
    a b var wpNavMenu; 
    603603                        // hide fields
    604604                        api.menuList.hideAdvancedMenuItemFields();
    605605
    606                         $('.hide-postbox-tog').click(function () {
    607                                 var hidden = $( '.accordion-container li.accordion-section' ).filter(':hidden').map(function() { return this.id; }).get().join(',');
    608                                 $.post(ajaxurl, {
    609                                         action: 'closed-postboxes',
    610                                         hidden: hidden,
    611                                         closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
    612                                         page: 'nav-menus'
    613                                 });
    614                         });
     606                        $( '.hide-postbox-tog' ).click( api.handleMenuScreenOptionClick );
    615607                },
    616608
     609                /**
     610                 * Handle click on menu screen option checkbox.
     611                 *
     612                 * On click, create a debounced wp.ajax call, based on which box is clicked.
     613                 * This toggles the displayed state of the the menu item field.
     614                 *
     615                 * @returns {void}
     616                 */
     617                handleMenuScreenOptionClick : _.debounce( function() {
     618                        var hidden = $( '.accordion-container li.accordion-section' ).filter( ':hidden' ).map(function() { return this.id; }).get().join( ',' );
     619
     620                        if ( api.menuList._updateBasedOnScreenOptions ) {
     621                                api.menuList._updateBasedOnScreenOptions.abort();
     622                        }
     623                        api.menuList._updateBasedOnScreenOptions = wp.ajax.post( 'closed-postboxes', {
     624                                hidden: hidden,
     625                                closedpostboxesnonce: $( '#closedpostboxesnonce' ).val(),
     626                                page: 'nav-menus'
     627                        } );
     628                        api.menuList._updateBasedOnScreenOptions.always( function() {
     629                                api.menuList._updateBasedOnScreenOptions = null;
     630                        } );
     631                }, 2000 ),
     632
    617633                initSortables : function() {
    618634                        var currentDepth = 0, originalDepth, minDepth, maxDepth,
    619635                                prev, next, prevBottom, nextThreshold, helperHeight, transport,
  • src/wp-includes/script-loader.php

    diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php
    index a7019b0..1767960 100644
    a b function wp_default_scripts( &$scripts ) { 
    7575                'secure' => (string) ( 'https' === parse_url( site_url(), PHP_URL_SCHEME ) ),
    7676        ) );
    7777
    78         $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), false, 1 );
     78        $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array( 'jquery', 'hoverIntent', 'utils', 'underscore', 'wp-util' ), false, 1 );
    7979        did_action( 'init' ) && $scripts->localize( 'common', 'commonL10n', array(
    8080                'warnDelete' => __( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." ),
    8181                'dismiss'    => __( 'Dismiss this notice.' ),
    function wp_default_scripts( &$scripts ) { 
    724724                ) );
    725725
    726726                // Navigation Menus
    727                 $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'wp-lists', 'postbox', 'json2' ) );
     727                $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'wp-lists', 'postbox', 'json2', 'underscore', 'wp-util' ) );
    728728                did_action( 'init' ) && $scripts->localize( 'nav-menu', 'navMenuL10n', array(
    729729                        'noResultsFound' => __( 'No results found.' ),
    730730                        'warnDeleteMenu' => __( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ),