Make WordPress Core

Changeset 33345


Ignore:
Timestamp:
07/21/2015 04:13:36 PM (11 years ago)
Author:
wonderboymusic
Message:

Customizer: Nav Menus JS cleanup, first round

  • In init, settings should be fresh and set to default values before extending
  • When looping via _.each, pass this as 3rd arg to bind context
  • Settings should be encapsulated in the module, instead of being exposed as static class props
  • currentRefreshMenuInstanceDebouncedCalls should be encapsulated and renamed, instead of being the longest symbol in the entire codebase

See #32911.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/js/customize-preview-nav-menus.js

    r33337 r33345  
    33wp.customize.menusPreview = ( function( $, api ) {
    44        'use strict';
    5         var self;
    6 
    7         self = {
    8                 renderQueryVar: null,
    9                 renderNonceValue: null,
    10                 renderNoncePostKey: null,
    11                 previewCustomizeNonce: null,
    12                 requestUri: '/',
    13                 theme: {
    14                         active: false,
    15                         stylesheet: ''
     5        var currentRefreshDebounced = {},
     6                refreshDebounceDelay = 200,
     7                settings = {},
     8                defaultSettings = {
     9                        renderQueryVar: null,
     10                        renderNonceValue: null,
     11                        renderNoncePostKey: null,
     12                        previewCustomizeNonce: null,
     13                        requestUri: '/',
     14                        theme: {
     15                                active: false,
     16                                stylesheet: ''
     17                        },
     18                        navMenuInstanceArgs: {}
    1619                },
    17                 navMenuInstanceArgs: {},
    18                 refreshDebounceDelay: 200
    19         };
     20                self = {};
    2021
    2122        api.bind( 'preview-ready', function() {
     
    3132                var self = this, initializedSettings = {};
    3233
     34                settings = _.extend( {}, defaultSettings );
    3335                if ( 'undefined' !== typeof _wpCustomizePreviewNavMenusExports ) {
    34                         $.extend( self, _wpCustomizePreviewNavMenusExports );
     36                        _.extend( settings, _wpCustomizePreviewNavMenusExports );
    3537                }
    3638
     
    135137         */
    136138        self.refreshMenu = function( menuId ) {
    137                 var self = this, assignedLocations = [];
     139                var assignedLocations = [];
    138140
    139141                api.each(function( setting, id ) {
     
    144146                });
    145147
    146                 _.each( self.navMenuInstanceArgs, function( navMenuArgs, instanceNumber ) {
     148                _.each( settings.navMenuInstanceArgs, function( navMenuArgs, instanceNumber ) {
    147149                        if ( menuId === navMenuArgs.menu || -1 !== _.indexOf( assignedLocations, navMenuArgs.theme_location ) ) {
    148                                 self.refreshMenuInstanceDebounced( instanceNumber );
    149                         }
    150                 } );
     150                                this.refreshMenuInstanceDebounced( instanceNumber );
     151                        }
     152                }, this );
    151153        };
    152154
     
    158160        self.refreshMenuLocation = function( location ) {
    159161                var foundInstance = false;
    160                 _.each( self.navMenuInstanceArgs, function( navMenuArgs, instanceNumber ) {
     162                _.each( settings.navMenuInstanceArgs, function( navMenuArgs, instanceNumber ) {
    161163                        if ( location === navMenuArgs.theme_location ) {
    162                                 self.refreshMenuInstanceDebounced( instanceNumber );
     164                                this.refreshMenuInstanceDebounced( instanceNumber );
    163165                                foundInstance = true;
    164166                        }
    165                 } );
     167                }, this );
    166168                if ( ! foundInstance ) {
    167169                        api.preview.send( 'refresh' );
     
    177179                var self = this, data, menuId, customized, container, request, wpNavArgs, instance, containerInstanceClassName;
    178180
    179                 if ( ! self.navMenuInstanceArgs[ instanceNumber ] ) {
     181                if ( ! settings.navMenuInstanceArgs[ instanceNumber ] ) {
    180182                        throw new Error( 'unknown_instance_number' );
    181183                }
    182                 instance = self.navMenuInstanceArgs[ instanceNumber ];
     184                instance = settings.navMenuInstanceArgs[ instanceNumber ];
    183185
    184186                containerInstanceClassName = 'partial-refreshable-nav-menu-' + String( instanceNumber );
     
    198200
    199201                data = {
    200                         nonce: self.previewCustomizeNonce, // for Customize Preview
     202                        nonce: settings.previewCustomizeNonce, // for Customize Preview
    201203                        wp_customize: 'on'
    202204                };
    203                 if ( ! self.theme.active ) {
    204                         data.theme = self.theme.stylesheet;
    205                 }
    206                 data[ self.renderQueryVar ] = '1';
     205                if ( ! settings.theme.active ) {
     206                        data.theme = settings.theme.stylesheet;
     207                }
     208                data[ settings.renderQueryVar ] = '1';
    207209
    208210                // Gather settings to send in partial refresh request.
     
    226228                } );
    227229                data.customized = JSON.stringify( customized );
    228                 data[ self.renderNoncePostKey ] = self.renderNonceValue;
     230                data[ settings.renderNoncePostKey ] = settings.renderNonceValue;
    229231
    230232                wpNavArgs = $.extend( {}, instance );
     
    237239                request = wp.ajax.send( null, {
    238240                        data: data,
    239                         url: self.requestUri
     241                        url: settings.requestUri
    240242                } );
    241243                request.done( function( data ) {
     
    262264        };
    263265
    264         self.currentRefreshMenuInstanceDebouncedCalls = {};
    265 
    266266        self.refreshMenuInstanceDebounced = function( instanceNumber ) {
    267                 if ( self.currentRefreshMenuInstanceDebouncedCalls[ instanceNumber ] ) {
    268                         clearTimeout( self.currentRefreshMenuInstanceDebouncedCalls[ instanceNumber ] );
    269                 }
    270                 self.currentRefreshMenuInstanceDebouncedCalls[ instanceNumber ] = setTimeout(
     267                if ( currentRefreshDebounced[ instanceNumber ] ) {
     268                        clearTimeout( currentRefreshDebounced[ instanceNumber ] );
     269                }
     270                currentRefreshDebounced[ instanceNumber ] = setTimeout(
    271271                        function() {
    272272                                self.refreshMenuInstance( instanceNumber );
    273273                        },
    274                         self.refreshDebounceDelay
     274                        refreshDebounceDelay
    275275                );
    276276        };
Note: See TracChangeset for help on using the changeset viewer.