Skip to content

Commit 0aa0cde

Browse files
committed
Menu tweaks. Save menu locations when saving the menu. Also, centralize theme support checks and add them to menu.php. Improve some branching. Remove some old JS vars, add a missing semicolon, etc. props koopersmith. see #13378.
git-svn-id: https://develop.svn.wordpress.org/trunk@14831 602fd350-edb4-49c9-b593-d223f7449a82
1 parent aeca45f commit 0aa0cde

5 files changed

Lines changed: 36 additions & 28 deletions

File tree

wp-admin/js/nav-menu.dev.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ var wpNavMenu;
509509

510510
attachTabsPanelListeners : function() {
511511
$('#menu-settings-column').bind('click', function(e) {
512-
var selectAreaMatch, activePanel, panelId, wrapper, items,
512+
var selectAreaMatch, panelId, wrapper, items,
513513
target = $(e.target);
514514

515515
if ( target.hasClass('nav-tab-link') ) {
@@ -679,6 +679,12 @@ var wpNavMenu;
679679
},
680680

681681
eventOnClickMenuSave : function(clickedEl) {
682+
var locs = '';
683+
// Copy menu theme locations
684+
$('#nav-menu-theme-locations select').each(function() {
685+
locs += '<input type="hidden" name="' + this.name + '" value="' + $(this).val() + '" />';
686+
});
687+
$('#update-nav-menu').append( locs );
682688
// Update menu item position data
683689
api.menuList.find('.menu-item-data-position').val( function(index) { return index + 1; } );
684690
return true;
@@ -759,9 +765,8 @@ var wpNavMenu;
759765
},
760766

761767
removeMenuItem : function(el) {
762-
el = $(el)
763-
var children = el.childMenuItems(),
764-
that = this;
768+
el = $(el);
769+
var children = el.childMenuItems();
765770

766771
el.addClass('deleting').fadeOut( 350 , function() {
767772
el.remove();

wp-admin/js/nav-menu.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wp-admin/menu.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,13 @@
149149
if ( current_user_can( 'switch_themes') ) {
150150
$menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' );
151151
$submenu['themes.php'][5] = array(__('Themes'), 'switch_themes', 'themes.php');
152-
$submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php');
152+
if ( current_theme_supports( 'nav-menus' ) || current_theme_supports( 'widgets' ) )
153+
$submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php');
153154
} else {
154155
$menu[60] = array( __('Appearance'), 'edit_theme_options', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' );
155156
$submenu['themes.php'][5] = array(__('Themes'), 'edit_theme_options', 'themes.php');
156-
$submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php' );
157+
if ( current_theme_supports( 'nav-menus' ) || current_theme_supports( 'widgets' ) )
158+
$submenu['themes.php'][10] = array(__('Menus'), 'edit_theme_options', 'nav-menus.php' );
157159
}
158160

159161
// Add 'Editor' to the bottom of the Appearence menu.

wp-admin/nav-menus.php

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
// Load all the nav menu interface functions
1616
require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' );
1717

18+
if ( ! current_theme_supports( 'nav-menus' ) && ! current_theme_supports( 'widgets' ) )
19+
wp_die( __( 'Your theme does not support navigation menus or widgets.' ) );
20+
1821
// Permissions Check
1922
if ( ! current_user_can('edit_theme_options') )
2023
wp_die( __( 'Cheatin&#8217; uh?' ) );
@@ -270,28 +273,29 @@
270273
case 'update':
271274
check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' );
272275

276+
// Update menu theme locations
277+
set_theme_mod( 'nav_menu_locations', $_POST['menu-locations'] );
278+
273279
// Add Menu
274280
if ( 0 == $nav_menu_selected_id ) {
275-
if ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) {
276-
$new_menu_title = esc_html( $_POST['menu-name'] );
281+
$new_menu_title = esc_html( $_POST['menu-name'] );
277282

278-
if ( $new_menu_title ) {
279-
$_nav_menu_selected_id = wp_update_nav_menu_object( 0, array('menu-name' => $new_menu_title) );
283+
if ( $new_menu_title ) {
284+
$_nav_menu_selected_id = wp_update_nav_menu_object( 0, array('menu-name' => $new_menu_title) );
280285

281-
if ( is_wp_error( $_nav_menu_selected_id ) ) {
282-
$messages[] = '<div id="message" class="error"><p>' . $_nav_menu_selected_id->get_error_message() . '</p></div>';
283-
} else {
284-
if ( ( $_menu_locations = get_registered_nav_menus() ) && 1 == count( wp_get_nav_menus() ) )
285-
set_theme_mod( 'nav_menu_locations', array( key( $_menu_locations ) => $_nav_menu_selected_id ) );
286-
unset( $_menu_locations );
287-
$_menu_object = wp_get_nav_menu_object( $_nav_menu_selected_id );
288-
$nav_menu_selected_id = $_nav_menu_selected_id;
289-
$nav_menu_selected_title = $_menu_object->name;
290-
$messages[] = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $nav_menu_selected_title ) . '</p></div>';
291-
}
286+
if ( is_wp_error( $_nav_menu_selected_id ) ) {
287+
$messages[] = '<div id="message" class="error"><p>' . $_nav_menu_selected_id->get_error_message() . '</p></div>';
292288
} else {
293-
$messages[] = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>';
289+
if ( ( $_menu_locations = get_registered_nav_menus() ) && 1 == count( wp_get_nav_menus() ) )
290+
set_theme_mod( 'nav_menu_locations', array( key( $_menu_locations ) => $_nav_menu_selected_id ) );
291+
unset( $_menu_locations );
292+
$_menu_object = wp_get_nav_menu_object( $_nav_menu_selected_id );
293+
$nav_menu_selected_id = $_nav_menu_selected_id;
294+
$nav_menu_selected_title = $_menu_object->name;
295+
$messages[] = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $nav_menu_selected_title ) . '</p></div>';
294296
}
297+
} else {
298+
$messages[] = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>';
295299
}
296300

297301
// update existing menu
@@ -425,8 +429,6 @@
425429
echo $message . "\n";
426430
endforeach;
427431
?>
428-
429-
<?php if ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) : ?>
430432
<div id="nav-menus-frame">
431433
<div id="menu-settings-column" class="metabox-holder">
432434

@@ -517,7 +519,7 @@
517519
</div><!--END #nav-menu-header-->
518520
<div id="post-body">
519521
<div id="post-body-content">
520-
<?php if ( is_nav_menu( $nav_menu_selected_id ) && ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) ) : ?>
522+
<?php if ( is_nav_menu( $nav_menu_selected_id ) ) : ?>
521523
<ul class="menu" id="menu-to-edit">
522524
<?php
523525
$edit_markup = wp_get_nav_menu_to_edit( $nav_menu_selected_id );
@@ -542,7 +544,6 @@
542544
</div><!-- /#menu-management -->
543545
</div><!-- /#menu-management-liquid -->
544546
</div><!-- /#nav-menus-frame-->
545-
<?php endif; // if menus supported in current theme ?>
546547
</div><!-- /.wrap-->
547548

548549

wp-includes/script-loader.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ function wp_default_scripts( &$scripts ) {
385385
) );
386386

387387
// Custom Navigation
388-
$scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", false, '20100521' );
388+
$scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", false, '20100524' );
389389
$scripts->localize( 'nav-menu', 'navMenuL10n', array(
390390
'home' => _x('Home', 'nav menu home label'),
391391
'homeurl' => home_url('/'),

0 commit comments

Comments
 (0)