WordPress.org

Make WordPress Core

Ticket #23450: 23450.5.diff

File 23450.5.diff, 35.6 KB (added by lessbloat, 5 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,