WordPress.org

Make WordPress Core


Ignore:
Timestamp:
04/27/2010 01:05:58 AM (11 years ago)
Author:
ryan
Message:

New menu UI. Props filosofo. see #12713

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/nav-menus.php

    r14139 r14248  
    1111
    1212/** Load WordPress Administration Bootstrap */
    13 require_once( './admin.php' );
     13require_once( 'admin.php' );
    1414
    1515// Load all the nav menu interface functions
     
    3838wp_enqueue_script( 'postbox' );
    3939
    40 // Thickbox
    41 add_thickbox();
    42 
    4340// Container for any messages displayed to the user
    4441$messages_div = '';
     
    5451
    5552switch ( $action ) {
     53    case 'add-menu-item':
     54        if ( current_user_can( 'switch_themes' ) ) {
     55            check_admin_referer( 'add-menu_item', 'menu-settings-column-nonce' );
     56            if ( isset( $_REQUEST['menu-item'] ) ) {
     57                wp_save_nav_menu_item( $nav_menu_selected_id, $_REQUEST['menu-item'] );
     58            }
     59        }
     60        break;
     61    case 'move-down-menu-item' :
     62        // moving down a menu item is the same as moving up the next in order
     63        check_admin_referer( 'move-menu_item' );
     64        $menu_item_id = (int) $_REQUEST['menu-item'];
     65        $next_item_id = 0;
     66        if ( 'nav_menu_item' == get_post_type( $menu_item_id ) ) {
     67            $menus = isset( $_REQUEST['menu'] ) ? array( (int) $_REQUEST['menu'] ) : wp_get_object_terms( $menu_item_id, 'nav_menu', array( 'fields' => 'ids' ) );
     68            if ( ! is_wp_error( $menus ) ) {
     69                foreach( (array) $menus as $menu_id ) {
     70                    $move_down_ordered_menu_items = (array) wp_get_nav_menu_items( $menu_id );
     71                    while ( $next = array_shift( $move_down_ordered_menu_items ) ) {
     72                        if ( isset( $next->ID ) && $next->ID == $menu_item_id ) {
     73                            break;
     74                        }
     75                    }
     76
     77                    if ( $following = array_shift( $move_down_ordered_menu_items ) ) {
     78                        $next_item_id = (int) $following->ID;
     79                    }
     80                }
     81            }
     82        }
     83        // fall through to next case
     84    case 'move-up-menu-item' :
     85        check_admin_referer( 'move-menu_item' );
     86        $menu_item_id = empty( $next_item_id ) ? (int) $_REQUEST['menu-item'] : $next_item_id;
     87        if ( 'nav_menu_item' == get_post_type( $menu_item_id ) ) {
     88            $menus = isset( $_REQUEST['menu'] ) ? array( (int) $_REQUEST['menu'] ) : wp_get_object_terms( $menu_item_id, 'nav_menu', array( 'fields' => 'ids' ) );
     89            if ( ! is_wp_error( $menus ) ) {
     90                foreach( (array) $menus as $menu_id ) {
     91                    $ordered_menu_items = wp_get_nav_menu_items( $menu_id );
     92                    $menu_item_data = get_post( $menu_item_id , ARRAY_A );
     93
     94                    // setup the data we need in one pass through the array of menu items
     95                    $dbids_to_orders = array();
     96                    $orders_to_dbids = array();
     97                    $objectids_to_dbids = array();
     98                    $dbids_to_objectids = array();
     99                    foreach( (array) $ordered_menu_items as $ordered_menu_item_object ) {
     100                        if ( isset( $ordered_menu_item_object->ID ) ) {
     101                            if ( isset( $ordered_menu_item_object->menu_order ) ) {
     102                                $dbids_to_orders[$ordered_menu_item_object->ID] = $ordered_menu_item_object->menu_order;
     103                                $orders_to_dbids[$ordered_menu_item_object->menu_order] = $ordered_menu_item_object->ID;
     104                            }
     105
     106                            $possible_object_id = (int) get_post_meta( $ordered_menu_item_object->ID, '_menu_item_object_id', true );
     107                            if ( ! empty( $possible_object_id ) ) {
     108                                $dbids_to_objectids[$ordered_menu_item_object->ID] = $possible_object_id;
     109                                $objectids_to_dbids[$possible_object_id] = $ordered_menu_item_object->ID;
     110                            }
     111                        }
     112                    }
     113
     114
     115                    // if this menu item is not first
     116                    if ( ! empty( $dbids_to_orders[$menu_item_id] ) && ! empty( $orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1] ) ) {
     117                       
     118                        // if this menu item is a child of the previous
     119                        if (
     120                            ! empty( $menu_item_data['post_parent'] ) &&
     121                            isset( $objectids_to_dbids[$menu_item_data['post_parent']] ) &&
     122                            isset( $orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1] ) &&
     123                            ( $objectids_to_dbids[$menu_item_data['post_parent']] == $orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1] )
     124                        ) {
     125
     126                            $parent_db_id = $objectids_to_dbids[$menu_item_data['post_parent']];
     127                            $parent_data = get_post( $parent_db_id, ARRAY_A );
     128
     129                            if ( ! is_wp_error( $parent_data ) ) {
     130                               
     131                                // if there is something before the parent, make menu item a child of the parent's parent
     132                                if ( ! empty( $dbids_to_orders[$parent_db_id] ) && ! empty( $orders_to_dbids[$dbids_to_orders[$parent_db_id] - 1] ) ) {
     133                                    $menu_item_data['post_parent'] = $parent_data['post_parent'];
     134
     135                                // else there isn't something before the parent
     136                                } else {
     137                                    $menu_item_data['post_parent'] = 0;
     138                                }
     139                               
     140                                // set former parent's [menu_order] to that of menu-item's
     141                                $parent_data['menu_order'] = $parent_data['menu_order'] + 1;
     142
     143                                // set menu-item's [menu_order] to that of former parent
     144                                $menu_item_data['menu_order'] = $menu_item_data['menu_order'] - 1;
     145                               
     146                                // save changes
     147                                wp_update_post($menu_item_data);
     148                                wp_update_post($parent_data);
     149                            }
     150
     151                        // else this menu item is not a child of the previous
     152                        } elseif ( isset($dbids_to_objectids[$orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1]] ) ) {
     153                            // just make it a child of the previous; keep the order
     154                            $menu_item_data['post_parent'] = (int) $dbids_to_objectids[$orders_to_dbids[$dbids_to_orders[$menu_item_id] - 1]];
     155                            wp_update_post($menu_item_data);
     156                        }
     157                    }
     158                }
     159            }
     160        }
     161        break;
     162
     163    case 'delete-menu-item':
     164        $menu_item_id = (int) $_REQUEST['menu-item'];
     165
     166        check_admin_referer( 'delete-menu_item_' . $menu_item_id );
     167
     168
     169        if ( 'nav_menu_item' == get_post_type( $menu_item_id ) ) {
     170            if ( wp_delete_post( $menu_item_id, true ) ) {
     171               
     172                $messages_div = '<div id="message" class="updated"><p>' . __('The menu item has been successfully deleted.') . '</p></div>';
     173            }
     174        }
     175        break;
    56176    case 'delete':
    57177        check_admin_referer( 'delete-nav_menu-' . $nav_menu_selected_id );
    58178
    59         if ( is_nav_menu($nav_menu_selected_id) ) {
     179        if ( is_nav_menu( $nav_menu_selected_id ) ) {
    60180            $delete_nav_menu = wp_delete_nav_menu( $nav_menu_selected_id );
    61181
     
    71191
    72192    case 'update':
    73         check_admin_referer( 'update-nav_menu' );
     193        check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' );
    74194
    75195        // Add Menu
    76         if ( isset($_POST['create-menu-button']) ) {
     196        if ( 0 == $nav_menu_selected_id ) {
    77197            if ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) {
    78                 $add_nav_menu = esc_html( $_POST['create-menu-name'] );
    79 
    80                 if ( $add_nav_menu ) {
    81                     $add_nav_menu = wp_create_nav_menu( $add_nav_menu );
    82 
    83                     if ( is_wp_error( $add_nav_menu ) ) {
    84                         $messages_div = '<div id="message" class="error"><p>' . $add_nav_menu->get_error_message() . '</p></div>';
     198                $new_menu_title = esc_html( $_POST['menu-name'] );
     199
     200                if ( $new_menu_title ) {
     201                    $_nav_menu_selected_id = wp_update_nav_menu_object( 0, array('menu-name' => $new_menu_title) );
     202
     203                    if ( is_wp_error( $_nav_menu_selected_id ) ) {
     204                        $messages_div = '<div id="message" class="error"><p>' . $_nav_menu_selected_id->get_error_message() . '</p></div>';
    85205                    } else {
    86                         $nav_menu_selected_id = $add_nav_menu->term_id;
    87                         $nav_menu_selected_title = $add_nav_menu->name;
    88                         $messages_div = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $add_nav_menu->name ) . '</p></div>';
     206                        $_menu_object = wp_get_nav_menu_object( $_nav_menu_selected_id );
     207                        $nav_menu_selected_id = $_nav_menu_selected_id;
     208                        $nav_menu_selected_title = $_menu_object->name;
     209                        $messages_div = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $nav_menu_selected_title ) . '</p></div>';
    89210                    }
    90211                } else {
    91212                    $messages_div = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>';
    92213                }
    93                 unset( $add_nav_menu );
    94             }
     214            }
     215
     216        // update existing menu
    95217        } else {
    96218
    97             // @todo wrap this into wp_update_nav_menu_object();
    98             if ( isset($_POST['menu-name']) ) {
    99                 $old_nav_menu = get_term( $nav_menu_selected_id, 'nav_menu', ARRAY_A );
    100                 $args = array( 'name' => $_POST['menu-name'], 'slug' => null, 'description' => $old_nav_menu['description'], 'parent' => $old_nav_menu['parent'], );
    101                 $new_nav_menu = wp_update_term( $nav_menu_selected_id, 'nav_menu', $args );
     219            $_menu_object = wp_get_nav_menu_object( $nav_menu_selected_id );
     220
     221            if ( ! is_wp_error( $_menu_object ) ) {
     222                wp_update_nav_menu_object( $nav_menu_selected_id, array( 'menu-name' => $_POST['menu-name'] ) );
     223                $nav_menu_selected_title = $_menu_object->name;
    102224            }
    103225
    104226            // Update menu items
    105227
    106             // @todo: wrap update logic into wp_update_nav_menu();
    107             $update_count = isset( $_POST['li-count'] ) ? (int) $_POST['li-count'] : 0;
    108             $update_nav_menu = is_nav_menu( $nav_menu_selected_id );
    109 
    110             if ( !is_wp_error($update_nav_menu) ) {
     228            if ( ! is_wp_error( $_menu_object ) ) {
    111229                $menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') );
    112230
    113                 // Loop through all POST variables
    114                 for ( $k = 0; $k < $update_count; $k++ ) {
     231                // Loop through all the menu items' POST variables
     232                foreach( (array) $_POST['menu-item-db-id'] as $_key => $k ) {
    115233
    116234                    // Menu item title can't be blank
    117                     if ( '' == $_POST['menu-item-title'][$k] )
     235                    if ( '' == $_POST['menu-item-title'][$_key] )
    118236                        continue;
    119 
    120                     $menu_item_db_id       = isset( $_POST['menu-item-db-id'][$k] )       ? $_POST['menu-item-db-id'][$k]       : 0;
    121                     $menu_item_object_id   = isset( $_POST['menu-item-object-id'][$k] )   ? $_POST['menu-item-object-id'][$k]   : 0;
    122                     $menu_item_object      = isset( $_POST['menu-item-object'][$k] )      ? $_POST['menu-item-object'][$k]      : '';
    123                     $menu_item_parent_id   = isset( $_POST['menu-item-parent-id'][$k] )   ? $_POST['menu-item-parent-id'][$k]   : 0;
    124                     $menu_item_position    = isset( $_POST['menu-item-position'][$k] )    ? $_POST['menu-item-position'][$k]    : 0;
    125                     $menu_item_type        = isset( $_POST['menu-item-type'][$k] )        ? $_POST['menu-item-type'][$k]        : 'custom';
    126                     $menu_item_append      = isset( $_POST['menu-item-append'][$k] )      ? $_POST['menu-item-append'][$k]      : 'custom';
    127                     $menu_item_title       = isset( $_POST['menu-item-title'][$k] )       ? $_POST['menu-item-title'][$k]       : '';
    128                     $menu_item_url         = isset( $_POST['menu-item-url'][$k] )         ? $_POST['menu-item-url'][$k]         : '';
    129                     $menu_item_description = isset( $_POST['menu-item-description'][$k] ) ? $_POST['menu-item-description'][$k] : '';
    130                     $menu_item_attr_title  = isset( $_POST['menu-item-attr-title'][$k] )  ? $_POST['menu-item-attr-title'][$k]  : '';
    131                     $menu_item_target      = isset( $_POST['menu-item-target'][$k] )      ? $_POST['menu-item-target'][$k]      : '';
    132                     $menu_item_classes     = isset( $_POST['menu-item-classes'][$k] )     ? $_POST['menu-item-classes'][$k]     : '';
    133                     $menu_item_xfn         = isset( $_POST['menu-item-xfn'][$k] )         ? $_POST['menu-item-xfn'][$k]         : '';
    134 
    135                     // Populate the menu item object
    136                     $post = array(
    137                         'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'ping_status' => 0,
    138                         'post_author' => $user_ID, 'tax_input' => array( 'nav_menu' => $update_nav_menu->name ),
    139                         'post_title' => $menu_item_title, 'post_excerpt' => $menu_item_attr_title,
    140                         'post_parent' => $menu_item_parent_id, 'menu_order' => $menu_item_position,
    141                         'post_content' => $menu_item_description,
     237   
     238                    $args = array(
     239                        'menu-item-db-id' => $_POST['menu-item-db-id'][$_key],
     240                        'menu-item-object-id' => $_POST['menu-item-object-id'][$_key],
     241                        'menu-item-object' => $_POST['menu-item-object'][$_key],
     242                        'menu-item-parent-id' => $_POST['menu-item-parent-id'][$_key],
     243                        'menu-item-position' => $_POST['menu-item-position'][$_key],
     244                        'menu-item-type' => $_POST['menu-item-type'][$_key],
     245                        'menu-item-append' => $_POST['menu-item-append'][$_key],
     246                        'menu-item-title' => $_POST['menu-item-title'][$_key],
     247                        'menu-item-url' => $_POST['menu-item-url'][$_key],
     248                        'menu-item-description' => $_POST['menu-item-description'][$_key],
     249                        'menu-item-attr-title' => $_POST['menu-item-attr-title'][$_key],
     250                        'menu-item-target' => $_POST['menu-item-target'][$_key],
     251                        'menu-item-classes' => $_POST['menu-item-classes'][$_key],
     252                        'menu-item-xfn' => $_POST['menu-item-xfn'][$_key],
    142253                    );
    143254
    144                     // New menu item
    145                     if ( $menu_item_db_id == 0 ) {
    146                         $menu_item_db_id = wp_insert_post( $post );
    147 
    148                     // Update existing menu item
    149                     } elseif ( isset($menu_items[$menu_item_db_id]) || ( 'custom' == $menu_item_type && 0 != $menu_item_db_id ) ) {
    150                         $post['ID'] = $menu_item_db_id;
    151                         wp_update_post( $post );
     255                    $menu_item_db_id = wp_update_nav_menu_item( $nav_menu_selected_id, ( $_POST['menu-item-db-id'][$_key] != $_key ? 0 : $_key ), $args );
     256
     257                    if ( ! is_wp_error( $menu_item_db_id ) && isset( $menu_items[$menu_item_db_id] ) ) {
    152258                        unset( $menu_items[$menu_item_db_id] );
    153259                    }
    154 
    155                     update_post_meta( $menu_item_db_id, '_menu_item_type', sanitize_key($menu_item_type) );
    156                     update_post_meta( $menu_item_db_id, '_menu_item_object_id', (int) $menu_item_object_id );
    157                     update_post_meta( $menu_item_db_id, '_menu_item_object', sanitize_key($menu_item_object) );
    158                     update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key($menu_item_target) );
    159                     // @todo handle sanitizing multiple classes separated by whitespace.
    160                     update_post_meta( $menu_item_db_id, '_menu_item_classes', sanitize_html_class($menu_item_classes) );
    161                     update_post_meta( $menu_item_db_id, '_menu_item_xfn', sanitize_html_class($menu_item_xfn) );
    162 
    163                     // @todo: only save custom link urls.
    164                     update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw($menu_item_url) );
    165260                }
    166261
     
    174269                do_action( 'wp_update_nav_menu', $nav_menu_selected_id );
    175270
    176                 $messages_div = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been updated.'), $update_nav_menu->name ) . '</p></div>';
    177                 unset( $update_nav_menu, $update_count, $menu_items );
     271                $messages_div = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been updated.'), $nav_menu_selected_title ) . '</p></div>';
     272                unset( $menu_items );
    178273            }
    179274        }
     
    185280
    186281// Get recently edited nav menu
    187 $recently_edited = get_user_option( 'nav_menu_recently_edited' );
     282$recently_edited = (int) get_user_option( 'nav_menu_recently_edited' );
    188283
    189284// If there was no recently edited menu, and $nav_menu_selected_id is a nav menu, update recently edited menu.
    190 if ( !$recently_edited && is_nav_menu($nav_menu_selected_id) ) {
     285if ( !$recently_edited && is_nav_menu( $nav_menu_selected_id ) ) {
    191286    $recently_edited = $nav_menu_selected_id;
    192287
    193 // Else if $nav_menu_selected_id is not a menu, but $recently_edited is, grab that one.
    194 } elseif ( 0 == $nav_menu_selected_id && is_nav_menu($recently_edited) ) {
     288// Else if $nav_menu_selected_id is not a menu and not requesting that we create a new menu, but $recently_edited is a menu, grab that one.
     289} elseif ( 0 == $nav_menu_selected_id && ! isset( $_REQUEST['menu'] ) && is_nav_menu( $recently_edited ) ) {
    195290    $nav_menu_selected_id = $recently_edited;
    196291
    197292// Else try to grab the first menu from the menus list
    198 } elseif ( 0 == $nav_menu_selected_id && ! empty($nav_menus) ) {
     293} elseif ( 0 == $nav_menu_selected_id && ! isset( $_REQUEST['menu'] ) && ! empty($nav_menus) ) {
    199294    $nav_menu_selected_id = $nav_menus[0]->term_id;
    200295}
    201296
    202297// Update the user's setting
    203 if ( $nav_menu_selected_id != $recently_edited && is_nav_menu($nav_menu_selected_id) )
     298if ( $nav_menu_selected_id != $recently_edited && is_nav_menu( $nav_menu_selected_id ) )
    204299    update_user_meta( $current_user->ID, 'nav_menu_recently_edited', $nav_menu_selected_id );
    205300
    206 // If there's a menu, get it's name.
    207 if ( !$nav_menu_selected_title && $nav_menu_selected_title = is_nav_menu( $nav_menu_selected_id ) ) {
    208     $nav_menu_selected_title = $nav_menu_selected_title->name;
     301// If there's a menu, get its name.
     302if ( ! $nav_menu_selected_title && is_nav_menu( $nav_menu_selected_id ) ) {
     303    $_menu_object = wp_get_nav_menu_object( $nav_menu_selected_id );
     304    $nav_menu_selected_title = ! is_wp_error( $_menu_object ) ? $_menu_object->name : '';
    209305}
    210306
    211 // Create Menu Metabox
    212 add_meta_box( 'create-menu', __('Create Menu'), 'wp_nav_menu_create_metabox', 'nav-menus', 'side', 'core' );
    213 
    214 // The user has no menus.
    215 if ( !is_nav_menu( $nav_menu_selected_id ) ) {
    216     $messages_div = '<div id="message" class="updated"><p>' . __('You do not have any menus. Create a new menu.') . '</p></div>';
    217 
    218307// The theme supports menus
    219 } elseif ( current_theme_supports('nav-menus') ) {
     308if ( current_theme_supports('nav-menus') ) {
    220309    // Register nav menu metaboxes
    221     add_meta_box( 'manage-menu', __( 'Menu Settings' ), 'wp_nav_menu_manage_menu_metabox', 'nav-menus', 'side', 'high', array( $nav_menu_selected_id, $nav_menu_selected_title ) );
    222     wp_nav_menu_metaboxes_setup();
     310    wp_nav_menu_meta_boxes_setup();
    223311
    224312// The theme does not support menus but supports widgets
    225313} elseif ( current_theme_supports('widgets') ) {
    226314    // Register nav menu metaboxes
    227     add_meta_box( 'manage-menu', __( 'Menu Settings' ), 'wp_nav_menu_manage_menu_metabox', 'nav-menus', 'side', 'high', array( $nav_menu_selected_id, $nav_menu_selected_title ) );
    228     wp_nav_menu_metaboxes_setup();
     315    wp_nav_menu_meta_boxes_setup();
    229316    $messages_div = '<div id="message" class="error"><p>' . __('The current theme does not natively support menus, but you can use the &#8220;Navigation Menu&#8221; widget to add any menus you create here to the theme&#8217;s sidebar.') . '</p></div>';
    230317
     
    236323
    237324// Get the admin header
    238 require_once( './admin-header.php' );
     325require_once( 'admin-header.php' );
    239326?>
    240 <div class="wrap">
     327<div class="wrap nav-edit-wrap">
    241328    <?php screen_icon(); ?>
    242329    <h2><?php esc_html_e('Menus'); ?></h2>
    243     <?php /* OMGWTFBBQ */ ?><div class="error"><p><strong><?php _e('Beta Testers:') ?></strong> <?php _e('This feature is still under construction. You can try it out, but expect it to change in layout and functionality in the second beta release.'); ?></p></div>
    244330    <?php echo $messages_div; ?>
    245     <div class="hide-if-js error"><p><?php _e('You do not have JavaScript enabled in your browser. Please enable it to access the Menus functionality.'); ?></p></div>
    246 
    247     <?php if ( !empty($nav_menus) && count($nav_menus) > 1 && ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) ) : ?>
    248     <ul class="subsubsub">
    249         <?php
    250             foreach ( $nav_menus as $_nav_menu ) {
    251                 $sep = end( $nav_menus ) == $_nav_menu ? '' : ' | ';
    252 
    253                 if ( $nav_menu_selected_id == $_nav_menu->term_id )
    254                     echo '<li><a href="'. admin_url( 'nav-menus.php?action=edit&amp;menu=' . esc_attr($_nav_menu->term_id) ) .'" class="current">'. esc_html( $_nav_menu->name ) .'</a>'. $sep .'</li>';
    255                 else
    256                     echo '<li><a href="'. admin_url( 'nav-menus.php?action=edit&amp;menu=' . esc_attr($_nav_menu->term_id) ) .'">'. esc_html( $_nav_menu->name ) .'</a>'. $sep .'</li>';
    257             }
    258         ?>
    259     </ul>
    260     <?php endif; ?>
    261 
    262     <div id="menu-management" class="metabox-holder has-right-sidebar">
    263         <form id="update-nav-menu" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data">
    264             <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
    265             <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
    266             <?php wp_nonce_field( 'update-nav_menu' ); ?>
    267             <input type="hidden" name="action" value="update" />
    268             <input type="hidden" name="li-count" id="li-count" value="-1" />
    269             <input type="hidden" name="menu" id="menu" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
    270             <input type="hidden" id="hidden-metaboxes" value="<?php echo wp_initial_nav_menu_meta_boxes(); ?>" />
    271             <div id="post-body">
    272                 <div id="post-body-content">
    273                     <?php if ( is_nav_menu($nav_menu_selected_id) && ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) ) : ?>
    274                         <div id="menu-container" class="postbox">
    275                             <h3 class="hndle"><?php echo esc_html( $nav_menu_selected_title ); ?></h3>
    276                             <div class="inside">
    277                                 <?php wp_nav_menu( array( 'menu' => $nav_menu_selected_id, 'context' => 'backend' ) ); ?>
    278                             </div><!-- /.inside -->
    279                         <!-- /#nav-menu-canvas .postbox-->
    280                         </div>
    281                     <?php endif; ?>
    282                 </div><!-- /#post-body-content-->
    283             </div><!--- /#post-body -->
    284             <div id="menu-settings-column" class="inner-sidebar">
    285 
    286                 <?php do_meta_boxes( 'nav-menus', 'side', null ); ?>
    287 
    288             </div><!-- /#menu-settings-column -->
    289         </form><!--/#update-nav-menu-->
    290         <br class="clear" />
    291     </div><!-- /.metabox-holder has-right-sidebar-->
     331   
     332    <?php if ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) : ?>
     333    <div id="menu-settings-column" class="metabox-holder">
     334
     335        <form id="nav-menu-meta" action="<?php echo admin_url( 'nav-menus.php' ); ?>" class="nav-menu-meta" method="post" enctype="multipart/form-data">
     336            <input type="hidden" name="menu" id="nav-menu-meta-object-id" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
     337            <input type="hidden" name="action" value="add-menu-item" />
     338            <?php wp_nonce_field( 'add-menu_item', 'menu-settings-column-nonce' ); ?>
     339            <?php do_meta_boxes( 'nav-menus', 'side', null ); ?>
     340        </form>
     341
     342    </div><!-- /#menu-settings-column -->
     343   
     344    <div id="menu-management" class="">
     345        <h2>
     346            <?php
     347            foreach( (array) $nav_menus as $_nav_menu ) :
     348               
     349                ?>
     350                <a href="<?php
     351                    echo add_query_arg(
     352                        array(
     353                            'action' => 'edit',
     354                            'menu' => $_nav_menu->term_id,
     355                        ),
     356                        admin_url( 'nav-menus.php' )
     357                    );
     358                ?>" class="menu-tabs<?php
     359                    if ( $nav_menu_selected_id != $_nav_menu->term_id )
     360                        echo ' menu-tab-inactive';
     361                ?>"><?php echo esc_html( $_nav_menu->name ); ?></a>
     362
     363                <?php
     364            endforeach;
     365            ?>
     366            <a href="<?php
     367                echo add_query_arg(
     368                    array(
     369                        'action' => 'edit',
     370                        'menu' => 0,
     371                    ),
     372                    admin_url( 'nav-menus.php' )
     373                );
     374            ?>" class="menu-tabs menu-add-new<?php
     375                if ( 0 != $nav_menu_selected_id )
     376                    echo ' menu-tab-inactive';
     377            ?>"><?php printf( '<abbr title="%s">+</abbr>', esc_html__( 'Add menu' ) ); ?></a>
     378        </h2>
     379        <div class="menu-edit">
     380            <form id="update-nav-menu" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data">
     381                <div id="submitpost" class="submitbox">
     382                    <div id="minor-publishing">
     383                        <div class="misc-pub-section misc-pub-section-last">
     384                            <label class="howto" for="menu-name">
     385                                <span><?php _e('Name'); ?></span>
     386                                <input id="menu-name" name="menu-name" type="text" class="regular-text menu-item-textbox" value="<?php echo esc_attr( $nav_menu_selected_title  ); ?>" />
     387                                <br class="clear" />
     388                            </label>
     389                        </div><!--END .misc-pub-section misc-pub-section-last-->
     390                        <br class="clear" />
     391                    </div><!--END #misc-publishing-actions-->
     392                    <div id="major-publishing-actions">
     393
     394                        <?php if ( ! empty( $nav_menu_selected_id ) ) : ?>
     395                        <div id="delete-action">
     396                            <a class="submitdelete deletion menu-delete" href="<?php echo wp_nonce_url( admin_url('nav-menus.php?action=delete&amp;menu=' . $nav_menu_selected_id), 'delete-nav_menu-' . $nav_menu_selected_id ); ?>"><?php _e('Delete Menu'); ?></a>
     397                        </div><!--END #delete-action-->
     398                        <?php endif; ?>
     399
     400                        <div id="publishing-action">
     401                            <input class="button-primary" name="save_menu" type="submit" value="<?php esc_attr_e('Save Menu'); ?>" />
     402                        </div><!--END #publishing-action-->
     403                        <br class="clear" />
     404                    </div><!--END #major-publishing-actions-->
     405                </div><!--END #submitpost .submitbox-->
     406                <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
     407                <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
     408                <?php wp_nonce_field( 'update-nav_menu', 'update-nav-menu-nonce' ); ?>
     409                <input type="hidden" name="action" value="update" />
     410                <input type="hidden" name="menu" id="menu" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
     411                <input type="hidden" id="hidden-metaboxes" value="<?php echo wp_initial_nav_menu_meta_boxes(); ?>" />
     412                <div id="post-body">
     413                    <div id="post-body-content">
     414                        <?php if ( is_nav_menu( $nav_menu_selected_id ) && ( current_theme_supports('nav-menus') || current_theme_supports('widgets') ) ) : ?>
     415                            <ul class="menu" id="menu-to-edit">
     416                            <?php
     417                            $edit_markup = wp_get_nav_menu_to_edit( $nav_menu_selected_id  );
     418                            if ( ! is_wp_error( $edit_markup ) ) {
     419                                echo $edit_markup;
     420                            }
     421                            ?>
     422                            </ul>
     423                        <?php endif; ?>
     424                        <br class="clear" />
     425                    </div><!-- /#post-body-content-->
     426                </div><!--- /#post-body -->
     427            </form><!--/#update-nav-menu-->
     428        </div><!-- /.menu-edit -->
     429    </div><!-- /#menu-management -->
     430    <?php endif; // if menus supported in current theme ?>
    292431</div><!-- /.wrap-->
    293432
    294 <div id="menu-item-settings">
    295     <p class="description">
    296         <label for="edit-menu-item-title">
    297             <?php _e( 'Menu Title' ); ?><br />
    298             <input type="text" id="edit-menu-item-title" class="widefat" name="edit-menu-item-title" value="" tabindex="1" />
    299         </label>
    300     </p>
    301     <p class="description">
    302         <label for="edit-menu-item-url">
    303             <?php _e( 'URL' ); ?><br />
    304             <input type="text" id="edit-menu-item-url" class="widefat code" name="edit-menu-item-url" value="" tabindex="2" />
    305         </label>
    306     </p>
    307     <p class="description">
    308         <label for="edit-menu-item-attr-title">
    309             <?php _e( 'Title Attribute' ); ?><br />
    310             <input type="text" id="edit-menu-item-attr-title" class="widefat" name="edit-menu-item-attr-title" value="" tabindex="3" />
    311         </label>
    312     </p>
    313     <p class="description">
    314         <label for="edit-menu-item-target">
    315             <?php _e( 'Link Target' ); ?><br />
    316             <select id="edit-menu-item-target" class="widefat" name="edit-menu-item-target" tabindex="4">
    317                 <option value=""><?php _e('Same window or tab'); ?></option>
    318                 <option value="_blank"><?php _e('New window or tab'); ?></option>
    319             </select>
    320         </label>
    321     </p>
    322     <p class="description">
    323         <label for="edit-menu-item-classes">
    324             <?php _e( 'CSS Classes (optional)' ); ?><br />
    325             <input type="text" id="edit-menu-item-classes" class="widefat code" name="edit-menu-item-classes" value="" tabindex="5" />
    326         </label>
    327     </p>
    328     <p class="description">
    329         <label for="edit-menu-item-xfn">
    330             <?php _e( 'Link Relationship (XFN) (optional)' ); ?><br />
    331             <input type="text" id="edit-menu-item-xfn" class="widefat code" name="edit-menu-item-xfn" value="" tabindex="6" />
    332         </label>
    333     </p>
    334     <p class="description">
    335         <label for="edit-menu-item-description">
    336             <?php _e( 'Description (optional)' ); ?><br />
    337             <textarea id="edit-menu-item-description" class="widefat" rows="3" name="edit-menu-item-description" tabindex="7" /></textarea>
    338             <span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
    339         </label>
    340     </p>
    341     <p>
    342         <a id="update-menu-item" class="save button-primary" tabindex="8"><?php _e('Save Changes'); ?></a>
    343         <a id="cancel-save" class="submitdelete deletion" tabindex="9"><?php _e('Cancel'); ?></a>
    344     </p>
    345     <input type="hidden" id="edit-menu-item-id" name="edit-item-id" value="" />
    346 </div><!-- /#menu-item-settings-->
    347 
    348 <?php include( './admin-footer.php' ); ?>
     433
     434<?php include( 'admin-footer.php' ); ?>
Note: See TracChangeset for help on using the changeset viewer.