Make WordPress Core


Ignore:
Timestamp:
04/28/2010 06:30:32 PM (16 years ago)
Author:
nacin
Message:

More nav menu fixes. props filosofo. see #13148. fixes #13155, fixes #13157, fixes #13138, see #13134.

File:
1 edited

Legend:

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

    r14271 r14283  
    306306    $post_types = get_post_types( array( 'public' => true ), 'object' );
    307307
    308     if ( !$post_types )
     308    if ( ! $post_types )
    309309        return;
    310310
    311311    foreach ( $post_types as $post_type ) {
    312         $id = $post_type->name;
    313         add_meta_box( "add-{$id}", $post_type->label, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type );
     312        $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type );
     313        if ( $post_type ) {
     314            $id = $post_type->name;
     315            add_meta_box( "add-{$id}", $post_type->label, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type );
     316        }
    314317    }
    315318}
     
    327330
    328331    foreach ( $taxonomies as $tax ) {
    329         $id = $tax->name;
    330         add_meta_box( "add-{$id}", $tax->label, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax );
     332        $tax = apply_filters( 'nav_menu_meta_box_object', $tax );
     333        if ( $tax ) {
     334            $id = $tax->name;
     335            add_meta_box( "add-{$id}", $tax->label, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax );
     336        }
    331337    }
    332338}
     
    338344 */
    339345function wp_nav_menu_item_link_meta_box() {
    340     static $_placeholder;
    341     $_placeholder = 0 > $_placeholder ? $_placeholder - 1 : -1;
     346    global $_nav_menu_placeholder;
     347    $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1;
    342348
    343349    // @note: hacky query, see #12660
     
    365371        <ul id="customlink-tabs" class="customlink-tabs add-menu-item-tabs">
    366372            <li <?php echo ( 'create' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="menu-tab-link" href="<?php echo add_query_arg('customlink-tab', 'create', remove_query_arg($removed_args)); ?>#tabs-panel-create-custom"><?php _e('Create New'); ?></a></li>
    367             <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="menu-tab-link" href="<?php echo add_query_arg('customlink-tab', 'all', remove_query_arg($removed_args)); ?>#tabs-panel-all-custom"><?php _e('View All'); ?></a></li>
    368373        </ul>
    369374
     
    371376            echo ( 'create' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' );
    372377        ?>" id="tabs-panel-create-custom">
    373             <input type="hidden" value="custom" name="menu-item[<?php echo $_placeholder; ?>][menu-item-type]" />
     378            <input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" />
    374379            <p id="menu-item-url-wrap">
    375380                <label class="howto" for="custom-menu-item-url">
    376381                    <span><?php _e('URL'); ?></span>
    377                     <input id="custom-menu-item-url" name="menu-item[<?php echo $_placeholder; ?>][menu-item-url]" type="text" class="code menu-item-textbox" value="http://" />
     382                    <input id="custom-menu-item-url" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-url]" type="text" class="code menu-item-textbox" value="http://" />
    378383                </label>
    379384            </p>
     
    382387                <label class="howto" for="custom-menu-item-name">
    383388                    <span><?php _e('Text'); ?></span>
    384                     <input id="custom-menu-item-name" name="menu-item[<?php echo $_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox" value="<?php echo esc_attr( __('Menu Item') ); ?>" />
     389                    <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" value="<?php echo esc_attr( __('Menu Item') ); ?>" />
    385390                </label>
    386391            </p>
    387         </div><!-- /.tabs-panel -->
    388 
    389         <div class="tabs-panel <?php
    390             echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' );
    391         ?>" id="tabs-panel-all-custom">
    392             <ul id="customlinkchecklist" class="list:customlink customlinkchecklist form-no-clear">
    393                 <?php
    394                 $args['walker'] = new Walker_Nav_Menu_Checklist;
    395                 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $links), 0, (object) $args );
    396                 ?>
    397             </ul>
    398392        </div><!-- /.tabs-panel -->
    399393
     
    433427        'suppress_filters' => true,
    434428    );
     429
     430    if ( isset( $post_type['args']->_default_query ) )
     431        $args = array_merge($args, (array) $post_type['args']->_default_query );
    435432
    436433    // @todo transient caching of these results with proper invalidation on updating of a post of this type
     
    811808
    812809/**
     810 * Adds custom arguments to some of the meta box object types.
     811 *
     812 * @since 3.0.0
     813 *
     814 * @access private
     815 *
     816 * @param object $object The post type or taxonomy meta-object.
     817 * @return object The post type of taxonomy object.
     818 */
     819function _wp_nav_menu_meta_box_object( $object = null ) {
     820    if ( isset( $object->name ) ) {
     821        // don't show media meta box
     822        if ( 'attachment' == $object->name )
     823            return false;
     824   
     825        // pages should show most recent
     826        if ( 'page' == $object->name ) {
     827            $object->_default_query = array(
     828                'orderby' => 'post_date',
     829                'order' => 'DESC',
     830                'post_status' => 'publish',
     831            );
     832
     833        // posts should show only published items
     834        } elseif ( 'post' == $object->name ) {
     835            $object->_default_query = array(
     836                'post_status' => 'publish',
     837            );
     838
     839        // cats should be in reverse chronological order
     840        } elseif ( 'category' == $object->name ) {
     841            $object->_default_query = array(
     842                'orderby' => 'id',
     843                'order' => 'DESC',
     844            );
     845        }
     846    }
     847   
     848    return $object;
     849}
     850
     851/**
    813852 * Returns the menu item formatted to edit.
    814853 *
     
    819858 */
    820859function wp_get_nav_menu_to_edit( $menu_item_id = 0 ) {
    821     static $_placeholder;
    822    
    823860    $menu = wp_get_nav_menu_object( $menu_item_id );
    824861   
Note: See TracChangeset for help on using the changeset viewer.