From f0b4112f0c49330d8b07b1b6cc6d80991ddb4cad Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 20 May 2010 16:57:48 +0000 Subject: [PATCH] Make the next available tab active after deleting a tab. Props koopersmith. fixes #13338 git-svn-id: http://svn.automattic.com/wordpress/trunk@14758 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/nav-menus.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/wp-admin/nav-menus.php b/wp-admin/nav-menus.php index 8343d2f1a..e8c23ba24 100644 --- a/wp-admin/nav-menus.php +++ b/wp-admin/nav-menus.php @@ -241,16 +241,29 @@ switch ( $action ) { check_admin_referer( 'delete-nav_menu-' . $nav_menu_selected_id ); if ( is_nav_menu( $nav_menu_selected_id ) ) { + $deleted_nav_menu = wp_get_nav_menu_object( $nav_menu_selected_id ); $delete_nav_menu = wp_delete_nav_menu( $nav_menu_selected_id ); if ( is_wp_error($delete_nav_menu) ) { $messages[] = '

' . $delete_nav_menu->get_error_message() . '

'; } else { $messages[] = '

' . __('The menu has been successfully deleted.') . '

'; - $nav_menu_selected_id = 0; // Reset the selected menu - unset($_REQUEST['menu']); + // Select the next available menu + $nav_menu_selected_id = 0; + $_nav_menus = wp_get_nav_menus( array('orderby' => 'name') ); + foreach( $_nav_menus as $index => $_nav_menu ) { + if ( strcmp( $_nav_menu->name, $deleted_nav_menu->name ) >= 0 + || $index == count( $_nav_menus ) - 1 ) { + $nav_menu_selected_id = $_nav_menu->term_id; + break; + } + } } - unset( $delete_nav_menu ); + unset( $delete_nav_menu, $deleted_nav_menu, $_nav_menus ); + } else { + // Reset the selected menu + $nav_menu_selected_id = 0; + unset( $_REQUEST['menu'] ); } break;