Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-admin/js
File: customize-nav-menus.js
return menuItemControls;
[3000] Fix | Delete
},
[3001] Fix | Delete
[3002] Fix | Delete
/**
[3003] Fix | Delete
* Make sure that each menu item control has the proper depth.
[3004] Fix | Delete
*/
[3005] Fix | Delete
reflowMenuItems: function() {
[3006] Fix | Delete
var menuControl = this,
[3007] Fix | Delete
menuItemControls = menuControl.getMenuItemControls(),
[3008] Fix | Delete
reflowRecursively;
[3009] Fix | Delete
[3010] Fix | Delete
reflowRecursively = function( context ) {
[3011] Fix | Delete
var currentMenuItemControls = [],
[3012] Fix | Delete
thisParent = context.currentParent;
[3013] Fix | Delete
_.each( context.menuItemControls, function( menuItemControl ) {
[3014] Fix | Delete
if ( thisParent === menuItemControl.setting().menu_item_parent ) {
[3015] Fix | Delete
currentMenuItemControls.push( menuItemControl );
[3016] Fix | Delete
// @todo We could remove this item from menuItemControls now, for efficiency.
[3017] Fix | Delete
}
[3018] Fix | Delete
});
[3019] Fix | Delete
currentMenuItemControls.sort( function( a, b ) {
[3020] Fix | Delete
return a.setting().position - b.setting().position;
[3021] Fix | Delete
});
[3022] Fix | Delete
[3023] Fix | Delete
_.each( currentMenuItemControls, function( menuItemControl ) {
[3024] Fix | Delete
// Update position.
[3025] Fix | Delete
context.currentAbsolutePosition += 1;
[3026] Fix | Delete
menuItemControl.priority.set( context.currentAbsolutePosition ); // This will change the sort order.
[3027] Fix | Delete
[3028] Fix | Delete
// Update depth.
[3029] Fix | Delete
if ( ! menuItemControl.container.hasClass( 'menu-item-depth-' + String( context.currentDepth ) ) ) {
[3030] Fix | Delete
_.each( menuItemControl.container.prop( 'className' ).match( /menu-item-depth-\d+/g ), function( className ) {
[3031] Fix | Delete
menuItemControl.container.removeClass( className );
[3032] Fix | Delete
});
[3033] Fix | Delete
menuItemControl.container.addClass( 'menu-item-depth-' + String( context.currentDepth ) );
[3034] Fix | Delete
}
[3035] Fix | Delete
menuItemControl.container.data( 'item-depth', context.currentDepth );
[3036] Fix | Delete
[3037] Fix | Delete
// Process any children items.
[3038] Fix | Delete
context.currentDepth += 1;
[3039] Fix | Delete
context.currentParent = menuItemControl.params.menu_item_id;
[3040] Fix | Delete
reflowRecursively( context );
[3041] Fix | Delete
context.currentDepth -= 1;
[3042] Fix | Delete
context.currentParent = thisParent;
[3043] Fix | Delete
});
[3044] Fix | Delete
[3045] Fix | Delete
// Update class names for reordering controls.
[3046] Fix | Delete
if ( currentMenuItemControls.length ) {
[3047] Fix | Delete
_( currentMenuItemControls ).each(function( menuItemControl ) {
[3048] Fix | Delete
menuItemControl.container.removeClass( 'move-up-disabled move-down-disabled move-left-disabled move-right-disabled' );
[3049] Fix | Delete
if ( 0 === context.currentDepth ) {
[3050] Fix | Delete
menuItemControl.container.addClass( 'move-left-disabled' );
[3051] Fix | Delete
} else if ( 10 === context.currentDepth ) {
[3052] Fix | Delete
menuItemControl.container.addClass( 'move-right-disabled' );
[3053] Fix | Delete
}
[3054] Fix | Delete
});
[3055] Fix | Delete
[3056] Fix | Delete
currentMenuItemControls[0].container
[3057] Fix | Delete
.addClass( 'move-up-disabled' )
[3058] Fix | Delete
.addClass( 'move-right-disabled' )
[3059] Fix | Delete
.toggleClass( 'move-down-disabled', 1 === currentMenuItemControls.length );
[3060] Fix | Delete
currentMenuItemControls[ currentMenuItemControls.length - 1 ].container
[3061] Fix | Delete
.addClass( 'move-down-disabled' )
[3062] Fix | Delete
.toggleClass( 'move-up-disabled', 1 === currentMenuItemControls.length );
[3063] Fix | Delete
}
[3064] Fix | Delete
};
[3065] Fix | Delete
[3066] Fix | Delete
reflowRecursively( {
[3067] Fix | Delete
menuItemControls: menuItemControls,
[3068] Fix | Delete
currentParent: 0,
[3069] Fix | Delete
currentDepth: 0,
[3070] Fix | Delete
currentAbsolutePosition: 0
[3071] Fix | Delete
} );
[3072] Fix | Delete
[3073] Fix | Delete
menuControl.updateInvitationVisibility( menuItemControls );
[3074] Fix | Delete
menuControl.container.find( '.reorder-toggle' ).toggle( menuItemControls.length > 1 );
[3075] Fix | Delete
},
[3076] Fix | Delete
[3077] Fix | Delete
/**
[3078] Fix | Delete
* Note that this function gets debounced so that when a lot of setting
[3079] Fix | Delete
* changes are made at once, for instance when moving a menu item that
[3080] Fix | Delete
* has child items, this function will only be called once all of the
[3081] Fix | Delete
* settings have been updated.
[3082] Fix | Delete
*/
[3083] Fix | Delete
debouncedReflowMenuItems: _.debounce( function() {
[3084] Fix | Delete
this.reflowMenuItems.apply( this, arguments );
[3085] Fix | Delete
}, 0 ),
[3086] Fix | Delete
[3087] Fix | Delete
/**
[3088] Fix | Delete
* Add a new item to this menu.
[3089] Fix | Delete
*
[3090] Fix | Delete
* @param {Object} item - Value for the nav_menu_item setting to be created.
[3091] Fix | Delete
* @return {wp.customize.Menus.controlConstructor.nav_menu_item} The newly-created nav_menu_item control instance.
[3092] Fix | Delete
*/
[3093] Fix | Delete
addItemToMenu: function( item ) {
[3094] Fix | Delete
var menuControl = this, customizeId, settingArgs, setting, menuItemControl, placeholderId, position = 0, priority = 10,
[3095] Fix | Delete
originalItemId = item.id || '';
[3096] Fix | Delete
[3097] Fix | Delete
_.each( menuControl.getMenuItemControls(), function( control ) {
[3098] Fix | Delete
if ( false === control.setting() ) {
[3099] Fix | Delete
return;
[3100] Fix | Delete
}
[3101] Fix | Delete
priority = Math.max( priority, control.priority() );
[3102] Fix | Delete
if ( 0 === control.setting().menu_item_parent ) {
[3103] Fix | Delete
position = Math.max( position, control.setting().position );
[3104] Fix | Delete
}
[3105] Fix | Delete
});
[3106] Fix | Delete
position += 1;
[3107] Fix | Delete
priority += 1;
[3108] Fix | Delete
[3109] Fix | Delete
item = $.extend(
[3110] Fix | Delete
{},
[3111] Fix | Delete
api.Menus.data.defaultSettingValues.nav_menu_item,
[3112] Fix | Delete
item,
[3113] Fix | Delete
{
[3114] Fix | Delete
nav_menu_term_id: menuControl.params.menu_id,
[3115] Fix | Delete
position: position
[3116] Fix | Delete
}
[3117] Fix | Delete
);
[3118] Fix | Delete
delete item.id; // Only used by Backbone.
[3119] Fix | Delete
[3120] Fix | Delete
placeholderId = api.Menus.generatePlaceholderAutoIncrementId();
[3121] Fix | Delete
customizeId = 'nav_menu_item[' + String( placeholderId ) + ']';
[3122] Fix | Delete
settingArgs = {
[3123] Fix | Delete
type: 'nav_menu_item',
[3124] Fix | Delete
transport: api.Menus.data.settingTransport,
[3125] Fix | Delete
previewer: api.previewer
[3126] Fix | Delete
};
[3127] Fix | Delete
setting = api.create( customizeId, customizeId, {}, settingArgs );
[3128] Fix | Delete
setting.set( item ); // Change from initial empty object to actual item to mark as dirty.
[3129] Fix | Delete
[3130] Fix | Delete
// Add the menu item control.
[3131] Fix | Delete
menuItemControl = new api.controlConstructor.nav_menu_item( customizeId, {
[3132] Fix | Delete
type: 'nav_menu_item',
[3133] Fix | Delete
section: menuControl.id,
[3134] Fix | Delete
priority: priority,
[3135] Fix | Delete
settings: {
[3136] Fix | Delete
'default': customizeId
[3137] Fix | Delete
},
[3138] Fix | Delete
menu_item_id: placeholderId,
[3139] Fix | Delete
original_item_id: originalItemId
[3140] Fix | Delete
} );
[3141] Fix | Delete
[3142] Fix | Delete
api.control.add( menuItemControl );
[3143] Fix | Delete
setting.preview();
[3144] Fix | Delete
menuControl.debouncedReflowMenuItems();
[3145] Fix | Delete
[3146] Fix | Delete
wp.a11y.speak( api.Menus.data.l10n.itemAdded );
[3147] Fix | Delete
[3148] Fix | Delete
return menuItemControl;
[3149] Fix | Delete
},
[3150] Fix | Delete
[3151] Fix | Delete
/**
[3152] Fix | Delete
* Show an invitation to add new menu items when there are no menu items.
[3153] Fix | Delete
*
[3154] Fix | Delete
* @since 4.9.0
[3155] Fix | Delete
*
[3156] Fix | Delete
* @param {wp.customize.controlConstructor.nav_menu_item[]} optionalMenuItemControls
[3157] Fix | Delete
*/
[3158] Fix | Delete
updateInvitationVisibility: function ( optionalMenuItemControls ) {
[3159] Fix | Delete
var menuItemControls = optionalMenuItemControls || this.getMenuItemControls();
[3160] Fix | Delete
[3161] Fix | Delete
this.container.find( '.new-menu-item-invitation' ).toggle( menuItemControls.length === 0 );
[3162] Fix | Delete
}
[3163] Fix | Delete
} );
[3164] Fix | Delete
[3165] Fix | Delete
/**
[3166] Fix | Delete
* Extends wp.customize.controlConstructor with control constructor for
[3167] Fix | Delete
* menu_location, menu_item, nav_menu, and new_menu.
[3168] Fix | Delete
*/
[3169] Fix | Delete
$.extend( api.controlConstructor, {
[3170] Fix | Delete
nav_menu_location: api.Menus.MenuLocationControl,
[3171] Fix | Delete
nav_menu_item: api.Menus.MenuItemControl,
[3172] Fix | Delete
nav_menu: api.Menus.MenuControl,
[3173] Fix | Delete
nav_menu_name: api.Menus.MenuNameControl,
[3174] Fix | Delete
nav_menu_locations: api.Menus.MenuLocationsControl,
[3175] Fix | Delete
nav_menu_auto_add: api.Menus.MenuAutoAddControl
[3176] Fix | Delete
});
[3177] Fix | Delete
[3178] Fix | Delete
/**
[3179] Fix | Delete
* Extends wp.customize.panelConstructor with section constructor for menus.
[3180] Fix | Delete
*/
[3181] Fix | Delete
$.extend( api.panelConstructor, {
[3182] Fix | Delete
nav_menus: api.Menus.MenusPanel
[3183] Fix | Delete
});
[3184] Fix | Delete
[3185] Fix | Delete
/**
[3186] Fix | Delete
* Extends wp.customize.sectionConstructor with section constructor for menu.
[3187] Fix | Delete
*/
[3188] Fix | Delete
$.extend( api.sectionConstructor, {
[3189] Fix | Delete
nav_menu: api.Menus.MenuSection,
[3190] Fix | Delete
new_menu: api.Menus.NewMenuSection
[3191] Fix | Delete
});
[3192] Fix | Delete
[3193] Fix | Delete
/**
[3194] Fix | Delete
* Init Customizer for menus.
[3195] Fix | Delete
*/
[3196] Fix | Delete
api.bind( 'ready', function() {
[3197] Fix | Delete
[3198] Fix | Delete
// Set up the menu items panel.
[3199] Fix | Delete
api.Menus.availableMenuItemsPanel = new api.Menus.AvailableMenuItemsPanelView({
[3200] Fix | Delete
collection: api.Menus.availableMenuItems
[3201] Fix | Delete
});
[3202] Fix | Delete
[3203] Fix | Delete
api.bind( 'saved', function( data ) {
[3204] Fix | Delete
if ( data.nav_menu_updates || data.nav_menu_item_updates ) {
[3205] Fix | Delete
api.Menus.applySavedData( data );
[3206] Fix | Delete
}
[3207] Fix | Delete
} );
[3208] Fix | Delete
[3209] Fix | Delete
/*
[3210] Fix | Delete
* Reset the list of posts created in the customizer once published.
[3211] Fix | Delete
* The setting is updated quietly (bypassing events being triggered)
[3212] Fix | Delete
* so that the customized state doesn't become immediately dirty.
[3213] Fix | Delete
*/
[3214] Fix | Delete
api.state( 'changesetStatus' ).bind( function( status ) {
[3215] Fix | Delete
if ( 'publish' === status ) {
[3216] Fix | Delete
api( 'nav_menus_created_posts' )._value = [];
[3217] Fix | Delete
}
[3218] Fix | Delete
} );
[3219] Fix | Delete
[3220] Fix | Delete
// Open and focus menu control.
[3221] Fix | Delete
api.previewer.bind( 'focus-nav-menu-item-control', api.Menus.focusMenuItemControl );
[3222] Fix | Delete
} );
[3223] Fix | Delete
[3224] Fix | Delete
/**
[3225] Fix | Delete
* When customize_save comes back with a success, make sure any inserted
[3226] Fix | Delete
* nav menus and items are properly re-added with their newly-assigned IDs.
[3227] Fix | Delete
*
[3228] Fix | Delete
* @alias wp.customize.Menus.applySavedData
[3229] Fix | Delete
*
[3230] Fix | Delete
* @param {Object} data
[3231] Fix | Delete
* @param {Array} data.nav_menu_updates
[3232] Fix | Delete
* @param {Array} data.nav_menu_item_updates
[3233] Fix | Delete
*/
[3234] Fix | Delete
api.Menus.applySavedData = function( data ) {
[3235] Fix | Delete
[3236] Fix | Delete
var insertedMenuIdMapping = {}, insertedMenuItemIdMapping = {};
[3237] Fix | Delete
[3238] Fix | Delete
_( data.nav_menu_updates ).each(function( update ) {
[3239] Fix | Delete
var oldCustomizeId, newCustomizeId, customizeId, oldSetting, newSetting, setting, settingValue, oldSection, newSection, wasSaved, widgetTemplate, navMenuCount, shouldExpandNewSection;
[3240] Fix | Delete
if ( 'inserted' === update.status ) {
[3241] Fix | Delete
if ( ! update.previous_term_id ) {
[3242] Fix | Delete
throw new Error( 'Expected previous_term_id' );
[3243] Fix | Delete
}
[3244] Fix | Delete
if ( ! update.term_id ) {
[3245] Fix | Delete
throw new Error( 'Expected term_id' );
[3246] Fix | Delete
}
[3247] Fix | Delete
oldCustomizeId = 'nav_menu[' + String( update.previous_term_id ) + ']';
[3248] Fix | Delete
if ( ! api.has( oldCustomizeId ) ) {
[3249] Fix | Delete
throw new Error( 'Expected setting to exist: ' + oldCustomizeId );
[3250] Fix | Delete
}
[3251] Fix | Delete
oldSetting = api( oldCustomizeId );
[3252] Fix | Delete
if ( ! api.section.has( oldCustomizeId ) ) {
[3253] Fix | Delete
throw new Error( 'Expected control to exist: ' + oldCustomizeId );
[3254] Fix | Delete
}
[3255] Fix | Delete
oldSection = api.section( oldCustomizeId );
[3256] Fix | Delete
[3257] Fix | Delete
settingValue = oldSetting.get();
[3258] Fix | Delete
if ( ! settingValue ) {
[3259] Fix | Delete
throw new Error( 'Did not expect setting to be empty (deleted).' );
[3260] Fix | Delete
}
[3261] Fix | Delete
settingValue = $.extend( _.clone( settingValue ), update.saved_value );
[3262] Fix | Delete
[3263] Fix | Delete
insertedMenuIdMapping[ update.previous_term_id ] = update.term_id;
[3264] Fix | Delete
newCustomizeId = 'nav_menu[' + String( update.term_id ) + ']';
[3265] Fix | Delete
newSetting = api.create( newCustomizeId, newCustomizeId, settingValue, {
[3266] Fix | Delete
type: 'nav_menu',
[3267] Fix | Delete
transport: api.Menus.data.settingTransport,
[3268] Fix | Delete
previewer: api.previewer
[3269] Fix | Delete
} );
[3270] Fix | Delete
[3271] Fix | Delete
shouldExpandNewSection = oldSection.expanded();
[3272] Fix | Delete
if ( shouldExpandNewSection ) {
[3273] Fix | Delete
oldSection.collapse();
[3274] Fix | Delete
}
[3275] Fix | Delete
[3276] Fix | Delete
// Add the menu section.
[3277] Fix | Delete
newSection = new api.Menus.MenuSection( newCustomizeId, {
[3278] Fix | Delete
panel: 'nav_menus',
[3279] Fix | Delete
title: settingValue.name,
[3280] Fix | Delete
customizeAction: api.Menus.data.l10n.customizingMenus,
[3281] Fix | Delete
type: 'nav_menu',
[3282] Fix | Delete
priority: oldSection.priority.get(),
[3283] Fix | Delete
menu_id: update.term_id
[3284] Fix | Delete
} );
[3285] Fix | Delete
[3286] Fix | Delete
// Add new control for the new menu.
[3287] Fix | Delete
api.section.add( newSection );
[3288] Fix | Delete
[3289] Fix | Delete
// Update the values for nav menus in Navigation Menu controls.
[3290] Fix | Delete
api.control.each( function( setting ) {
[3291] Fix | Delete
if ( ! setting.extended( api.controlConstructor.widget_form ) || 'nav_menu' !== setting.params.widget_id_base ) {
[3292] Fix | Delete
return;
[3293] Fix | Delete
}
[3294] Fix | Delete
var select, oldMenuOption, newMenuOption;
[3295] Fix | Delete
select = setting.container.find( 'select' );
[3296] Fix | Delete
oldMenuOption = select.find( 'option[value=' + String( update.previous_term_id ) + ']' );
[3297] Fix | Delete
newMenuOption = select.find( 'option[value=' + String( update.term_id ) + ']' );
[3298] Fix | Delete
newMenuOption.prop( 'selected', oldMenuOption.prop( 'selected' ) );
[3299] Fix | Delete
oldMenuOption.remove();
[3300] Fix | Delete
} );
[3301] Fix | Delete
[3302] Fix | Delete
// Delete the old placeholder nav_menu.
[3303] Fix | Delete
oldSetting.callbacks.disable(); // Prevent setting triggering Customizer dirty state when set.
[3304] Fix | Delete
oldSetting.set( false );
[3305] Fix | Delete
oldSetting.preview();
[3306] Fix | Delete
newSetting.preview();
[3307] Fix | Delete
oldSetting._dirty = false;
[3308] Fix | Delete
[3309] Fix | Delete
// Remove nav_menu section.
[3310] Fix | Delete
oldSection.container.remove();
[3311] Fix | Delete
api.section.remove( oldCustomizeId );
[3312] Fix | Delete
[3313] Fix | Delete
// Update the nav_menu widget to reflect removed placeholder menu.
[3314] Fix | Delete
navMenuCount = 0;
[3315] Fix | Delete
api.each(function( setting ) {
[3316] Fix | Delete
if ( /^nav_menu\[/.test( setting.id ) && false !== setting() ) {
[3317] Fix | Delete
navMenuCount += 1;
[3318] Fix | Delete
}
[3319] Fix | Delete
});
[3320] Fix | Delete
widgetTemplate = $( '#available-widgets-list .widget-tpl:has( input.id_base[ value=nav_menu ] )' );
[3321] Fix | Delete
widgetTemplate.find( '.nav-menu-widget-form-controls:first' ).toggle( 0 !== navMenuCount );
[3322] Fix | Delete
widgetTemplate.find( '.nav-menu-widget-no-menus-message:first' ).toggle( 0 === navMenuCount );
[3323] Fix | Delete
widgetTemplate.find( 'option[value=' + String( update.previous_term_id ) + ']' ).remove();
[3324] Fix | Delete
[3325] Fix | Delete
// Update the nav_menu_locations[...] controls to remove the placeholder menus from the dropdown options.
[3326] Fix | Delete
wp.customize.control.each(function( control ){
[3327] Fix | Delete
if ( /^nav_menu_locations\[/.test( control.id ) ) {
[3328] Fix | Delete
control.container.find( 'option[value=' + String( update.previous_term_id ) + ']' ).remove();
[3329] Fix | Delete
}
[3330] Fix | Delete
});
[3331] Fix | Delete
[3332] Fix | Delete
// Update nav_menu_locations to reference the new ID.
[3333] Fix | Delete
api.each( function( setting ) {
[3334] Fix | Delete
var wasSaved = api.state( 'saved' ).get();
[3335] Fix | Delete
if ( /^nav_menu_locations\[/.test( setting.id ) && setting.get() === update.previous_term_id ) {
[3336] Fix | Delete
setting.set( update.term_id );
[3337] Fix | Delete
setting._dirty = false; // Not dirty because this is has also just been done on server in WP_Customize_Nav_Menu_Setting::update().
[3338] Fix | Delete
api.state( 'saved' ).set( wasSaved );
[3339] Fix | Delete
setting.preview();
[3340] Fix | Delete
}
[3341] Fix | Delete
} );
[3342] Fix | Delete
[3343] Fix | Delete
if ( shouldExpandNewSection ) {
[3344] Fix | Delete
newSection.expand();
[3345] Fix | Delete
}
[3346] Fix | Delete
} else if ( 'updated' === update.status ) {
[3347] Fix | Delete
customizeId = 'nav_menu[' + String( update.term_id ) + ']';
[3348] Fix | Delete
if ( ! api.has( customizeId ) ) {
[3349] Fix | Delete
throw new Error( 'Expected setting to exist: ' + customizeId );
[3350] Fix | Delete
}
[3351] Fix | Delete
[3352] Fix | Delete
// Make sure the setting gets updated with its sanitized server value (specifically the conflict-resolved name).
[3353] Fix | Delete
setting = api( customizeId );
[3354] Fix | Delete
if ( ! _.isEqual( update.saved_value, setting.get() ) ) {
[3355] Fix | Delete
wasSaved = api.state( 'saved' ).get();
[3356] Fix | Delete
setting.set( update.saved_value );
[3357] Fix | Delete
setting._dirty = false;
[3358] Fix | Delete
api.state( 'saved' ).set( wasSaved );
[3359] Fix | Delete
}
[3360] Fix | Delete
}
[3361] Fix | Delete
} );
[3362] Fix | Delete
[3363] Fix | Delete
// Build up mapping of nav_menu_item placeholder IDs to inserted IDs.
[3364] Fix | Delete
_( data.nav_menu_item_updates ).each(function( update ) {
[3365] Fix | Delete
if ( update.previous_post_id ) {
[3366] Fix | Delete
insertedMenuItemIdMapping[ update.previous_post_id ] = update.post_id;
[3367] Fix | Delete
}
[3368] Fix | Delete
});
[3369] Fix | Delete
[3370] Fix | Delete
_( data.nav_menu_item_updates ).each(function( update ) {
[3371] Fix | Delete
var oldCustomizeId, newCustomizeId, oldSetting, newSetting, settingValue, oldControl, newControl;
[3372] Fix | Delete
if ( 'inserted' === update.status ) {
[3373] Fix | Delete
if ( ! update.previous_post_id ) {
[3374] Fix | Delete
throw new Error( 'Expected previous_post_id' );
[3375] Fix | Delete
}
[3376] Fix | Delete
if ( ! update.post_id ) {
[3377] Fix | Delete
throw new Error( 'Expected post_id' );
[3378] Fix | Delete
}
[3379] Fix | Delete
oldCustomizeId = 'nav_menu_item[' + String( update.previous_post_id ) + ']';
[3380] Fix | Delete
if ( ! api.has( oldCustomizeId ) ) {
[3381] Fix | Delete
throw new Error( 'Expected setting to exist: ' + oldCustomizeId );
[3382] Fix | Delete
}
[3383] Fix | Delete
oldSetting = api( oldCustomizeId );
[3384] Fix | Delete
if ( ! api.control.has( oldCustomizeId ) ) {
[3385] Fix | Delete
throw new Error( 'Expected control to exist: ' + oldCustomizeId );
[3386] Fix | Delete
}
[3387] Fix | Delete
oldControl = api.control( oldCustomizeId );
[3388] Fix | Delete
[3389] Fix | Delete
settingValue = oldSetting.get();
[3390] Fix | Delete
if ( ! settingValue ) {
[3391] Fix | Delete
throw new Error( 'Did not expect setting to be empty (deleted).' );
[3392] Fix | Delete
}
[3393] Fix | Delete
settingValue = _.clone( settingValue );
[3394] Fix | Delete
[3395] Fix | Delete
// If the parent menu item was also inserted, update the menu_item_parent to the new ID.
[3396] Fix | Delete
if ( settingValue.menu_item_parent < 0 ) {
[3397] Fix | Delete
if ( ! insertedMenuItemIdMapping[ settingValue.menu_item_parent ] ) {
[3398] Fix | Delete
throw new Error( 'inserted ID for menu_item_parent not available' );
[3399] Fix | Delete
}
[3400] Fix | Delete
settingValue.menu_item_parent = insertedMenuItemIdMapping[ settingValue.menu_item_parent ];
[3401] Fix | Delete
}
[3402] Fix | Delete
[3403] Fix | Delete
// If the menu was also inserted, then make sure it uses the new menu ID for nav_menu_term_id.
[3404] Fix | Delete
if ( insertedMenuIdMapping[ settingValue.nav_menu_term_id ] ) {
[3405] Fix | Delete
settingValue.nav_menu_term_id = insertedMenuIdMapping[ settingValue.nav_menu_term_id ];
[3406] Fix | Delete
}
[3407] Fix | Delete
[3408] Fix | Delete
newCustomizeId = 'nav_menu_item[' + String( update.post_id ) + ']';
[3409] Fix | Delete
newSetting = api.create( newCustomizeId, newCustomizeId, settingValue, {
[3410] Fix | Delete
type: 'nav_menu_item',
[3411] Fix | Delete
transport: api.Menus.data.settingTransport,
[3412] Fix | Delete
previewer: api.previewer
[3413] Fix | Delete
} );
[3414] Fix | Delete
[3415] Fix | Delete
// Add the menu control.
[3416] Fix | Delete
newControl = new api.controlConstructor.nav_menu_item( newCustomizeId, {
[3417] Fix | Delete
type: 'nav_menu_item',
[3418] Fix | Delete
menu_id: update.post_id,
[3419] Fix | Delete
section: 'nav_menu[' + String( settingValue.nav_menu_term_id ) + ']',
[3420] Fix | Delete
priority: oldControl.priority.get(),
[3421] Fix | Delete
settings: {
[3422] Fix | Delete
'default': newCustomizeId
[3423] Fix | Delete
},
[3424] Fix | Delete
menu_item_id: update.post_id
[3425] Fix | Delete
} );
[3426] Fix | Delete
[3427] Fix | Delete
// Remove old control.
[3428] Fix | Delete
oldControl.container.remove();
[3429] Fix | Delete
api.control.remove( oldCustomizeId );
[3430] Fix | Delete
[3431] Fix | Delete
// Add new control to take its place.
[3432] Fix | Delete
api.control.add( newControl );
[3433] Fix | Delete
[3434] Fix | Delete
// Delete the placeholder and preview the new setting.
[3435] Fix | Delete
oldSetting.callbacks.disable(); // Prevent setting triggering Customizer dirty state when set.
[3436] Fix | Delete
oldSetting.set( false );
[3437] Fix | Delete
oldSetting.preview();
[3438] Fix | Delete
newSetting.preview();
[3439] Fix | Delete
oldSetting._dirty = false;
[3440] Fix | Delete
[3441] Fix | Delete
newControl.container.toggleClass( 'menu-item-edit-inactive', oldControl.container.hasClass( 'menu-item-edit-inactive' ) );
[3442] Fix | Delete
}
[3443] Fix | Delete
});
[3444] Fix | Delete
[3445] Fix | Delete
/*
[3446] Fix | Delete
* Update the settings for any nav_menu widgets that had selected a placeholder ID.
[3447] Fix | Delete
*/
[3448] Fix | Delete
_.each( data.widget_nav_menu_updates, function( widgetSettingValue, widgetSettingId ) {
[3449] Fix | Delete
var setting = api( widgetSettingId );
[3450] Fix | Delete
if ( setting ) {
[3451] Fix | Delete
setting._value = widgetSettingValue;
[3452] Fix | Delete
setting.preview(); // Send to the preview now so that menu refresh will use the inserted menu.
[3453] Fix | Delete
}
[3454] Fix | Delete
});
[3455] Fix | Delete
};
[3456] Fix | Delete
[3457] Fix | Delete
/**
[3458] Fix | Delete
* Focus a menu item control.
[3459] Fix | Delete
*
[3460] Fix | Delete
* @alias wp.customize.Menus.focusMenuItemControl
[3461] Fix | Delete
*
[3462] Fix | Delete
* @param {string} menuItemId
[3463] Fix | Delete
*/
[3464] Fix | Delete
api.Menus.focusMenuItemControl = function( menuItemId ) {
[3465] Fix | Delete
var control = api.Menus.getMenuItemControl( menuItemId );
[3466] Fix | Delete
if ( control ) {
[3467] Fix | Delete
control.focus();
[3468] Fix | Delete
}
[3469] Fix | Delete
};
[3470] Fix | Delete
[3471] Fix | Delete
/**
[3472] Fix | Delete
* Get the control for a given menu.
[3473] Fix | Delete
*
[3474] Fix | Delete
* @alias wp.customize.Menus.getMenuControl
[3475] Fix | Delete
*
[3476] Fix | Delete
* @param menuId
[3477] Fix | Delete
* @return {wp.customize.controlConstructor.menus[]}
[3478] Fix | Delete
*/
[3479] Fix | Delete
api.Menus.getMenuControl = function( menuId ) {
[3480] Fix | Delete
return api.control( 'nav_menu[' + menuId + ']' );
[3481] Fix | Delete
};
[3482] Fix | Delete
[3483] Fix | Delete
/**
[3484] Fix | Delete
* Given a menu item ID, get the control associated with it.
[3485] Fix | Delete
*
[3486] Fix | Delete
* @alias wp.customize.Menus.getMenuItemControl
[3487] Fix | Delete
*
[3488] Fix | Delete
* @param {string} menuItemId
[3489] Fix | Delete
* @return {Object|null}
[3490] Fix | Delete
*/
[3491] Fix | Delete
api.Menus.getMenuItemControl = function( menuItemId ) {
[3492] Fix | Delete
return api.control( menuItemIdToSettingId( menuItemId ) );
[3493] Fix | Delete
};
[3494] Fix | Delete
[3495] Fix | Delete
/**
[3496] Fix | Delete
* @alias wp.customize.Menus~menuItemIdToSettingId
[3497] Fix | Delete
*
[3498] Fix | Delete
* @param {string} menuItemId
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function