WordPress.org

Make WordPress Core

Ticket #11817: ticket_11817_menu_management.diff

File ticket_11817_menu_management.diff, 115.5 KB (added by ptahdunbar, 4 years ago)

HOORAH!

  • wp-includes/nav-menu-template.php

     
    33/** 
    44 * Outputs a navigation menu. 
    55 * 
     6 * Optional $args contents: 
     7 * 
     8 * id - The menu id. Defaults to blank. 
     9 * slug - The menu slug. Defaults to blank. 
     10 * menu_class - CSS class to use for the div container of the menu list. Defaults to 'menu'. 
     11 * format - Whether to format the ul. Defaults to 'div'. 
     12 * fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'. 
     13 * 
     14 * TODO: 
     15 * show_home - If you set this argument, then it will display the link to the home page. The show_home argument really just needs to be set to the value of the text of the link. 
     16 * link_before - Text before show_home argument text. 
     17 * link_after - Text after show_home argument text. 
     18 * echo - Whether to echo the menu or return it. Defaults to echo. 
     19 * 
    620 * @since 3.0.0 
    721 * 
    822 * @param array $args Arguments 
    923 */ 
    1024function wp_nav_menu( $args = array() ) { 
    11         $defaults = array('id' => '', 'slug' => '', 'menu_class' => 'menu', 'format' => 'div', 'fallback_cb' => 'wp_page_menu'); 
    12         $args = wp_parse_args($args, $defaults); 
     25        $defaults = array( 'id' => '', 'slug' => '', 'menu_class' => 'menu', 'format' => 'div', 'fallback_cb' => 'wp_page_menu', 'echo' => true, 'link_before' => '', 'link_after' => '' ); 
     26        $args = wp_parse_args( $args, $defaults ); 
    1327        $args = (object) $args; 
    14  
     28         
     29        // Get the menu 
    1530        $menu = null; 
    1631        if ( !empty($args->id) ) { 
    1732                $menu = wp_get_nav_menu( $args->id ); 
    1833        } elseif ( !empty($args->slug) ) { 
    19                 $menu = get_term_by('slug', $args->slug, 'nav_menu'); 
     34                $menu = get_term_by( 'slug', $args->slug, 'nav_menu' ); 
    2035        } else { 
    2136                $menus = wp_get_nav_menus(); 
    2237                foreach ( $menus as $menu_maybe ) { 
     
    2641                        } 
    2742                } 
    2843        } 
    29  
     44         
     45        // If the menu doesn't exists, call the fallback_cb 
    3046        if ( !$menu || is_wp_error($menu) ) 
    3147                return call_user_func($args->fallback_cb, $args ); 
    3248 
     
    85101        } 
    86102} 
    87103 
    88 function wp_print_nav_menu_item($menu_item, $context, $args = array() ) { 
     104function wp_print_nav_menu_item( $menu_item, $context, $args = array() ) { 
    89105        switch ( $context ) { 
    90106                case 'backend': 
    91107                case 'menu': 
    92108?> 
    93109                                                <dl> 
    94110                                                        <dt> 
    95                                                                 <span class="title"><?php echo esc_html($menu_item->title); ?></span> 
    96                                                                 <span class="controls"> 
    97                                                                 <span class="type"><?php echo esc_html($menu_item->type); ?></span> 
    98                                                                 <a id="edit<?php echo esc_attr( $menu_item->menu_order ); ?>" onclick="edititem(<?php echo esc_attr( $menu_item->menu_order ); ?>)" value="<?php echo esc_attr( $menu_item->menu_order ); ?>"><img class="edit" alt="<?php esc_attr_e('Edit Menu Item'); ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" src="<?php echo admin_url('images/ico-edit.png'); ?>" /></a> 
    99                                                                 <a id="remove<?php echo esc_attr( $menu_item->menu_order ); ?>" onclick="removeitem(<?php echo esc_attr( $menu_item->menu_order ); ?>)" value="<?php echo esc_attr( $menu_item->menu_order ); ?>"><img class="remove" alt="<?php esc_attr_e('Remove from Menu'); ?>" title="<?php esc_attr_e('Remove from Menu'); ?>" src="<?php echo admin_url('images/ico-close.png'); ?>" /></a> 
    100                                                                 <a id="view<?php echo esc_attr( $menu_item->menu_order ); ?>" target="_blank" href="<?php echo $menu_item->link; ?>"><img alt="<?php esc_attr_e('View Page'); ?>" title="<?php esc_attr_e('View Page'); ?>" src="<?php echo admin_url('images/ico-viewpage.png'); ?>" /></a> 
     111                                                                <span class="item-title"><?php echo esc_html($menu_item->title); ?></span> 
     112                                                                <span class="item-controls"> 
     113                                                                        <span class="item-type"><?php echo esc_html($menu_item->type); ?></span> 
     114                                                                        <a class="item-edit thickbox" id="edit<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->menu_order ); ?>" title="<?php _e('Edit Menu Item'); ?>" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings"><?php _e('Edit'); ?></a> | 
     115                                                                        <a class="item-delete" id="delete<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->menu_order ); ?>"><?php _e('Delete'); ?></a> 
    101116                                                                </span> 
    102117                                                        </dt> 
    103118                                                </dl> 
     
    109124                                                <input type="hidden" name="dbid<?php echo esc_attr( $menu_item->menu_order ); ?>" id="dbid<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->ID ); ?>" /> 
    110125                                                <input type="hidden" name="postmenu<?php echo esc_attr( $menu_item->menu_order ); ?>" id="postmenu<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( get_post_meta( $menu_item->ID, 'object_id', true ) ); ?>" /> 
    111126                                                <input type="hidden" name="parent<?php echo esc_attr( $menu_item->menu_order ); ?>" id="parent<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->parent_item ); ?>" /> 
    112                                                 <input type="hidden" name="title<?php echo esc_attr( $menu_item->menu_order ); ?>" id="title<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->title ); ?>" /> 
    113                                                 <input type="hidden" name="linkurl<?php echo esc_attr( $menu_item->menu_order ); ?>" id="linkurl<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>" /> 
    114                                                 <input type="hidden" name="description<?php echo esc_attr( $menu_item->menu_order ); ?>" id="description<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->description ); ?>" /> 
    115127                                                <input type="hidden" name="icon<?php echo esc_attr( $menu_item->menu_order ); ?>" id="icon<?php echo esc_attr( $menu_item->menu_order ); ?>" value="0" /> 
    116128                                                <input type="hidden" name="position<?php echo esc_attr( $menu_item->menu_order ); ?>" id="position<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->menu_order ); ?>" /> 
    117129                                                <input type="hidden" name="linktype<?php echo esc_attr( $menu_item->menu_order ); ?>" id="linktype<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( get_post_meta( $menu_item->ID, 'menu_type', true ) ); ?>" /> 
    118                                                 <input type="hidden" name="anchortitle<?php echo esc_attr( $menu_item->menu_order ); ?>" id="anchortitle<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->post_excerpt ); ?>" /> 
    119                                                 <input type="hidden" name="newwindow<?php echo esc_attr( $menu_item->menu_order ); ?>" id="newwindow<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo ( get_post_meta( $menu_item->ID, 'menu_new_window', true ) ? '1' : '0' ); ?>" /> 
     130                                                <input type="hidden" name="item-title<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-title<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->title ); ?>" /> 
     131                                                <input type="hidden" name="item-url<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-url<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>" /> 
     132                                                <input type="hidden" name="item-description<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-description<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->description ); ?>" /> 
     133                                                <input type="hidden" name="item-attr-title<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-attr-title<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->post_excerpt ); ?>" /> 
     134                                                <input type="hidden" name="item-target<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-target<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo ( get_post_meta( $menu_item->ID, 'menu_new_window', true ) ? '1' : '0' ); ?>" /> 
    120135<?php 
    121136                break; 
    122137 
    123138                case 'frontend': 
    124139                        // Override for menu descriptions 
    125                         $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options'); 
     140                        $advanced_option_descriptions = get_option('wp_settings_nav_menu_advanced_options'); 
    126141                        if ( $advanced_option_descriptions == 'no' ) 
    127142                                $args['desc'] = 2; 
    128143?> 
     
    148163                break; 
    149164 
    150165                case 'default': 
    151                         $template_dir = get_bloginfo('url'); 
     166                        $menu_id = 'menu-item-' . $menu_item->ID; 
    152167?> 
    153168                                        <dl> 
    154169                                                <dt> 
    155                                                         <a class="title" title="<?php esc_attr_e('Add to Menu'); ?>" onclick="appendToList('<?php echo esc_js( esc_url_raw( $template_dir ) ); ?>','<?php echo esc_js( $menu_item->append ); ?>','<?php echo esc_js( $menu_item->title ); ?>','<?php echo esc_js( $menu_item->link ); ?>','<?php echo esc_js( $menu_item->ID ); ?>','<?php echo esc_js( $menu_item->parent_item ); ?>','<?php echo esc_js( $menu_item->description ); ?>')" name="<?php echo esc_attr( $menu_item->title ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>"><?php echo $menu_item->title; ?></a> 
     170                                                        <label class="item-title"><input type="checkbox" id="<?php echo esc_attr($menu_id); ?>" onclick="wp_update_queue('<?php echo esc_js( $menu_item->append ); ?>','<?php echo esc_js( $menu_item->title ); ?>','<?php echo esc_js( $menu_item->link ); ?>','<?php echo esc_js( $menu_item->ID ); ?>','<?php echo esc_js( $menu_item->parent_item ); ?>','<?php echo esc_js( $menu_item->description ); ?>')" name="<?php echo esc_attr( $menu_item->title ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>" /><?php echo $menu_item->title; ?></label> 
    156171                                                </dt> 
    157172                                        </dl> 
    158173<?php 
  • wp-includes/default-widgets.php

     
    10451045 
    10461046        function WP_Nav_Menu_Widget() { 
    10471047                $widget_ops = array('description' => __('Use this widget to add one of your navigation menus as a widget.') ); 
    1048                 parent::WP_Widget(false, __('Navigation Menu'), $widget_ops); 
     1048                parent::WP_Widget( false, __('Navigation Menu'), $widget_ops ); 
    10491049        } 
    10501050 
    10511051        function widget($args, $instance) { 
     
    10601060                $navulclass = $instance['navulclass']; 
    10611061 
    10621062                // Override for menu descriptions 
    1063                 $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options'); 
     1063                $advanced_option_descriptions = get_option('wp_settings_nav_menu_advanced_options'); 
    10641064                if ( $advanced_option_descriptions == 'no' ) { 
    10651065                        $navwidgetdescription = 2; 
    10661066                } else { 
     
    11041104                        } else { 
    11051105                                // DISPLAY default UL 
    11061106                                ?> 
    1107                                 <ul class="custom-nav"> 
     1107                                <ul class="menu"> 
    11081108                                <?php 
    11091109                        } 
    11101110                        wp_nav_menu( array('id' => $navmenu, 'name' => $wp_custom_nav_menu_name, 'desc' => $navwidgetdescription, 'format' => 'widget') ); 
    11111111                        if ( $navdeveloper == 'yes' ) { 
    1112                                 //DISPLAY Custom UL 
     1112                                // DISPLAY Custom UL 
    11131113                                if ( $navul == 'yes' ) { 
    11141114                                        ?> 
    11151115                                        </ul> 
    11161116                                        <?php 
    11171117                                } 
    11181118                        } else { 
    1119                                 //DISPLAY default UL 
     1119                                // DISPLAY default UL 
    11201120                                ?> 
    11211121                                </ul> 
    11221122                                <?php 
     
    12571257                        </p> 
    12581258                <?php 
    12591259                } 
    1260                 $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options'); 
     1260                $advanced_option_descriptions = get_option('wp_settings_nav_menu_advanced_options'); 
    12611261                ?> 
    12621262                <p <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?>> 
    12631263                   <?php $checked = strtolower($navwidgetdescription); ?> 
  • wp-includes/script-loader.php

     
    398398 
    399399                // Custom Navigation 
    400400                $scripts->add( 'nav-menu-default-items', "/wp-admin/js/nav-menu-default-items$suffix.js", false, '20100223' ); 
    401                 $scripts->add( 'nav-menu-dynamic-functions', "/wp-admin/js/nav-menu-dynamic-functions$suffix.js", false, '20100224b' ); 
     401                $scripts->add( 'nav-menu-dynamic-functions', "/wp-admin/js/nav-menu-dynamic-functions$suffix.js", false, '20100225b' ); 
    402402                $scripts->localize( 'nav-menu-dynamic-functions', 'navMenuL10n', array( 
    403403                        'custom' => _x('Custom', 'menu nav item type'), 
    404404                        'page' => _x('Page', 'menu nav item type'), 
    405                         'category' => _x('Category', 'menu nav item type') 
     405                        'category' => _x('Category', 'menu nav item type'), 
     406                        'thickbox' => _x('Edit Menu Item', 'Thickbox Title'), 
     407                        'edit' => _x('Edit', 'menu item edit text'), 
    406408                ) ); 
    407409                 
    408410                $scripts->add( 'nav-menu-php-functions', "/wp-admin/js/nav-menu-php-functions$suffix.js", false, '20100220' ); 
     
    474476        $styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.2' ); 
    475477        $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' ); 
    476478        $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' ); 
    477         $styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100225' ); 
     479        $styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100225b' ); 
    478480 
    479481        foreach ( $rtl_styles as $rtl_style ) { 
    480482                $styles->add_data( $rtl_style, 'rtl', true ); 
  • wp-includes/nav-menu.php

     
    77 * @since 3.0.0 
    88 */ 
    99 
     10// Deletes a nav menu 
    1011function wp_delete_nav_menu( $menu_id ) { 
    1112        $menu_id = (int) $menu_id; 
    1213        if ( !$menu_id  ) 
     
    2122        wp_delete_term( $menu_id, 'nav_menu' ); 
    2223} 
    2324 
     25// Creates a new nav menu 
    2426function wp_create_nav_menu( $menu_name, $args = array() ) { 
    2527        $menu_exists = get_term_by( 'name', $menu_name, 'nav_menu' ); 
    2628 
    2729        if ( $menu_exists ) 
    28                 return new WP_Error('menu_exists', sprintf( __('A menu named &#8220;%s&#8221; already exists; please try another name.'), esc_html( $menu_exists->name ) ) ); 
     30                return new WP_Error( 'menu_exists', sprintf( __('A menu named &#8220;%s&#8221; already exists; please try another name.'), esc_html( $menu_exists->name ) ) ); 
    2931 
    3032        if ( isset($args['slug']) ) 
    3133                $slug = $args['slug']; 
     
    4042        return get_term( $menu['term_id'], 'nav_menu'); 
    4143} 
    4244 
     45// Creates a default menu if none exists 
    4346function wp_create_default_nav_menu() { 
    44         $menu = wp_create_nav_menu(__('Main'), array('slug' => 'main')); 
     47        $menu = wp_create_nav_menu( __('Menu 1'), array('slug' => 'menu-1') ); 
    4548 
    4649        if ( is_wp_error($menu) ) 
    4750                return; 
     
    4952        $pages = get_pages( array('parent' => 0, 'number' => 15) ); 
    5053        $counter = 1; 
    5154        foreach ( $pages as $page ) { 
    52                 $item = array('post_status' => 'publish', 'post_type' => 'nav_menu_item', 'menu_order' => $counter, 'tax_input' => array( 'nav_menu' => $menu->name), 'post_title' => addslashes($page->post_title) ); 
     55                $item = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'menu_order' => $counter, 'tax_input' => array( 'nav_menu' => $menu->name), 'post_title' => addslashes($page->post_title) ); 
    5356                $item_id = wp_insert_post($item, true); 
    5457                update_post_meta( $item_id, 'menu_type', 'page' ); 
    5558                update_post_meta( $item_id, 'object_id', $page->ID ); 
     
    5861        } 
    5962} 
    6063 
     64// Get nav menu by id 
    6165function wp_get_nav_menu( $menu ) { 
    62         return get_term( (int) $menu, 'nav_menu'); 
     66        return get_term( (int) $menu, 'nav_menu' ); 
    6367} 
    6468 
     69// Get all nav menus 
    6570function wp_get_nav_menus() { 
    6671        return get_terms( 'nav_menu', array( 'hide_empty' => false, 'orderby' => 'id' ) ); 
    6772} 
    6873 
     74// Get the nav menu items 
    6975function wp_get_nav_menu_items( $menu, $args = array() ) { 
    7076        $items = get_objects_in_term( (int) $menu, 'nav_menu' ); 
    7177 
     
    9298        return $items; 
    9399} 
    94100 
     101// wp_setup_nav_menu_item() 
    95102function wp_setup_nav_menu_item($menu_item, $type = 'item', $position = 0) { 
    96103        global $parent_menu_order; 
    97104 
  • wp-admin/admin-ajax.php

     
    477477        _wp_ajax_delete_comment_response( $comment->comment_ID ); 
    478478        die( '0' ); 
    479479        break; 
     480case 'add-menu-link': 
     481        if ( !current_user_can( 'manage_links' ) ) 
     482                die('-1'); 
     483         
     484        $link_url = isset($_POST['link_url']) ? $_POST['link_url'] : false;      
     485        $link_name = isset($_POST['link_name']) ? $_POST['link_name'] : false; 
     486         
     487        if ( !$link_url || !$link_name ) 
     488                die('-1'); 
     489         
     490        $post = array( 'post_type' => 'nav_menu_item', 'post_title' => $link_name, 'ping_status' => false, 'post_excerpt' => '', 'post_content' => '' ); 
     491        $db_id = wp_insert_post( $post ); 
     492 
     493        update_post_meta( $db_id, 'menu_type', 'custom' ); 
     494        update_post_meta( $db_id, 'object_id', '' ); 
     495        update_post_meta( $db_id, 'menu_new_window', 0 ); 
     496        update_post_meta( $db_id, 'menu_link', esc_url_raw( $link_url ) ); 
     497         
     498        echo $db_id; 
     499        break; 
    480500case 'add-link-category' : // On the Fly 
    481501        check_ajax_referer( $action ); 
    482502        if ( !current_user_can( 'manage_categories' ) ) 
  • wp-admin/includes/nav-menu.php

     
    175175 
    176176        if ( $sub_array ) { 
    177177                ?> 
    178                 <ul id="sub-custom-nav-<?php echo $type ?>"> 
     178                <ul id="sub-menu-<?php echo $type ?>"> 
    179179 
    180180                <?php 
    181181                // Display Loop 
     
    221221        // Custom Navigation Menu Setup 
    222222 
    223223        // Override for menu descriptions 
    224         update_option('wp_settings_custom_nav_advanced_options', 'yes'); 
     224        update_option('wp_settings_nav_menu_advanced_options', 'yes'); 
    225225 
    226226        $menus = wp_get_nav_menus(); 
    227227        if ( !empty( $menus ) ) { 
  • wp-admin/js/nav-menu-default-items.dev.js

     
    11/** 
    22 * WordPress Administration Custom Navigation 
    3  * Interface JQuery functions 
     3 * Interface $ functions 
    44 * 
    5  * @version 1.1.0 
     5 * @version 2.0.0 
    66 * 
    77 * @package WordPress 
    88 * @subpackage Administration 
    99 */ 
    1010 
    11 /* 
     11/** 
    1212 * Init Functions 
    13 */ 
    14 jQuery(function($) 
    15         { 
    16                 //Makes dialog box 
    17                 $("#dialog-confirm").dialog({ 
    18                         autoOpen: false, 
    19                         resizable: false, 
    20                         height: 210, 
    21                         width: 400, 
    22                         modal: true, 
    23                         buttons: { 
    24                                 'Save': function() { 
     13 */ 
     14jQuery(document).ready(function($){ 
     15         
     16        // Handle Save Button Clicks 
     17        $('#save_menu').click(function(){ 
     18                wp_update_post_data(); 
     19        }); 
     20                 
     21        // Clear the quick search textbox 
     22        $('.quick-search').click(function(){ 
     23                $(this).attr( 'value', '' ); 
     24        }); 
     25         
     26        // Quick Search submit 
     27        $('.quick-search-submit').click(function(){ 
     28                $(this).siblings('.quick-search').search(); 
     29        }); 
     30         
     31        // Edit menu item 
     32        $('#menu-container .item-edit').click(function(){ 
     33                wp_edit_menu_item( $(this).attr('value') ); 
     34        }); 
     35         
     36        // Delete menu item 
     37        $('#menu-container .item-delete').live( 'click', function(){ 
     38                wp_remove_menu_item( $(this).attr('value') ); 
     39        }); 
     40         
     41        // Update menu item settings (thickbox) 
     42        $('#update-menu-item').click(function(){ 
     43                wp_update_menu_item(); 
     44                tb_remove(); 
     45                 
     46                // Give feedback to the user 
     47                var id = $('#edit-item-id').val(); 
     48                $('#menu-' + id + ' dt:first').animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }}); 
     49        }); 
     50         
     51        // Close thickbox 
     52        $('#cancel-save').click(function(){ 
     53                tb_remove(); 
     54        }); 
     55         
     56        // Show All Button 
     57        $('.show-all').click(function(){ 
     58                $(this).offsetParent().find('#add-buttons-actions').attr( 'style','margin-bottom: 10px;' ); 
     59                $(this).offsetParent().find('.list-wrap').css( 'display','block' ); 
     60                $(this).siblings('.quick-search').attr( 'value', '' );           
     61                $(this).offsetParent().find('.list-wrap dt').css( 'display', 'block' ); 
     62                $(this).hide(); 
     63                $(this).siblings('.hide-all').show(); 
     64        }); 
     65         
     66        // Hide All Button 
     67        $('.hide-all').click(function(){ 
     68                $(this).offsetParent().find('#add-buttons-actions').attr( 'style','margin-bottom: 0px;' ); 
     69                $(this).offsetParent().find('.list-wrap').css( 'display','none' ); 
     70                $(this).siblings('.quick-search').attr( 'value', 'Search' ); 
     71                $(this).offsetParent().find('.list-wrap dt').css( 'display', 'none' ); 
     72                $(this).hide(); 
     73                $(this).siblings('.show-all').show(); 
     74        }); 
     75         
     76        // Add queued menu items into the menu 
     77        $('.enqueue a').click(function(){ 
     78                wp_add_queued_items_to_menu(this); 
     79        }); 
     80         
     81        // Create the link, add it to the menu + available links section 
     82        $('#add-custom-link .add-to-menu a').click(function(){ 
     83                var link_url = $(this).offsetParent().find('#menu-item-url').val(); 
     84                var link_name = $(this).offsetParent().find('#menu-item-name').val(); 
     85                var links = $(this).offsetParent().find('#available-links input:checked'); 
     86                 
     87                // If links are checked in the available links section, add them to the menu 
     88                if ( links ) { 
     89                        for (var i = 0; i < links.length; i++) { 
     90                                wp_add_item_to_menu( 'Custom', links[i].name, links[i].value, links[i].id.substring( 5, links[i].id.length ), 0, '' ); 
     91                        }; 
     92                         
     93                        // Reset the checkboxes; 
     94                        $(links).attr('checked', false); 
     95                }; 
     96                                 
     97                // Don't save the link if it was left with it's default settings 
     98                if ( 'http://' == link_url || 'Menu Item' == link_name ) 
     99                        return; 
     100                 
     101                // Parameters to send off 
     102                params = { 
     103                        action: 'add-menu-link', 
     104                        link_url: link_url, 
     105                        link_name: link_name, 
     106                }; 
     107                 
     108                // save the link 
     109                $.post( ajaxurl, params, function(response) { 
     110                        if ( null == response || '-1' == response ) 
     111                                return false; 
     112                         
     113                        params.link_id = response; 
     114                         
     115                        // add it to the available links section 
     116                        // wp_update_links_list( params ); 
     117                         
     118                        // and update the Menu with the new link 
     119                        wp_add_item_to_menu( 'Custom', params.link_name, params.link_url, params.link_id, 0, '' ); 
     120                }, 'json'); 
     121        }); 
     122         
     123        // Add dropzones 
     124    $('#menu li').prepend('<div class="dropzone"></div>'); 
    25125 
    26                                         titletosave = $('#edittitle').attr('value'); 
    27                                         linktosave = $('#editlink').attr('value'); 
    28                                         anchortitletosave = $('#editanchortitle').attr('value'); 
    29                                         newwindowtosave = $('#editnewwindow').attr('value'); 
    30                                         desctosave = $('#editdescription').attr('value'); 
     126        // Make menu items draggable 
     127        $('#menu li').draggable({ 
     128                    handle: ' > dl', 
     129                    opacity: .8, 
     130                    addClasses: false, 
     131                    helper: 'clone', 
     132                    zIndex: 100 
     133        }); 
    31134 
    32                                         $('#title' + $(this).dialog('option', 'itemID')).attr('value',titletosave); 
    33                                         $('#linkurl' + $(this).dialog('option', 'itemID')).attr('value',linktosave); 
    34                                         $('#anchortitle' + $(this).dialog('option', 'itemID')).attr('value',anchortitletosave); 
    35                                         $('#newwindow' + $(this).dialog('option', 'itemID')).attr('value',newwindowtosave); 
    36                                         $('#description' + $(this).dialog('option', 'itemID')).attr('value',desctosave); 
     135        // Make items droppable 
     136        $('#menu dl, #menu .dropzone').droppable({ 
     137                accept: '#menu li', 
     138                tolerance: 'pointer', 
     139                 
     140                drop: function(e, ui) { 
     141                        var li = $(this).parent(); 
     142                        var child = !$(this).hasClass('dropzone'); 
     143                         
     144                        // Add UL to first child 
     145                if ( child && li.children('ul').length == 0 ) { 
     146                li.append('<ul id="sub-menu" />'); 
     147                } 
     148                // Make it draggable 
     149                if ( child ) { 
     150                li.children('ul').append( ui.draggable ); 
     151                } else { 
     152                li.before( ui.draggable ); 
     153                } 
    37154 
    38                                         $('#menu-' + $(this).dialog('option', 'itemID') + ' > dl > dt > span.title').text(titletosave); 
     155                li.find('dl,.dropzone').css({ backgroundColor: '', borderColor: '' }); 
    39156 
    40                                         $('#view' + + $(this).dialog('option', 'itemID')).attr('href', linktosave); 
    41  
    42                                         $(this).dialog('close'); 
    43  
    44                                 }, 
    45                                 Cancel: function() { 
    46                                         $(this).dialog('close'); 
    47                                 } 
    48                         } 
    49                 }); 
    50  
    51                 // $('#message').animate({ opacity: 1.0 },2000).fadeOut(300, function(){ $(this).remove();}); 
    52  
    53                 //Add dropzone 
    54             $('#custom-nav li').prepend('<div class="dropzone"></div>'); 
    55  
    56                 //Make li items draggable 
    57                 $('#custom-nav li').draggable({ 
    58                             handle: ' > dl', 
    59                             opacity: .8, 
    60                             addClasses: false, 
    61                             helper: 'clone', 
    62                             zIndex: 100 
    63                 }); 
    64  
    65                 //Make items droppable 
    66                 $('#custom-nav dl, #custom-nav .dropzone').droppable( 
    67                 { 
    68                 accept: '#custom-nav li', 
    69                     tolerance: 'pointer', 
    70                 drop: function(e, ui) 
    71                 { 
    72                         var li = $(this).parent(); 
    73                         var child = !$(this).hasClass('dropzone'); 
    74                         //Add UL to first child 
    75                         if (child && li.children('ul').length == 0) 
    76                         { 
    77                         li.append('<ul id="sub-menu" />'); 
    78                         } 
    79                         //Make it draggable 
    80                         if (child) 
    81                         { 
    82                         li.children('ul').append(ui.draggable); 
    83                         } 
    84                         else 
    85                         { 
    86                         li.before(ui.draggable); 
    87                         } 
    88  
    89                         li.find('dl,.dropzone').css({ backgroundColor: '', borderColor: '' }); 
    90  
    91                         var draggablevalue = ui.draggable.attr('value'); 
    92                         var droppablevalue = li.attr('value'); 
    93                         li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue); 
    94                         $(this).parent().find("dt").removeAttr('style'); 
    95                         $(this).parent().find("div:first").removeAttr('style'); 
    96  
    97  
    98                 }, 
    99                 over: function() 
    100                 { 
    101                         //Add child 
    102                         if ($(this).attr('class') == 'dropzone ui-droppable') 
    103                         { 
    104                                 $(this).parent().find("div:first").css('background', 'none').css('height', '50px'); 
    105                         } 
    106                         //Add above 
    107                         else if ($(this).attr('class') == 'ui-droppable') 
    108                         { 
    109                                 $(this).parent().find("dt:first").css('background', '#d8d8d8'); 
    110                         } 
    111                         //do nothing 
    112                         else { 
    113  
    114                         } 
    115                         var parentid = $(this).parent().attr('id'); 
    116  
    117                 }, 
    118                 out: function() 
    119                 { 
    120                         $(this).parent().find("dt").removeAttr('style'); 
    121                         $(this).parent().find("div:first").removeAttr('style'); 
    122                         $(this).filter('.dropzone').css({ borderColor: '' }); 
    123                 }, 
    124                 deactivate: function() 
    125                 { 
    126  
    127  
    128                 } 
    129  
    130  
    131                 }); 
    132  
    133                 //Handle Save Button Clicks 
    134                 $('#save_top').click(function() 
    135                 { 
    136                         updatepostdata(); 
    137                 }); 
    138                 $('#save_bottom').click(function() 
    139                 { 
    140                         updatepostdata(); 
    141                 }); 
    142  
    143  
     157                        var draggablevalue = ui.draggable.attr('value'); 
     158                        var droppablevalue = li.attr('value'); 
     159                         
     160                li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue); 
     161                        $(this).parent().find('dt').removeAttr('style'); 
     162                         
     163                        $(this).parent().find('div:first').removeAttr('style'); 
     164        }, 
     165         
     166                over: function() { 
     167                 
     168                if ( 'dropzone ui-droppable' == $(this).attr('class') ) { 
     169                                // Add child 
     170                        $(this).parent().find('dt:first').css('background', 'none').css('height', '50px'); 
     171                                 
     172                } else if ($(this).attr('class') == 'ui-droppable') { 
     173                                // Add above 
     174                        $(this).parent().find('dt:first').css('background', '#d8d8d8'); 
     175                                 
     176                } else { 
     177                                // do nothing 
     178                } 
     179                var parentid = $(this).parent().attr('id'); 
     180        }, 
     181        out: function() { 
     182                $(this).parent().find('dt').removeAttr('style'); 
     183                $(this).parent().find('div:first').removeAttr('style'); 
     184                $(this).filter('.dropzone').css({ borderColor: '' }); 
     185        }, 
     186        deactivate: function() { 
     187                        // 
     188        } 
    144189        }); 
    145  
    146  
     190}); 
     191 No newline at end of file 
  • wp-admin/js/nav-menu-dynamic-functions.js

     
    1 function removeitem(c){var b=document.getElementById("menu-"+c);if(b){var a=document.getElementById("menu-"+c).parentNode;throwaway_node=a.removeChild(b)}updatepostdata()}function edititem(a){itemTitle=jQuery("#title"+a).attr("value");itemURL=jQuery("#linkurl"+a).attr("value");itemAnchorTitle=jQuery("#anchortitle"+a).attr("value");itemNewWindow=jQuery("#newwindow"+a).attr("value");itemDesc=jQuery("#description"+a).attr("value");jQuery("#dialog-confirm").dialog("option","itemID",a);jQuery("#dialog-confirm").dialog("open");jQuery("#edittitle").attr("value",itemTitle);jQuery("#editlink").attr("value",itemURL);jQuery("#editanchortitle").attr("value",itemAnchorTitle);jQuery("#editnewwindow option[value='"+itemNewWindow+"']").attr("selected","selected");jQuery("#editdescription").attr("value",itemDesc)}function updatepostdata(){var a=0;jQuery("#custom-nav").find("li").each(function(c){c=c+1;var b=jQuery(this).attr("value");jQuery(this).find("#position"+b).attr("value",c);jQuery(this).attr("id","menu-"+c);jQuery(this).attr("value",c);jQuery(this).find("#dbid"+b).attr("name","dbid"+c);jQuery(this).find("#dbid"+b).attr("id","dbid"+c);jQuery(this).find("#postmenu"+b).attr("name","postmenu"+c);jQuery(this).find("#postmenu"+b).attr("id","postmenu"+c);var d=jQuery(this).find("#parent"+b).parent().parent().parent().attr("value");jQuery(this).find("#parent"+b).attr("name","parent"+c);jQuery(this).find("#parent"+b).attr("id","parent"+c);if(d){}else{d=0}jQuery(this).find("#parent"+b).attr("value",d);jQuery(this).find("#title"+b).attr("name","title"+c);jQuery(this).find("#title"+b).attr("id","title"+c);jQuery(this).find("#linkurl"+b).attr("name","linkurl"+c);jQuery(this).find("#linkurl"+b).attr("id","linkurl"+c);jQuery(this).find("#description"+b).attr("name","description"+c);jQuery(this).find("#description"+b).attr("id","description"+c);jQuery(this).find("#icon"+b).attr("name","icon"+c);jQuery(this).find("#icon"+b).attr("id","icon"+c);jQuery(this).find("#position"+b).attr("name","position"+c);jQuery(this).find("#position"+b).attr("id","position"+c);jQuery(this).find("#linktype"+b).attr("name","linktype"+c);jQuery(this).find("#linktype"+b).attr("id","linktype"+c);jQuery(this).find("#anchortitle"+b).attr("name","anchortitle"+c);jQuery(this).find("#anchortitle"+b).attr("id","anchortitle"+c);jQuery(this).find("#newwindow"+b).attr("name","newwindow"+c);jQuery(this).find("#newwindow"+b).attr("id","newwindow"+c);jQuery(this).find("dl > dt > span > #remove"+b).attr("value",c);jQuery(this).find("dl > dt > span > #remove"+b).attr("onClick","removeitem("+c+")");jQuery(this).find("dl > dt > span > #remove"+b).attr("id","remove"+c);jQuery("#li-count").attr("value",c)})}function appendToList(b,s,d,n,h,l,e){var k="";var c="";var r="";var o="";var i="";var a="";if(s==navMenuL10n.custom){k=document.getElementById("custom-menu-item-name").value;c=document.getElementById("custom-menu-item-url").value;r="";o="";inputlinktype="custom";i=""}else{if(s==navMenuL10n.page){k=htmlentities(d.toString());c=n.toString();r=h.toString();o="0";inputlinktype="page";i=htmlentities(e.toString())}else{if(s==navMenuL10n.category){k=htmlentities(d.toString());c=n.toString();r=h.toString();o="0";inputlinktype="category";i=htmlentities(e.toString())}else{k="";k="";r="";o="";inputlinktype="custom";i=""}}}var g=document.getElementById("custom-nav").getElementsByTagName("li").length+1;var p=g;var m=0;try{var q=document.getElementById("menu-"+p.toString()).value}catch(f){m=1}while(m==0){p=p+1;try{var j=document.getElementById("menu-"+p.toString()).value}catch(f){m=1}}jQuery(".maintitle").after('<div id="message" class="updated fade below-h2"><p>Menu Item added!</p></div>');jQuery("#message").animate({opacity:1},2000).fadeOut(300,function(){jQuery(this).remove()});jQuery("#custom-nav").append('<li id="menu-'+p+'" value="'+p+'"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">'+k+'</span><span class="controls"><span class="type">'+s+'</span><a id="edit'+p+'" onclick="edititem('+p+')" value="'+p+'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="'+b+'/wp-admin/images/ico-edit.png" /></a> <a id="remove'+p+'" onclick="removeitem('+p+')" value="'+p+'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="'+b+'/wp-admin/images/ico-close.png" /></a> <a href="'+c+'" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="'+b+'/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="'+c+'">'+k+'</a><input type="hidden" name="postmenu'+p+'" id="postmenu'+p+'" value="'+r+'" /><input type="hidden" name="parent'+p+'" id="parent'+p+'" value="'+o+'" /><input type="hidden" name="title'+p+'" id="title'+p+'" value="'+k+'" /><input type="hidden" name="linkurl'+p+'" id="linkurl'+p+'" value="'+c+'" /><input type="hidden" name="description'+p+'" id="description'+p+'" value="'+i+'" /><input type="hidden" name="icon'+p+'" id="icon'+p+'" value="'+a+'" /><input type="hidden" name="position'+p+'" id="position'+p+'" value="'+p+'" /><input type="hidden" name="linktype'+p+'" id="linktype'+p+'" value="'+inputlinktype+'" /><input type="hidden" name="anchortitle'+p+'" id="anchortitle'+p+'" value="'+k+'" /><input type="hidden" name="newwindow'+p+'" id="newwindow'+p+'" value="0" /></li>');jQuery("#menu-"+p+"").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});jQuery("#menu-"+p+" dl, #menu-"+p+" .dropzone").droppable({accept:"#"+p+", #custom-nav li",tolerance:"pointer",drop:function(x,w){var t=jQuery(this).parent();var y=!jQuery(this).hasClass("dropzone");if(y&&t.children("ul").length==0){t.append("<ul/>")}if(y){t.children("ul").append(w.draggable)}else{t.before(w.draggable)}t.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var v=w.draggable.attr("value");var u=t.attr("value");t.find("#menu-"+v).find("#parent"+v).val(u);jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style")},over:function(){if(jQuery(this).attr("class")=="dropzone ui-droppable"){jQuery(this).parent().find("div:first").css("background","none").css("height","50px")}else{if(jQuery(this).attr("class")=="ui-droppable"){jQuery(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var t=jQuery(this).parent().attr("id")},out:function(){jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style");jQuery(this).filter(".dropzone").css({borderColor:""})}});updatepostdata()}; 
    2  No newline at end of file 
     1function wp_update_links_list(e){var link='<li><dl><dt><label class="item-title"><input type="checkbox" id="link-'+e.link_id+'" name="'+e.link_name+'" value="'+e.link_url+'" />'+e.link_name+"</label></dt></dl></li>";jQuery("#available-links .list").prepend(link);jQuery("#available-links .list #link-"+e.link_id).parent().animate({backgroundColor:"#FFFF33"},{duration:"normal",complete:function(){jQuery(this).css("backgroundColor","")}})}function wp_remove_menu_item(o){var todelete=document.getElementById("menu-"+o);if(todelete){jQuery(todelete).find("dt").each(function(){jQuery(this).animate({backgroundColor:"#FF3333"},{duration:"normal",complete:function(){jQuery(this).parent().parent().remove()}})});wp_update_post_data()}}function wp_edit_menu_item(id){console.log("wp_edit_menu_item");var itemTitle=jQuery("#item-title"+id).val();var itemURL=jQuery("#item-url"+id).val();var itemAttrTitle=jQuery("#item-attr-title"+id).val();var itemTarget=jQuery("#item-target"+id).val();var itemDesc=jQuery("#item-description"+id).val();console.log(id);console.log(itemTitle);console.log(itemURL);console.log(itemAttrTitle);console.log(itemTarget);console.log(itemDesc);jQuery("#edit-item-id").val(id);jQuery("#edit-item-title").val(itemTitle);jQuery("#edit-item-url").val(itemURL);jQuery("#edit-item-attr-title").val(itemAttrTitle);jQuery("#edit-item-target").val(itemTarget);jQuery("#edit-item-target option[value='"+itemTarget+"']").attr("selected","selected");jQuery("#edit-item-description").val(itemDesc)}function wp_update_menu_item(){var id=jQuery("#edit-item-id").val();var itemTitle=jQuery("#edit-item-title").val();var itemURL=jQuery("#edit-item-url").val();var itemAttrTitle=jQuery("#edit-item-attr-title").val();var itemTarget=jQuery("#edit-item-target").val();var itemDesc=jQuery("#edit-item-description").val();console.log(id);console.log(itemTitle);console.log(itemURL);console.log(itemAttrTitle);console.log(itemTarget);console.log(itemDesc);jQuery("#menu-"+id).find(".item-title:first").html(itemTitle);jQuery("#item-title"+id).val(itemTitle);jQuery("#item-url"+id).val(itemURL);jQuery("#item-attr-title"+id).val(itemAttrTitle);jQuery("#item-target"+id).val(itemTarget);jQuery("#item-description"+id).val(itemDesc)}function wp_update_post_data(){var i=0;jQuery("#menu li").each(function(i){i=i+1;var j=jQuery(this).attr("value");jQuery(this).find("#position"+j).attr("value",i);jQuery(this).attr("id","menu-"+i);jQuery(this).attr("value",i);jQuery(this).find("#dbid"+j).attr("name","dbid"+i);jQuery(this).find("#dbid"+j).attr("id","dbid"+i);jQuery(this).find("#postmenu"+j).attr("name","postmenu"+i);jQuery(this).find("#postmenu"+j).attr("id","postmenu"+i);var p=jQuery(this).find("#parent"+j).parent().parent().parent().attr("value");jQuery(this).find("#parent"+j).attr("name","parent"+i);jQuery(this).find("#parent"+j).attr("id","parent"+i);if(p){}else{p=0}jQuery(this).find("#parent"+j).attr("value",p);jQuery(this).find("#item-title"+j).attr("name","item-title"+i);jQuery(this).find("#item-title"+j).attr("id","item-title"+i);jQuery(this).find("#item-url"+j).attr("name","item-url"+i);jQuery(this).find("#item-url"+j).attr("id","item-url"+i);jQuery(this).find("#item-description"+j).attr("name","item-description"+i);jQuery(this).find("#item-description"+j).attr("id","item-description"+i);jQuery(this).find("#item-attr-title"+j).attr("name","item-attr-title"+i);jQuery(this).find("#item-attr-title"+j).attr("id","item-attr-title"+i);jQuery(this).find("#item-target"+j).attr("name","item-target"+i);jQuery(this).find("#item-target"+j).attr("id","item-target"+i);jQuery(this).find("#position"+j).attr("name","position"+i);jQuery(this).find("#position"+j).attr("id","position"+i);jQuery(this).find("#linktype"+j).attr("name","linktype"+i);jQuery(this).find("#linktype"+j).attr("id","linktype"+i);jQuery("#li-count").attr("value",i)})}function wp_add_item_to_menu(additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription){var inputvaluevarname="";var inputvaluevarurl="";var inputitemid="";var inputparentid="";var inputdescription="";var randomnumber=wp_get_unique_menu_id();inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid;inputparentid=itemparentid;inputlinktype="custom";inputdescription=htmlentities(itemdescription.toString());jQuery("#menu").append('<li id="menu-'+randomnumber+'" value="'+randomnumber+'"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="item-title">'+inputvaluevarname+'</span><span class="item-controls"><span class="item-type">'+additemtype+'</span><a class="item-edit thickbox" id="edit'+randomnumber+'" value="'+randomnumber+'" onClick="wp_edit_menu_item('+randomnumber+')" title="'+navMenuL10n.thickbox+'" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings">'+navMenuL10n.edit+'</a> | <a class="item-delete" id="delete'+randomnumber+'" value="'+randomnumber+'">Delete</a></span></dt></dl><a class="hide" href="'+inputvaluevarurl+'">'+inputvaluevarname+'</a><input type="hidden" name="postmenu'+randomnumber+'" id="postmenu'+randomnumber+'" value="'+inputitemid+'" /><input type="hidden" name="parent'+randomnumber+'" id="parent'+randomnumber+'" value="'+inputparentid+'" /><input type="hidden" name="item-title'+randomnumber+'" id="item-title'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="item-url'+randomnumber+'" id="item-url'+randomnumber+'" value="'+inputvaluevarurl+'" /><input type="hidden" name="item-description'+randomnumber+'" id="item-description'+randomnumber+'" value="'+inputdescription+'" /><input type="hidden" name="position'+randomnumber+'" id="position'+randomnumber+'" value="'+randomnumber+'" /><input type="hidden" name="linktype'+randomnumber+'" id="linktype'+randomnumber+'" value="'+inputlinktype+'" /><input type="hidden" name="item-attr-title'+randomnumber+'" id="item-attr-title'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="item-target'+randomnumber+'" id="item-target'+randomnumber+'" value="0" /></li>');jQuery("#menu #menu-"+randomnumber+" dt:first").animate({backgroundColor:"#FFFF33"},{duration:"normal",complete:function(){jQuery(this).css("backgroundColor","")}});wp_drag_and_drop();tb_init("a.thickbox, area.thickbox, input.thickbox")}function wp_update_queue(additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription){var inputvaluevarname="";var inputvaluevarurl="";var inputitemid="";var inputparentid="";var inputdescription="";var randomnumber=wp_get_unique_menu_id();if(additemtype==navMenuL10n.page){inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid.toString();inputparentid="0";inputlinktype="page";inputdescription=htmlentities(itemdescription.toString())}else{if(additemtype==navMenuL10n.category){inputvaluevarname=htmlentities(itemtext.toString());inputvaluevarurl=itemurl.toString();inputitemid=itemid.toString();inputparentid="0";inputlinktype="category";inputdescription=htmlentities(itemdescription.toString())}}if(jQuery(menu_item_id="#menu-item-"+inputitemid).attr("checked")){jQuery("#queue").append('<li id="menu-'+randomnumber+'" value="'+randomnumber+'"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="item-title">'+inputvaluevarname+'</span><span class="item-controls"><span class="item-type">'+additemtype+'</span><a class="item-edit thickbox" id="edit'+randomnumber+'" value="'+randomnumber+'" onClick="wp_edit_menu_item('+randomnumber+')" title="'+navMenuL10n.thickbox+'" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings">'+navMenuL10n.edit+'</a> | <a class="item-delete" id="delete'+randomnumber+'" value="'+randomnumber+'">Delete</a></span></dt></dl><a class="hide" href="'+inputvaluevarurl+'">'+inputvaluevarname+'</a><input type="hidden" name="postmenu'+randomnumber+'" id="postmenu'+randomnumber+'" value="'+inputitemid+'" /><input type="hidden" name="parent'+randomnumber+'" id="parent'+randomnumber+'" value="'+inputparentid+'" /><input type="hidden" name="item-title'+randomnumber+'" id="item-title'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="item-url'+randomnumber+'" id="item-url'+randomnumber+'" value="'+inputvaluevarurl+'" /><input type="hidden" name="item-description'+randomnumber+'" id="item-description'+randomnumber+'" value="'+inputdescription+'" /><input type="hidden" name="position'+randomnumber+'" id="position'+randomnumber+'" value="'+randomnumber+'" /><input type="hidden" name="linktype'+randomnumber+'" id="linktype'+randomnumber+'" value="'+inputlinktype+'" /><input type="hidden" name="item-attr-title'+randomnumber+'" id="item-attr-title'+randomnumber+'" value="'+inputvaluevarname+'" /><input type="hidden" name="item-target'+randomnumber+'" id="item-target'+randomnumber+'" value="0" /></li>')}else{for(var i=0;i<jQuery('#queue li input[name^="postmenu"]').length;i++){if(itemid==jQuery('#queue li input[name^="postmenu"]')[i].value){var menu_queue_id=jQuery('#queue li input[name^="postmenu"]')[i].name.substring(8,jQuery('#queue li input[name^="postmenu"]')[i].name.length)}}jQuery("#queue li#menu-"+menu_queue_id).remove()}}function wp_add_queued_items_to_menu(button){var items=jQuery("#queue").children();jQuery("#queue").empty();jQuery("#menu").append(items);jQuery(items).each(function(){jQuery(this).find("dt").animate({backgroundColor:"#FFFF33"},{duration:"normal",complete:function(){jQuery(this).css("backgroundColor","")}})});jQuery(button).offsetParent().find(".list-container input").attr("checked",false);wp_update_post_data();wp_drag_and_drop();tb_init("a.thickbox, area.thickbox, input.thickbox")}function wp_drag_and_drop(){jQuery("#menu li").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});jQuery("#menu li dl, #menu li .dropzone").droppable({accept:"#menu li",tolerance:"pointer",drop:function(e,ui){var li=jQuery(this).parent();var child=!jQuery(this).hasClass("dropzone");if(child&&li.children("ul").length==0){li.append("<ul/>")}if(child){li.children("ul").append(ui.draggable)}else{li.before(ui.draggable)}li.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var draggablevalue=ui.draggable.attr("value");var droppablevalue=li.attr("value");li.find("#menu-"+draggablevalue).find("#parent"+draggablevalue).val(droppablevalue);jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style")},over:function(){if(jQuery(this).attr("class")=="dropzone ui-droppable"){jQuery(this).parent().find("div:first").css("background","none").css("height","50px")}else{if(jQuery(this).attr("class")=="ui-droppable"){jQuery(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var parentid=jQuery(this).parent().attr("id")},out:function(){jQuery(this).parent().find("dt").removeAttr("style");jQuery(this).parent().find("div:first").removeAttr("style");jQuery(this).filter(".dropzone").css({borderColor:""})}})}function wp_get_unique_menu_id(){var count=document.getElementById("menu").getElementsByTagName("li").length+1;var randomnumber=count;var validatetest=0;try{var test=document.getElementById("menu-"+randomnumber.toString()).value}catch(err){validatetest=1}while(validatetest==0){randomnumber=randomnumber+1;try{var test2=document.getElementById("menu-"+randomnumber.toString()).value}catch(err){validatetest=1}}return randomnumber}; 
     2 No newline at end of file 
  • wp-admin/js/nav-menu-dynamic-functions.dev.js

     
    88 * @subpackage Administration 
    99 */ 
    1010 
    11 /* 
    12  * Removes menu items from current menu 
     11/** 
     12 * Adds a link to the available links section 
     13 * 
     14 * @param object e - An object recieved via ajax 
     15 */ 
     16function wp_update_links_list(e) { 
     17        var link = '<li><dl><dt><label class="item-title"><input type="checkbox" id="link-'+ e.link_id +'" name="'+ e.link_name +'" value="'+ e.link_url +'" />'+ e.link_name +'</label></dt></dl></li>'; 
     18                 
     19        // Prepend the link to the available links section 
     20        jQuery('#available-links .list').prepend( link ); 
     21         
     22        // Give feedback to the user 
     23        jQuery('#available-links .list #link-' + e.link_id).parent().animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }}); 
     24} 
     25 
     26/** 
     27 * Removes a menu item from current menu 
     28 * 
    1329 * @param int o - the id of the menu li to remove. 
    14 */ 
    15 function removeitem(o) 
    16 { 
    17  
     30 */ 
     31function wp_remove_menu_item( o ) { 
    1832        var todelete = document.getElementById('menu-' + o); 
    19  
    20         if (todelete) 
    21         { 
    22                 var parenttodelete = document.getElementById('menu-' + o).parentNode; 
    23         throwaway_node = parenttodelete.removeChild(todelete); 
     33         
     34        if ( todelete ) { 
     35                // Give some feedback to the user 
     36                jQuery( todelete ).find('dt').each(function(){ 
     37                        jQuery(this).animate( { backgroundColor: '#FF3333' }, { duration: 'normal', complete: function() { jQuery(this).parent().parent().remove() } } ); 
     38                }); 
     39                 
     40                wp_update_post_data(); 
    2441        } 
    25  
    26         updatepostdata(); 
    2742}; 
    2843 
    29 /* 
    30  * Loads dialog window to edit menu items from current menu 
     44/** 
     45 * Populate the thickbox window with the selected menu items 
     46 * 
    3147 * @param int o - the id of the menu li to edit. 
    32 */ 
    33 function edititem(o) 
    34 { 
     48 */ 
     49function wp_edit_menu_item( id ) { 
     50        console.log('wp_edit_menu_item'); 
     51         
     52        var itemTitle = jQuery('#item-title' + id).val(); 
     53        var itemURL = jQuery('#item-url' + id).val(); 
     54        var itemAttrTitle = jQuery('#item-attr-title' + id).val(); 
     55        var itemTarget = jQuery('#item-target' + id).val(); 
     56        var itemDesc = jQuery('#item-description' + id).val(); 
     57         
     58        console.log(id); 
     59        console.log(itemTitle); 
     60        console.log(itemURL); 
     61        console.log(itemAttrTitle); 
     62        console.log(itemTarget); 
     63        console.log(itemDesc); 
     64         
     65        // Populate the fields for thickbox 
     66        jQuery( '#edit-item-id' ).val(id); 
     67        jQuery( '#edit-item-title' ).val(itemTitle); 
     68        jQuery( '#edit-item-url' ).val(itemURL); 
     69        jQuery( '#edit-item-attr-title' ).val(itemAttrTitle); 
     70        jQuery( '#edit-item-target' ).val(itemTarget); 
     71        jQuery( "#edit-item-target option[value='" + itemTarget  + "']" ).attr('selected', 'selected'); 
     72        jQuery( '#edit-item-description' ).val(itemDesc); 
     73}; 
    3574 
    36                 itemTitle = jQuery('#title' + o).val(); 
    37                 itemURL = jQuery('#linkurl' + o).val(); 
    38                 itemAnchorTitle = jQuery('#anchortitle' + o).val(); 
    39                 itemNewWindow = jQuery('#newwindow' + o).val(); 
    40                 itemDesc = jQuery('#description' + o).val(); 
     75/** 
     76 * Update the values for the menu item being editing 
     77 */ 
     78function wp_update_menu_item() { 
     79        var id = jQuery('#edit-item-id').val(); 
     80        var itemTitle = jQuery('#edit-item-title').val(); 
     81        var itemURL = jQuery('#edit-item-url').val(); 
     82        var itemAttrTitle = jQuery('#edit-item-attr-title').val(); 
     83        var itemTarget = jQuery('#edit-item-target').val(); 
     84        var itemDesc = jQuery('#edit-item-description').val(); 
     85         
     86        console.log(id); 
     87        console.log(itemTitle); 
     88        console.log(itemURL); 
     89        console.log(itemAttrTitle); 
     90        console.log(itemTarget); 
     91        console.log(itemDesc); 
     92         
     93        // update menu item settings     
     94        jQuery('#menu-' + id).find('.item-title:first').html(itemTitle); 
     95        jQuery('#item-title' + id).val(itemTitle); 
     96        jQuery('#item-url' + id).val(itemURL); 
     97        jQuery('#item-attr-title' + id).val(itemAttrTitle); 
     98        jQuery('#item-target' + id).val(itemTarget); 
     99        jQuery('#item-description' + id).val(itemDesc); 
     100} 
    41101 
    42                 jQuery('#dialog-confirm').dialog( 'option' , 'itemID' , o ) 
    43  
    44                 jQuery('#dialog-confirm').dialog('open'); 
    45  
    46                 jQuery('#edittitle').val( itemTitle ); 
    47                 if ( 'custom' == jQuery( '#linktype' + o ).val() ) { 
    48                         jQuery( '#editlink-wrap' ).css( 'display', 'inline' ); 
    49                 } else { 
    50                         jQuery( '#editlink-wrap' ).css( 'display', 'none' ); 
    51                 } 
    52                 jQuery('#editlink').val( itemURL ); 
    53                 jQuery('#editanchortitle').val( itemAnchorTitle ); 
    54                 jQuery("#editnewwindow option[value='" + itemNewWindow  + "']").attr('selected', 'selected'); 
    55                 jQuery('#editdescription').val( itemDesc ); 
    56  
    57 }; 
    58  
    59 /* 
     102/** 
    60103 * Prepares menu items for POST 
    61 */ 
    62 function updatepostdata() 
    63 { 
    64  
     104 */ 
     105function wp_update_post_data() { 
    65106        var i = 0; 
    66          jQuery("#custom-nav").find("li").each(function(i) { 
     107         
     108         jQuery('#menu li').each(function(i) { 
    67109                i = i + 1; 
    68110        var j = jQuery(this).attr('value'); 
    69111 
     
    79121 
    80122        var p = jQuery(this).find('#parent' + j).parent().parent().parent().attr('value'); 
    81123 
    82         jQuery(this).find('#parent' + j).attr('name','parent' + i); 
    83         jQuery(this).find('#parent' + j).attr('id','parent' + i); 
    84         if (p) { 
    85                 //Do nothing 
    86         } 
    87         else { 
    88                 //reset p to be top level 
    89                 p = 0; 
    90         } 
     124                jQuery(this).find('#parent' + j).attr('name','parent' + i); 
     125                jQuery(this).find('#parent' + j).attr('id','parent' + i); 
     126                 
     127                if (p) { 
     128                        // Do nothing 
     129                } else { 
     130                        // reset p to be top level 
     131                        p = 0; 
     132                } 
    91133 
    92         jQuery(this).find('#parent' + j).attr('value', p); 
     134                jQuery(this).find('#parent' + j).attr('value', p); 
    93135 
    94         jQuery(this).find('#title' + j).attr('name','title' + i); 
    95         jQuery(this).find('#title' + j).attr('id','title' + i); 
     136                jQuery(this).find('#item-title' + j).attr('name','item-title' + i); 
     137                jQuery(this).find('#item-title' + j).attr('id','item-title' + i); 
    96138 
    97         jQuery(this).find('#linkurl' + j).attr('name','linkurl' + i); 
    98         jQuery(this).find('#linkurl' + j).attr('id','linkurl' + i); 
     139                jQuery(this).find('#item-url' + j).attr('name','item-url' + i); 
     140                jQuery(this).find('#item-url' + j).attr('id','item-url' + i); 
    99141 
    100         jQuery(this).find('#description' + j).attr('name','description' + i); 
    101         jQuery(this).find('#description' + j).attr('id','description' + i); 
     142                jQuery(this).find('#item-description' + j).attr('name','item-description' + i); 
     143                jQuery(this).find('#item-description' + j).attr('id','item-description' + i); 
    102144 
    103         jQuery(this).find('#icon' + j).attr('name','icon' + i); 
    104         jQuery(this).find('#icon' + j).attr('id','icon' + i); 
     145                jQuery(this).find('#item-attr-title' + j).attr('name','item-attr-title' + i); 
     146                jQuery(this).find('#item-attr-title' + j).attr('id','item-attr-title' + i); 
    105147 
    106         jQuery(this).find('#position' + j).attr('name','position' + i); 
    107         jQuery(this).find('#position' + j).attr('id','position' + i); 
     148                jQuery(this).find('#item-target' + j).attr('name','item-target' + i); 
     149                jQuery(this).find('#item-target' + j).attr('id','item-target' + i); 
    108150 
    109         jQuery(this).find('#linktype' + j).attr('name','linktype' + i); 
    110         jQuery(this).find('#linktype' + j).attr('id','linktype' + i); 
     151                jQuery(this).find('#position' + j).attr('name', 'position' + i); 
     152                jQuery(this).find('#position' + j).attr('id', 'position' + i); 
    111153 
    112         jQuery(this).find('#anchortitle' + j).attr('name','anchortitle' + i); 
    113         jQuery(this).find('#anchortitle' + j).attr('id','anchortitle' + i); 
     154                jQuery(this).find('#linktype' + j).attr('name', 'linktype' + i); 
     155                jQuery(this).find('#linktype' + j).attr('id', 'linktype' + i); 
    114156 
    115         jQuery(this).find('#newwindow' + j).attr('name','newwindow' + i); 
    116         jQuery(this).find('#newwindow' + j).attr('id','newwindow' + i); 
    117  
    118         jQuery(this).find('dl > dt > span > #remove' + j).attr('value', i); 
    119         jQuery(this).find('dl > dt > span > #remove' + j).attr('onClick', 'removeitem(' + i + ')'); 
    120         jQuery(this).find('dl > dt > span > #remove' + j).attr('id','remove' + i); 
    121  
    122         jQuery('#li-count').attr('value',i); 
    123  
     157                jQuery('#li-count').attr( 'value', i ); 
    124158   }); 
     159}; 
    125160 
     161/** 
     162 * Adds the item to the menu 
     163 * 
     164 * @param string id - The menu item's id 
     165 * @param string additemtype - Page, Category, or Custom. 
     166 * @param string itemtext - menu text. 
     167 * @param string itemurl - url of the menu. 
     168 * @param int itemid - menu id. 
     169 * @param int itemparentid - default 0. 
     170 * @param string itemdescription - the description of the menu item. 
     171 */ 
     172function wp_add_item_to_menu( additemtype, itemtext, itemurl, itemid, itemparentid, itemdescription ) { 
     173        var inputvaluevarname = ''; 
     174        var inputvaluevarurl = ''; 
     175        var inputitemid = ''; 
     176        var inputparentid= ''; 
     177        var inputdescription = ''; 
     178        var randomnumber = wp_get_unique_menu_id(); 
    126179 
    127  
     180        inputvaluevarname = htmlentities(itemtext.toString()); 
     181        inputvaluevarurl = itemurl.toString(); 
     182        inputitemid = itemid; 
     183        inputparentid = itemparentid; 
     184        inputlinktype = 'custom'; 
     185        inputdescription = htmlentities(itemdescription.toString()); 
     186         
     187        // Adds the item in the queue 
     188        jQuery('#menu').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="item-title">' + inputvaluevarname + '</span><span class="item-controls"><span class="item-type">' + additemtype + '</span><a class="item-edit thickbox" id="edit' + randomnumber + '" value="' + randomnumber +'" onClick="wp_edit_menu_item('+ randomnumber +')" title="' + navMenuL10n.thickbox + '" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings">' + navMenuL10n.edit + '</a> | <a class="item-delete" id="delete' + randomnumber + '" value="' + randomnumber +'">Delete</a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="item-title' + randomnumber + '" id="item-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-url' + randomnumber + '" id="item-url' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="item-description' + randomnumber + '" id="item-description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="item-attr-title' + randomnumber + '" id="item-attr-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-target' + randomnumber + '" id="item-target' + randomnumber + '" value="0" /></li>'); 
     189         
     190        // Give some feedback to the user 
     191        jQuery( '#menu #menu-' + randomnumber + ' dt:first' ).animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }}); 
     192         
     193        // Enable drag-n-drop 
     194        wp_drag_and_drop(); 
     195         
     196        // Reload thickbox 
     197        tb_init('a.thickbox, area.thickbox, input.thickbox'); 
    128198}; 
    129199 
    130200/* 
    131  * Adds item from Page, Category, or Custom options menu 
    132  * @param string templatedir - directory of the add, edit, view images. 
     201 * Queues items in perperation for appendToList 
     202 * 
     203 * @param string id - The menu item's id 
    133204 * @param string additemtype - Page, Category, or Custom. 
    134205 * @param string itemtext - menu text. 
    135206 * @param string itemurl - url of the menu. 
     
    137208 * @param int itemparentid - default 0. 
    138209 * @param string itemdescription - the description of the menu item. 
    139210*/ 
    140 function appendToList(templatedir,additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription) 
    141 { 
     211function wp_update_queue( additemtype, itemtext, itemurl, itemid, itemparentid, itemdescription ) { 
    142212        var inputvaluevarname = ''; 
    143213        var inputvaluevarurl = ''; 
    144214        var inputitemid = ''; 
    145215        var inputparentid= ''; 
    146216        var inputdescription = ''; 
    147         var inputicon = ''; 
     217        var randomnumber = wp_get_unique_menu_id(); 
    148218 
    149         if (additemtype == navMenuL10n.custom) 
    150         { 
    151                 inputvaluevarname = document.getElementById('custom-menu-item-name').value; 
    152                 inputvaluevarurl = document.getElementById('custom-menu-item-url').value; 
    153                 inputitemid = ''; 
    154                 inputparentid = ''; 
    155                 inputlinktype = 'custom'; 
    156                 inputdescription = ''; 
    157         } 
    158         else if (additemtype == navMenuL10n.page) 
    159         { 
     219        if ( additemtype == navMenuL10n.page ) { 
    160220                inputvaluevarname = htmlentities(itemtext.toString()); 
    161221                inputvaluevarurl = itemurl.toString(); 
    162222                inputitemid = itemid.toString(); 
     
    164224                inputlinktype = 'page'; 
    165225                inputdescription = htmlentities(itemdescription.toString()); 
    166226 
    167         } 
    168         else if (additemtype == navMenuL10n.category) 
    169         { 
     227        } else if ( additemtype == navMenuL10n.category ) { 
    170228                inputvaluevarname = htmlentities(itemtext.toString()); 
    171229                inputvaluevarurl = itemurl.toString(); 
    172230                inputitemid = itemid.toString(); 
     
    174232                inputlinktype = 'category'; 
    175233                inputdescription = htmlentities(itemdescription.toString()); 
    176234        } 
    177         else 
    178         { 
    179                 inputvaluevarname = ''; 
    180                 inputvaluevarname = ''; 
    181                 inputitemid = ''; 
    182                 inputparentid = ''; 
    183                 inputlinktype = 'custom'; 
    184                 inputdescription = ''; 
    185         } 
     235                         
     236        // Adds or removes the item from the queue 
     237        if ( jQuery(menu_item_id = '#menu-item-' + inputitemid).attr('checked') ) { 
     238                 
     239                // Add menu item to the queue 
     240                jQuery('#queue').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="item-title">' + inputvaluevarname + '</span><span class="item-controls"><span class="item-type">' + additemtype + '</span><a class="item-edit thickbox" id="edit' + randomnumber + '" value="' + randomnumber +'" onClick="wp_edit_menu_item('+ randomnumber +')" title="' + navMenuL10n.thickbox + '" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings">' + navMenuL10n.edit + '</a> | <a class="item-delete" id="delete' + randomnumber + '" value="' + randomnumber +'">Delete</a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="item-title' + randomnumber + '" id="item-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-url' + randomnumber + '" id="item-url' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="item-description' + randomnumber + '" id="item-description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="item-attr-title' + randomnumber + '" id="item-attr-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-target' + randomnumber + '" id="item-target' + randomnumber + '" value="0" /></li>'); 
     241        } else { 
     242                 
     243                // Get the item in the queue 
     244                for ( var i = 0; i < jQuery('#queue li input[name^="postmenu"]').length; i++ ) { 
     245                        if ( itemid == jQuery('#queue li input[name^="postmenu"]')[i].value ) { 
     246                                var menu_queue_id = jQuery('#queue li input[name^="postmenu"]')[i].name.substring( 8, jQuery('#queue li input[name^="postmenu"]')[i].name.length ); 
     247                        }; 
     248                }; 
     249                 
     250                // Removes the item from the queue 
     251                jQuery('#queue li#menu-' + menu_queue_id).remove(); 
     252        }; 
     253}; 
    186254 
    187         var count=document.getElementById('custom-nav').getElementsByTagName('li').length + 1; 
     255/** 
     256 * Grabs items from the queue and adds them to the menu. 
     257 * 
     258 * @param string button - a reference of the button that was clicked 
     259 */ 
     260function wp_add_queued_items_to_menu( button ) {         
     261        // Grab items in queue 
     262        var items = jQuery('#queue').children(); 
     263         
     264        // Empty Queue 
     265        jQuery('#queue').empty(); 
     266                 
     267        // Appends HTML to the menu 
     268        jQuery('#menu').append( items ); 
    188269 
    189         var randomnumber = count; 
     270        // Give some feedback to the user 
     271        jQuery(items).each(function(){ 
     272                jQuery(this).find('dt').animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }}); 
     273        }); 
     274         
     275        // Uncheck the checkboxes in the list 
     276        jQuery(button).offsetParent().find('.list-container input').attr('checked', false); 
     277         
     278        wp_update_post_data(); 
     279         
     280        // Enable drag-n-drop 
     281        wp_drag_and_drop(); 
     282         
     283        // Reload thickbox 
     284        tb_init('a.thickbox, area.thickbox, input.thickbox'); 
     285}; 
    190286 
    191         var validatetest = 0; 
    192  
    193         try 
    194         { 
    195                 var test=document.getElementById("menu-" + randomnumber.toString()).value; 
    196         } 
    197         catch (err) 
    198         { 
    199                 validatetest = 1; 
    200         } 
    201  
    202         while (validatetest == 0) 
    203         { 
    204                 randomnumber = randomnumber + 1; 
    205  
    206                 try 
    207                 { 
    208                         var test2=document.getElementById("menu-" + randomnumber.toString()).value; 
    209                 } 
    210                 catch (err) 
    211                 { 
    212                         validatetest = 1; 
    213                 } 
    214         } 
    215  
    216         //Notification Message 
    217         jQuery('.maintitle').after('<div id="message" class="updated fade below-h2"><p>Menu Item added!</p></div>'); 
    218         jQuery('#message').animate({ opacity: 1.0 },2000).fadeOut(300, function(){ jQuery(this).remove();}); 
    219  
    220         //Appends HTML to the menu 
    221         jQuery('#custom-nav').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">' + inputvaluevarname + '</span><span class="controls"><span class="type">' + additemtype + '</span><a id="edit' + randomnumber + '" onclick="edititem(' + randomnumber + ')" value="' + randomnumber +'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="' + templatedir + '/wp-admin/images/ico-edit.png" /></a> <a id="remove' + randomnumber + '" onclick="removeitem(' + randomnumber + ')" value="' + randomnumber +'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="' + templatedir + '/wp-admin/images/ico-close.png" /></a> <a href="' + inputvaluevarurl + '" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="' + templatedir + '/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="title' + randomnumber + '" id="title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="linkurl' + randomnumber + '" id="linkurl' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="description' + randomnumber + '" id="description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="icon' + randomnumber + '" id="icon' + randomnumber + '" value="' + inputicon + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="anchortitle' + randomnumber + '" id="anchortitle' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="newwindow' + randomnumber + '" id="newwindow' + randomnumber + '" value="0" /></li>'); 
    222  
    223         //make menu item draggable 
    224         jQuery('#menu-' + randomnumber + '').draggable( 
    225         { 
     287/** 
     288 * Allow the items in the Menu to be dragged and dropped. 
     289 */ 
     290function wp_drag_and_drop() { 
     291        // make menu item draggable 
     292        jQuery('#menu li').draggable({ 
    226293                handle: ' > dl', 
    227294                opacity: .8, 
    228295                addClasses: false, 
     
    230297                zIndex: 100 
    231298        }); 
    232299 
    233         //make menu item droppable 
    234         jQuery('#menu-' + randomnumber + ' dl, #menu-' + randomnumber + ' .dropzone').droppable({ 
    235                 accept: '#' + randomnumber + ', #custom-nav li', 
     300        // make menu item droppable 
     301        jQuery('#menu li dl, #menu li .dropzone').droppable({ 
     302                accept: '#menu li', 
    236303                tolerance: 'pointer', 
    237                 drop: function(e, ui) 
    238                 { 
     304                drop: function(e, ui) { 
    239305                        var li = jQuery(this).parent(); 
    240306                        var child = !jQuery(this).hasClass('dropzone'); 
    241                         //Append UL to first child 
    242                         if (child && li.children('ul').length == 0) 
    243                         { 
    244                                 li.append('<ul/>'); 
     307                         
     308                        // Append UL to first child 
     309                        if ( child && li.children('ul').length == 0 ) { 
     310                                li.append( '<ul/>' ); 
    245311                        } 
    246                         //Make it draggable 
    247                         if (child) 
    248                         { 
    249                                 li.children('ul').append(ui.draggable); 
     312                        // Make it draggable 
     313                        if ( child ) { 
     314                                li.children('ul').append( ui.draggable ); 
     315                        } else { 
     316                                li.before( ui.draggable ); 
    250317                        } 
    251                         else 
    252                         { 
    253                                 li.before(ui.draggable); 
    254                         } 
    255318 
    256319                        li.find('dl,.dropzone').css({ backgroundColor: '', borderColor: '' }); 
    257320 
    258321                        var draggablevalue = ui.draggable.attr('value'); 
    259                 var droppablevalue = li.attr('value'); 
    260                 li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue); 
    261                 jQuery(this).parent().find("dt").removeAttr('style'); 
    262                 jQuery(this).parent().find("div:first").removeAttr('style'); 
     322                        var droppablevalue = li.attr('value'); 
     323                         
     324                        li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue); 
     325                        jQuery(this).parent().find("dt").removeAttr('style'); 
     326                        jQuery(this).parent().find("div:first").removeAttr('style'); 
    263327 
    264328                }, 
    265                 over: function() 
    266                 { 
    267                         //Add child 
    268                         if (jQuery(this).attr('class') == 'dropzone ui-droppable') 
    269                         { 
     329                over: function() { 
     330                        // Add child 
     331                        if ( jQuery(this).attr('class') == 'dropzone ui-droppable' ) { 
    270332                                jQuery(this).parent().find("div:first").css('background', 'none').css('height', '50px'); 
    271333                        } 
    272                         //Add above 
    273                         else if (jQuery(this).attr('class') == 'ui-droppable') 
    274                         { 
     334                        // Add above 
     335                        else if ( jQuery(this).attr('class') == 'ui-droppable' ) { 
    275336                                jQuery(this).parent().find("dt:first").css('background', '#d8d8d8'); 
     337                        } else { 
     338                                        // do nothing 
    276339                        } 
    277                         //do nothing 
    278                         else { 
    279  
    280                         } 
    281340                        var parentid = jQuery(this).parent().attr('id'); 
    282341 
    283342                }, 
    284                 out: function() 
    285                 { 
     343                out: function() { 
    286344                        jQuery(this).parent().find("dt").removeAttr('style'); 
    287345                        jQuery(this).parent().find("div:first").removeAttr('style'); 
    288346                        jQuery(this).filter('.dropzone').css({ borderColor: '' }); 
    289347                } 
    290         }); 
     348                } 
     349        ); 
     350} 
    291351 
    292         updatepostdata(); 
    293 }; 
    294  No newline at end of file 
     352/** 
     353 * Gets a unique number based on how many items are in the menu 
     354 */ 
     355function wp_get_unique_menu_id() { 
     356        var count = document.getElementById('menu').getElementsByTagName('li').length + 1; 
     357        var randomnumber = count; 
     358        var validatetest = 0; 
     359 
     360        try { 
     361                var test = document.getElementById( 'menu-' + randomnumber.toString() ).value; 
     362        } 
     363        catch ( err ) { 
     364                validatetest = 1; 
     365        } 
     366 
     367        while ( validatetest == 0 ) { 
     368                randomnumber = randomnumber + 1; 
     369                try { 
     370                        var test2 = document.getElementById( 'menu-' + randomnumber.toString() ).value; 
     371                } 
     372                catch ( err ) { 
     373                        validatetest = 1; 
     374                } 
     375        } 
     376        return randomnumber; 
     377} 
     378 No newline at end of file 
  • wp-admin/js/nav-menu-default-items.js

     
    1 jQuery(function($){$("#dialog-confirm").dialog({autoOpen:false,resizable:false,height:210,width:400,modal:true,buttons:{Save:function(){titletosave=$("#edittitle").attr("value");linktosave=$("#editlink").attr("value");anchortitletosave=$("#editanchortitle").attr("value");newwindowtosave=$("#editnewwindow").attr("value");desctosave=$("#editdescription").attr("value");$("#title"+$(this).dialog("option","itemID")).attr("value",titletosave);$("#linkurl"+$(this).dialog("option","itemID")).attr("value",linktosave);$("#anchortitle"+$(this).dialog("option","itemID")).attr("value",anchortitletosave);$("#newwindow"+$(this).dialog("option","itemID")).attr("value",newwindowtosave);$("#description"+$(this).dialog("option","itemID")).attr("value",desctosave);$("#menu-"+$(this).dialog("option","itemID")+" > dl > dt > span.title").text(titletosave);$("#view"+ +$(this).dialog("option","itemID")).attr("href",linktosave);$(this).dialog("close")},Cancel:function(){$(this).dialog("close")}}});$("#custom-nav li").prepend('<div class="dropzone"></div>');$("#custom-nav li").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});$("#custom-nav dl, #custom-nav .dropzone").droppable({accept:"#custom-nav li",tolerance:"pointer",drop:function(e,ui){var li=$(this).parent();var child=!$(this).hasClass("dropzone");if(child&&li.children("ul").length==0){li.append('<ul id="sub-menu" />')}if(child){li.children("ul").append(ui.draggable)}else{li.before(ui.draggable)}li.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var draggablevalue=ui.draggable.attr("value");var droppablevalue=li.attr("value");li.find("#menu-"+draggablevalue).find("#parent"+draggablevalue).val(droppablevalue);$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style")},over:function(){if($(this).attr("class")=="dropzone ui-droppable"){$(this).parent().find("div:first").css("background","none").css("height","50px")}else{if($(this).attr("class")=="ui-droppable"){$(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var parentid=$(this).parent().attr("id")},out:function(){$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style");$(this).filter(".dropzone").css({borderColor:""})},deactivate:function(){}});$("#save_top").click(function(){updatepostdata()});$("#save_bottom").click(function(){updatepostdata()})}); 
    2  No newline at end of file 
     1jQuery(document).ready(function($){$("#save_menu").click(function(){wp_update_post_data()});$(".quick-search").click(function(){$(this).attr("value","")});$(".quick-search-submit").click(function(){$(this).siblings(".quick-search").search()});$("#menu-container .item-edit").click(function(){wp_edit_menu_item($(this).attr("value"))});$("#menu-container .item-delete").live("click",function(){wp_remove_menu_item($(this).attr("value"))});$("#update-menu-item").click(function(){wp_update_menu_item();tb_remove();var id=$("#edit-item-id").val();$("#menu-"+id+" dt:first").animate({backgroundColor:"#FFFF33"},{duration:"normal",complete:function(){jQuery(this).css("backgroundColor","")}})});$("#cancel-save").click(function(){tb_remove()});$(".show-all").click(function(){$(this).offsetParent().find("#add-buttons-actions").attr("style","margin-bottom: 10px;");$(this).offsetParent().find(".list-wrap").css("display","block");$(this).siblings(".quick-search").attr("value","");$(this).offsetParent().find(".list-wrap dt").css("display","block");$(this).hide();$(this).siblings(".hide-all").show()});$(".hide-all").click(function(){$(this).offsetParent().find("#add-buttons-actions").attr("style","margin-bottom: 0px;");$(this).offsetParent().find(".list-wrap").css("display","none");$(this).siblings(".quick-search").attr("value","Search");$(this).offsetParent().find(".list-wrap dt").css("display","none");$(this).hide();$(this).siblings(".show-all").show()});$(".enqueue a").click(function(){wp_add_queued_items_to_menu(this)});$("#add-custom-link .add-to-menu a").click(function(){var link_url=$(this).offsetParent().find("#menu-item-url").val();var link_name=$(this).offsetParent().find("#menu-item-name").val();var links=$(this).offsetParent().find("#available-links input:checked");if(links){for(var i=0;i<links.length;i++){wp_add_item_to_menu("Custom",links[i].name,links[i].value,links[i].id.substring(5,links[i].id.length),0,"")}$(links).attr("checked",false)}if("http://"==link_url||"Menu Item"==link_name){return}params={action:"add-menu-link",link_url:link_url,link_name:link_name,};$.post(ajaxurl,params,function(response){if(null==response||"-1"==response){return false}params.link_id=response;wp_add_item_to_menu("Custom",params.link_name,params.link_url,params.link_id,0,"")},"json")});$("#menu li").prepend('<div class="dropzone"></div>');$("#menu li").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});$("#menu dl, #menu .dropzone").droppable({accept:"#menu li",tolerance:"pointer",drop:function(e,ui){var li=$(this).parent();var child=!$(this).hasClass("dropzone");if(child&&li.children("ul").length==0){li.append('<ul id="sub-menu" />')}if(child){li.children("ul").append(ui.draggable)}else{li.before(ui.draggable)}li.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var draggablevalue=ui.draggable.attr("value");var droppablevalue=li.attr("value");li.find("#menu-"+draggablevalue).find("#parent"+draggablevalue).val(droppablevalue);$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style")},over:function(){if("dropzone ui-droppable"==$(this).attr("class")){$(this).parent().find("dt:first").css("background","none").css("height","50px")}else{if($(this).attr("class")=="ui-droppable"){$(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var parentid=$(this).parent().attr("id")},out:function(){$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style");$(this).filter(".dropzone").css({borderColor:""})},deactivate:function(){}})}); 
     2 No newline at end of file 
  • wp-admin/nav-menus.php

     
    33 * WordPress Administration for Navigation Menus 
    44 * Interface functions 
    55 * 
    6  * @version 1.1.0 
     6 * @version 2.0.0 
    77 * 
    88 * @package WordPress 
    99 * @subpackage Administration 
     
    1111 
    1212require_once('admin.php'); 
    1313 
     14/* 
     15TODO 
     16        Add caps: edit_menus, delete_menus 
     17*/ 
    1418if ( ! current_user_can('switch_themes') ) 
    1519        wp_die( __( 'Cheatin&#8217; uh?' )); 
    1620 
     
    2428wp_enqueue_script( 'nav-menu-default-items' ); 
    2529wp_enqueue_script( 'jquery-autocomplete' ); 
    2630wp_enqueue_script( 'nav-menu-php-functions' ); 
     31add_thickbox(); 
    2732 
    2833require_once( 'admin-header.php' ); 
    2934require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' ); 
     
    3843$updated = false; 
    3944$advanced_option_descriptions = 'no'; 
    4045 
     46// Get all menu link items 
     47$available_links = new WP_Query( array( 'post_status' => 'any', 'post_type' => 'nav_menu_item', 'meta_key' => 'menu_type', 'meta_value' => 'custom' ) ); 
     48 
    4149// Check which menu is selected and if menu is in edit already 
    4250if ( isset( $_GET['edit-menu'] ) ) { 
    4351        $menu_selected_id = (int) $_GET['edit-menu']; 
     
    4856        $menu_selected_id = 0; 
    4957} 
    5058 
    51 if ( isset( $_POST[ 'delete-menu' ] ) && $menu_selected_id > 0 ) { 
    52         wp_delete_nav_menu( $menu_selected_id ); 
     59// Delete a menu 
     60if ( isset($_GET['delete-menu']) && $_GET['delete-menu'] > 0 ) { 
     61        // if ( ! current_user_can('delete_menus') ) 
     62        //      wp_die( __( 'Cheatin&#8217; uh?' )); 
     63         
     64        $menu_id = (int) $_GET['delete-menu']; 
     65        check_admin_referer( 'delete_menu-' . $menu_id ); 
     66         
     67        wp_delete_nav_menu( $menu_id ); 
     68        $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('Menu successfully deleted.') . '</p></div>'; 
    5369        $menu_selected_id = 0; 
    5470        $updated = true; 
    5571} 
    5672 
    5773// Default Menu to show 
    58 $custom_menus = wp_get_nav_menus(); 
     74$menus = wp_get_nav_menus(); 
    5975 
    60 if ( empty($custom_menus) && empty($_POST) ) { 
     76if ( empty($menus) && empty($_POST) ) { 
    6177        wp_create_default_nav_menu(); 
    62         $custom_menus = wp_get_nav_menus(); 
     78        $menus = wp_get_nav_menus(); 
    6379} 
    6480 
    65 if ( ! $menu_selected_id && ! empty( $custom_menus ) ) 
    66         $menu_selected_id = $custom_menus[0]->term_id; 
     81if ( ! $menu_selected_id && ! empty($menus) ) 
     82        $menu_selected_id = $menus[0]->term_id; 
    6783 
     84// Get the name of the current Menu  
    6885$menu_title = ''; 
     86$valid_menu = false; 
    6987if ( $menu_selected_id > 0 ) { 
    70         foreach ( $custom_menus as $menu ) { 
     88        foreach ( $menus as $menu ) { 
    7189                if ( $menu->term_id == $menu_selected_id ) { 
    7290                        $menu_title = $menu->name; 
     91                        $valid_menu = true; 
    7392                        break; 
    7493                } 
    7594        } 
     
    81100        $post_counter = 0; 
    82101 
    83102// Create a new menu. Menus are stored as terms in the 'menu' taxonomy. 
    84 if ( isset( $_POST['add-menu'] ) && ! $updated ) { 
    85         $insert_menu_name = $_POST['add-menu-name']; 
     103if ( isset( $_POST['create-menu'] ) && ! $updated ) { 
     104        $insert_menu_name = $_POST['create-menu-name']; 
    86105 
    87106        if ( $insert_menu_name ) { 
    88107                $menu = wp_create_nav_menu( $insert_menu_name ); 
    89108                if ( is_wp_error( $menu ) ) { 
    90109                        $messages_div = '<div id="message" class="error fade below-h2"><p>' . $menu->get_error_message() . '</p></div>'; 
    91110                } else { 
    92                         $custom_menus[$menu->term_id] = $menu; 
     111                        $menus[$menu->term_id] = $menu; 
    93112                        $menu_selected_id = $menu->term_id; 
    94113                        $menu_id_in_edit = $menu_selected_id; 
    95114                        $menu_title = $menu->name; 
     
    105124if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) { 
    106125        $menu_items = wp_get_nav_menu_items( $menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') ); 
    107126        $parent_menu_ids = array(); 
    108  
     127         
    109128        // Loop through all POST variables 
    110129        for ( $k = 1; $k <= $post_counter; $k++ ) { 
    111130                $db_id = isset( $_POST['dbid'.$k] )? $_POST['dbid'.$k] : 0; 
    112131                $object_id = isset( $_POST['postmenu'.$k] )? $_POST['postmenu'.$k] : 0; 
    113132                $parent_id = isset( $_POST['parent'.$k] )? $_POST['parent'.$k] : 0; 
    114                 $custom_title = isset( $_POST['title'.$k] )?  $_POST['title'.$k] : ''; 
    115                 $custom_linkurl = ( isset( $_POST['linkurl'.$k] ) && 'custom' == $_POST['linktype'.$k] ) ? $_POST['linkurl'.$k] : ''; 
    116                 $custom_description = isset( $_POST['description'.$k] )? $_POST['description'.$k] : ''; 
     133                $custom_title = isset( $_POST['item-title'.$k] )?  $_POST['item-title'.$k] : ''; 
     134                $custom_linkurl = ( isset( $_POST['item-url'.$k] ) && 'custom' == $_POST['linktype'.$k] ) ? $_POST['item-url'.$k] : ''; 
     135                $custom_description = isset( $_POST['item-description'.$k] )? $_POST['item-description'.$k] : ''; 
    117136                // doesn't seem to be used by UI 
    118137                $icon = isset( $_POST['icon'.$k] )? $_POST['icon'.$k] : 0; 
    119138                $position = isset( $_POST['position'.$k] )? $_POST['position'.$k] : 0; 
    120139                $linktype = isset( $_POST['linktype'.$k] )? $_POST['linktype'.$k] : 'custom'; 
    121                 $custom_anchor_title  = isset( $_POST['anchortitle'.$k] )? $_POST['anchortitle'.$k] : $custom_title; 
    122                 $new_window = isset( $_POST['newwindow'.$k] )? $_POST['newwindow'.$k] : 0; 
     140                $custom_anchor_title  = isset( $_POST['item-attr-title'.$k] )? $_POST['item-attr-title'.$k] : $custom_title; 
     141                $new_window = isset( $_POST['item-target'.$k] )? $_POST['item-target'.$k] : 0; 
    123142 
    124143                $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, 
    125144                        'ping_status' => 0, 'post_parent' => 0, 'menu_order' => $position, 
     
    128147 
    129148                if ( $parent_id > 0 && isset( $parent_menu_ids[$parent_id] ) ) 
    130149                        $post['post_parent'] = $parent_menu_ids[$parent_id]; 
    131  
     150                 
    132151                // New menu item 
    133152                if ( $db_id == 0 ) { 
    134153                        $db_id = wp_insert_post( $post ); 
     
    160179?> 
    161180<div class="wrap"> 
    162181        <?php screen_icon(); ?> 
    163         <h2><?php esc_html_e('Menus') ?></h2> 
     182        <h2><?php esc_html_e('Menus'); ?></h2> 
    164183        <?php echo $messages_div; ?> 
    165184        <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> 
    166185         
    167          
    168         <form onsubmit="updatepostdata()" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data"> 
    169                 <?php if ( ! empty( $custom_menus ) && count( $custom_menus ) > 1 ) : ?> 
     186        <form onsubmit="wp_update_post_data();" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data"> 
     187                <?php if ( !empty($menus) && count($menus) > 1 ) : ?> 
    170188                <ul class="subsubsub"> 
    171189                        <?php 
    172                                 foreach ( $custom_menus as $menu ) { 
    173                                         $sep = end( $custom_menus ) == $menu ? '' : ' | '; 
     190                                foreach ( $menus as $menu ) { 
     191                                        $sep = end( $menus ) == $menu ? '' : ' | '; 
    174192                                        if ( ( $menu_id_in_edit == $menu->term_id ) || ( $menu_selected_id == $menu->term_id ) ) { ?> 
    175193                                                <li><a href='nav-menus.php?edit-menu=<?php echo esc_attr($menu->term_id); ?>' class="current"><?php echo esc_html( $menu->name ); ?></a><?php echo $sep; ?></li> 
    176194                        <?php   } else { ?> 
     
    181199                </ul> 
    182200                <?php endif; ?> 
    183201                 
    184                 <div id="menus-container" class="metabox-holder has-right-sidebar"> 
     202                <div id="menu-management" class="metabox-holder has-right-sidebar"> 
     203                        <div id="post-body"> 
     204                                <div id="post-body-content"> 
     205                                        <div id="normal-sortables" class="meta-box-sortables ui-sortable"> 
     206                                        <?php if ( $valid_menu and ! empty( $menus ) ) : ?> 
     207                                                <div id="menu-container" class="postbox">        
     208                                                        <h3 class="hndle"><?php echo esc_html( $menu_title ); ?></h3> 
     209                                                        <div class="inside"> 
     210                                                                <input type="hidden" name="li-count" id="li-count" value="0" /> 
     211                                                                <input type="hidden" name="menu-id-in-edit" id="menu-id-in-edit" value="<?php echo esc_attr( $menu_selected_id ); ?>" /> 
     212 
     213                                                                <ul id="menu"> 
     214                                                                <?php 
     215                                                                if ( $menu_selected_id > 0 ) { 
     216                                                                        wp_print_nav_menu( array( 'type' => 'backend', 'name' => $menu_title, 'id' => $menu_selected_id ) ); 
     217                                                                } 
     218                                                                ?> 
     219                                                                </ul><!-- /#menu--> 
     220                                                                 
     221                                                                <div id="queue" class="hide"> 
     222                                                                </div><!--/#queue--> 
     223                                                        </div><!-- /.inside --> 
     224                                                <!-- /#nav-menu-canvas .postbox--> 
     225                                                </div> 
     226                                                <p> 
     227                                                        <script type="text/javascript"> 
     228                                                                wp_update_post_data(); 
     229                                                        </script> 
     230                                                        <a class="submitdelete deletion" href="<?php echo wp_nonce_url( admin_url('nav-menus.php?delete-menu=' . $menu_selected_id), 'delete_menu-' . $menu_selected_id ); ?>"><?php _e('Delete Menu'); ?></a> 
     231                                                        <input class="button-primary save" name="save_menu" type="submit" value="<?php esc_attr_e('Save All Changes'); ?>" /> 
     232                                                        <br class="clear" /> 
     233                                                </p> 
     234                                        <?php endif; ?> 
     235                                        </div><!-- /#normal-sortables--> 
     236                                </div><!-- /#post-body-content--> 
     237                        </div><!--- /#post-body --> 
    185238                        <div id="menu-settings-column" class="inner-sidebar"> 
    186239                                <div id="side-sortables" class="meta-box-sortables ui-sortable"> 
    187240                                         
    188                                         <div id="add-menu" class="postbox"> 
    189                                                 <div class="handlediv" title="Click to toggle"><br /></div> 
    190                                                 <h3 class="hndle"><?php esc_html_e('Add Menu'); ?></h3> 
     241                                        <div id="create-menu" class="postbox"> 
     242                                                <h3 class="hndle"><?php esc_html_e('Create Menu'); ?></h3> 
    191243                                                <div class="inside"> 
    192                                                         <span> 
    193                                                                 <input id="add-menu-name" name="add-menu-name" type="text" class="regular-text" value=""  /> 
    194                                                                 <input id="add-menu" type="submit" value="<?php esc_attr_e('Add Menu'); ?>" name="add-menu" class="button" /> 
    195                                                         </span> 
     244                                                        <p> 
     245                                                                <input type="text" name="create-menu-name" id="create-menu-name" class="regular-text" value=""  /> 
     246                                                                <input type="submit" name="create-menu" id="create-menu" class="button" value="<?php esc_attr_e('Create Menu'); ?>" /> 
     247                                                        </p> 
    196248                                                </div><!-- /.inside--> 
    197                                         </div><!--END #add-menu--> 
     249                                        </div><!--END #create-menu--> 
    198250                                         
    199251                                        <div id="add-custom-link" class="postbox"> 
    200                                                 <div class="handlediv" title="Click to toggle"><br /></div> 
    201252                                                <h3 class="hndle"><?php esc_html_e('Add a Custom Link'); ?></h3> 
    202                                                 <div class="inside"> 
     253                                                <div class="inside">                                                     
     254                                                        <p id="menu-item-url-wrap"> 
     255                                                                <label class="howto" for="menu-item-url"> 
     256                                                                        <span><?php _e('URL'); ?></span> 
     257                                                                        <input id="menu-item-url" name="menu-item-url" type="text" class="code" value="http://" /> 
     258                                                                </label> 
     259                                                        </p> 
     260                                                        <br class="clear" /> 
     261                                                        <p id="menu-item-name-wrap"> 
     262                                                                <label class="howto" for="custom-menu-item-name"> 
     263                                                                        <span><?php _e('Text'); ?></span> 
     264                                                                        <input id="menu-item-name" type="text" class="regular-text" value="<?php echo esc_attr( __('Menu Item') ); ?>" /> 
     265                                                                </label> 
     266                                                        </p> 
    203267                                                         
    204                                                         <p class="howto"><label for="custom-menu-item-url"><input id="custom-menu-item-url" type="text" class="widefat code" value="http://" /><?php _e('URL'); ?></label></p> 
    205                                                          
    206                                                         <?php $template_dir = get_bloginfo('url'); ?> 
    207                                                         <input type="hidden" id="template-dir" value="<?php echo esc_attr($template_dir); ?>" /> 
    208                                                          
    209                                                         <p class="howto"><label for="custom-menu-item-name"><input id="custom-menu-item-name" type="text" class="widefat regular-text" value="<?php echo esc_attr( __('Menu Item') ); ?>" /><?php _e('Text'); ?></label></p> 
    210                                                          
    211                                                         <label class="howto" for="custom_menu_item_description" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?>> 
    212                                                                 <input id="custom_menu_item_description" type="text" class="widefat regular-text" value="<?php esc_attr_e('A description'); ?>" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> onfocus="jQuery('#custom_menu_item_description').attr('value','');" /> 
    213                                                                 <?php _e('Description'); ?> 
    214                                                         </label> 
    215                                                          
    216                                                         <?php if ( 'no' != $advanced_option_descriptions ) { echo '<br />'; } ?> 
    217                                                          
    218                                                         <a class="addtomenu button" onclick="appendToList('<?php echo $template_dir; ?>','<?php echo esc_js( _x('Custom', 'menu nav item type') ); ?>','','','','0','');jQuery('#custom-menu-item-name').attr('value','<?php echo esc_js( __('Menu Item') ); ?>');jQuery('#custom_menu_item_description').attr('value','<?php echo esc_js( __('A description') ); ?>');"><?php _e('Add Link'); ?></a> 
     268                                        <?php if ( $available_links->posts ) : ?> 
     269                                                        <p class="button-controls"> 
     270                                                                <a class="show-all button"><?php _e('View All'); ?></a> 
     271                                                                <a class="hide-all button"><?php _e('Hide All'); ?></a> 
     272                                                        </p> 
     273                                                        <div id="available-links" class="list-wrap"> 
     274                                                                <div class="list-container"> 
     275                                                                        <ul class="list"> 
     276                                                                        <?php 
     277                                                                        foreach ( $available_links->posts as $link ) : 
     278                                                                        $url = get_post_meta( $link->ID, 'menu_link' ); 
     279                                                                        ?> 
     280                                                                                <li> 
     281                                                                                        <dl> 
     282                                                                                                <dt> 
     283                                                                                                        <label class="item-title"><input type="checkbox" id="link-<?php echo esc_attr($link->ID); ?>" name="<?php echo esc_attr($link->post_title); ?>" value="<?php echo esc_attr($url[0]); ?>" /><?php echo esc_html($link->post_title); ?></label> 
     284                                                                                                </dt> 
     285                                                                                        </dl> 
     286                                                                                </li> 
     287                                                                        <?php 
     288                                                                        endforeach; 
     289                                                                        ?> 
     290                                                                        </ul> 
     291                                                                </div><!-- /.list-container--> 
     292                                                        </div><!-- /#available-links--> 
     293                                        <?php endif; ?> 
     294                                                        <p class="add-to-menu"> 
     295                                                                <a class="button"><?php _e('Add to Menu'); ?></a> 
     296                                                        </p> 
    219297                                                        <br class="clear" /> 
    220298                                                </div><!-- /.inside--> 
    221299                                        </div><!-- /#add-custom-link--> 
    222300                                         
    223301                                        <div id="add-pages" class="postbox"> 
    224                                                 <div class="handlediv" title="Click to toggle"><br /></div> 
    225302                                                <h3 class="hndle"><?php esc_html_e('Add an Existing Page'); ?></h3> 
    226303                                                <div class="inside"> 
    227304                                                        <?php 
    228305                                                                $pages_args = array( 
    229                                                                         'child_of' => 0, 
    230                                                                         'sort_order' => 'ASC', 
    231                                                                         'sort_column' => 'post_title', 
    232                                                                         'hierarchical' => 1, 
    233                                                                         'exclude' => '', 
    234                                                                         'include' => '', 
    235                                                                         'meta_key' => '', 
    236                                                                         'meta_value' => '', 
    237                                                                         'authors' => '', 
    238                                                                         'parent' => -1, 
    239                                                                         'exclude_tree' => '', 
    240                                                                         'number' => '', 
    241                                                                         'offset' => 0 
     306                                                                        'child_of' => 0, 'sort_order' => 'ASC', 'sort_column' => 'post_title', 'hierarchical' => 1, 
     307                                                                        'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '', 'authors' => '', 
     308                                                                        'parent' => -1, 'exclude_tree' => '', 'number' => '', 'offset' => 0 
    242309                                                                ); 
    243310                                                                $page_name = ''; 
    244                                                                 $pages_array = get_pages($pages_args); 
     311                                                                $pages_array = get_pages( $pages_args ); 
    245312                                                                if ( $pages_array ) { 
    246313                                                                        foreach ( $pages_array as $post ) { 
    247314                                                                                $page_name .= $post->post_title . '|'; 
     
    252319                                                        ?> 
    253320                                                        <script type="text/javascript" charset="<?php bloginfo('charset'); ?>"> 
    254321                                                                jQuery(document).ready(function(){ 
    255                                                                         var posts = "<?php echo esc_js( $page_name ); ?>".split("|"); 
    256                                                                         jQuery("#page-search").autocomplete(posts); 
    257                                                                         jQuery("#page-search").result(function(event, data, formatted) { 
    258                                                                                 jQuery('#existing-pages').css('display','block'); 
    259                                                                                 jQuery("#existing-pages dt:contains('" + data + "')").css("display", "block"); 
    260                                                                                 jQuery('#show-pages').hide(); 
    261                                                                                 jQuery('#hide-pages').show(); 
     322                                                                        var posts = "<?php echo esc_js( $page_name ); ?>".split('|'); 
     323                                                                        jQuery('#add-pages .quick-search').autocomplete(posts); 
     324                                                                         
     325                                                                         
     326                                                                        jQuery('#add-pages .quick-search').result(function(event, data, formatted) { 
     327                                                                                jQuery('#add-pages .list-wrap').css('display','block'); 
     328                                                                                jQuery("#add-pages .list-wrap dt:contains('" + data + "')").css('display','block'); 
     329                                                                                jQuery('#add-pages .show-all').hide(); 
     330                                                                                jQuery('#add-pages .hide-all').show(); 
    262331                                                                        }); 
    263                                                                         jQuery('#existing-pages').css('display','none'); 
    264332                                                                }); 
    265333                                                        </script> 
    266                                                         <input type="text" onfocus="jQuery('#page-search').attr('value','');" id="page-search" class="regular-text" value="<?php esc_attr_e('Search Pages'); ?>" /> 
    267  
    268                                                         <a id="show-pages" style="cursor:pointer;" onclick="jQuery('#existing-pages').css('display','block');jQuery('#page-search').attr('value','');jQuery('#existing-pages dt').css('display','block');jQuery('#show-pages').hide();jQuery('#hide-pages').show();"><?php _e('View All'); ?></a> 
    269                                                         <a id="hide-pages" style="cursor:pointer;" onclick="jQuery('#existing-pages').css('display','none');jQuery('#page-search').attr('value','Search Pages');jQuery('#existing-pages dt').css('display','none');jQuery('#show-pages').show();jQuery('#hide-pages').hide();"><?php _e('Hide All'); ?></a> 
    270  
    271                                                         <script type="text/javascript"> 
    272                                                                 jQuery('#hide-pages').hide(); 
    273                                                         </script> 
     334                                                        <p> 
     335                                                                <input type="text" class="quick-search regular-text" value="" /> 
     336                                                                <a class="quick-search-submit button"><?php _e('Search'); ?></a> 
     337                                                        </p> 
    274338                                                         
     339                                                        <p class="button-controls"> 
     340                                                                <a class="show-all button"><?php _e('View All'); ?></a> 
     341                                                                <a class="hide-all button"><?php _e('Hide All'); ?></a> 
     342                                                        </p> 
    275343                                                         
    276                                                         <div id="existing-pages" class="list-container"> 
    277                                                                 <ul class="list"> 
    278                                                                 <?php $items_counter = wp_nav_menu_get_pages( 0,'default' ); ?> 
    279                                                                 </ul> 
    280                                                         </div><!-- /.list-container--> 
     344                                                        <div id="existing-pages" class="list-wrap"> 
     345                                                                <div class="list-container"> 
     346                                                                        <ul class="list"> 
     347                                                                        <?php $items_counter = wp_nav_menu_get_pages( 0, 'default' ); ?> 
     348                                                                        </ul> 
     349                                                                </div><!-- /.list-container--> 
     350                                                        </div><!-- /#existing-pages--> 
     351                                                        <p class="add-to-menu enqueue"> 
     352                                                                <a class="button"><?php _e('Add to Menu'); ?></a> 
     353                                                        </p> 
    281354                                                        <br class="clear" /> 
    282355                                                </div><!-- /.inside--> 
    283356                                        </div><!--END #add-pages--> 
    284357                                         
    285358                                        <div id="add-categories" class="postbox"> 
    286                                                 <div class="handlediv" title="Click to toggle"><br /></div> 
    287359                                                <h3 class="hndle"><?php esc_html_e('Add an Existing Category'); ?></h3> 
    288360                                                <div class="inside"> 
    289361                                                        <?php 
     
    311383                                                        ?> 
    312384                                                        <script type="text/javascript" charset="<?php bloginfo('charset'); ?>"> 
    313385                                                                jQuery(document).ready(function(){ 
    314                                                                         var categories = "<?php echo esc_js($cat_name); ?>".split("|"); 
    315                                                                         jQuery("#cat-search").autocomplete(categories); 
    316                                                                         jQuery("#cat-search").result(function(event, data, formatted) { 
    317                                                                                 jQuery('#existing-categories').css('display','block'); 
    318                                                                                 jQuery("#existing-categories dt:contains('" + data + "')").css("display", "block"); 
    319                                                                                 jQuery('#show-cats').hide(); 
    320                                                                                 jQuery('#hide-cats').show(); 
     386                                                                        var categories = "<?php echo esc_js($cat_name); ?>".split('|'); 
     387                                                                        jQuery('#add-categories .quick-search').autocomplete(categories); 
     388                                                                        jQuery('#add-categories .quick-search').result(function(event, data, formatted) { 
     389                                                                                jQuery('#add-categories .list-wrap').css('display','block'); 
     390                                                                                jQuery("#add-categories .list-wrap dt:contains('" + data + "')").css('display','block'); 
     391                                                                                jQuery('#add-categories .show-all').hide(); 
     392                                                                                jQuery('#add-categories .hide-all').show(); 
    321393                                                                        }); 
    322                                                                         jQuery('#existing-categories').css('display','none'); 
    323394                                                                }); 
    324395                                                        </script> 
    325  
    326                                                         <input type="text" onfocus="jQuery('#cat-search').attr('value','');" id="cat-search" class="regular-text" value="<?php esc_attr_e('Search Categories'); ?>" /> 
    327  
    328                                                         <a id="show-cats" style="cursor:pointer;" onclick="jQuery('#existing-categories').css('display','block');jQuery('#cat-search').attr('value','');jQuery('#existing-categories dt').css('display','block');jQuery('#show-cats').hide();jQuery('#hide-cats').show();"><?php _e('View All'); ?></a> 
    329                                                         <a id="hide-cats" style="cursor:pointer;" onclick="jQuery('#existing-categories').css('display','none');jQuery('#cat-search').attr('value','Search Categories');jQuery('#existing-categories dt').css('display','none');jQuery('#show-cats').show();jQuery('#hide-cats').hide();"><?php _e('Hide All'); ?></a> 
    330  
    331                                                         <script type="text/javascript"> 
    332                                                                 jQuery('#hide-cats').hide(); 
    333                                                         </script> 
    334  
    335                                                         <div id="existing-categories" class="list-container"> 
    336                                                                 <ul class="list"> 
    337                                                                         <?php $items_counter = wp_nav_menu_get_categories( $items_counter, 'default' ); ?> 
    338                                                                 </ul> 
    339                                                         </div><!-- /.list-container--> 
     396                                                        <p> 
     397                                                                <input type="text" class="quick-search regular-text" value="" /> 
     398                                                                <a class="quick-search-submit button"><?php _e('Search'); ?></a> 
     399                                                        </p> 
     400                                                         
     401                                                        <p class="button-controls"> 
     402                                                                <a class="show-all button"><?php _e('View All'); ?></a> 
     403                                                                <a class="hide-all button"><?php _e('Hide All'); ?></a> 
     404                                                        </p> 
     405                                                         
     406                                                        <div id="existing-categories" class="list-wrap"> 
     407                                                                <div class="list-container"> 
     408                                                                        <ul class="list"> 
     409                                                                                <?php $items_counter = wp_nav_menu_get_categories( $items_counter, 'default' ); ?> 
     410                                                                        </ul> 
     411                                                                </div><!-- /.list-container--> 
     412                                                        </div><!-- /#existing-categories--> 
     413                                                        <p class="add-to-menu enqueue"> 
     414                                                                <a class="button"><?php _e('Add to Menu'); ?></a> 
     415                                                        </p> 
    340416                                                        <br class="clear" /> 
    341417                                                </div><!-- /.inside--> 
    342418                                        </div><!--END #add-categories--> 
    343419                                </div><!-- /#side-sortables--> 
    344420                        </div><!-- /#menu-settings-column --> 
    345  
    346                         <div id="post-body"> 
    347                                 <div id="post-body-content"> 
    348                                         <div id="normal-sortables" class="meta-box-sortables ui-sortable"> 
    349                                          
    350                                         <?php if ( ! empty( $custom_menus ) ) : ?> 
    351                                                 <div id="nav-container" class="postbox">         
    352                                                         <h3 class="hndle"><?php echo esc_html( $menu_title ); ?></h3> 
    353                                                         <div class="inside"> 
    354                                                                 <input type="hidden" name="li-count" id="li-count" value="0" /> 
    355                                                                 <input type="hidden" name="menu-id-in-edit" id="menu-id-in-edit" value="<?php echo esc_attr( $menu_selected_id ); ?>" /> 
    356  
    357                                                                 <ul id="custom-nav"> 
    358                                                                 <?php 
    359                                                                 if ( $menu_selected_id > 0 ) { 
    360                                                                         wp_print_nav_menu( array( 'type' => 'backend', 'name' => $menu_title, 'id' => $menu_selected_id ) ); 
    361                                                                 } 
    362                                                                 ?> 
    363                                                                 </ul><!-- /#custom-nav--> 
    364                                                         </div><!-- /.inside --> 
    365                                                 <!-- /#nav-menu-canvas .postbox--> 
    366                                                 </div> 
    367                                                 <p class="submit"> 
    368                                                         <script type="text/javascript"> 
    369                                                                 updatepostdata(); 
    370                                                         </script> 
    371                                                         <input id="save_bottom" name="save_bottom" type="submit" value="<?php esc_attr_e('Save All Changes'); ?>" /> 
    372                                                         <input id="delete-menu" name="delete-menu" type="submit" value="<?php esc_attr_e('Delete This Menu'); ?>" /> 
    373                                                 </p> 
    374                                                  
    375                                         <?php else : ?> 
    376                                                 <div class="updated"><p><?php _e( 'Add a menu to start editing!' ); ?></p></div> 
    377                                         <?php endif; ?> 
    378                                         </div><!-- /#normal-sortables--> 
    379                                 </div><!-- /#post-body-content--> 
    380                         </div><!--- /#post-body --> 
    381421                        <br class="clear" /> 
    382422                </div><!-- /.metabox-holder has-right-sidebar--> 
    383423        </form> 
    384424</div><!-- /.wrap--> 
    385425 
    386 <div id="dialog-confirm" style="display:none;" title="<?php esc_attr_e('Edit Menu Item'); ?>"> 
    387         <span id="edittitle-wrap"><input id="edittitle" type="text" name="edittitle" value="" /><label class="editlabel" for="edittitle"><?php _e('Menu Title'); ?></label><br /></span> 
    388         <span id="editlink-wrap"><input id="editlink" type="text" name="editlink" value="" /><label class="editlabel" for="editlink"><?php _e('URL'); ?></label><br /></span> 
    389         <span id="editanchortitle-wrap"><input id="editanchortitle" type="text" name="editanchortitle" value="" /><label class="editlabel" for="editanchortitle"><?php _e('Link Title'); ?></label><br /></span> 
    390         <span id="editnewwindow-wrap"> 
    391         <select id="editnewwindow" name="editnewwindow"> 
    392                 <option value="1"><?php _e('Yes'); ?></option> 
    393                 <option value="0"><?php _e('No'); ?></option> 
    394         </select><label class="editlabel" for="editnewwindow"><?php _e('Open Link in a new window'); ?></label> 
    395         </span> 
    396         <span id="editdescription-wrap"> 
    397         <input id="editdescription" type="text" name="editdescription" value="" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> /><label class="editlabel" for="editdescription" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> ><?php _e('Description'); ?></label><br /></span> 
    398 </div> 
     426<div id="menu-item-settings"> 
     427        <p class="description"> 
     428                <label for="edit-item-title"> 
     429                        <?php _e( 'Menu Title' ); ?><br /> 
     430                        <input type="text" id="edit-item-title" class="widefat" name="edit-item-title" value="" tabindex="1" /> 
     431                </label> 
     432        </p> 
     433        <p class="description"> 
     434                <label for="edit-item-url"> 
     435                        <?php _e( 'URL' ); ?><br /> 
     436                        <input type="text" id="edit-item-url" class="widefat code" name="edit-item-url" value="" tabindex="2" /> 
     437                </label> 
     438        </p> 
     439        <p class="description"> 
     440                <label for="edit-item-attr-title"> 
     441                        <?php _e( 'Attribute Title' ); ?><br /> 
     442                        <input type="text" id="edit-item-attr-title" class="widefat" name="edit-item-attr-title" value="" tabindex="3" /> 
     443                </label> 
     444        </p> 
     445        <p class="description"> 
     446                <label for="edit-item-target"> 
     447                        <?php _e( 'Open Link in a new window' ); ?><br /> 
     448                        <select id="edit-item-target" class="widefat" name="edit-item-target"> 
     449                                <option value="1">Yes</option> 
     450                                <option value="0">No</option> 
     451                        </select> 
     452                </label> 
     453        </p> 
     454        <p class="description"> 
     455                <label for="edit-item-description"> 
     456                        <?php _e( 'Description' ); ?><br /> 
     457                        <textarea id="edit-item-description" class="widefat" rows="3" name="edit-item-description" tabindex="4" /></textarea> 
     458                </label> 
     459        </p> 
     460        <p> 
     461                <a id="cancel-save" class="submitdelete deletion"><?php _e('Cancel'); ?></a> 
     462                <a id="update-menu-item" class="save button-primary" tabindex="5"><?php _e('Save Changes'); ?></a> 
     463        </p> 
     464        <input type="hidden" id="edit-item-id" name="edit-item-id" value="" /> 
     465</div><!-- /#menu-item-settings--> 
    399466 
    400 <?php 
    401  
    402 include( 'admin-footer.php' ); 
     467<?php include( 'admin-footer.php' ); ?> 
     468 No newline at end of file 
  • wp-admin/css/nav-menu.css

     
    1 .maintitle{margin:0 0 20px 0!important;}.logo{vertical-align:middle;margin:0 10px 0 0;}h2.heading{margin:32px 0 10px 0;}.checkboxes{float:right;margin:10px 12px 0 0;}#menus-container{clear:both;}#nav-container .inside{padding:0 10px 10px;}#menus-container .submit{padding:0;}#menu-settings-column .inside{padding:10px;}#custom-nav ul{width:100%;}#custom-nav li{margin:0;}.ui-draggable-dragging{width:500px;}#custom-nav li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}#custom-nav li dl dt:hover{cursor:move;}#custom-nav li dl dt .controls{position:absolute;right:15px;top:-1px;}#custom-nav li dl dt img{vertical-align:middle;}#custom-nav li .title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#custom-nav li ul li{margin-left:20px;opacity:.7;}#custom-nav li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li ul li{opacity:.95;}#add-custom-link .howto{font-size:11px;}#add-custom-link .widefat{width:85%;margin-right:5px;}.list-container{max-height:203px;overflow-y:auto;padding-left:2px;padding-right:5px;}.list{zoom:1;}.list li{margin:0;}.list dt{display:none;margin:0;border-bottom:1px solid #e3e3e3;overflow:hidden;}.list dt{background:url(../images/ico-add.png) no-repeat right;}.list li .title{cursor:pointer;display:block;width:95%;padding:5px 0;}.list li .title{background:url(../images/ico-arrow.png) no-repeat 4px 13px;background-position:center left;padding-left:5%;}.list li ul li .title{margin-left:14px;}.list li ul li ul li .title{margin-left:28px;}.list li ul li ul li ul li .title{margin-left:42px;}.list li ul li ul li ul li ul li .title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:112px;}img.remove,img.edit{cursor:pointer;margin:0 5px 0 0;}.dropzone{height:7px;margin:3px 0 3px 0;}.hide{display:none;}.type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}#menu_select{width:170px;}#dialog-confirm label{padding-left:10px;}.ui-dialog{background:#fff;border:1px solid #555;-moz-box-shadow:0 4px 30px #000;}.ui-dialog-titlebar{color:#CFCFCF;font-family:"Lucida Grande",Verdana,Arial,sans-serif;padding:6px 10px 6px;background-color:#222!important;border:none!important;-moz-border-radius:none!important;}#dialog-confirm{height:168px!important;padding:20px 10px 10px;}#dialog-confirm input{margin:0 0 15px 0;width:280px;}#dialog-confirm select{margin:0 0 15px 0;}.ui-dialog-buttonpane{padding:10px;}.ui-dialog-buttonpane button{margin:0 10px 0 0;background:#F2F2F2;text-shadow:0 1px 0 #FFF;border-color:#BBB;color:#464646;-moz-border-radius-bottomleft:11px;-moz-border-radius-bottomright:11px;-moz-border-radius-topleft:11px;-moz-border-radius-topright:11px;border-style:solid;border-width:1px;cursor:pointer;font-size:11px!important;line-height:14px;padding:2px 8px;text-decoration:none;}.ui-dialog-buttonpane button:hover{color:#000;border-color:#666;}.ui-icon{display:none;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);-moz-border-radius:8px;-webkit-border-radius:8px;} 
    2  No newline at end of file 
     1#menu-management{clear:both;}#menu-management .inside{padding:0 10px;}#menu-container .submit{margin:0 0 10px;padding:0;}.submitdelete{color:#f00;text-decoration:underline;font-size:11px;float:left;margin-top:5px;}.submitdelete:hover{background-color:#F00;color:#fff;}.save{float:right;}.button-controls{float:left;}.add-to-menu{float:right;}#create-menu-name{width:159px;}#available-links{margin:15px 0 0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:11px;}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px;}#menu-item-url,#menu-item-name{float:right;width:220px;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;}.list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;border:1px solid #DFDFDF;-moz-border-radius:4px;}.postbox p.submit{margin-bottom:0;}.list li{margin:0;}.list dt{display:none;margin:0;overflow:hidden;margin-bottom:5px;}.list li .item-title{cursor:pointer;display:block;}.list li .item-title input{margin-right:3px;margin-top:-3px;}.list li ul li .item-title{margin-left:14px;}.list li ul li ul li .item-title{margin-left:28px;}.list li ul li ul li ul li .item-title{margin-left:42px;}.list li ul li ul li ul li ul li .item-title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .item-title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .item-title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:112px;}#menu-container .inside{padding-bottom:10px;}#menu ul{width:100%;}#menu li{margin:0;}#menu li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}#menu li dl dt:hover{cursor:move;}#menu li .item-title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#menu li ul li{margin-left:20px;opacity:.7;}#menu li ul li ul li{opacity:.9;}#menu li ul li ul li ul li{opacity:.9;}#menu li ul li ul li ul li ul li{opacity:.95;}.dropzone{height:7px;margin:3px 0 3px 0;}.ui-draggable-dragging{width:600px;}.item-type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}.item-controls{font-size:11px;position:absolute;right:15px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-delete:hover{color:#f00;}#menu-item-settings{display:none;}#cancel-save{cursor:pointer;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.hide{display:none;} 
     2 No newline at end of file 
  • wp-admin/css/nav-menu.dev.css

     
    22 * WordPress Administration Custom Navigation 
    33 * Interface CSS 
    44 * 
    5  * @version 1.1.0 
     5 * @version 2.0.0 
    66 * 
    77 * @package WordPress 
    88 * @subpackage Administration 
    99 */ 
    1010 
    11 .maintitle  { margin: 0 0 20px 0!important;} 
    12 .logo  { vertical-align: middle; margin: 0 10px 0 0; } 
    13 h2.heading  { margin: 32px 0 10px 0; } 
    14 .checkboxes  { float: right; margin: 10px 12px 0 0; } 
     11/* Menu Container */ 
     12#menu-management { clear: both; } 
     13#menu-management .inside { padding: 0 10px; } 
    1514 
    16 #menus-container { clear: both; } 
    17 #nav-container .inside { padding: 0px 10px 10px; } 
    18 #menus-container .submit { padding: 0px; } 
    19 #menu-settings-column .inside { padding: 10px; } 
     15/* Button Primary Actions */ 
     16#menu-container .submit { margin: 0px 0px 10px; padding: 0px; } 
     17.submitdelete { color: #ff0000; text-decoration: underline; font-size: 11px; float: left; margin-top: 5px; } 
     18.submitdelete:hover { background-color: #FF0000; color: #fff; } 
     19.save { float: right; } 
    2020 
    21 #custom-nav ul  { width: 100%; } 
    22 #custom-nav li { margin: 0; } 
    23 .ui-draggable-dragging  { width: 500px; } 
    24 #custom-nav li dl dt { -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-top-left-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; border: 1px solid #E6E6E6;position: relative; padding-left:10px; background-color: #f1f1f1; height: 35px; line-height: 35px; } 
    25 #custom-nav li dl dt:hover  { cursor: move; } 
    26 #custom-nav li dl dt .controls  { position: absolute; right: 15px; top: -1px; } 
    27 #custom-nav li dl dt img { vertical-align: middle; } 
    28 #custom-nav li dl dt a {} 
    29 #custom-nav li .title { background:url(../images/ico-arrow.png) no-repeat 4px 5px; background-position: center left; padding-left: 15px; } 
    30 #custom-nav li ul li { margin-left: 20px; opacity: .7;} 
    31 #custom-nav li ul li ul li  { opacity: .9;} 
    32 #custom-nav li ul li ul li ul li   { opacity: .9;} 
    33 #custom-nav li ul li ul li ul li ul li   { opacity: .95; } 
     21/* Button Secondary Actions */ 
     22.button-controls { float: left; } 
     23.add-to-menu { float: right; } 
    3424 
     25/* CSS for switching the columns *//* 
     26#menu-settings-column { clear: none; float: left; } 
     27#menu-management #post-body { float: right; margin-left: -340px; margin-right: 0px; } 
     28#menu-management #post-body-content { margin-left: 300px; margin-right: 0px; } 
     29*/ 
     30 
     31/* Create Menu */ 
     32#create-menu-name { width: 159px; } 
     33 
     34/* Custom Links */ 
     35#available-links { margin: 15px 0px 0px; } 
     36#available-links dt { display: block; } 
    3537#add-custom-link .howto { font-size: 11px; } 
    36 #add-custom-link .widefat { width: 85%; margin-right: 5px; } 
     38#add-custom-link label span { display: block; float: left; margin-top: 5px; padding-right: 5px; } 
     39#menu-item-url, #menu-item-name { float: right; width: 220px; } 
    3740 
    38 .list-container { max-height: 203px; overflow-y: auto; padding-left: 2px; padding-right: 5px; } 
     41/* Pages/Categories */ 
     42.show-all, .hide-all { cursor: pointer; } 
     43.hide-all { display: none; } 
    3944 
    40 .list { zoom: 1; } 
     45.quick-search { width: 190px; } 
     46.list-wrap { display: none; clear: both; } 
     47.list-container { max-height: 200px; overflow-y: auto; padding: 10px 10px 5px; border: 1px solid #DFDFDF; -moz-border-radius: 4px; } 
     48.postbox p.submit { margin-bottom: 0; } 
     49 
     50/* Listings */ 
    4151.list li { margin: 0; } 
    42 .list dt { display: none; margin: 0; border-bottom: 1px solid #e3e3e3; overflow: hidden; } 
    43 .list dt { background: url(../images/ico-add.png) no-repeat right; } 
     52.list dt { display: none; margin: 0; overflow: hidden; margin-bottom: 5px; } 
    4453 
    45 .list li .title { cursor: pointer; display: block; width: 95%; padding: 5px 0px; } 
    46 .list li .title { background: url(../images/ico-arrow.png) no-repeat 4px 13px; background-position: center left; padding-left: 5%; } 
     54.list li .item-title { cursor: pointer; display: block; } 
     55.list li .item-title input { margin-right: 3px; margin-top: -3px; } 
    4756 
    48 /* Visually shows the menu item hierarchy. */ 
    49 .list li ul li .title  { margin-left: 14px; } 
    50 .list li ul li ul li .title  { margin-left: 28px; } 
    51 .list li ul li ul li ul li .title  { margin-left: 42px; } 
    52 .list li ul li ul li ul li ul li .title  { margin-left: 56px; } 
    53 .list li ul li ul li ul li ul li ul li .title  { margin-left: 70px; } 
    54 .list li ul li ul li ul li ul li ul li ul li .title  { margin-left: 84px; } 
    55 .list li ul li ul li ul li ul li ul li ul li ul li .title  { margin-left: 98px; } 
    56 .list li ul li ul li ul li ul li ul li ul li ul li ul li .title  { margin-left: 112px; } 
     57.list li ul li .item-title  { margin-left: 14px; } 
     58.list li ul li ul li .item-title  { margin-left: 28px; } 
     59.list li ul li ul li ul li .item-title  { margin-left: 42px; } 
     60.list li ul li ul li ul li ul li .item-title  { margin-left: 56px; } 
     61.list li ul li ul li ul li ul li ul li .item-title  { margin-left: 70px; } 
     62.list li ul li ul li ul li ul li ul li ul li .item-title  { margin-left: 84px; } 
     63.list li ul li ul li ul li ul li ul li ul li ul li .item-title  { margin-left: 98px; } 
     64.list li ul li ul li ul li ul li ul li ul li ul li ul li .item-title  { margin-left: 112px; } 
    5765 
    58 img.remove, img.edit { cursor: pointer; margin: 0 5px 0 0; } 
     66/* Menu */ 
     67#menu-container .inside { padding-bottom: 10px; } 
     68 
     69#menu ul { width: 100%; } 
     70#menu li { margin: 0; } 
     71#menu li dl dt { -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-top-left-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; border: 1px solid #E6E6E6;position: relative; padding-left:10px; background-color: #f1f1f1; height: 35px; line-height: 35px; } 
     72#menu li dl dt:hover { cursor: move; } 
     73 
     74#menu li .item-title { background: url(../images/ico-arrow.png) no-repeat 4px 5px; background-position: center left; padding-left: 15px; } 
     75#menu li ul li { margin-left: 20px; opacity: .7;} 
     76#menu li ul li ul li { opacity: .9;} 
     77#menu li ul li ul li ul li { opacity: .9;} 
     78#menu li ul li ul li ul li ul li { opacity: .95; } 
     79 
     80/* Drag and Drop */ 
    5981.dropzone { height: 7px; margin: 3px 0 3px 0; } 
    60 #custom-nav li dl { } 
    61 .hide { display: none; } 
    62 .type { text-transform: uppercase; font-size: 11px; color: #999999; padding-right: 10px; } 
     82.ui-draggable-dragging  { width: 600px; } 
    6383 
    64 #menu_select { width: 170px; } 
    65 #dialog-confirm label { padding-left: 10px; } 
     84/* Menu Controls */ 
     85.item-type { text-transform: uppercase; font-size: 11px; color: #999999; padding-right: 10px; } 
     86.item-controls { font-size: 11px; position: absolute; right: 15px; top: -1px; } 
     87.item-controls a { text-decoration: none; } 
     88.item-controls a:hover { cursor: pointer; } 
     89.item-controls .item-delete:hover { color: #ff0000; } 
    6690 
    67 /* EDIT LINK BOX */ 
    68 .ui-dialog { background: #fff; border: 1px solid #555555; -moz-box-shadow:0 4px 30px #000000; } 
    69 .ui-dialog-titlebar { color: #CFCFCF; font-family: "Lucida Grande", Verdana, Arial, sans-serif; padding: 6px 10px 6px; background-color: #222222 !important; border: none !important; -moz-border-radius: none !important; } 
    70 #dialog-confirm { height: 168px !important; padding: 20px 10px 10px; } 
    71 #dialog-confirm input { margin: 0 0 15px 0; width: 280px; } 
    72 #dialog-confirm select { margin: 0 0 15px 0; } 
    73 .ui-dialog-buttonpane { padding: 10px; } 
    74 .ui-dialog-buttonpane button  { margin: 0 10px 0 0; background: #F2F2F2; text-shadow: 0 1px 0 #FFFFFF; border-color: #BBBBBB; color: #464646; -moz-border-radius-bottomleft: 11px; -moz-border-radius-bottomright: 11px; -moz-border-radius-topleft: 11px; -moz-border-radius-topright: 11px; border-style: solid; border-width: 1px; cursor: pointer; font-size: 11px !important; line-height: 14px; padding: 2px 8px; text-decoration: none; } 
    75 .ui-dialog-buttonpane button:hover { color: #000; border-color: #666; } 
    76 .ui-icon  { display: none; } 
     91/* Thickbox */ 
     92#menu-item-settings { display: none; } 
     93#cancel-save { cursor: pointer; } 
     94#cancel-save:hover { color: #fff !important; } 
     95#update-menu-item { color: #fff !important; } 
     96#update-menu-item:hover, 
     97#update-menu-item:active, 
     98#update-menu-item:focus { color: #eaf2fa !important; border-color: #13455b !important; } 
    7799 
    78 /* Overlays */ 
    79 .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 
    80 .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60; filter:Alpha(Opacity=60); } 
    81 .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60; filter: Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; } 
    82  No newline at end of file 
     100/* Misc */ 
     101.hide { display: none; } 
     102 No newline at end of file