WordPress.org

Make WordPress Core

Changeset 36908


Ignore:
Timestamp:
03/09/2016 09:40:27 PM (3 years ago)
Author:
westonruter
Message:

Customize: Fix persistence of toggles for displayed nav menu item properties.

  • Eliminates need to click more than one checkbox to have preferences saved.
  • Adds debouncing to saving user-selected menu item properties.
  • Also removes discrepancies between available nav menu item properties on admin page vs Customizer.

Fixes #35273.
Props afercia, westonruter.

Location:
trunk/src
Files:
3 edited

Legend:

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

    r36422 r36908  
    938938 * @since 3.0.0
    939939 *
    940  * @return string|WP_Error $output The menu formatted to edit or error object on failure.
     940 * @return array Columns.
    941941 */
    942942function wp_nav_menu_manage_columns() {
    943943    return array(
    944         '_title' => __('Show advanced menu properties'),
    945         'cb' => '<input type="checkbox" />',
    946         'title-attribute' => __('Title Attribute'),
    947         'link-target' => __('Link Target'),
    948         'css-classes' => __('CSS Classes'),
    949         'xfn' => __('Link Relationship (XFN)'),
    950         'description' => __('Description'),
     944        '_title'      => __( 'Show advanced menu properties' ),
     945        'cb'          => '<input type="checkbox" />',
     946        'link-target' => __( 'Link Target' ),
     947        'attr-title'  => __( 'Title Attribute' ),
     948        'css-classes' => __( 'CSS Classes' ),
     949        'xfn'         => __( 'Link Relationship (XFN)' ),
     950        'description' => __( 'Description' ),
    951951    );
    952952}
  • trunk/src/wp-admin/js/customize-nav-menus.js

    r36675 r36908  
    219219                    .removeClass( 'is-visible' );
    220220            }
    221            
     221
    222222            this.searchTerm = event.target.value;
    223223            this.pages.search = 1;
     
    615615        },
    616616
    617         saveManageColumnsState: function() {
    618             var hidden = this.hidden();
    619             $.post( wp.ajax.settings.url, {
    620                 action: 'hidden-columns',
    621                 hidden: hidden,
     617        saveManageColumnsState: _.debounce( function() {
     618            var panel = this;
     619            if ( panel._updateHiddenColumnsRequest ) {
     620                panel._updateHiddenColumnsRequest.abort();
     621            }
     622
     623            panel._updateHiddenColumnsRequest = wp.ajax.post( 'hidden-columns', {
     624                hidden: panel.hidden(),
    622625                screenoptionnonce: $( '#screenoptionnonce' ).val(),
    623626                page: 'nav-menus'
    624             });
    625         },
     627            } );
     628            panel._updateHiddenColumnsRequest.always( function() {
     629                panel._updateHiddenColumnsRequest = null;
     630            } );
     631        }, 2000 ),
    626632
    627633        checked: function( column ) {
     
    634640
    635641        hidden: function() {
    636             this.hidden = function() {
    637                 return $( '.hide-column-tog' ).not( ':checked' ).map( function() {
    638                     var id = this.id;
    639                     return id.substring( id, id.length - 5 );
    640                 }).get().join( ',' );
    641             };
     642            return $( '.hide-column-tog' ).not( ':checked' ).map( function() {
     643                var id = this.id;
     644                return id.substring( 0, id.length - 5 );
     645            }).get().join( ',' );
    642646        }
    643647    } );
  • trunk/src/wp-includes/customize/class-wp-customize-nav-menus-panel.php

    r36809 r36908  
    3535     */
    3636    public function render_screen_options() {
    37         // Essentially adds the screen options.
    38         add_filter( 'manage_nav-menus_columns', array( $this, 'wp_nav_menu_manage_columns' ) );
     37        // Adds the screen options.
     38        require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     39        add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' );
    3940
    4041        // Display screen options.
     
    4950     *
    5051     * @since 4.3.0
    51      * @access public
    52      *
    53      * @return array The advanced menu properties.
     52     * @deprecated 4.5.0 Deprecated in favor of wp_nav_menu_manage_columns().
    5453     */
    5554    public function wp_nav_menu_manage_columns() {
    56         return array(
    57             '_title'      => __( 'Show advanced menu properties' ),
    58             'cb'          => '<input type="checkbox" />',
    59             'link-target' => __( 'Link Target' ),
    60             'attr-title'  => __( 'Title Attribute' ),
    61             'css-classes' => __( 'CSS Classes' ),
    62             'xfn'         => __( 'Link Relationship (XFN)' ),
    63             'description' => __( 'Description' ),
    64         );
     55        _deprecated_function( __METHOD__, '4.5.0', 'wp_nav_menu_manage_columns' );
     56        require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     57        return wp_nav_menu_manage_columns();
    6558    }
    6659
Note: See TracChangeset for help on using the changeset viewer.