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.

Built from https://develop.svn.wordpress.org/trunk@36908


git-svn-id: http://core.svn.wordpress.org/trunk@36876 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Weston Ruter 2016-03-09 21:41:28 +00:00
parent f39d1e4fcc
commit 7441acafaf
5 changed files with 36 additions and 39 deletions

View File

@ -937,14 +937,14 @@ function wp_get_nav_menu_to_edit( $menu_id = 0 ) {
* *
* @since 3.0.0 * @since 3.0.0
* *
* @return string|WP_Error $output The menu formatted to edit or error object on failure. * @return array Columns.
*/ */
function wp_nav_menu_manage_columns() { function wp_nav_menu_manage_columns() {
return array( return array(
'_title' => __( 'Show advanced menu properties' ), '_title' => __( 'Show advanced menu properties' ),
'cb' => '<input type="checkbox" />', 'cb' => '<input type="checkbox" />',
'title-attribute' => __('Title Attribute'),
'link-target' => __( 'Link Target' ), 'link-target' => __( 'Link Target' ),
'attr-title' => __( 'Title Attribute' ),
'css-classes' => __( 'CSS Classes' ), 'css-classes' => __( 'CSS Classes' ),
'xfn' => __( 'Link Relationship (XFN)' ), 'xfn' => __( 'Link Relationship (XFN)' ),
'description' => __( 'Description' ), 'description' => __( 'Description' ),

View File

@ -614,15 +614,21 @@
}); });
}, },
saveManageColumnsState: function() { saveManageColumnsState: _.debounce( function() {
var hidden = this.hidden(); var panel = this;
$.post( wp.ajax.settings.url, { if ( panel._updateHiddenColumnsRequest ) {
action: 'hidden-columns', panel._updateHiddenColumnsRequest.abort();
hidden: hidden, }
panel._updateHiddenColumnsRequest = wp.ajax.post( 'hidden-columns', {
hidden: panel.hidden(),
screenoptionnonce: $( '#screenoptionnonce' ).val(), screenoptionnonce: $( '#screenoptionnonce' ).val(),
page: 'nav-menus' page: 'nav-menus'
} ); } );
}, panel._updateHiddenColumnsRequest.always( function() {
panel._updateHiddenColumnsRequest = null;
} );
}, 2000 ),
checked: function( column ) { checked: function( column ) {
this.container.addClass( 'field-' + column + '-active' ); this.container.addClass( 'field-' + column + '-active' );
@ -633,12 +639,10 @@
}, },
hidden: function() { hidden: function() {
this.hidden = function() {
return $( '.hide-column-tog' ).not( ':checked' ).map( function() { return $( '.hide-column-tog' ).not( ':checked' ).map( function() {
var id = this.id; var id = this.id;
return id.substring( id, id.length - 5 ); return id.substring( 0, id.length - 5 );
}).get().join( ',' ); }).get().join( ',' );
};
} }
} ); } );

File diff suppressed because one or more lines are too long

View File

@ -34,8 +34,9 @@ class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel {
* @access public * @access public
*/ */
public function render_screen_options() { public function render_screen_options() {
// Essentially adds the screen options. // Adds the screen options.
add_filter( 'manage_nav-menus_columns', array( $this, 'wp_nav_menu_manage_columns' ) ); require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' );
// Display screen options. // Display screen options.
$screen = WP_Screen::get( 'nav-menus.php' ); $screen = WP_Screen::get( 'nav-menus.php' );
@ -48,20 +49,12 @@ class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel {
* Link title attribute added as it's a relatively advanced concept for new users. * Link title attribute added as it's a relatively advanced concept for new users.
* *
* @since 4.3.0 * @since 4.3.0
* @access public * @deprecated 4.5.0 Deprecated in favor of wp_nav_menu_manage_columns().
*
* @return array The advanced menu properties.
*/ */
public function wp_nav_menu_manage_columns() { public function wp_nav_menu_manage_columns() {
return array( _deprecated_function( __METHOD__, '4.5.0', 'wp_nav_menu_manage_columns' );
'_title' => __( 'Show advanced menu properties' ), require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
'cb' => '<input type="checkbox" />', return wp_nav_menu_manage_columns();
'link-target' => __( 'Link Target' ),
'attr-title' => __( 'Title Attribute' ),
'css-classes' => __( 'CSS Classes' ),
'xfn' => __( 'Link Relationship (XFN)' ),
'description' => __( 'Description' ),
);
} }
/** /**

View File

@ -4,7 +4,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '4.5-beta2-36907'; $wp_version = '4.5-beta2-36908';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.