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
This commit is contained in:
parent
326806a961
commit
7ececb24f5
|
@ -937,17 +937,17 @@ 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' ),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -218,7 +218,7 @@
|
||||||
.prop( 'tabIndex', -1 )
|
.prop( 'tabIndex', -1 )
|
||||||
.removeClass( 'is-visible' );
|
.removeClass( 'is-visible' );
|
||||||
}
|
}
|
||||||
|
|
||||||
this.searchTerm = event.target.value;
|
this.searchTerm = event.target.value;
|
||||||
this.pages.search = 1;
|
this.pages.search = 1;
|
||||||
this.doSearch( 1 );
|
this.doSearch( 1 );
|
||||||
|
@ -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( 0, id.length - 5 );
|
||||||
return id.substring( id, id.length - 5 );
|
}).get().join( ',' );
|
||||||
}).get().join( ',' );
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
|
@ -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' ),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue