Skip to content

Commit 7ececb2

Browse files
committed
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. git-svn-id: https://develop.svn.wordpress.org/trunk@36908 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 326806a commit 7ececb2

File tree

3 files changed

+33
-36
lines changed

3 files changed

+33
-36
lines changed

src/wp-admin/includes/nav-menu.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -937,17 +937,17 @@ function wp_get_nav_menu_to_edit( $menu_id = 0 ) {
937937
*
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
*/
942942
function 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
}
953953

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

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@
218218
.prop( 'tabIndex', -1 )
219219
.removeClass( 'is-visible' );
220220
}
221-
221+
222222
this.searchTerm = event.target.value;
223223
this.pages.search = 1;
224224
this.doSearch( 1 );
@@ -614,15 +614,21 @@
614614
});
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 ) {
628634
this.container.addClass( 'field-' + column + '-active' );
@@ -633,12 +639,10 @@
633639
},
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
} );
644648

src/wp-includes/customize/class-wp-customize-nav-menus-panel.php

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel {
3434
* @access public
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.
4142
$screen = WP_Screen::get( 'nav-menus.php' );
@@ -48,20 +49,12 @@ public function render_screen_options() {
4849
* Link title attribute added as it's a relatively advanced concept for new users.
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

6760
/**

0 commit comments

Comments
 (0)