Make WordPress Core

Changeset 33345


Ignore:
Timestamp:
07/21/2015 04:13:36 PM (10 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.