WordPress.org

Make WordPress Core

Changeset 36507


Ignore:
Timestamp:
02/10/2016 02:10:17 PM (4 years ago)
Author:
ericlewis
Message:

Menus: Revert larger menu support in Edit Menus screen in [36506].

JSON encoding the form as it exists on the page will not scale.

See #14134.

Location:
trunk/src/wp-admin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/js/nav-menu.js

    r36506 r36507  
    4444            this.attachQuickSearchListeners();
    4545            this.attachThemeLocationsListeners();
    46             this.attachMenuSaveSubmitListeners();
    4746
    4847            this.attachTabsPanelListeners();
     
    836835        },
    837836
    838         attachMenuSaveSubmitListeners : function() {
    839             /*
    840              * When a navigation menu is saved, store a JSON representation of all form data
    841              * in a single input to avoid PHP `max_input_vars` limitations. See #14134.
    842              */
    843             $('#update-nav-menu').submit(function() {
    844                 var navMenuData = {};
    845                 $('#update-nav-menu input').each(function(index, element) {
    846                     var name = $(element).attr('name');
    847                     var regex = /(.*)(?:\[(\d+)\])/;
    848                     if ( regex.test( name ) ) {
    849                         var matches = regex.exec(name);
    850                         if ( ! navMenuData[matches[1]] ) {
    851                             navMenuData[matches[1]] = [];
    852                         }
    853                         navMenuData[matches[1]][matches[2]] = $(element).val();
    854                     } else {
    855                         navMenuData[name] = $(element).val();
    856                     }
    857                 });
    858                 $('[name="nav-menu-data"]').val( JSON.stringify( navMenuData ) );
    859             });
    860         },
    861 
    862837        attachThemeLocationsListeners : function() {
    863838            var loc = $('#nav-menu-theme-locations'), params = {};
  • trunk/src/wp-admin/nav-menus.php

    r36506 r36507  
    4949// Allowed actions: add, update, delete
    5050$action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'edit';
    51 
    52 /*
    53  * If a JSON blob of navigation menu data is found, expand it and inject it
    54  * into `$_POST` to avoid PHP `max_input_vars` limitations. See #14134.
    55  */
    56 if ( isset( $_POST['nav-menu-data'] ) ) {
    57     $data = json_decode( stripslashes( $_POST['nav-menu-data'] ) );
    58     if ( ! is_null( $data ) && $data ) {
    59         foreach ( $data as $post_var => $post_data ) {
    60             $_POST[$post_var] = $post_data;
    61         }
    62     }
    63 }
    6451
    6552switch ( $action ) {
     
    745732            <form id="update-nav-menu" method="post" enctype="multipart/form-data">
    746733                <div class="menu-edit <?php if ( $add_new_screen ) echo 'blank-slate'; ?>">
    747                     <input type="hidden" name="nav-menu-data">
    748734                    <?php
    749735                    wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
Note: See TracChangeset for help on using the changeset viewer.