From 25a2a06a9ea1720bdd456369708bc0460338a091 Mon Sep 17 00:00:00 2001 From: ryan Date: Sun, 28 Feb 2010 20:00:49 +0000 Subject: [PATCH] Menu enhancements. Props ptahdunbar. fixes #11817 git-svn-id: http://svn.automattic.com/wordpress/trunk@13512 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/css/nav-menu.css | 2 +- wp-admin/css/nav-menu.dev.css | 23 +- wp-admin/includes/nav-menu.php | 185 ++++++----- wp-admin/js/nav-menu-default-items.dev.js | 110 ++----- wp-admin/js/nav-menu-default-items.js | 2 +- wp-admin/js/nav-menu-dynamic-functions.dev.js | 195 +++++------- wp-admin/js/nav-menu-dynamic-functions.js | 2 +- wp-admin/nav-menus.php | 46 +-- wp-content/themes/twentyten/header.php | 6 +- wp-includes/default-widgets.php | 251 +++------------ wp-includes/nav-menu-template.php | 289 ++++++++++-------- wp-includes/nav-menu.php | 160 +++++++--- 12 files changed, 560 insertions(+), 711 deletions(-) diff --git a/wp-admin/css/nav-menu.css b/wp-admin/css/nav-menu.css index 3e4a1c03d..aad36daf4 100644 --- a/wp-admin/css/nav-menu.css +++ b/wp-admin/css/nav-menu.css @@ -1 +1 @@ -#menu-management{clear:both;}#menu-management .inside{padding:0 10px;}#menu-container .submit{margin:0 0 10px;padding:0;}.submitdelete{color:#f00;text-decoration:underline;font-size:11px;float:left;margin-top:5px;}.submitdelete:hover{background-color:#F00;color:#fff;}.save{float:right;}.button-controls{float:left;}.add-to-menu{float:right;}#create-menu-name{width:159px;}#available-links{margin:15px 0 0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:11px;}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px;}#menu-item-url,#menu-item-name{float:right;width:220px;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;}.list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;border:1px solid #DFDFDF;-moz-border-radius:4px;}.postbox p.submit{margin-bottom:0;}.list li{margin:0;}.list dt{display:none;margin:0;overflow:hidden;margin-bottom:5px;}.list li .item-title{cursor:pointer;display:block;}.list li .item-title input{margin-right:3px;margin-top:-3px;}.list li ul li .item-title{margin-left:14px;}.list li ul li ul li .item-title{margin-left:28px;}.list li ul li ul li ul li .item-title{margin-left:42px;}.list li ul li ul li ul li ul li .item-title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .item-title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .item-title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:112px;}#menu-container .inside{padding-bottom:10px;}#menu ul{width:100%;}#menu li{margin:0;}#menu li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}#menu li dl dt:hover{cursor:move;}#menu li .item-title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#menu li ul li{margin-left:20px;opacity:.7;}#menu li ul li ul li{opacity:.9;}#menu li ul li ul li ul li{opacity:.9;}#menu li ul li ul li ul li ul li{opacity:.95;}.dropzone{height:7px;margin:3px 0 3px 0;}.ui-draggable-dragging{width:600px;}.item-type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}.item-controls{font-size:11px;position:absolute;right:15px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-delete:hover{color:#f00;}#menu-item-settings{display:none;}#cancel-save{cursor:pointer;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.hide{display:none;} \ No newline at end of file +#menu-management{clear:both;}#menu-management .inside{padding:0 10px;}#menu-container .submit{margin:0 0 10px;padding:0;}.submitdelete{color:#f00;text-decoration:underline;font-size:11px;float:left;margin-top:5px;}.submitdelete:hover{background-color:#F00;color:#fff;}.save{float:right;}.button-controls{float:left;}.add-to-menu{float:right;}#create-menu-name{width:159px;}#available-links{margin:15px 0 0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:11px;}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px;}#menu-item-url,#menu-item-name{float:right;width:220px;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;}.list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;border:1px solid #DFDFDF;-moz-border-radius:4px;}.postbox p.submit{margin-bottom:0;}.list li{display:none;margin:0;margin-bottom:5px;}.list li .item-title{cursor:pointer;display:block;}.list li .item-title input{margin-right:3px;margin-top:-3px;}.list li ul li .item-title{margin-left:14px;}.list li ul li ul li .item-title{margin-left:28px;}.list li ul li ul li ul li .item-title{margin-left:42px;}.list li ul li ul li ul li ul li .item-title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .item-title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .item-title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:112px;}#menu-container .inside{padding-bottom:10px;}.menu ul{width:100%;}.menu li{margin:0;}.menu li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}.menu li dl dt:hover{cursor:move;}.menu li .item-title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}.menu li ul li{margin-left:20px;opacity:.7;}.menu li ul li ul li{opacity:.9;}.menu li ul li ul li ul li{opacity:.9;}.menu li ul li ul li ul li ul li{opacity:.95;}.dropzone{height:7px;margin:3px 0 3px 0;}.ui-draggable-dragging{width:600px;}.item-type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}.item-controls{font-size:11px;position:absolute;right:15px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-delete:hover{color:#f00;}#menu-item-settings{display:none;}#cancel-save{cursor:pointer;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.hide{display:none;} \ No newline at end of file diff --git a/wp-admin/css/nav-menu.dev.css b/wp-admin/css/nav-menu.dev.css index 530ba4128..4fe72212d 100644 --- a/wp-admin/css/nav-menu.dev.css +++ b/wp-admin/css/nav-menu.dev.css @@ -22,7 +22,7 @@ .button-controls { float: left; } .add-to-menu { float: right; } -/* CSS for switching the columns *//* +/* CSS for switching the main columns *//* #menu-settings-column { clear: none; float: left; } #menu-management #post-body { float: right; margin-left: -340px; margin-right: 0px; } #menu-management #post-body-content { margin-left: 300px; margin-right: 0px; } @@ -48,8 +48,7 @@ .postbox p.submit { margin-bottom: 0; } /* Listings */ -.list li { margin: 0; } -.list dt { display: none; margin: 0; overflow: hidden; margin-bottom: 5px; } +.list li { display: none; margin: 0; margin-bottom: 5px; } .list li .item-title { cursor: pointer; display: block; } .list li .item-title input { margin-right: 3px; margin-top: -3px; } @@ -66,16 +65,16 @@ /* Menu */ #menu-container .inside { padding-bottom: 10px; } -#menu ul { width: 100%; } -#menu li { margin: 0; } -#menu li dl dt { -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-top-left-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; border: 1px solid #E6E6E6;position: relative; padding-left:10px; background-color: #f1f1f1; height: 35px; line-height: 35px; } -#menu li dl dt:hover { cursor: move; } +.menu ul { width: 100%; } +.menu li { margin: 0; } +.menu li dl dt { -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-top-left-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; border: 1px solid #E6E6E6;position: relative; padding-left:10px; background-color: #f1f1f1; height: 35px; line-height: 35px; } +.menu li dl dt:hover { cursor: move; } -#menu li .item-title { background: url(../images/ico-arrow.png) no-repeat 4px 5px; background-position: center left; padding-left: 15px; } -#menu li ul li { margin-left: 20px; opacity: .7;} -#menu li ul li ul li { opacity: .9;} -#menu li ul li ul li ul li { opacity: .9;} -#menu li ul li ul li ul li ul li { opacity: .95; } +.menu li .item-title { background: url(../images/ico-arrow.png) no-repeat 4px 5px; background-position: center left; padding-left: 15px; } +.menu li ul li { margin-left: 20px; opacity: .7;} +.menu li ul li ul li { opacity: .9;} +.menu li ul li ul li ul li { opacity: .9;} +.menu li ul li ul li ul li ul li { opacity: .95; } /* Drag and Drop */ .dropzone { height: 7px; margin: 3px 0 3px 0; } diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php index 9ec783309..bacb53431 100644 --- a/wp-admin/includes/nav-menu.php +++ b/wp-admin/includes/nav-menu.php @@ -1,16 +1,72 @@ 'any', 'post_type' => 'nav_menu_item', 'meta_value' => 'custom' ); + $link_objects = new WP_Query( $args ); + + $items_counter = $counter; -// Outputs All Pages and Sub Items -function wp_nav_menu_get_pages($counter, $type) { + if ( !$link_objects->posts ) { + _e('Not Found'); + return $items_counter; + } + + // Display Loop + foreach ( $link_objects->posts as $item ) { + if ( 0 == $item->parent ) { + $item = wp_setup_nav_menu_item( $item, 'item', $items_counter ); + + switch ( $context ) { + case 'menu': + ?> + + +
  • + ID; + $items_counter++; + $items_counter = wp_nav_menu_sub_items( $item->ID, $items_counter, $parentli, 'categories', 'default' ); + ?> +
  • + 0, 'sort_order' => 'ASC', @@ -26,8 +82,8 @@ function wp_nav_menu_get_pages($counter, $type) { 'number' => '', 'offset' => 0 ); - //GET all pages - $pages_array = get_pages($pages_args); + // Get all pages + $pages_array = get_pages( $pages_args ); $items_counter = $counter; $parentli = $items_counter; @@ -40,43 +96,45 @@ function wp_nav_menu_get_pages($counter, $type) { // Display Loop foreach ( $pages_array as $post ) { if ( $post->post_parent == 0 ) { - $post = wp_setup_nav_menu_item($post, 'page', $items_counter); - if ( $type == 'menu' ) { + $post = wp_setup_nav_menu_item( $post, 'page', $items_counter ); + if ( $context == 'menu' ) { ?> - -
  • ID; $items_counter++; - $items_counter = wp_nav_menu_sub_items($post->ID, $items_counter, $parentli, 'pages', 'default'); + $items_counter = wp_nav_menu_sub_items( $post->ID, $items_counter, $parentli, 'pages', 'default' ); ?>
  • - 'post', 'child_of' => 0, @@ -93,7 +151,7 @@ function wp_nav_menu_get_categories($counter, $type) { $items_counter = $counter; // Get all categories - $categories_array = get_categories($category_args); + $categories_array = get_categories( $category_args ); if ( !$categories_array ) { _e('Not Found'); @@ -103,46 +161,49 @@ function wp_nav_menu_get_categories($counter, $type) { // Display Loop foreach ( $categories_array as $cat_item ) { if ( $cat_item->parent == 0 ) { - $cat_item = wp_setup_nav_menu_item($cat_item, 'category', $items_counter); + $cat_item = wp_setup_nav_menu_item( $cat_item, 'category', $items_counter ); // Custom Menu - if ( $type == 'menu' ) { + if ( $context == 'menu' ) { ?> - -
  • cat_ID; $items_counter++; - $items_counter = wp_nav_menu_sub_items($cat_item->cat_ID, $items_counter, $parentli, 'categories', 'default'); + $items_counter = wp_nav_menu_sub_items( $cat_item->cat_ID, $items_counter, $parentli, 'categories', 'default' ); ?> -
  • - $childof); } - if ( $type == 'categories' ) { + if ( $context == 'categories' ) { // Get Sub Category Items $item_type = 'category'; $sub_array = get_categories($sub_args); - } elseif ($type == 'pages') { + } elseif ($context == 'pages') { // Get Sub Page Items $item_type = 'page'; $sub_array = get_pages($sub_args); @@ -172,25 +233,21 @@ function wp_nav_menu_sub_items($childof, $items_counter, $parentli, $type, $outp $sub_array = array(); } - if ( $sub_array ) { ?> -