WordPress.org

Make WordPress Core

Ticket #23450: 23450.5.diff

File 23450.5.diff, 35.6 KB (added by lessbloat, 2 years ago)
  • wp-admin/includes/nav-menu.php

     
    385385 * @since 3.0.0 
    386386 **/ 
    387387function wp_nav_menu_setup() { 
    388         // Register meta boxes 
    389388        wp_nav_menu_post_type_meta_boxes(); 
    390         add_meta_box( 'add-custom-links', __( 'Add Links' ), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' ); 
     389        wp_nav_menu_item_link_meta_box(); 
    391390        wp_nav_menu_taxonomy_meta_boxes(); 
    392391 
    393         // Register advanced menu items (columns) 
    394         add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns'); 
    395  
    396392        // If first time editing, disable advanced items by default. 
    397393        if( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { 
    398394                $user = wp_get_current_user(); 
     
    438434 * @since 3.0.0 
    439435 */ 
    440436function wp_nav_menu_post_type_meta_boxes() { 
    441         $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); 
     437        // Reverse array to show pages as first item 
     438        $post_types = array_reverse( get_post_types( array( 'show_in_nav_menus' => true ), 'object' ) ); 
    442439 
    443440        if ( ! $post_types ) 
    444441                return; 
     
    447444                $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type ); 
    448445                if ( $post_type ) { 
    449446                        $id = $post_type->name; 
    450                         add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type ); 
     447                        wp_nav_menu_item_post_type_meta_box( $post_type ); 
    451448                } 
    452449        } 
    453450} 
     
    467464                $tax = apply_filters( 'nav_menu_meta_box_object', $tax ); 
    468465                if ( $tax ) { 
    469466                        $id = $tax->name; 
    470                         add_meta_box( "add-{$id}", $tax->labels->name, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax ); 
     467                        wp_nav_menu_item_taxonomy_meta_box( $tax ); 
    471468                } 
    472469        } 
    473470} 
     
    564561        ); 
    565562 
    566563        ?> 
    567         <div class="customlinkdiv" id="customlinkdiv"> 
     564        <li class="control-section accordion-section" id="accordion-section-title_tagline"> 
     565                <h3 title="" tabindex="0" class="accordion-section-title"><?php _e( 'Links' ); ?></h3> 
     566                <div class="customlinkdiv accordion-section-content" id="customlinkdiv"> 
    568567 
    569568                        <input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" /> 
    570569                        <p id="menu-item-url-wrap"> 
     
    577576                        <p id="menu-item-name-wrap"> 
    578577                                <label class="howto" for="custom-menu-item-name"> 
    579578                                        <span><?php _e( 'Link Text' ); ?></span> 
    580                                         <input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Menu Item'); ?>" /> 
     579                                        <input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e( 'Menu Item' ); ?>" /> 
    581580                                </label> 
    582581                        </p> 
    583582 
    584                 <p class="button-controls"> 
    585                         <span class="add-to-menu"> 
    586                                 <input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" /> 
    587                                 <span class="spinner"></span> 
    588                         </span> 
    589                 </p> 
     583                        <p class="button-controls"> 
     584                                <span class="add-to-menu"> 
     585                                        <input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" /> 
     586                                        <span class="spinner"></span> 
     587                                </span> 
     588                        </p> 
    590589 
    591         </div><!-- /.customlinkdiv --> 
     590                </div><!-- /.customlinkdiv --> 
     591        </li> 
    592592        <?php 
    593593} 
    594594 
     
    600600 * @param string $object Not used. 
    601601 * @param string $post_type The post type object. 
    602602 */ 
    603 function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) { 
     603function wp_nav_menu_item_post_type_meta_box( $post_type ) { 
    604604        global $_nav_menu_placeholder, $nav_menu_selected_id; 
    605605 
    606         $post_type_name = $post_type['args']->name; 
     606        $post_type_name = $post_type->name; 
    607607 
    608608        // paginate browsing for large numbers of post objects 
    609609        $per_page = 50; 
     
    621621                'update_post_meta_cache' => false 
    622622        ); 
    623623 
    624         if ( isset( $post_type['args']->_default_query ) ) 
    625                 $args = array_merge($args, (array) $post_type['args']->_default_query ); 
     624        if ( isset( $post_type->_default_query ) ) 
     625                $args = array_merge( $args, (array) $post_type->_default_query ); 
    626626 
    627627        // @todo transient caching of these results with proper invalidation on updating of a post of this type 
    628628        $get_posts = new WP_Query; 
     
    632632                return; 
    633633        } 
    634634 
    635         $post_type_object = get_post_type_object($post_type_name); 
     635        $post_type_object = get_post_type_object( $post_type_name ); 
    636636 
    637637        $num_pages = $get_posts->max_num_pages; 
    638638 
     
    681681        ); 
    682682 
    683683        ?> 
    684         <div id="posttype-<?php echo $post_type_name; ?>" class="posttypediv"> 
    685                 <ul id="posttype-<?php echo $post_type_name; ?>-tabs" class="posttype-tabs add-menu-item-tabs"> 
    686                         <li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'most-recent', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent"><?php _e('Most Recent'); ?></a></li> 
    687                         <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#<?php echo $post_type_name; ?>-all"><?php _e('View All'); ?></a></li> 
    688                         <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-search"><?php _e('Search'); ?></a></li> 
    689                 </ul> 
     684        <li class="control-section accordion-section" id="accordion-section-title_tagline"> 
     685                <h3 title="" tabindex="0" class="accordion-section-title"><?php echo $post_type->labels->name; ?></h3> 
     686                <div id="posttype-<?php echo esc_attr( $post_type_name ); ?>" class="posttypediv accordion-section-content"> 
     687                        <ul id="posttype-<?php echo esc_attr( $post_type_name ); ?>-tabs" class="posttype-tabs add-menu-item-tabs"> 
     688                                <li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link tab-most-recent" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-most-recent" href="<?php if ( $nav_menu_selected_id ) echo esc_url( add_query_arg( $post_type_name . '-tab', 'most-recent', remove_query_arg( $removed_args ) ) ); ?>#tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-most-recent"><?php _e( 'Most Recent' ); ?></a></li> 
     689                                <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" data-type="<?php echo esc_attr( $post_type_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url( add_query_arg( $post_type_name . '-tab', 'all', remove_query_arg( $removed_args ) ) . '#' . $post_type_name . '-all' ); ?> "><?php _e( 'View All' ); ?></a></li> 
     690                                <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-search" href="<?php if ( $nav_menu_selected_id ) echo esc_url( add_query_arg( $post_type_name . '-tab', 'search', remove_query_arg( $removed_args ) ) . '#tabs-panel-posttype-' .  $post_type_name . '-search' ); ?>"><?php _e( 'Search' ); ?></a></li> 
     691                        </ul> 
    690692 
    691                 <div id="tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent" class="tabs-panel <?php 
    692                         echo ( 'most-recent' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
    693                 ?>"> 
    694                         <ul id="<?php echo $post_type_name; ?>checklist-most-recent" class="categorychecklist form-no-clear"> 
    695                                 <?php 
    696                                 $recent_args = array_merge( $args, array( 'orderby' => 'post_date', 'order' => 'DESC', 'posts_per_page' => 15 ) ); 
    697                                 $most_recent = $get_posts->query( $recent_args ); 
    698                                 $args['walker'] = $walker; 
    699                                 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $most_recent), 0, (object) $args ); 
    700                                 ?> 
    701                         </ul> 
    702                 </div><!-- /.tabs-panel --> 
     693                        <div id="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-most-recent" class="tabs-panel <?php 
     694                                echo ( 'most-recent' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
     695                        ?>"> 
     696                                <ul id="<?php echo esc_attr( $post_type_name ); ?>-checklist-most-recent" class="categorychecklist form-no-clear"> 
     697                                        <?php 
     698                                        $recent_args = array_merge( $args, array( 'orderby' => 'post_date', 'order' => 'DESC', 'posts_per_page' => 15 ) ); 
     699                                        $most_recent = $get_posts->query( $recent_args ); 
     700                                        $args['walker'] = $walker; 
     701                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $most_recent), 0, (object) $args ); 
     702                                        ?> 
     703                                </ul> 
     704                        </div><!-- /.tabs-panel --> 
    703705 
    704                 <div class="tabs-panel <?php 
    705                         echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
    706                 ?>" id="tabs-panel-posttype-<?php echo $post_type_name; ?>-search"> 
    707                         <?php 
    708                         if ( isset( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { 
    709                                 $searched = esc_attr( $_REQUEST['quick-search-posttype-' . $post_type_name] ); 
    710                                 $search_results = get_posts( array( 's' => $searched, 'post_type' => $post_type_name, 'fields' => 'all', 'order' => 'DESC', ) ); 
    711                         } else { 
    712                                 $searched = ''; 
    713                                 $search_results = array(); 
    714                         } 
    715                         ?> 
    716                         <p class="quick-search-wrap"> 
    717                                 <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-posttype-<?php echo $post_type_name; ?>" /> 
    718                                 <span class="spinner"></span> 
    719                                 <?php submit_button( __( 'Search' ), 'button-small quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?> 
    720                         </p> 
     706                        <div class="tabs-panel <?php 
     707                                echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
     708                        ?>" id="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-search"> 
     709                                <?php 
     710                                if ( isset( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { 
     711                                        $searched = esc_attr( $_REQUEST['quick-search-posttype-' . $post_type_name] ); 
     712                                        $search_results = get_posts( array( 's' => $searched, 'post_type' => $post_type_name, 'fields' => 'all', 'order' => 'DESC', ) ); 
     713                                } else { 
     714                                        $searched = ''; 
     715                                        $search_results = array(); 
     716                                } 
     717                                ?> 
     718                                <p class="quick-search-wrap"> 
     719                                        <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e( 'Search' ); ?>" value="<?php echo esc_attr( $searched ); ?>" name="quick-search-posttype-<?php echo esc_attr( $post_type_name ); ?>" /> 
     720                                        <span class="spinner"></span> 
     721                                        <?php submit_button( __( 'Search' ), 'button-small quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?> 
     722                                </p> 
    721723 
    722                         <ul id="<?php echo $post_type_name; ?>-search-checklist" data-wp-lists="list:<?php echo $post_type_name?>" class="categorychecklist form-no-clear"> 
    723                         <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> 
    724                                 <?php 
    725                                 $args['walker'] = $walker; 
    726                                 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args ); 
    727                                 ?> 
    728                         <?php elseif ( is_wp_error( $search_results ) ) : ?> 
    729                                 <li><?php echo $search_results->get_error_message(); ?></li> 
    730                         <?php elseif ( ! empty( $searched ) ) : ?> 
    731                                 <li><?php _e('No results found.'); ?></li> 
    732                         <?php endif; ?> 
    733                         </ul> 
    734                 </div><!-- /.tabs-panel --> 
     724                                <ul id="<?php echo esc_attr( $post_type_name ); ?>-search-checklist" data-wp-lists="list:<?php echo esc_attr( $post_type_name ); ?>" class="categorychecklist form-no-clear"> 
     725                                <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> 
     726                                        <?php 
     727                                        $args['walker'] = $walker; 
     728                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args ); 
     729                                        ?> 
     730                                <?php elseif ( is_wp_error( $search_results ) ) : ?> 
     731                                        <li><?php echo $search_results->get_error_message(); ?></li> 
     732                                <?php elseif ( ! empty( $searched ) ) : ?> 
     733                                        <li><?php _e('No results found.'); ?></li> 
     734                                <?php endif; ?> 
     735                                </ul> 
     736                        </div><!-- /.tabs-panel --> 
    735737 
    736                 <div id="<?php echo $post_type_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php 
    737                         echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
    738                 ?>"> 
    739                         <?php if ( ! empty( $page_links ) ) : ?> 
    740                                 <div class="add-menu-item-pagelinks"> 
    741                                         <?php echo $page_links; ?> 
    742                                 </div> 
    743                         <?php endif; ?> 
    744                         <ul id="<?php echo $post_type_name; ?>checklist" data-wp-lists="list:<?php echo $post_type_name?>" class="categorychecklist form-no-clear"> 
    745                                 <?php 
    746                                 $args['walker'] = $walker; 
     738                        <div id="<?php echo esc_attr( $post_type_name ); ?>-all" class="tabs-panel tabs-panel-view-all <?php 
     739                                echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
     740                        ?>"> 
     741                                <?php if ( ! empty( $page_links ) ) : ?> 
     742                                        <div class="add-menu-item-pagelinks"> 
     743                                                <?php echo $page_links; ?> 
     744                                        </div> 
     745                                <?php endif; ?> 
     746                                <ul id="<?php echo esc_attr( $post_type_name ); ?>checklist" data-wp-lists="list:<?php echo esc_attr( $post_type_name ); ?>" class="categorychecklist form-no-clear"> 
     747                                        <?php 
     748                                        $args['walker'] = $walker; 
    747749 
    748                                 // if we're dealing with pages, let's put a checkbox for the front page at the top of the list 
    749                                 if ( 'page' == $post_type_name ) { 
    750                                         $front_page = 'page' == get_option('show_on_front') ? (int) get_option( 'page_on_front' ) : 0; 
    751                                         if ( ! empty( $front_page ) ) { 
    752                                                 $front_page_obj = get_post( $front_page ); 
    753                                                 $front_page_obj->front_or_home = true; 
    754                                                 array_unshift( $posts, $front_page_obj ); 
    755                                         } else { 
    756                                                 $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; 
    757                                                 array_unshift( $posts, (object) array( 
    758                                                         'front_or_home' => true, 
    759                                                         'ID' => 0, 
    760                                                         'object_id' => $_nav_menu_placeholder, 
    761                                                         'post_content' => '', 
    762                                                         'post_excerpt' => '', 
    763                                                         'post_parent' => '', 
    764                                                         'post_title' => _x('Home', 'nav menu home label'), 
    765                                                         'post_type' => 'nav_menu_item', 
    766                                                         'type' => 'custom', 
    767                                                         'url' => home_url('/'), 
    768                                                 ) ); 
     750                                        // if we're dealing with pages, let's put a checkbox for the front page at the top of the list 
     751                                        if ( 'page' == $post_type_name ) { 
     752                                                $front_page = 'page' == get_option( 'show_on_front' ) ? (int) get_option( 'page_on_front' ) : 0; 
     753                                                if ( ! empty( $front_page ) ) { 
     754                                                        $front_page_obj = get_post( $front_page ); 
     755                                                        $front_page_obj->front_or_home = true; 
     756                                                        array_unshift( $posts, $front_page_obj ); 
     757                                                } else { 
     758                                                        $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; 
     759                                                        array_unshift( $posts, (object) array( 
     760                                                                'front_or_home' => true, 
     761                                                                'ID' => 0, 
     762                                                                'object_id' => $_nav_menu_placeholder, 
     763                                                                'post_content' => '', 
     764                                                                'post_excerpt' => '', 
     765                                                                'post_parent' => '', 
     766                                                                'post_title' => _x( 'Home', 'nav menu home label' ), 
     767                                                                'post_type' => 'nav_menu_item', 
     768                                                                'type' => 'custom', 
     769                                                                'url' => home_url(), 
     770                                                        ) ); 
     771                                                } 
    769772                                        } 
    770                                 } 
    771773 
    772                                 $posts = apply_filters( 'nav_menu_items_'.$post_type_name, $posts, $args, $post_type ); 
    773                                 $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); 
     774                                        $posts = apply_filters( 'nav_menu_items_' . $post_type_name, $posts, $args, $post_type ); 
     775                                        $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); 
    774776 
    775                                 if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) { 
    776                                         $checkbox_items = preg_replace('/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items); 
     777                                        if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) 
     778                                                $checkbox_items = preg_replace( '/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items ); 
    777779 
    778                                 } 
     780                                        echo $checkbox_items; 
     781                                        ?> 
     782                                </ul> 
     783                                <?php if ( ! empty( $page_links ) ) : ?> 
     784                                        <div class="add-menu-item-pagelinks"> 
     785                                                <?php echo $page_links; ?> 
     786                                        </div> 
     787                                <?php endif; ?> 
     788                        </div><!-- /.tabs-panel --> 
    779789 
    780                                 echo $checkbox_items; 
    781                                 ?> 
    782                         </ul> 
    783                         <?php if ( ! empty( $page_links ) ) : ?> 
    784                                 <div class="add-menu-item-pagelinks"> 
    785                                         <?php echo $page_links; ?> 
    786                                 </div> 
    787                         <?php endif; ?> 
    788                 </div><!-- /.tabs-panel --> 
     790                        <p class="button-controls"> 
     791                                <span class="list-controls"> 
     792                                        <a href="<?php echo esc_url( add_query_arg( array( $post_type_name . '-tab' => 'all', 'selectall' => 1 ), remove_query_arg( $removed_args ) ) . '#posttype-' . $post_type_name ); ?>" class="select-all"><?php _e( 'Select All' ); ?></a> 
     793                                </span> 
    789794 
    790                 <p class="button-controls"> 
    791                         <span class="list-controls"> 
    792                                 <a href="<?php 
    793                                         echo esc_url( add_query_arg( 
    794                                                 array( 
    795                                                         $post_type_name . '-tab' => 'all', 
    796                                                         'selectall' => 1, 
    797                                                 ), 
    798                                                 remove_query_arg( $removed_args ) 
    799                                         )); 
    800                                 ?>#posttype-<?php echo $post_type_name; ?>" class="select-all"><?php _e('Select All'); ?></a> 
    801                         </span> 
     795                                <span class="add-to-menu"> 
     796                                        <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ) ; ?>" name="add-post-type-menu-item" id="submit-posttype-<?php echo esc_attr( $post_type_name ); ?>" /> 
     797                                        <span class="spinner"></span> 
     798                                </span> 
     799                        </p> 
    802800 
    803                         <span class="add-to-menu"> 
    804                                 <input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( __( 'Add to Menu' ) ); ?>" name="add-post-type-menu-item" id="<?php esc_attr_e( 'submit-posttype-' . $post_type_name ); ?>" /> 
    805                                 <span class="spinner"></span> 
    806                         </span> 
    807                 </p> 
    808  
    809         </div><!-- /.posttypediv --> 
     801                </div><!-- /.posttypediv --> 
     802        </li> 
    810803        <?php 
    811804} 
    812805 
     
    818811 * @param string $object Not used. 
    819812 * @param string $taxonomy The taxonomy object. 
    820813 */ 
    821 function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) { 
     814function wp_nav_menu_item_taxonomy_meta_box( $taxonomy ) { 
    822815        global $nav_menu_selected_id; 
    823         $taxonomy_name = $taxonomy['args']->name; 
     816        $taxonomy_name = $taxonomy->name; 
    824817 
    825818        // paginate browsing for large numbers of objects 
    826819        $per_page = 50; 
     
    842835 
    843836        $terms = get_terms( $taxonomy_name, $args ); 
    844837 
    845         if ( ! $terms || is_wp_error($terms) ) { 
     838        if ( is_wp_error( $terms ) ) { 
    846839                echo '<p>' . __( 'No items.' ) . '</p>'; 
    847840                return; 
    848841        } 
     
    891884        ); 
    892885 
    893886        ?> 
    894         <div id="taxonomy-<?php echo $taxonomy_name; ?>" class="taxonomydiv"> 
    895                 <ul id="taxonomy-<?php echo $taxonomy_name; ?>-tabs" class="taxonomy-tabs add-menu-item-tabs"> 
    896                         <li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'most-used', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-pop"><?php _e('Most Used'); ?></a></li> 
    897                         <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-all"><?php _e('View All'); ?></a></li> 
    898                         <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"><?php _e('Search'); ?></a></li> 
    899                 </ul> 
     887        <li class="control-section accordion-section" id="accordion-section-title_tagline"> 
     888                <h3 title="" tabindex="0" class="accordion-section-title"><?php echo esc_html(  $taxonomy->labels->name ); ?></h3> 
     889                <div id="taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" class="taxonomydiv accordion-section-content"> 
     890                        <ul id="taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>-tabs" class="taxonomy-tabs add-menu-item-tabs"> 
     891                                <li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-pop" href="<?php if ( $nav_menu_selected_id ) echo esc_url( add_query_arg($taxonomy_name . '-tab', 'most-used', remove_query_arg( $removed_args ) ) . '#tabs-panel-' . $taxonomy_name . '-pop' ); ?>"><?php _e( 'Most Used' ); ?></a></li> 
     892                                <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url( add_query_arg( $taxonomy_name . '-tab', 'all', remove_query_arg( $removed_args ) ) . '#tabs-panel-' . $taxonomy_name . '-all' ); ?>"><?php _e( 'View All' ); ?></a></li> 
     893                                <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" data-type="tabs-panel-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" href="<?php if ( $nav_menu_selected_id ) echo esc_url( add_query_arg( $taxonomy_name . '-tab', 'search', remove_query_arg( $removed_args ) ) ); ?>#tabs-panel-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>"><?php _e( 'Search' ); ?></a></li> 
     894                        </ul> 
    900895 
    901                 <div id="tabs-panel-<?php echo $taxonomy_name; ?>-pop" class="tabs-panel <?php 
    902                         echo ( 'most-used' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
    903                 ?>"> 
    904                         <ul id="<?php echo $taxonomy_name; ?>checklist-pop" class="categorychecklist form-no-clear" > 
    905                                 <?php 
    906                                 $popular_terms = get_terms( $taxonomy_name, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); 
    907                                 $args['walker'] = $walker; 
    908                                 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $popular_terms), 0, (object) $args ); 
    909                                 ?> 
    910                         </ul> 
    911                 </div><!-- /.tabs-panel --> 
     896                        <div id="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-pop" class="tabs-panel <?php 
     897                                echo ( 'most-used' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
     898                        ?>"> 
     899                                <ul id="<?php echo esc_attr( $taxonomy_name ); ?>checklist-pop" class="categorychecklist form-no-clear" > 
     900                                        <?php 
     901                                        $popular_terms = get_terms( $taxonomy_name, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); 
     902                                        $args['walker'] = $walker; 
     903                                        echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $popular_terms ), 0, (object) $args ); 
     904                                        ?> 
     905                                </ul> 
     906                        </div><!-- /.tabs-panel --> 
    912907 
    913                 <div id="tabs-panel-<?php echo $taxonomy_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php 
    914                         echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
    915                 ?>"> 
    916                         <?php if ( ! empty( $page_links ) ) : ?> 
    917                                 <div class="add-menu-item-pagelinks"> 
    918                                         <?php echo $page_links; ?> 
    919                                 </div> 
    920                         <?php endif; ?> 
    921                         <ul id="<?php echo $taxonomy_name; ?>checklist" data-wp-lists="list:<?php echo $taxonomy_name?>" class="categorychecklist form-no-clear"> 
    922                                 <?php 
    923                                 $args['walker'] = $walker; 
    924                                 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $terms), 0, (object) $args ); 
    925                                 ?> 
    926                         </ul> 
    927                         <?php if ( ! empty( $page_links ) ) : ?> 
    928                                 <div class="add-menu-item-pagelinks"> 
    929                                         <?php echo $page_links; ?> 
    930                                 </div> 
    931                         <?php endif; ?> 
    932                 </div><!-- /.tabs-panel --> 
     908                        <div id="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-all" class="tabs-panel tabs-panel-view-all <?php 
     909                                echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
     910                        ?>"> 
     911                                <?php if ( ! empty( $page_links ) ) : ?> 
     912                                        <div class="add-menu-item-pagelinks"> 
     913                                                <?php echo $page_links; ?> 
     914                                        </div> 
     915                                <?php endif; ?> 
     916                                <ul id="<?php echo esc_attr( $taxonomy_name ); ?>checklist" data-wp-lists="list:<?php echo esc_attr( $taxonomy_name ); ?>" class="categorychecklist form-no-clear"> 
     917                                        <?php 
     918                                        $args['walker'] = $walker; 
     919                                        echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $terms ), 0, (object) $args ); 
     920                                        ?> 
     921                                </ul> 
     922                                <?php if ( ! empty( $page_links ) ) : ?> 
     923                                        <div class="add-menu-item-pagelinks"> 
     924                                                <?php echo $page_links; ?> 
     925                                        </div> 
     926                                <?php endif; ?> 
     927                        </div><!-- /.tabs-panel --> 
    933928 
    934                 <div class="tabs-panel <?php 
    935                         echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
    936                 ?>" id="tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"> 
    937                         <?php 
    938                         if ( isset( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { 
    939                                 $searched = esc_attr( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ); 
    940                                 $search_results = get_terms( $taxonomy_name, array( 'name__like' => $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false ) ); 
    941                         } else { 
    942                                 $searched = ''; 
    943                                 $search_results = array(); 
    944                         } 
    945                         ?> 
    946                         <p class="quick-search-wrap"> 
    947                                 <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" /> 
    948                                 <span class="spinner"></span> 
    949                                 <?php submit_button( __( 'Search' ), 'button-small quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> 
    950                         </p> 
     929                        <div class="tabs-panel <?php 
     930                                echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); 
     931                        ?>" id="tabs-panel-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>"> 
     932                                <?php 
     933                                if ( isset( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { 
     934                                        $searched = esc_attr( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ); 
     935                                        $search_results = get_terms( $taxonomy_name, array( 'name__like' => $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false ) ); 
     936                                } else { 
     937                                        $searched = ''; 
     938                                        $search_results = array(); 
     939                                } 
     940                                ?> 
     941                                <p class="quick-search-wrap"> 
     942                                        <input type="search" class="quick-search input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo esc_attr( $searched ); ?>" name="quick-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" /> 
     943                                        <span class="spinner"></span> 
     944                                        <?php submit_button( __( 'Search' ), 'button-small quick-search-submit button-secondary hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> 
     945                                </p> 
    951946 
    952                         <ul id="<?php echo $taxonomy_name; ?>-search-checklist" data-wp-lists="list:<?php echo $taxonomy_name?>" class="categorychecklist form-no-clear"> 
    953                         <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> 
    954                                 <?php 
    955                                 $args['walker'] = $walker; 
    956                                 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args ); 
    957                                 ?> 
    958                         <?php elseif ( is_wp_error( $search_results ) ) : ?> 
    959                                 <li><?php echo $search_results->get_error_message(); ?></li> 
    960                         <?php elseif ( ! empty( $searched ) ) : ?> 
    961                                 <li><?php _e('No results found.'); ?></li> 
    962                         <?php endif; ?> 
    963                         </ul> 
    964                 </div><!-- /.tabs-panel --> 
     947                                <ul id="<?php echo esc_attr( $taxonomy_name ); ?>-search-checklist" data-wp-lists="list:<?php echo esc_attr( $taxonomy_name ); ?>" class="categorychecklist form-no-clear"> 
     948                                <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> 
     949                                        <?php 
     950                                        $args['walker'] = $walker; 
     951                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args ); 
     952                                        ?> 
     953                                <?php elseif ( is_wp_error( $search_results ) ) : ?> 
     954                                        <li><?php echo $search_results->get_error_message(); ?></li> 
     955                                <?php elseif ( ! empty( $searched ) ) : ?> 
     956                                        <li><?php _e('No results found.'); ?></li> 
     957                                <?php endif; ?> 
     958                                </ul> 
     959                        </div><!-- /.tabs-panel --> 
    965960 
    966                 <p class="button-controls"> 
    967                         <span class="list-controls"> 
    968                                 <a href="<?php 
    969                                         echo esc_url(add_query_arg( 
    970                                                 array( 
    971                                                         $taxonomy_name . '-tab' => 'all', 
    972                                                         'selectall' => 1, 
    973                                                 ), 
    974                                                 remove_query_arg($removed_args) 
    975                                         )); 
    976                                 ?>#taxonomy-<?php echo $taxonomy_name; ?>" class="select-all"><?php _e('Select All'); ?></a> 
    977                         </span> 
    978  
    979                         <span class="add-to-menu"> 
    980                                 <input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( __( 'Add to Menu' ) ); ?>" name="add-taxonomy-menu-item" id="<?php esc_attr_e( 'submit-taxonomy-' . $taxonomy_name ); ?>" /> 
    981                                 <span class="spinner"></span> 
    982                         </span> 
    983                 </p> 
    984  
    985         </div><!-- /.taxonomydiv --> 
     961                        <p class="button-controls"> 
     962                                <span class="list-controls"> 
     963                                        <a href="<?php echo esc_url( add_query_arg( array( $taxonomy_name . '-tab' => 'all', 'selectall' => 1 ), remove_query_arg( $removed_args ) ) . '#taxonomy-' .  $taxonomy_name ); ?>" class="select-all"><?php _e( 'Select All' ); ?></a> 
     964                                </span> 
     965                                <span class="add-to-menu"> 
     966                                        <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-taxonomy-menu-item" id="submit-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" /> 
     967                                        <span class="spinner"></span> 
     968                                </span> 
     969                        </p> 
     970                </div><!-- /.taxonomydiv --> 
     971        </li> 
    986972        <?php 
    987973} 
    988974 
  • wp-admin/js/nav-menu.js

     
    4242 
    4343                        this.attachUnsavedChangesListener(); 
    4444 
    45                         if( api.menuList.length ) // If no menu, we're in the + tab. 
     45                        if( api.menuList.length ) 
    4646                                this.initSortables(); 
    4747 
    4848                        if( oneThemeLocationNoMenus ) 
     
    5252 
    5353                        this.initAccessibility(); 
    5454 
    55                         this.initToggles(); 
     55                        // Open first accordion option 
     56                        $( '.accordion-container li' ).first().addClass( 'open' ); 
    5657                }, 
    5758 
    5859                jQueryExtensions : function() { 
     
    386387                        messages.slideDown( 'slow' ); 
    387388                }, 
    388389 
    389                 initToggles : function() { 
    390                         // init postboxes 
    391                         postboxes.add_postbox_toggles('nav-menus'); 
    392  
    393                         // adjust columns functions for menus UI 
    394                         columns.useCheckboxesForHidden(); 
    395                         columns.checked = function(field) { 
    396                                 $('.field-' + field).removeClass('hidden-field'); 
    397                         } 
    398                         columns.unchecked = function(field) { 
    399                                 $('.field-' + field).addClass('hidden-field'); 
    400                         } 
    401                         // hide fields 
    402                         api.menuList.hideAdvancedMenuItemFields(); 
    403                 }, 
    404  
    405390                initSortables : function() { 
    406391                        var currentDepth = 0, originalDepth, minDepth, maxDepth, 
    407392                                prev, next, prevBottom, nextThreshold, helperHeight, transport, 
     
    795780                                        target = $(e.target); 
    796781 
    797782                                if ( target.hasClass('nav-tab-link') ) { 
    798                                         panelId = /#(.*)$/.exec(e.target.href); 
    799                                         if ( panelId && panelId[1] ) 
    800                                                 panelId = panelId[1] 
    801                                         else 
    802                                                 return false; 
    803783 
    804                                         wrapper = target.parents('.inside').first(); 
     784                                        panelId = target.data( 'type' ); 
    805785 
     786                                        wrapper = target.parents('.accordion-section-content').first(); 
     787 
    806788                                        // upon changing tabs, we want to uncheck all checkboxes 
    807789                                        $('input', wrapper).removeAttr('checked'); 
    808790 
     
    815797                                        // select the search bar 
    816798                                        $('.quick-search', wrapper).focus(); 
    817799 
    818                                         return false; 
     800                                        e.preventDefault(); 
    819801                                } else if ( target.hasClass('select-all') ) { 
    820802                                        selectAreaMatch = /#(.*)$/.exec(e.target.href); 
    821803                                        if ( selectAreaMatch && selectAreaMatch[1] ) { 
  • wp-admin/nav-menus.php

     
    2323        wp_die( __( 'Cheatin&#8217; uh?' ) ); 
    2424 
    2525wp_enqueue_script( 'nav-menu' ); 
     26wp_enqueue_script( 'accordion' ); 
    2627 
    2728if ( wp_is_mobile() ) 
    2829        wp_enqueue_script( 'jquery-touch-punch' ); 
     
    421422 
    422423add_filter('admin_body_class', 'wp_nav_menu_max_depth'); 
    423424 
    424 wp_nav_menu_setup(); 
     425// Register advanced menu items (columns) 
     426add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns'); 
     427 
    425428wp_initial_nav_menu_meta_boxes(); 
    426429 
    427430if ( ! current_theme_supports( 'menus' ) && ! wp_get_nav_menus() ) 
     
    503506                        <input type="hidden" name="menu" id="nav-menu-meta-object-id" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" /> 
    504507                        <input type="hidden" name="action" value="add-menu-item" /> 
    505508                        <?php wp_nonce_field( 'add-menu_item', 'menu-settings-column-nonce' ); ?> 
    506                         <?php do_meta_boxes( 'nav-menus', 'side', null ); ?> 
     509                        <div id="side-sortables" class="accordion-container"> 
     510                                <ul class="outer-border"> 
     511                                        <?php wp_nav_menu_setup(); ?> 
     512                                </ul> 
     513                        </div> 
    507514                </form> 
    508515 
    509516        </div><!-- /#menu-settings-column --> 
  • wp-admin/css/wp-admin.css

     
    59875987        overflow: auto; 
    59885988} 
    59895989 
     5990.wp-full-overlay-sidebar-content .accordion-section:first-child { 
     5991        border-top: 1px solid #fff; 
     5992} 
     5993 
    59905994/* Close Link */ 
    59915995.wp-full-overlay .close-full-overlay { 
    59925996        text-decoration: none; 
     
    71567160        display: block; 
    71577161} 
    71587162 
     7163#nav-menu-meta ul.outer-border { 
     7164        -webkit-border-radius: 3px; 
     7165        border-radius: 3px; 
     7166} 
     7167 
     7168.accordion-section ul.category-tabs, 
     7169.accordion-section ul.add-menu-item-tabs, 
     7170.accordion-section ul.wp-tab-bar { 
     7171        margin: 0; 
     7172} 
     7173 
     7174.accordion-section .categorychecklist { 
     7175        margin: 13px 0; 
     7176} 
     7177 
     7178#nav-menu-meta .accordion-section-content { 
     7179        padding: 18px 13px; 
     7180} 
     7181 
     7182#nav-menu-meta .button-controls { 
     7183        margin-bottom: 0; 
     7184} 
     7185 
    71597186#nav-menus-frame { 
    71607187        margin-left: 300px; 
    71617188        margin-top: 28px; 
     
    72857312} 
    72867313 
    72877314.nav-menus-php #post-body { 
    7288         padding: 0 10px; 
     7315        padding: 0 10px 10px; 
    72897316        border-width: 1px 0; 
    72907317        border-style: solid; 
    72917318} 
     
    73557382} 
    73567383 
    73577384/* Add Menu Item Boxes */ 
    7358 .postbox .howto input { 
     7385.postbox .howto input, 
     7386.accordion-container .howto input { 
    73597387        width: 180px; 
    73607388        float: right; 
    73617389} 
    73627390 
     7391.accordion-container .outer-border { 
     7392        margin-top: 0; 
     7393} 
     7394 
     7395.accordion-container .accordion-section:first-child { 
     7396        -webkit-border-top-right-radius: 3px; 
     7397        -webkit-border-top-left-radius: 3px; 
     7398        border-top-right-radius: 3px; 
     7399        border-top-left-radius: 3px; 
     7400} 
     7401 
     7402.accordion-container .accordion-section:last-child { 
     7403        -webkit-border-bottom-right-radius: 3px; 
     7404        -webkit-border-bottom-left-radius: 3px; 
     7405        border-bottom-right-radius: 3px; 
     7406        border-bottom-left-radius: 3px; 
     7407} 
     7408 
    73637409.customlinkdiv .howto input { 
    73647410        width: 200px; 
    73657411} 
    73667412 
     7413.customlinkdiv p { 
     7414        margin-top: 0 
     7415} 
     7416 
    73677417#nav-menu-theme-locations .howto select { 
    73687418        width: 100%; 
    73697419} 
     
    87668816        margin: 0; 
    87678817} 
    87688818 
     8819.accordion-section:first-child { 
     8820        border-top: 1px solid #dfdfdf; 
     8821} 
     8822 
    87698823.accordion-section:last-child { 
    87708824        box-shadow: 0 1px 0 0px #fff; 
    87718825} 
     
    87738827.accordion-section.open .accordion-section-content { 
    87748828        display: block; 
    87758829        background: #fdfdfd; 
     8830        border-left: 1px solid #dfdfdf; 
     8831        border-right: 1px solid #dfdfdf; 
    87768832} 
    87778833 
    87788834.accordion-section.open:hover { 
     
    87898845        margin: 0; 
    87908846        padding: 15px 20px; 
    87918847        position: relative; 
     8848        border-left: 1px solid #dfdfdf; 
     8849        border-right: 1px solid #dfdfdf; 
    87928850 
    87938851        cursor: pointer; 
    87948852 
     
    88628920        background-image:    -moz-linear-gradient(bottom, #6d6d6d, #808080); 
    88638921        background-image:      -o-linear-gradient(bottom, #6d6d6d, #808080); 
    88648922        background-image: linear-gradient(to top, #6d6d6d, #808080); 
     8923        border-left: 1px solid #808080; 
     8924        border-right: 1px solid #808080; 
    88658925} 
    88668926 
    88678927.control-section.accordion-section:hover,