Changeset 13704 for trunk/wp-admin/nav-menus.php
- Timestamp:
- 03/15/2010 04:26:46 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/wp-admin/nav-menus.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/nav-menus.php
r13685 r13704 10 10 */ 11 11 12 require_once('admin.php'); 13 14 /* 15 TODO 16 Add caps: edit_menus, delete_menus 17 */ 12 /** Load WordPress Administration Bootstrap */ 13 require_once( 'admin.php' ); 14 15 // Permissions Check 18 16 if ( ! current_user_can('switch_themes') ) 19 17 wp_die( __( 'Cheatin’ uh?' )); 20 18 19 // Nav Menu CSS 21 20 wp_admin_css( 'nav-menu' ); 21 22 // jQuery 22 23 wp_enqueue_script( 'jquery' ); 23 24 wp_enqueue_script( 'jquery-ui-draggable' ); 24 25 wp_enqueue_script( 'jquery-ui-droppable' ); 25 26 wp_enqueue_script( 'jquery-ui-sortable' ); 26 wp_enqueue_script( 'jquery-ui-dialog' ); 27 wp_enqueue_script( 'jquery-autocomplete' ); 28 29 // Nav Menu functions 27 30 wp_enqueue_script( 'nav-menu-dynamic-functions' ); 28 31 wp_enqueue_script( 'nav-menu-default-items' ); 29 wp_enqueue_script( 'jquery-autocomplete' );30 32 wp_enqueue_script( 'nav-menu-php-functions' ); 33 34 // Metaboxes 35 wp_enqueue_script( 'common' ); 36 wp_enqueue_script( 'wp-lists' ); 37 wp_enqueue_script( 'postbox' ); 38 39 // Thickbox 31 40 add_thickbox(); 32 41 42 // Load all the nav menu interface functions 43 require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' ); 44 45 // Container for any messages displayed to the user 46 $messages_div = ''; 47 48 // Container that stores the name of the active menu 49 $nav_menu_selected_title = ''; 50 51 // The menu id of the current menu being edited 52 $nav_menu_selected_id = isset( $_REQUEST['menu'] ) ? (int) $_REQUEST['menu'] : 0; 53 54 // Allowed actions: add, update, delete 55 $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'edit'; 56 57 switch ( $action ) { 58 case 'delete': 59 check_admin_referer( 'delete-nav_menu-' . $nav_menu_selected_id ); 60 61 if ( is_nav_menu($nav_menu_selected_id) ) { 62 wp_delete_nav_menu( $nav_menu_selected_id ); 63 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('Menu successfully deleted.') . '</p></div>'; 64 $nav_menu_selected_id = 0; 65 } 66 break; 67 68 case 'update': 69 check_admin_referer( 'update-nav_menu' ); 70 71 // Add Menu 72 if ( isset($_POST['create-menu']) ) { 73 if ( current_theme_supports('nav-menus') ) { 74 $add_nav_menu = esc_html( $_POST['create-menu-name'] ); 75 76 if ( $add_nav_menu ) { 77 $add_nav_menu = wp_create_nav_menu( $add_nav_menu ); 78 79 if ( is_wp_error( $add_nav_menu ) ) { 80 $messages_div = '<div id="message" class="error fade below-h2"><p>' . $add_nav_menu->get_error_message() . '</p></div>'; 81 } else { 82 $nav_menu_selected_id = $add_nav_menu->term_id; 83 $nav_menu_selected_title = $add_nav_menu->name; 84 $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>'; 85 } 86 } else { 87 $messages_div = '<div id="message" class="error fade below-h2"><p>' . __('Please enter a valid menu name.') . '</p></div>'; 88 } 89 unset($add_nav_menu); 90 } 91 } 92 93 // Update menu name 94 if ( isset($_POST['menu-name']) ) { 95 $old_nav_menu = get_term( $nav_menu_selected_id, 'nav_menu', ARRAY_A ); 96 $args = array( 'name' => $_POST['menu-name'], 'slug' => null, 'description' => $old_nav_menu['description'], 'parent' => $old_nav_menu['parent'], ); 97 $new_nav_menu = wp_update_term( $nav_menu_selected_id, 'nav_menu', $args ); 98 } 99 100 // Update menu items 101 $update_nav_items = isset( $_POST['li-count'] ) ? (int) $_POST['li-count'] : 0; 102 $update_nav_menu = is_nav_menu( $nav_menu_selected_id ); 103 104 if ( !is_wp_error($update_nav_menu) ) { 105 $menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') ); 106 $parent_menu_ids = array(); 107 108 // Loop through all POST variables 109 for ( $k = 0; $k < $update_nav_items; $k++ ) { 110 111 $menu_item_db_id = isset( $_POST['menu-item-db-id'][$k] ) ? $_POST['menu-item-db-id'][$k] : 0; 112 $menu_item_object_id = isset( $_POST['menu-item-object-id'][$k] ) ? $_POST['menu-item-object-id'][$k] : 0; 113 $menu_item_parent_id = isset( $_POST['menu-item-parent-id'][$k] ) ? $_POST['menu-item-parent-id'][$k] : 0; 114 $menu_item_position = isset( $_POST['menu-item-position'][$k] ) ? $_POST['menu-item-position'][$k] : 0; 115 $menu_item_type = isset( $_POST['menu-item-type'][$k] ) ? $_POST['menu-item-type'][$k] : 'custom'; 116 $menu_item_append = isset( $_POST['menu-item-append'][$k] ) ? $_POST['menu-item-append'][$k] : 'custom'; 117 118 $menu_item_title = isset( $_POST['menu-item-title'][$k] ) ? $_POST['menu-item-title'][$k] : ''; 119 $menu_item_url = isset( $_POST['menu-item-url'][$k] ) ? $_POST['menu-item-url'][$k] : ''; 120 $menu_item_description = isset( $_POST['menu-item-description'][$k] ) ? $_POST['menu-item-description'][$k]: ''; 121 $menu_item_attr_title = isset( $_POST['menu-item-attr-title'][$k] ) ? $_POST['menu-item-attr-title'][$k] : ''; 122 $menu_item_target = isset( $_POST['menu-item-target'][$k] ) ? $_POST['menu-item-target'][$k] : 0; 123 $menu_item_classes = isset( $_POST['menu-item-classes'][$k] ) ? $_POST['menu-item-classes'][$k] : ''; 124 $menu_item_xfn = isset( $_POST['menu-item-xfn'][$k] ) ? $_POST['menu-item-xfn'][$k] : ''; 125 126 // Menu item title can't be blank 127 if ( '' == $menu_item_title ) 128 continue; 129 130 // Populate the menu item 131 $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, 132 'ping_status' => 0, 'post_parent' => $menu_item_parent_id, 'menu_order' => $menu_item_position, 133 'post_excerpt' => $menu_item_attr_title, 'tax_input' => array( 'nav_menu' => $update_nav_menu->name ), 134 'post_content' => $menu_item_description, 'post_title' => $menu_item_title ); 135 136 // New menu item 137 if ( $menu_item_db_id == 0 ) { 138 $menu_item_db_id = wp_insert_post( $post ); 139 } elseif ( isset( $menu_items[$menu_item_db_id] ) ) { 140 $post['ID'] = $menu_item_db_id; 141 wp_update_post( $post ); 142 unset( $menu_items[$menu_item_db_id] ); 143 } 144 $parent_menu_ids[$k] = $menu_item_db_id; 145 146 update_post_meta( $menu_item_db_id, 'menu_item_type', $menu_item_type ); 147 update_post_meta( $menu_item_db_id, 'menu_item_append', $menu_item_append ); 148 update_post_meta( $menu_item_db_id, 'menu_item_object_id', $menu_item_object_id ); 149 update_post_meta( $menu_item_db_id, 'menu_item_target', esc_attr($menu_item_target) ); 150 update_post_meta( $menu_item_db_id, 'menu_item_classes', esc_attr($menu_item_classes) ); 151 update_post_meta( $menu_item_db_id, 'menu_item_xfn', esc_attr($menu_item_xfn) ); 152 153 // @todo: only save custom link urls. 154 update_post_meta( $menu_item_db_id, 'menu_item_url', esc_url_raw( $menu_item_url ) ); 155 } 156 157 // Remove menu items from the menu that weren't in $_POST 158 if ( !empty( $menu_items ) ) { 159 foreach ( array_keys( $menu_items ) as $menu_item_id ) { 160 wp_delete_post( $menu_item_id ); 161 } 162 } 163 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('The menu has been updated.') . '</p></div>'; 164 } 165 break; 166 } 167 168 // Get all nav menus 169 $nav_menus = wp_get_nav_menus(); 170 171 // Get recently edited nav menu 172 $recently_edited = get_user_option( 'nav_menu_recently_edited' ); 173 174 // If there was no recently edited menu, and $nav_menu_selected_id is a nav menu, update recently edited menu. 175 if ( !$recently_edited && is_nav_menu($nav_menu_selected_id) ) { 176 $recently_edited = $nav_menu_selected_id; 177 178 // Else if $nav_menu_selected_id is not a menu, but $recently_edited is, grab that one. 179 } elseif ( 0 == $nav_menu_selected_id && is_nav_menu($recently_edited) ) { 180 $nav_menu_selected_id = $recently_edited; 181 182 // Else try to grab the first menu from the menus list 183 } elseif ( 0 == $nav_menu_selected_id && ! empty($nav_menus) ) { 184 $nav_menu_selected_id = $nav_menus[0]->term_id; 185 } 186 187 // Update the user's setting 188 if ( $nav_menu_selected_id != $recently_edited && is_nav_menu($nav_menu_selected_id) ) 189 update_user_meta( $current_user->ID, 'nav_menu_recently_edited', $nav_menu_selected_id ); 190 191 // If there's a menu, get it's name. 192 if ( !$nav_menu_selected_title && $nav_menu_selected_title = is_nav_menu( $nav_menu_selected_id ) ) { 193 $nav_menu_selected_title = $nav_menu_selected_title->name; 194 } 195 196 // The user has no menus. 197 if ( !is_nav_menu( $nav_menu_selected_id ) ) { 198 if ( current_theme_supports('nav-menus') ) { 199 $messages_div = '<div id="message" class="updated"><p>' . __('You haven\'t setup any menus yet. Create a new menu.') . '</p></div>'; 200 } else { 201 $messages_div = '<div id="message" class="error"><p>' . __('The current theme does not support menus.') . '</p></div>'; 202 } 203 } else { 204 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 ) ); 205 } 206 207 // Get the admin header 33 208 require_once( 'admin-header.php' ); 34 require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' );35 36 function wp_reset_nav_menu() {37 wp_nav_menu_setup( true );38 return true;39 }40 41 $messages_div = '';42 $menu_id_in_edit = 0;43 $updated = false;44 $advanced_option_descriptions = 'no';45 46 // Check which menu is selected and if menu is in edit already47 if ( isset( $_GET['edit-menu'] ) ) {48 $menu_selected_id = (int) $_GET['edit-menu'];49 $updated = true;50 } elseif ( isset( $_POST[ 'menu-id-in-edit' ] ) ) {51 $menu_selected_id = (int) $_POST[ 'menu-id-in-edit' ];52 } else {53 $menu_selected_id = 0;54 }55 56 // Delete a menu57 if ( isset($_GET['delete-menu']) && $_GET['delete-menu'] > 0 ) {58 // if ( ! current_user_can('delete_menus') )59 // wp_die( __( 'Cheatin’ uh?' ));60 61 $menu_id = (int) $_GET['delete-menu'];62 check_admin_referer( 'delete_menu-' . $menu_id );63 64 wp_delete_nav_menu( $menu_id );65 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('Menu successfully deleted.') . '</p></div>';66 $menu_selected_id = 0;67 $updated = true;68 }69 70 // Default Menu to show71 $menus = wp_get_nav_menus();72 73 if ( empty($menus) && empty($_POST) ) {74 wp_create_default_nav_menu();75 $menus = wp_get_nav_menus();76 }77 78 if ( ! $menu_selected_id && ! empty($menus) )79 $menu_selected_id = $menus[0]->term_id;80 81 // Get the name of the current Menu82 $menu_title = '';83 $valid_menu = false;84 if ( $menu_selected_id > 0 ) {85 foreach ( $menus as $menu ) {86 if ( $menu->term_id == $menu_selected_id ) {87 $menu_title = $menu->name;88 $valid_menu = true;89 break;90 }91 }92 }93 94 if ( isset( $_POST['li-count'] ) )95 $post_counter = $_POST['li-count'];96 else97 $post_counter = 0;98 99 // Create a new menu. Menus are stored as terms in the 'menu' taxonomy.100 if ( isset( $_POST['create-menu'] ) && ! $updated ) {101 $insert_menu_name = $_POST['create-menu-name'];102 103 if ( $insert_menu_name ) {104 $menu = wp_create_nav_menu( $insert_menu_name );105 if ( is_wp_error( $menu ) ) {106 $messages_div = '<div id="message" class="error fade below-h2"><p>' . $menu->get_error_message() . '</p></div>';107 } else {108 $menus[$menu->term_id] = $menu;109 $menu_selected_id = $menu->term_id;110 $menu_id_in_edit = $menu_selected_id;111 $menu_title = $menu->name;112 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . sprintf( __('“%s” menu has been created.'), esc_html( $menu->name ) ) . '</p></div>';113 $post_counter = 0;114 }115 } else {116 $messages_div = '<div id="message" class="error fade below-h2"><p>' . __('Please enter a valid menu name.') . '</p></div>';117 }118 $updated = true;119 }120 121 if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) {122 $menu_items = wp_get_nav_menu_items( $menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') );123 $parent_menu_ids = array();124 125 // Loop through all POST variables126 for ( $k = 1; $k <= $post_counter; $k++ ) {127 $db_id = isset( $_POST['item-dbid'.$k] )? $_POST['item-dbid'.$k] : 0;128 $object_id = isset( $_POST['item-postmenu'.$k] )? $_POST['item-postmenu'.$k] : 0;129 $parent_id = isset( $_POST['item-parent'.$k] )? $_POST['item-parent'.$k] : 0;130 $custom_title = isset( $_POST['item-title'.$k] )? $_POST['item-title'.$k] : '';131 $custom_linkurl = ( isset( $_POST['item-url'.$k] ) && 'custom' == $_POST['item-type'.$k] ) ? $_POST['item-url'.$k] : '';132 $custom_description = isset( $_POST['item-description'.$k] )? $_POST['item-description'.$k] : '';133 134 // doesn't seem to be used by UI135 $position = isset( $_POST['item-position'.$k] )? $_POST['item-position'.$k] : 0;136 $linktype = isset( $_POST['item-type'.$k] )? $_POST['item-type'.$k] : 'custom';137 $custom_anchor_title = isset( $_POST['item-attr-title'.$k] )? $_POST['item-attr-title'.$k] : $custom_title;138 $new_window = isset( $_POST['item-target'.$k] )? $_POST['item-target'.$k] : 0;139 140 $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID,141 'ping_status' => 0, 'post_parent' => 0, 'menu_order' => $position,142 'post_excerpt' => $custom_anchor_title, 'tax_input' => array( 'nav_menu' => $menu_title ),143 'post_content' => $custom_description, 'post_title' => $custom_title );144 145 if ( $parent_id > 0 && isset( $parent_menu_ids[$parent_id] ) )146 $post['post_parent'] = $parent_menu_ids[$parent_id];147 148 // New menu item149 if ( $db_id == 0 ) {150 $db_id = wp_insert_post( $post );151 } elseif ( isset( $menu_items[$db_id] ) ) {152 $post['ID'] = $db_id;153 wp_update_post( $post );154 unset( $menu_items[$db_id] );155 }156 $parent_menu_ids[ $k ] = $db_id;157 158 update_post_meta( $db_id, 'menu_type', $linktype );159 update_post_meta( $db_id, 'object_id', $object_id );160 if ( $new_window )161 update_post_meta( $db_id, 'menu_new_window', 1 );162 else163 update_post_meta( $db_id, 'menu_new_window', 0 );164 if ( $custom_linkurl )165 update_post_meta( $db_id, 'menu_link', esc_url_raw( $custom_linkurl ) );166 167 }168 if ( !empty( $menu_items ) ) {169 foreach ( array_keys( $menu_items ) as $menu_id ) {170 wp_delete_post( $menu_id );171 }172 }173 $messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('The menu has been updated.') . '</p></div>';174 }175 176 209 ?> 177 210 <div class="wrap"> … … 181 214 <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> 182 215 183 <form onsubmit="wp_update_post_data();" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data"> 184 <?php if ( !empty($menus) && count($menus) > 1 ) : ?> 185 <ul class="subsubsub"> 186 <?php 187 foreach ( $menus as $menu ) { 188 $sep = end( $menus ) == $menu ? '' : ' | '; 189 if ( ( $menu_id_in_edit == $menu->term_id ) || ( $menu_selected_id == $menu->term_id ) ) { ?> 190 <li><a href='nav-menus.php?edit-menu=<?php echo esc_attr($menu->term_id); ?>' class="current"><?php echo esc_html( $menu->name ); ?></a><?php echo $sep; ?></li> 191 <?php } else { ?> 192 <li><a href='nav-menus.php?edit-menu=<?php echo esc_attr($menu->term_id); ?>'><?php echo esc_html( $menu->name ); ?></a><?php echo $sep; ?></li> 193 <?php } 194 } 195 ?> 196 </ul> 197 <?php endif; ?> 198 199 <div id="menu-management" class="metabox-holder has-right-sidebar"> 216 <?php if ( !empty($nav_menus) && count($nav_menus) > 1 ) : ?> 217 <ul class="subsubsub"> 218 <?php 219 foreach ( $nav_menus as $_nav_menu ) { 220 $sep = end( $nav_menus ) == $_nav_menu ? '' : ' | '; 221 222 if ( $nav_menu_selected_id == $_nav_menu->term_id ) 223 echo '<li><a href="'. admin_url( 'nav-menus.php?action=edit&menu=' . esc_attr($_nav_menu->term_id) ) .'" class="current">'. esc_html( $_nav_menu->name ) .'</a>'. $sep .'</li>'; 224 else 225 echo '<li><a href="'. admin_url( 'nav-menus.php?action=edit&menu=' . esc_attr($_nav_menu->term_id) ) .'">'. esc_html( $_nav_menu->name ) .'</a>'. $sep .'</li>'; 226 } 227 ?> 228 </ul> 229 <?php endif; ?> 230 231 <div id="menu-management" class="metabox-holder has-right-sidebar"> 232 <form id="update-nav-menu" onsubmit="wp_update_post_data();" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data"> 233 <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?> 234 <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?> 235 <?php wp_nonce_field( 'update-nav_menu' ); ?> 236 <input type="hidden" name="action" value="update" /> 237 <input type="hidden" name="li-count" id="li-count" value="0" /> 238 <input type="hidden" name="menu" id="menu" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" /> 239 200 240 <div id="post-body"> 201 241 <div id="post-body-content"> 202 <div id="normal-sortables" class="meta-box-sortables ui-sortable"> 203 <?php if ( $valid_menu and ! empty( $menus ) ) : ?> 242 <?php if ( is_nav_menu($nav_menu_selected_id) ) : ?> 204 243 <div id="menu-container" class="postbox"> 205 <h3 class="hndle"><?php echo esc_html( $ menu_title ); ?></h3>244 <h3 class="hndle"><?php echo esc_html( $nav_menu_selected_title ); ?></h3> 206 245 <div class="inside"> 207 <input type="hidden" name="li-count" id="li-count" value="0" /> 208 <input type="hidden" name="menu-id-in-edit" id="menu-id-in-edit" value="<?php echo esc_attr( $menu_selected_id ); ?>" /> 209 <?php 210 if ( $menu_selected_id > 0 ) 211 echo wp_get_nav_menu( array( 'type' => 'backend', 'menu' => $menu_selected_id, 'ul_class' => 'menu' ) ); 212 ?> 213 214 <div id="queue" class="hide"> 215 </div><!--/#queue--> 246 247 <?php echo wp_get_nav_menu( array( 'context' => 'backend', 'menu' => $nav_menu_selected_id ) ); ?> 248 216 249 </div><!-- /.inside --> 217 250 <!-- /#nav-menu-canvas .postbox--> 218 251 </div> 219 <p> 220 <script type="text/javascript"> 221 wp_update_post_data(); 222 </script> 223 <a class="submitdelete deletion" href="<?php echo wp_nonce_url( admin_url('nav-menus.php?delete-menu=' . $menu_selected_id), 'delete_menu-' . $menu_selected_id ); ?>"><?php _e('Delete Menu'); ?></a> 224 <input class="button-primary save" name="save_menu" type="submit" value="<?php esc_attr_e('Save All Changes'); ?>" /> 225 <br class="clear" /> 226 </p> 252 <script type="text/javascript"> 253 wp_update_post_data(); 254 </script> 227 255 <?php endif; ?> 228 </div><!-- /#normal-sortables-->229 256 </div><!-- /#post-body-content--> 230 257 </div><!--- /#post-body --> 231 258 <div id="menu-settings-column" class="inner-sidebar"> 232 <div id="side-sortables" class="meta-box-sortables ui-sortable"> 233 234 <div id="create-menu" class="postbox"> 235 <h3 class="hndle"><?php esc_html_e('Create Menu'); ?></h3> 236 <div class="inside"> 237 <p> 238 <input type="text" name="create-menu-name" id="create-menu-name" class="regular-text" value="" /> 239 <input type="submit" name="create-menu" id="create-menu" class="button" value="<?php esc_attr_e('Create Menu'); ?>" /> 240 </p> 241 </div><!-- /.inside--> 242 </div><!--END #create-menu--> 243 244 <div id="add-custom-link" class="postbox"> 245 <h3 class="hndle"><?php esc_html_e('Add a Custom Link'); ?></h3> 246 <div class="inside"> 247 <p id="menu-item-url-wrap"> 248 <label class="howto" for="menu-item-url"> 249 <span><?php _e('URL'); ?></span> 250 <input id="menu-item-url" name="menu-item-url" type="text" class="code" value="http://" /> 251 </label> 252 </p> 253 <br class="clear" /> 254 <p id="menu-item-name-wrap"> 255 <label class="howto" for="custom-menu-item-name"> 256 <span><?php _e('Text'); ?></span> 257 <input id="menu-item-name" type="text" class="regular-text" value="<?php echo esc_attr( __('Menu Item') ); ?>" /> 258 </label> 259 </p> 260 261 <p class="button-controls"> 262 <a class="show-all"><?php _e('View All'); ?></a> 263 <a class="hide-all"><?php _e('Hide All'); ?></a> 264 </p> 265 <div id="available-links" class="list-wrap"> 266 <div class="list-container"> 267 <ul class="list"> 268 <?php $items_counter = wp_nav_menu_get_custom_links( 0, 'default' ); ?> 269 </ul> 270 </div><!-- /.list-container--> 271 </div><!-- /#available-links--> 272 <p class="add-to-menu"> 273 <a class="button"><?php _e('Add to Menu'); ?></a> 274 </p> 275 <br class="clear" /> 276 </div><!-- /.inside--> 277 </div><!-- /#add-custom-link--> 278 279 <div id="add-pages" class="postbox"> 280 <h3 class="hndle"><?php esc_html_e('Add an Existing Page'); ?></h3> 281 <div class="inside"> 282 <?php 283 $pages_args = array( 284 'child_of' => 0, 'sort_order' => 'ASC', 'sort_column' => 'post_title', 'hierarchical' => 1, 285 'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '', 'authors' => '', 286 'parent' => -1, 'exclude_tree' => '', 'number' => '', 'offset' => 0 287 ); 288 $page_name = ''; 289 $pages_array = get_pages( $pages_args ); 290 if ( $pages_array ) { 291 foreach ( $pages_array as $post ) { 292 $page_name .= $post->post_title . '|'; 293 } 294 } else { 295 $page_name = __('No pages available'); 296 } 297 ?> 298 <script type="text/javascript" charset="<?php bloginfo('charset'); ?>"> 299 jQuery(document).ready(function(){ 300 var posts = "<?php echo esc_js( $page_name ); ?>".split('|'); 301 jQuery('#add-pages .quick-search').autocomplete(posts); 302 303 304 jQuery('#add-pages .quick-search').result(function(event, data, formatted) { 305 jQuery('#add-pages .list-wrap').css('display','block'); 306 jQuery("#add-pages .list-wrap li:contains('" + data + "')").css('display','block'); 307 jQuery('#add-pages .show-all').hide(); 308 jQuery('#add-pages .hide-all').show(); 309 }); 310 }); 311 </script> 312 <p> 313 <input type="text" class="quick-search regular-text" value="" /> 314 <a class="quick-search-submit button"><?php _e('Search'); ?></a> 315 </p> 316 317 <p class="button-controls"> 318 <a class="show-all"><?php _e('View All'); ?></a> 319 <a class="hide-all"><?php _e('Hide All'); ?></a> 320 </p> 321 322 <div id="existing-pages" class="list-wrap"> 323 <div class="list-container"> 324 <ul class="list"> 325 <?php $items_counter = wp_nav_menu_get_pages( $items_counter, 'default' ); ?> 326 </ul> 327 </div><!-- /.list-container--> 328 </div><!-- /#existing-pages--> 329 <p class="add-to-menu enqueue"> 330 <a class="button"><?php _e('Add to Menu'); ?></a> 331 </p> 332 <br class="clear" /> 333 </div><!-- /.inside--> 334 </div><!--END #add-pages--> 335 336 <div id="add-categories" class="postbox"> 337 <h3 class="hndle"><?php esc_html_e('Add an Existing Category'); ?></h3> 338 <div class="inside"> 339 <?php 340 // Custom GET categories query 341 // @todo Use API 342 $categories = $wpdb->get_results("SELECT term_id FROM $wpdb->term_taxonomy WHERE taxonomy = 'category' ORDER BY term_id ASC"); 343 $cat_name = ''; 344 if ( $categories ) { 345 foreach ( $categories as $category ) { 346 $cat_id = $category->term_id; 347 $cat_args = array( 348 'orderby' => 'name', 349 'include' => $cat_id, 350 'hierarchical' => 1, 351 'order' => 'ASC', 352 ); 353 $category_names = get_categories( $cat_args ); 354 if ( isset( $category_names[0]->name ) ) { 355 $cat_name .= htmlentities( $category_names[0]->name ).'|'; 356 } 357 } 358 } else { 359 $cat_name = __('No categories available'); 360 } 361 ?> 362 <script type="text/javascript" charset="<?php bloginfo('charset'); ?>"> 363 jQuery(document).ready(function(){ 364 var categories = "<?php echo esc_js($cat_name); ?>".split('|'); 365 jQuery('#add-categories .quick-search').autocomplete(categories); 366 jQuery('#add-categories .quick-search').result(function(event, data, formatted) { 367 jQuery('#add-categories .list-wrap').css('display','block'); 368 jQuery("#add-categories .list-wrap li:contains('" + data + "')").css('display','block'); 369 jQuery('#add-categories .show-all').hide(); 370 jQuery('#add-categories .hide-all').show(); 371 }); 372 }); 373 </script> 374 <p> 375 <input type="text" class="quick-search regular-text" value="" /> 376 <a class="quick-search-submit button"><?php _e('Search'); ?></a> 377 </p> 378 379 <p class="button-controls"> 380 <a class="show-all"><?php _e('View All'); ?></a> 381 <a class="hide-all"><?php _e('Hide All'); ?></a> 382 </p> 383 384 <div id="existing-categories" class="list-wrap"> 385 <div class="list-container"> 386 <ul class="list"> 387 <?php $items_counter = wp_nav_menu_get_categories( $items_counter, 'default' ); ?> 388 </ul> 389 </div><!-- /.list-container--> 390 </div><!-- /#existing-categories--> 391 <p class="add-to-menu enqueue"> 392 <a class="button"><?php _e('Add to Menu'); ?></a> 393 </p> 394 <br class="clear" /> 395 </div><!-- /.inside--> 396 </div><!--END #add-categories--> 397 </div><!-- /#side-sortables--> 259 260 <?php do_meta_boxes( 'menus', 'side', null ); ?> 261 398 262 </div><!-- /#menu-settings-column --> 399 <br class="clear" />400 < /div><!-- /.metabox-holder has-right-sidebar-->401 </ form>263 </form><!--/#update-nav-menu--> 264 <br class="clear" /> 265 </div><!-- /.metabox-holder has-right-sidebar--> 402 266 </div><!-- /.wrap--> 403 267 404 268 <div id="menu-item-settings"> 405 269 <p class="description"> 406 <label for="edit- item-title">270 <label for="edit-menu-item-title"> 407 271 <?php _e( 'Menu Title' ); ?><br /> 408 <input type="text" id="edit- item-title" class="widefat" name="edit-item-title" value="" tabindex="1" />409 </label> 410 </p> 411 <p class="description"> 412 <label for="edit- item-url">272 <input type="text" id="edit-menu-item-title" class="widefat" name="edit-menu-item-title" value="" tabindex="1" /> 273 </label> 274 </p> 275 <p class="description"> 276 <label for="edit-menu-item-url"> 413 277 <?php _e( 'URL' ); ?><br /> 414 <input type="text" id="edit- item-url" class="widefat code" name="edit-item-url" value="" tabindex="2" />415 </label> 416 </p> 417 <p class="description"> 418 <label for="edit- item-attr-title">419 <?php _e( ' Attribute Title' ); ?><br />420 <input type="text" id="edit- item-attr-title" class="widefat" name="edit-item-attr-title" value="" tabindex="3" />421 </label> 422 </p> 423 <p class="description"> 424 <label for="edit- item-target">425 <?php _e( ' Open Link in a new window' ); ?><br />426 <select id="edit- item-target" class="widefat" name="edit-item-target">427 <option value=" 1">Yes</option>428 <option value=" 0">No</option>278 <input type="text" id="edit-menu-item-url" class="widefat code" name="edit-menu-item-url" value="" tabindex="2" /> 279 </label> 280 </p> 281 <p class="description"> 282 <label for="edit-menu-item-attr-title"> 283 <?php _e( 'Title Attribute' ); ?><br /> 284 <input type="text" id="edit-menu-item-attr-title" class="widefat" name="edit-menu-item-attr-title" value="" tabindex="3" /> 285 </label> 286 </p> 287 <p class="description"> 288 <label for="edit-menu-item-target"> 289 <?php _e( 'Link Target' ); ?><br /> 290 <select id="edit-menu-item-target" class="widefat" name="edit-menu-item-target" tabindex="4"> 291 <option value="_self">Same window or tab</option> 292 <option value="_blank">New window or tab</option> 429 293 </select> 430 294 </label> 431 295 </p> 432 296 <p class="description"> 433 <label for="edit-item-description"> 434 <?php _e( 'Description' ); ?><br /> 435 <textarea id="edit-item-description" class="widefat" rows="3" name="edit-item-description" tabindex="4" /></textarea> 297 <label for="edit-menu-item-classes"> 298 <?php _e( 'CSS Classes (optional)' ); ?><br /> 299 <input type="text" id="edit-menu-item-classes" class="widefat code" name="edit-menu-item-classes" value="" tabindex="5" /> 300 </label> 301 </p> 302 <p class="description"> 303 <label for="edit-menu-item-xfn"> 304 <?php _e( 'Link Relationship (XFN) (optional)' ); ?><br /> 305 <input type="text" id="edit-menu-item-xfn" class="widefat code" name="edit-menu-item-xfn" value="" tabindex="6" /> 306 </label> 307 </p> 308 <p class="description"> 309 <label for="edit-menu-item-description"> 310 <?php _e( 'Description (optional)' ); ?><br /> 311 <textarea id="edit-menu-item-description" class="widefat" rows="3" name="edit-menu-item-description" tabindex="7" /></textarea> 312 <span class="description">The description will be displayed in the menu if the current theme supports it.</span> 436 313 </label> 437 314 </p> 438 315 <p> 439 <a id=" cancel-save" class="submitdelete deletion"><?php _e('Cancel'); ?></a>440 <a id=" update-menu-item" class="save button-primary" tabindex="5"><?php _e('Save Changes'); ?></a>441 </p> 442 <input type="hidden" id="edit- item-id" name="edit-item-id" value="" />316 <a id="update-menu-item" class="save button-primary" tabindex="8"><?php _e('Save Changes'); ?></a> 317 <a id="cancel-save" class="submitdelete deletion" tabindex="9"><?php _e('Cancel'); ?></a> 318 </p> 319 <input type="hidden" id="edit-menu-item-id" name="edit-item-id" value="" /> 443 320 </div><!-- /#menu-item-settings--> 444 321
Note: See TracChangeset
for help on using the changeset viewer.