Changeset 13802 for trunk/wp-admin/nav-menus.php
- Timestamp:
- 03/22/2010 07:56:16 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/nav-menus.php
r13748 r13802 13 13 require_once( 'admin.php' ); 14 14 15 // Load all the nav menu interface functions 16 require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' ); 17 15 18 // Permissions Check 16 19 if ( ! current_user_can('switch_themes') ) … … 38 41 add_thickbox(); 39 42 40 // Load all the nav menu interface functions41 require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' );42 43 43 // Container for any messages displayed to the user 44 44 $messages_div = ''; … … 58 58 59 59 if ( is_nav_menu($nav_menu_selected_id) ) { 60 wp_delete_nav_menu( $nav_menu_selected_id ); 61 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('Menu successfully deleted.') . '</p></div>'; 62 $nav_menu_selected_id = 0; 60 $delete_nav_menu = wp_delete_nav_menu( $nav_menu_selected_id ); 61 62 if ( is_wp_error($delete_nav_menu) ) { 63 $messages_div = '<div id="message" class="error"><p>' . $delete_nav_menu->get_error_message() . '</p></div>'; 64 } else { 65 $messages_div = '<div id="message" class="updated"><p>' . __('The menu has been successfully deleted.') . '</p></div>'; 66 $nav_menu_selected_id = 0; // Reset the selected menu 67 } 68 unset( $delete_nav_menu ); 63 69 } 64 70 break; … … 76 82 77 83 if ( is_wp_error( $add_nav_menu ) ) { 78 $messages_div = '<div id="message" class="error fade below-h2"><p>' . $add_nav_menu->get_error_message() . '</p></div>';84 $messages_div = '<div id="message" class="error"><p>' . $add_nav_menu->get_error_message() . '</p></div>'; 79 85 } else { 80 86 $nav_menu_selected_id = $add_nav_menu->term_id; 81 87 $nav_menu_selected_title = $add_nav_menu->name; 82 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), esc_html( $add_nav_menu->name )) . '</p></div>';88 $messages_div = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been successfully created.'), $add_nav_menu->name ) . '</p></div>'; 83 89 } 84 90 } else { 85 $messages_div = '<div id="message" class="error fade below-h2"><p>' . __('Please enter a valid menu name.') . '</p></div>';91 $messages_div = '<div id="message" class="error"><p>' . __('Please enter a valid menu name.') . '</p></div>'; 86 92 } 87 unset( $add_nav_menu);93 unset( $add_nav_menu ); 88 94 } 89 95 } else { 96 97 // @todo wrap this into wp_update_nav_menu_object(); 90 98 if ( isset($_POST['menu-name']) ) { 91 99 $old_nav_menu = get_term( $nav_menu_selected_id, 'nav_menu', ARRAY_A ); … … 93 101 $new_nav_menu = wp_update_term( $nav_menu_selected_id, 'nav_menu', $args ); 94 102 } 95 103 96 104 // Update menu items 97 $update_nav_items = isset( $_POST['li-count'] ) ? (int) $_POST['li-count'] : 0; 105 106 // @todo: wrap update logic into wp_update_nav_menu(); 107 $update_count = isset( $_POST['li-count'] ) ? (int) $_POST['li-count'] : 0; 98 108 $update_nav_menu = is_nav_menu( $nav_menu_selected_id ); 99 109 100 110 if ( !is_wp_error($update_nav_menu) ) { 101 111 $menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') ); 102 $parent_menu_ids = array(); 103 112 104 113 // Loop through all POST variables 105 for ( $k = 0; $k < $update_nav_items; $k++ ) { 114 for ( $k = 0; $k < $update_count; $k++ ) { 115 116 // Menu item title can't be blank 117 if ( '' == $_POST['menu-item-title'][$k] ) 118 continue; 119 106 120 $menu_item_db_id = isset( $_POST['menu-item-db-id'][$k] ) ? $_POST['menu-item-db-id'][$k] : 0; 107 121 $menu_item_object_id = isset( $_POST['menu-item-object-id'][$k] ) ? $_POST['menu-item-object-id'][$k] : 0; 122 $menu_item_object = isset( $_POST['menu-item-object'][$k] ) ? $_POST['menu-item-object'][$k] : ''; 108 123 $menu_item_parent_id = isset( $_POST['menu-item-parent-id'][$k] ) ? $_POST['menu-item-parent-id'][$k] : 0; 109 124 $menu_item_position = isset( $_POST['menu-item-position'][$k] ) ? $_POST['menu-item-position'][$k] : 0; … … 114 129 $menu_item_description = isset( $_POST['menu-item-description'][$k] ) ? $_POST['menu-item-description'][$k] : ''; 115 130 $menu_item_attr_title = isset( $_POST['menu-item-attr-title'][$k] ) ? $_POST['menu-item-attr-title'][$k] : ''; 116 $menu_item_target = isset( $_POST['menu-item-target'][$k] ) ? $_POST['menu-item-target'][$k] : 0;131 $menu_item_target = isset( $_POST['menu-item-target'][$k] ) ? $_POST['menu-item-target'][$k] : '_self'; 117 132 $menu_item_classes = isset( $_POST['menu-item-classes'][$k] ) ? $_POST['menu-item-classes'][$k] : ''; 118 133 $menu_item_xfn = isset( $_POST['menu-item-xfn'][$k] ) ? $_POST['menu-item-xfn'][$k] : ''; 119 134 120 // Menu item title can't be blank 121 if ( '' == $menu_item_title ) 122 continue; 123 124 // Populate the menu item 125 $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, 126 'ping_status' => 0, 'post_parent' => $menu_item_parent_id, 'menu_order' => $menu_item_position, 127 'post_excerpt' => $menu_item_attr_title, 'tax_input' => array( 'nav_menu' => $update_nav_menu->name ), 128 'post_content' => $menu_item_description, 'post_title' => $menu_item_title ); 129 135 // Populate the menu item object 136 $post = array( 137 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'ping_status' => 0, 138 'post_author' => $user_ID, 'tax_input' => array( 'nav_menu' => $update_nav_menu->name ), 139 'post_title' => $menu_item_title, 'post_excerpt' => $menu_item_attr_title, 140 'post_parent' => $menu_item_parent_id, 'menu_order' => $menu_item_position, 141 'post_content' => $menu_item_description, 142 ); 143 130 144 // New menu item 131 145 if ( $menu_item_db_id == 0 ) { 132 146 $menu_item_db_id = wp_insert_post( $post ); 133 } elseif ( isset( $menu_items[$menu_item_db_id] ) ) { 147 148 // Update existing menu item 149 } elseif ( isset($menu_items[$menu_item_db_id]) || ( 'custom' == $menu_item_type && 0 != $menu_item_db_id ) ) { 134 150 $post['ID'] = $menu_item_db_id; 135 151 wp_update_post( $post ); 136 152 unset( $menu_items[$menu_item_db_id] ); 137 153 } 138 $parent_menu_ids[$k] = $menu_item_db_id; 139 140 // @todo sanitize type append and ID. 141 update_post_meta( $menu_item_db_id, 'menu_item_type', $menu_item_type ); 142 update_post_meta( $menu_item_db_id, 'menu_item_append', $menu_item_append ); 143 update_post_meta( $menu_item_db_id, 'menu_item_object_id', $menu_item_object_id ); 144 update_post_meta( $menu_item_db_id, 'menu_item_target', sanitize_key($menu_item_target) ); 154 155 update_post_meta( $menu_item_db_id, '_menu_item_type', sanitize_key($menu_item_type) ); 156 update_post_meta( $menu_item_db_id, '_menu_item_object_id', (int) $menu_item_object_id ); 157 update_post_meta( $menu_item_db_id, '_menu_item_object', sanitize_key($menu_item_object) ); 158 update_post_meta( $menu_item_db_id, '_menu_item_target', sanitize_key($menu_item_target) ); 145 159 // @todo handle sanitizing multiple classes separated by whitespace. 146 update_post_meta( $menu_item_db_id, ' menu_item_classes', sanitize_html_class($menu_item_classes) );147 update_post_meta( $menu_item_db_id, ' menu_item_xfn', sanitize_html_class($menu_item_xfn) );160 update_post_meta( $menu_item_db_id, '_menu_item_classes', sanitize_html_class($menu_item_classes) ); 161 update_post_meta( $menu_item_db_id, '_menu_item_xfn', sanitize_html_class($menu_item_xfn) ); 148 162 149 163 // @todo: only save custom link urls. 150 update_post_meta( $menu_item_db_id, ' menu_item_url', esc_url_raw( $menu_item_url) );164 update_post_meta( $menu_item_db_id, '_menu_item_url', esc_url_raw($menu_item_url) ); 151 165 } 152 166 … … 157 171 } 158 172 } 159 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('The menu has been updated.') . '</p></div>'; 173 174 do_action( 'wp_update_nav_menu', $nav_menu_selected_id ); 175 176 $messages_div = '<div id="message" class="updated"><p>' . sprintf( __('The <strong>%s</strong> menu has been updated.'), $update_nav_menu->name ) . '</p></div>'; 177 unset( $update_nav_menu, $update_count, $menu_items ); 160 178 } 161 179 } … … 191 209 } 192 210 211 // Create Menu Metabox 212 add_meta_box( 'create-menu', __('Create Menu'), 'wp_nav_menu_create_metabox', 'nav-menus', 'side', 'core' ); 213 193 214 // The user has no menus. 194 215 if ( !is_nav_menu( $nav_menu_selected_id ) ) { 195 if ( current_theme_supports('nav-menus') ) { 196 $messages_div = '<div id="message" class="updated"><p>' . __('You do not have any menus. Create a new menu.') . '</p></div>'; 197 } else { 198 $messages_div = '<div id="message" class="error"><p>' . __('The current theme does not support menus.') . '</p></div>'; 199 } 216 $messages_div = '<div id="message" class="updated"><p>' . __('You do not have any menus. Create a new menu.') . '</p></div>'; 217 218 // The theme supports menus 219 } elseif ( current_theme_supports('nav-menus') ) { 220 221 // Register nav menu metaboxes 222 add_meta_box( 'manage-menu', __( 'Menu Settings' ), 'wp_nav_menu_manage_menu_metabox', 'nav-menus', 'side', 'high', array( $nav_menu_selected_id, $nav_menu_selected_title ) ); 223 wp_nav_menu_metaboxes_setup(); 224 225 // The theme does not support menus 200 226 } else { 201 add_meta_box( 'manage-menu', __( 'Menu Settings' ), 'wp_nav_menu_manage_menu_metabox', 'menus', 'side', 'high', array( $nav_menu_selected_id, $nav_menu_selected_title ) ); 227 remove_meta_box( 'create-menu', 'nav-menus', 'side' ); 228 $messages_div = '<div id="message" class="error"><p>' . __('The current theme does not support menus.') . '</p></div>'; 202 229 } 203 230 … … 211 238 <div class="hide-if-js error"><p><?php _e('You do not have JavaScript enabled in your browser. Please enable it to access the Menus functionality.'); ?></p></div> 212 239 213 <?php if ( !empty($nav_menus) && count($nav_menus) > 1 ) : ?>240 <?php if ( !empty($nav_menus) && count($nav_menus) > 1 && current_theme_supports('nav-menus') ) : ?> 214 241 <ul class="subsubsub"> 215 242 <?php … … 227 254 228 255 <div id="menu-management" class="metabox-holder has-right-sidebar"> 229 <form id="update-nav-menu" onsubmit="wp_update_post_data();"action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data">256 <form id="update-nav-menu" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data"> 230 257 <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?> 231 258 <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?> 232 259 <?php wp_nonce_field( 'update-nav_menu' ); ?> 233 260 <input type="hidden" name="action" value="update" /> 234 <input type="hidden" name="li-count" id="li-count" value=" 0" />261 <input type="hidden" name="li-count" id="li-count" value="-1" /> 235 262 <input type="hidden" name="menu" id="menu" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" /> 236 263 <input type="hidden" id="hidden-metaboxes" value="<?php echo wp_initial_nav_menu_meta_boxes(); ?>" /> 237 264 <div id="post-body"> 238 265 <div id="post-body-content"> 239 <?php if ( is_nav_menu($nav_menu_selected_id) ) : ?>266 <?php if ( is_nav_menu($nav_menu_selected_id) && current_theme_supports('nav-menus') ) : ?> 240 267 <div id="menu-container" class="postbox"> 241 268 <h3 class="hndle"><?php echo esc_html( $nav_menu_selected_title ); ?></h3> 242 269 <div class="inside"> 243 244 270 <?php echo wp_get_nav_menu( array( 'context' => 'backend', 'menu' => $nav_menu_selected_id ) ); ?> 245 246 271 </div><!-- /.inside --> 247 272 <!-- /#nav-menu-canvas .postbox--> 248 273 </div> 249 <script type="text/javascript">250 wp_update_post_data();251 </script>252 274 <?php endif; ?> 253 275 </div><!-- /#post-body-content--> … … 255 277 <div id="menu-settings-column" class="inner-sidebar"> 256 278 257 <?php do_meta_boxes( ' menus', 'side', null ); ?>279 <?php do_meta_boxes( 'nav-menus', 'side', null ); ?> 258 280 259 281 </div><!-- /#menu-settings-column -->
Note: See TracChangeset
for help on using the changeset viewer.