X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/f9001779751f83dc8a10e478bfecb4d8dd5f964c..cd3609994b39a094ff7528b93f55631bb213fd7f:/wp-admin/includes/nav-menu.php?ds=sidebyside diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php index 6e929286..5fc73fcb 100644 --- a/wp-admin/includes/nav-menu.php +++ b/wp-admin/includes/nav-menu.php @@ -7,7 +7,7 @@ * @since 3.0.0 * @uses Walker_Nav_Menu */ -class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { +class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { /** * @see Walker_Nav_Menu::start_lvl() * @since 3.0.0 @@ -54,6 +54,8 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { $original_title = ''; if ( 'taxonomy' == $item->type ) { $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); + if ( is_wp_error( $original_title ) ) + $original_title = false; } elseif ( 'post_type' == $item->type ) { $original_object = get_post( $item->object_id ); $original_title = $original_object->post_title; @@ -67,7 +69,11 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { $title = $item->title; - if ( isset( $item->post_status ) && 'draft' == $item->post_status ) { + if ( ! empty( $item->_invalid ) ) { + $classes[] = 'menu-item-invalid'; + /* translators: %s: title of menu item which is invalid */ + $title = sprintf( __( '%s (Invalid)' ), $item->title ); + } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) { $classes[] = 'pending'; /* translators: %s: title of menu item in draft status */ $title = sprintf( __('%s (Pending)'), $item->title ); @@ -82,7 +88,7 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { type_label ); ?> - + - @@ -137,13 +143,10 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {

-

@@ -167,7 +170,7 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {

@@ -206,7 +209,22 @@ class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { * @since 3.0.0 * @uses Walker_Nav_Menu */ -class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { +class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu { + function __construct( $fields = false ) { + if ( $fields ) { + $this->db_fields = $fields; + } + } + + function start_lvl( &$output, $depth ) { + $indent = str_repeat( "\t", $depth ); + $output .= "\n$indent"; + } /** * @see Walker::start_el() @@ -306,7 +324,6 @@ function _wp_ajax_menu_quick_search( $request = array() ) { } - } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) { if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) { query_posts(array( @@ -319,7 +336,8 @@ function _wp_ajax_menu_quick_search( $request = array() ) { while ( have_posts() ) { the_post(); if ( 'markup' == $response_format ) { - echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $var_by_ref = get_the_ID() ) ) ), 0, (object) $args ); + $var_by_ref = get_the_ID(); + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), 0, (object) $args ); } elseif ( 'json' == $response_format ) { echo json_encode( array( @@ -614,7 +632,12 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) { if ( !$posts ) $error = '
  • '. $post_type['args']->labels->not_found .'
  • '; - $walker = new Walker_Nav_Menu_Checklist; + $db_fields = false; + if ( is_post_type_hierarchical( $post_type_name ) ) { + $db_fields = array( 'parent' => 'post_parent', 'id' => 'ID' ); + } + + $walker = new Walker_Nav_Menu_Checklist( $db_fields ); $current_tab = 'most-recent'; if ( isset( $_REQUEST[$post_type_name . '-tab'] ) && in_array( $_REQUEST[$post_type_name . '-tab'], array('all', 'search') ) ) { @@ -668,9 +691,9 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) { } ?>

    - + - + 'submit-quick-search-posttype-' . $post_type_name ) ); ?>

    -
    @@ -716,6 +738,7 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) { 'object_id' => $_nav_menu_placeholder, 'post_content' => '', 'post_excerpt' => '', + 'post_parent' => '', 'post_title' => _x('Home', 'nav menu home label'), 'post_type' => 'nav_menu_item', 'type' => 'custom', @@ -724,6 +747,7 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) { } } + $posts = apply_filters( 'nav_menu_items_'.$post_type_name, $posts, $args, $post_type ); $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) { @@ -741,7 +765,6 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
    -

    - + - + 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?>