Ticket #13822: 13822.merged.diff
| File 13822.merged.diff, 6.5 KB (added by , 16 years ago) |
|---|
-
wp-includes/default-filters.php
231 231 add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' ); 232 232 233 233 // Navigation menu actions 234 add_action( 'trash_post', '_wp_trash_menu_item' );235 add_action( 'untrash_post', '_wp_untrash_menu_item' );236 234 add_action( 'delete_post', '_wp_delete_post_menu_item' ); 237 235 add_action( 'delete_term', '_wp_delete_tax_menu_item' ); 238 236 add_action( 'transition_post_status', '_wp_menu_changing_status_observer', 10, 3 ); -
wp-includes/nav-menu.php
311 311 $original_object = get_post( $args['menu-item-object-id'] ); 312 312 $original_parent = (int) $original_object->post_parent; 313 313 $original_title = $original_object->post_title; 314 315 if ( 'trash' == get_post_status( $args['menu-item-object-id'] ) )316 return new WP_Error('update_nav_menu_item_failed', sprintf(__('The menu item "%1$s" belongs to something that is in the trash, so it cannot be updated.'), $args['menu-item-title'] ) );317 314 } 318 315 319 316 if ( empty( $args['menu-item-title'] ) || $args['menu-item-title'] == $original_title ) { … … 655 652 } 656 653 657 654 /** 658 * Callback for handling a menu item when its original object is trashed.659 *660 * @since 3.0.0661 * @access private662 *663 * @param int $object_id The ID of the original object being trashed.664 *665 */666 function _wp_trash_menu_item( $object_id = 0 ) {667 $object_id = (int) $object_id;668 669 $menu_item_ids = wp_get_associated_nav_menu_items( $object_id );670 671 foreach( (array) $menu_item_ids as $menu_item_id ) {672 $menu_item = get_post( $menu_item_id, ARRAY_A );673 $menu_item['post_status'] = 'pending';674 wp_insert_post($menu_item);675 }676 }677 678 /**679 * Callback for handling a menu item when its original object is un-trashed.680 *681 * @since 3.0.0682 * @access private683 *684 * @param int $object_id The ID of the original object being untrashed.685 *686 */687 function _wp_untrash_menu_item( $object_id = 0 ) {688 $object_id = (int) $object_id;689 690 $menu_item_ids = wp_get_associated_nav_menu_items( $object_id );691 692 foreach( (array) $menu_item_ids as $menu_item_id ) {693 $menu_item = get_post( $menu_item_id, ARRAY_A );694 $menu_item['post_status'] = 'publish';695 wp_insert_post($menu_item);696 }697 }698 699 /**700 655 * Callback for handling a menu item when its original object is deleted. 701 656 * 702 657 * @since 3.0.0 … … 780 735 781 736 // give menu items draft status if their associated post objects change from "publish" to "draft", or vice versa (draft item being re-published) 782 737 if ( 783 ! empty( $post->ID ) && 784 ( 785 ( 'publish' == $old_status && 'draft' == $new_status ) || 786 ( 'draft' == $old_status && 'publish' == $new_status ) 787 ) 738 ( $new_status != $old_status ) && 739 ! empty( $post->ID ) && ! empty( $post->post_type ) && 740 'nav_menu_item' != $post->post_type && 741 ( 'publish' == $old_status || 'publish' == $new_status ) 788 742 ) { 789 743 $menu_items = get_posts(array( 790 744 'meta_key' => '_menu_item_object_id', … … 796 750 foreach( (array) $menu_items as $menu_item ) { 797 751 if ( ! empty( $menu_item->ID ) ) { 798 752 $properties = get_object_vars( $menu_item ); 799 $properties['post_status'] = $new_status;753 $properties['post_status'] = 'publish' == $new_status ? 'publish' : 'draft'; 800 754 801 755 wp_insert_post( $properties ); 802 756 } -
wp-admin/includes/nav-menu.php
71 71 $title = $item->title; 72 72 73 73 if ( isset( $item->post_status ) && 'draft' == $item->post_status ) { 74 $classes[] = 'draft'; 75 /* translators: %s: title of menu item in draft status */ 76 $title = sprintf( __('%s (Draft)'), $item->title ); 74 $original_status = get_post_status_object( $original_object->post_status ); 75 $classes[] = "draft post-status-$original_object->post_status"; 76 /* translators: 1: title of menu item in draft status, 2: actual post status. */ 77 $title = sprintf( __('%1$s (%2$s)'), $item->title, $original_status->label ); 77 78 } elseif ( isset( $item->post_status ) && 'pending' == $item->post_status ) { 78 $classes[] = ' pending';79 $classes[] = 'unsaved'; 79 80 /* translators: %s: title of menu item in pending status */ 80 $title = sprintf( __('%s ( Pending)'), $item->title );81 $title = sprintf( __('%s (Unsaved)'), $item->title ); 81 82 } 82 83 83 84 $title = empty( $item->label ) ? $title : $item->label; … … 176 177 <div class="menu-item-actions description-wide submitbox"> 177 178 <?php if( 'custom' != $item->type ) : ?> 178 179 <p class="link-to-original"> 179 <?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?> 180 <?php 181 $post_status = get_post_status( $item->object_id ); 182 if( 'publish' == $post_status ) { 183 printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>', '' ); 184 } else { 185 $original_url = $item->url; 186 if( 'trash' == $post_status ) { 187 $original_url = add_query_arg( 188 array( 189 'post_status' => 'trash', 190 'post_type' => $item->object, 191 ), 192 admin_url( 'edit.php' ) 193 ); 194 } 195 $post_status_obj = get_post_status_object( $post_status ); 196 /* translators: 1: title, 2: post status. */ 197 printf( __('Original: %1$s (%2$s)'), '<a href="' . esc_attr( $original_url ) . '">' . esc_html( $original_title ) . '</a>', 198 $post_status_obj->label ); 199 } 200 ?> 180 201 </p> 181 202 <?php endif; ?> 182 203 <a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php … … 1089 1110 } 1090 1111 1091 1112 if ( $some_pending_menu_items ) 1092 $result .= '<div class="updated inline"><p>' . __('Click Save Menu to make pendingmenu items public.') . '</p></div>';1113 $result .= '<div class="updated inline"><p>' . __('Click Save Menu to make unsaved menu items public.') . '</p></div>'; 1093 1114 1094 1115 $result .= '<ul class="menu" id="menu-to-edit"> '; 1095 1116 $result .= walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $menu_items), 0, (object) array('walker' => $walker ) );