WordPress.org

Make WordPress Core

Ticket #34628: 34628.0.diff

File 34628.0.diff, 1.8 KB (added by westonruter, 6 years ago)

https://github.com/xwp/wordpress-develop/pull/126/files

  • src/wp-admin/js/customize-nav-menus.js

    diff --git src/wp-admin/js/customize-nav-menus.js src/wp-admin/js/customize-nav-menus.js
    index b4e7be5..fbbb7da 100644
     
    24542454         */
    24552455        api.Menus.applySavedData = function( data ) {
    24562456
    2457                 var insertedMenuIdMapping = {};
     2457                var insertedMenuIdMapping = {}, insertedMenuItemIdMapping = {};
    24582458
    24592459                _( data.nav_menu_updates ).each(function( update ) {
    24602460                        var oldCustomizeId, newCustomizeId, customizeId, oldSetting, newSetting, setting, settingValue, oldSection, newSection, wasSaved, widgetTemplate, navMenuCount;
     
    25852585                        }
    25862586                } );
    25872587
     2588                // Build up mapping of nav_menu_item placehlder IDs to inserted IDs.
     2589                _( data.nav_menu_item_updates ).each(function( update ) {
     2590                        if ( update.previous_post_id ) {
     2591                                insertedMenuItemIdMapping[ update.previous_post_id ] = update.post_id;
     2592                        }
     2593                });
     2594
    25882595                _( data.nav_menu_item_updates ).each(function( update ) {
    25892596                        var oldCustomizeId, newCustomizeId, oldSetting, newSetting, settingValue, oldControl, newControl;
    25902597                        if ( 'inserted' === update.status ) {
     
    26102617                                }
    26112618                                settingValue = _.clone( settingValue );
    26122619
     2620                                // If the parent menu item was also inserted, update the menu_item_parent to the new ID.
     2621                                if ( settingValue.menu_item_parent < 0 ) {
     2622                                        if ( ! insertedMenuItemIdMapping[ settingValue.menu_item_parent ] ) {
     2623                                                throw new Error( 'inserted ID for menu_item_parent not available' );
     2624                                        }
     2625                                        settingValue.menu_item_parent = insertedMenuItemIdMapping[ settingValue.menu_item_parent ];
     2626                                }
     2627
    26132628                                // If the menu was also inserted, then make sure it uses the new menu ID for nav_menu_term_id.
    26142629                                if ( insertedMenuIdMapping[ settingValue.nav_menu_term_id ] ) {
    26152630                                        settingValue.nav_menu_term_id = insertedMenuIdMapping[ settingValue.nav_menu_term_id ];