diff --git a/wp-admin/custom-navigation.php b/wp-admin/custom-navigation.php index 6825fe59f9..341fef3596 100644 --- a/wp-admin/custom-navigation.php +++ b/wp-admin/custom-navigation.php @@ -12,6 +12,9 @@ require_once('admin.php'); +if ( ! current_user_can('switch_themes') ) + wp_die( __( 'Cheatin’ uh?' )); + wp_admin_css( 'custom-navigation' ); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'jquery-ui-draggable' ); @@ -26,528 +29,490 @@ wp_enqueue_script( 'custom-navigation-php-functions' ); require_once('admin-header.php'); require_once (ABSPATH . WPINC . '/custom-navigation.php'); -wp_custom_navigation(); - function wp_custom_nav_reset() { wp_custom_navigation_setup(true); return true; - } -/*-----------------------------------------------------------------------------------*/ -/* Custom Navigation Admin Interface -/* wp_custom_navigation() is the main function for the Custom Navigation -/* See functions in admin-functions.php -/*-----------------------------------------------------------------------------------*/ +$messagesdiv = ''; +$menu_id_in_edit = 0; -function wp_custom_navigation() { - global $wpdb, $user_ID; - ?> +// Check which menu is selected and if menu is in edit already +if ( isset( $_POST['switch_menu'] ) ) + $menu_selected_id = (int) $_POST['menu_select']; +elseif ( isset( $_POST['menu_id_in_edit'] ) ) + $menu_selected_id = (int) $_POST['menu_id_in_edit']; +else + $menu_selected_id = 0; -
-

+// Default Menu to show +$custom_menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) ); +if ( !empty( $custom_menus ) ) + $menu_selected_id = $custom_menus[0]->term_id; - 0 ) { + foreach ( $custom_menus as $menu ) { + if ( $menu->term_id == $menu_selected_id ) { + $menu_title = $menu->name; + break; + } + } +} - // Get the theme name - $themename = get_current_theme(); +if ( isset( $_POST['set_wp_menu'] ) ) { + // @todo validate set_wp_menu + update_option( 'wp_custom_nav_menu', $_POST['enable_wp_menu'] ); + $messagesdiv = '

' . __('Menu has been updated!') . '

'; +} - // Check which menu is selected and if menu is in edit already - if ( isset( $_POST['switch_menu'] ) ) - $menu_selected_id = (int) $_POST['menu_select']; - elseif ( isset( $_POST['menu_id_in_edit'] ) ) - $menu_selected_id = (int) $_POST['menu_id_in_edit']; - else +if ( isset( $_POST['licount'] ) ) + $postCounter = $_POST['licount']; +else + $postCounter = 0; + +// Create a new menu. Menus are stored as terms in the 'menu' taxonomy. +if ( isset( $_POST['add_menu'] ) ) { + $insert_menu_name = $_POST['add_menu_name']; + + if ( $insert_menu_name != '' ) { + $existing_term = get_term_by( 'name', $insert_menu_name, 'nav_menu' ); + if ( $existing_term ) { + $messagesdiv = '

' . esc_html( sprintf( e__('A menu named "%s" already exists; please try another name.'), $existing_term->name ) ) . '

'; + } else { + $term = wp_insert_term( $insert_menu_name, 'nav_menu' ); + if ( !is_wp_error($term) ) { + $term = get_term($term['term_id'], 'nav_menu'); + $custom_menus[$term->term_id] = $term; + $menu_selected_id = $term->term_id; + $menu_id_in_edit = $menu_selected_id; + $messagesdiv = '

' . esc_html( sprintf( __('"%s" menu has been created!'), $term->name ) ) . '

'; + + $postCounter = 0; + } + } + } else { + $messagesdiv = '

' . __('Please enter a valid menu name.') . '

'; + } +} + +if ( isset($_POST['reset_wp_menu']) ) { + $success = wp_custom_nav_reset(); + if ( $success ) { + // DISPLAY SUCCESS MESSAGE IF Menu Reset Correctly + $messagesdiv = '

' . __('The menu has been reset.') . '

'; + // GET reset menu id + $custom_menus = array(); $menu_selected_id = 0; + } else { + // DISPLAY SUCCESS MESSAGE IF Menu Reset Correctly + $messagesdiv = '

' . __('The menu could not be reset. Please try again.') . '

'; + } +} elseif ( $postCounter > 0 && $menu_selected_id > 0 ) { + $menu_objects = get_objects_in_term( $menu_selected_id, 'nav_menu' ); + $menu_items = wp_custom_navigation_get_menu_items( $menu_objects ); - // Default Menu to show - $custom_menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) ); - if ( !empty( $custom_menus ) ) - $menu_selected_id = $custom_menus[0]->term_id; + // Loop through all POST variables + for ( $k = 1; $k <= $postCounter; $k++ ) { + if (isset($_POST['dbid'.$k])) { $db_id = $_POST['dbid'.$k]; } else { $db_id = 0; } + if (isset($_POST['postmenu'.$k])) { $object_id = $_POST['postmenu'.$k]; } else { $object_id = 0; } + if (isset($_POST['parent'.$k])) { $parent_id = $_POST['parent'.$k]; } else { $parent_id = 0; } + if (isset($_POST['title'.$k])) { $custom_title = $_POST['title'.$k]; } else { $custom_title = ''; } + if (isset($_POST['linkurl'.$k])) { $custom_linkurl = $_POST['linkurl'.$k]; } else { $custom_linkurl = ''; } + if (isset($_POST['description'.$k])) { $custom_description = $_POST['description'.$k]; } else { $custom_description = ''; } + // doesn't seem to be used by UI + if (isset($_POST['icon'.$k])) { $icon = $_POST['icon'.$k]; } else { $icon = 0; } + if (isset($_POST['position'.$k])) { $position = $_POST['position'.$k]; } else { $position = 0; } + if (isset($_POST['linktype'.$k])) { $linktype = $_POST['linktype'.$k]; } else { $linktype = 'custom'; } + if (isset($_POST['anchortitle'.$k])) { $custom_anchor_title = $_POST['anchortitle'.$k]; } else { $custom_anchor_title = $custom_title; } + if (isset($_POST['newwindow'.$k])) { $new_window = $_POST['newwindow'.$k]; } else { $new_window = 0; } - $menu_title = ''; - if ( $menu_selected_id > 0 ) { - foreach ( $custom_menus as $menu ) { - if ( $menu->term_id == $menu_selected_id ) { - $menu_title = $menu->name; - break; - } + $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, + 'ping_status' => 0, 'post_parent' => 0, 'menu_order' => $position, + 'guid' => $custom_linkurl, 'post_excerpt' => $custom_anchor_title, 'tax_input' => array( 'nav_menu' => $menu_title ), + 'post_content' => $custom_description, 'post_title' => $custom_title ); + if ( $new_window ) + $post['post_content_filtered'] = '_blank'; + else + $post['post_content_filtered'] = ''; + if ( $parent_id > 0 && isset( $_POST[ 'dbid' . $parent_id ] ) ) + $post[ 'post_parent' ] = (int) $_POST[ 'dbid' . $parent_id ]; + + // New menu item + if ( $db_id == 0 ) { + $db_id = wp_insert_post( $post ); + } elseif ( isset( $menu_items[$db_id] ) ) { + $post['ID'] = $db_id; + wp_update_post( $post ); + unset( $menu_items[$db_id] ); + } + update_post_meta($db_id, 'menu_type', $linktype); + update_post_meta($db_id, 'object_id', $object_id); + } + if ( !empty( $menu_items ) ) { + foreach ( array_keys( $menu_items ) as $menu_id ) { + wp_delete_post( $menu_id ); } } + // DISPLAY SUCCESS MESSAGE IF POST CORRECT + $messagesdiv = '

' . __('The menu has been updated.') . '

'; +} - if ( isset( $_POST['set_wp_menu'] ) ) { - // @todo validate set_wp_menu - update_option( 'wp_custom_nav_menu', $_POST['enable_wp_menu'] ); - $messagesdiv = '

' . __('Menu has been updated!') . '

'; - } +?> +
+ +

- if ( isset( $_POST['licount'] ) ) - $postCounter = $_POST['licount']; - else - $postCounter = 0; +

+
+
+

' . __('Menu editing has not been Enabled yet. Please enable it in order to use it -------->') . '

'; + ?> + +
- if ( $insert_menu_name != '' ) { - $existing_term = get_term_by( 'name', $insert_menu_name, 'nav_menu' ); - if ( $existing_term ) { - $messagesdiv = '

' . esc_html( sprintf( e__('A menu named "%s" already exists; please try another name.'), $existing_term->name ) ) . '

'; - } else { - $term = wp_insert_term( $insert_menu_name, 'nav_menu' ); - if ( !is_wp_error($term) ) { - $term = get_term($term['term_id'], 'nav_menu'); - $custom_menus[$term->term_id] = $term; - $menu_selected_id = $term->term_id; - $menu_id_in_edit = $menu_selected_id; - $messagesdiv = '

' . esc_html( sprintf( __('"%s" menu has been created!'), $term->name ) ) . '

'; + + - $postCounter = 0; - } - } - } else { - $messagesdiv = '

' . __('Please enter a valid menu name.') . '

'; - } - } - - if ( isset($_POST['reset_wp_menu']) ) { - $success = wp_custom_nav_reset(); - if ( $success ) { - // DISPLAY SUCCESS MESSAGE IF Menu Reset Correctly - $messagesdiv = '

' . __('The menu has been reset.') . '

'; - // GET reset menu id - $custom_menus = array(); - $menu_selected_id = 0; - } else { - // DISPLAY SUCCESS MESSAGE IF Menu Reset Correctly - $messagesdiv = '

' . __('The menu could not be reset. Please try again.') . '

'; - } - } elseif ( $postCounter > 0 && $menu_selected_id > 0 ) { - $menu_objects = get_objects_in_term( $menu_selected_id, 'nav_menu' ); - $menu_items = wp_custom_navigation_get_menu_items( $menu_objects ); - - // Loop through all POST variables - for ( $k = 1; $k <= $postCounter; $k++ ) { - if (isset($_POST['dbid'.$k])) { $db_id = $_POST['dbid'.$k]; } else { $db_id = 0; } - if (isset($_POST['postmenu'.$k])) { $object_id = $_POST['postmenu'.$k]; } else { $object_id = 0; } - if (isset($_POST['parent'.$k])) { $parent_id = $_POST['parent'.$k]; } else { $parent_id = 0; } - if (isset($_POST['title'.$k])) { $custom_title = $_POST['title'.$k]; } else { $custom_title = ''; } - if (isset($_POST['linkurl'.$k])) { $custom_linkurl = $_POST['linkurl'.$k]; } else { $custom_linkurl = ''; } - if (isset($_POST['description'.$k])) { $custom_description = $_POST['description'.$k]; } else { $custom_description = ''; } - // doesn't seem to be used by UI - if (isset($_POST['icon'.$k])) { $icon = $_POST['icon'.$k]; } else { $icon = 0; } - if (isset($_POST['position'.$k])) { $position = $_POST['position'.$k]; } else { $position = 0; } - if (isset($_POST['linktype'.$k])) { $linktype = $_POST['linktype'.$k]; } else { $linktype = 'custom'; } - if (isset($_POST['anchortitle'.$k])) { $custom_anchor_title = $_POST['anchortitle'.$k]; } else { $custom_anchor_title = $custom_title; } - if (isset($_POST['newwindow'.$k])) { $new_window = $_POST['newwindow'.$k]; } else { $new_window = 0; } - - $post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID, - 'ping_status' => 0, 'post_parent' => 0, 'menu_order' => $position, - 'guid' => $custom_linkurl, 'post_excerpt' => $custom_anchor_title, 'tax_input' => array( 'nav_menu' => $menu_title ), - 'post_content' => $custom_description, 'post_title' => $custom_title ); - if ( $new_window ) - $post['post_content_filtered'] = '_blank'; - else - $post['post_content_filtered'] = ''; - if ( $parent_id > 0 && isset( $_POST[ 'dbid' . $parent_id ] ) ) - $post[ 'post_parent' ] = (int) $_POST[ 'dbid' . $parent_id ]; - - // New menu item - if ( $db_id == 0 ) { - $db_id = wp_insert_post( $post ); - } elseif ( isset( $menu_items[$db_id] ) ) { - $post['ID'] = $db_id; - wp_update_post( $post ); - unset( $menu_items[$db_id] ); - } - update_post_meta($db_id, 'menu_type', $linktype); - update_post_meta($db_id, 'object_id', $object_id); - } - if ( !empty( $menu_items ) ) { - foreach ( array_keys( $menu_items ) as $menu_id ) { - wp_delete_post( $menu_id ); - } - } - // DISPLAY SUCCESS MESSAGE IF POST CORRECT - $messagesdiv = '

' . __('The menu has been updated.') . '

'; - } - - // DISPLAY Custom Navigation - ?> - -

-
-
-

' . __('Menu editing has not been Enabled yet. Please enable it in order to use it -------->') . '

'; - - ?> - - - - - - - - -
- - - -
-
-
-
- - style="display:none;" />
+ + +

+ + + +

+
+ +
+ + + +
+
+
+
+ + style="display:none;" />
+
+