From fcf6942d338264ab2d0abc1cf6b459990b94697d Mon Sep 17 00:00:00 2001 From: wpmuguru Date: Sat, 27 Feb 2010 23:06:56 +0000 Subject: [PATCH] more menu improvements, props ptahdunbar, see #11817 git-svn-id: http://svn.automattic.com/wordpress/trunk@13473 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/admin-ajax.php | 20 + wp-admin/css/nav-menu.css | 2 +- wp-admin/css/nav-menu.dev.css | 136 +++--- wp-admin/includes/nav-menu.php | 4 +- wp-admin/js/nav-menu-default-items.dev.js | 310 ++++++------ wp-admin/js/nav-menu-default-items.js | 2 +- wp-admin/js/nav-menu-dynamic-functions.dev.js | 450 +++++++++++------- wp-admin/js/nav-menu-dynamic-functions.js | 2 +- wp-admin/nav-menus.php | 391 ++++++++------- wp-includes/default-widgets.php | 12 +- wp-includes/nav-menu-template.php | 55 ++- wp-includes/nav-menu.php | 15 +- wp-includes/script-loader.php | 8 +- 13 files changed, 832 insertions(+), 575 deletions(-) diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php index e531f21a3..d7765707f 100644 --- a/wp-admin/admin-ajax.php +++ b/wp-admin/admin-ajax.php @@ -477,6 +477,26 @@ case 'dim-comment' : // On success, die with time() instead of 1 _wp_ajax_delete_comment_response( $comment->comment_ID ); die( '0' ); break; +case 'add-menu-link': + if ( !current_user_can( 'manage_links' ) ) + die('-1'); + + $link_url = isset($_POST['link_url']) ? $_POST['link_url'] : false; + $link_name = isset($_POST['link_name']) ? $_POST['link_name'] : false; + + if ( !$link_url || !$link_name ) + die('-1'); + + $post = array( 'post_type' => 'nav_menu_item', 'post_title' => $link_name, 'ping_status' => false, 'post_excerpt' => '', 'post_content' => '' ); + $db_id = wp_insert_post( $post ); + + update_post_meta( $db_id, 'menu_type', 'custom' ); + update_post_meta( $db_id, 'object_id', '' ); + update_post_meta( $db_id, 'menu_new_window', 0 ); + update_post_meta( $db_id, 'menu_link', esc_url_raw( $link_url ) ); + + echo $db_id; + break; case 'add-link-category' : // On the Fly check_ajax_referer( $action ); if ( !current_user_can( 'manage_categories' ) ) diff --git a/wp-admin/css/nav-menu.css b/wp-admin/css/nav-menu.css index 6c2fbe70f..3e4a1c03d 100644 --- a/wp-admin/css/nav-menu.css +++ b/wp-admin/css/nav-menu.css @@ -1 +1 @@ -.maintitle{margin:0 0 20px 0!important;}.logo{vertical-align:middle;margin:0 10px 0 0;}h2.heading{margin:32px 0 10px 0;}.checkboxes{float:right;margin:10px 12px 0 0;}#menus-container{clear:both;}#nav-container .inside{padding:0 10px 10px;}#menus-container .submit{padding:0;}#menu-settings-column .inside{padding:10px;}#custom-nav ul{width:100%;}#custom-nav li{margin:0;}.ui-draggable-dragging{width:500px;}#custom-nav 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;}#custom-nav li dl dt:hover{cursor:move;}#custom-nav li dl dt .controls{position:absolute;right:15px;top:-1px;}#custom-nav li dl dt img{vertical-align:middle;}#custom-nav li .title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#custom-nav li ul li{margin-left:20px;opacity:.7;}#custom-nav li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li ul li{opacity:.95;}#add-custom-link .howto{font-size:11px;}#add-custom-link .widefat{width:85%;margin-right:5px;}.list-container{max-height:203px;overflow-y:auto;padding-left:2px;padding-right:5px;}.list{zoom:1;}.list li{margin:0;}.list dt{display:none;margin:0;border-bottom:1px solid #e3e3e3;overflow:hidden;}.list dt{background:url(../images/ico-add.png) no-repeat right;}.list li .title{cursor:pointer;display:block;width:95%;padding:5px 0;}.list li .title{background:url(../images/ico-arrow.png) no-repeat 4px 13px;background-position:center left;padding-left:5%;}.list li ul li .title{margin-left:14px;}.list li ul li ul li .title{margin-left:28px;}.list li ul li ul li ul li .title{margin-left:42px;}.list li ul li ul li ul li ul li .title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:112px;}img.remove,img.edit{cursor:pointer;margin:0 5px 0 0;}.dropzone{height:7px;margin:3px 0 3px 0;}.hide{display:none;}.type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}#menu_select{width:170px;}#dialog-confirm label{padding-left:10px;}.ui-dialog{background:#fff;border:1px solid #555;-moz-box-shadow:0 4px 30px #000;}.ui-dialog-titlebar{color:#CFCFCF;font-family:"Lucida Grande",Verdana,Arial,sans-serif;padding:6px 10px 6px;background-color:#222!important;border:none!important;-moz-border-radius:none!important;}#dialog-confirm{height:168px!important;padding:20px 10px 10px;}#dialog-confirm input{margin:0 0 15px 0;width:280px;}#dialog-confirm select{margin:0 0 15px 0;}.ui-dialog-buttonpane{padding:10px;}.ui-dialog-buttonpane button{margin:0 10px 0 0;background:#F2F2F2;text-shadow:0 1px 0 #FFF;border-color:#BBB;color:#464646;-moz-border-radius-bottomleft:11px;-moz-border-radius-bottomright:11px;-moz-border-radius-topleft:11px;-moz-border-radius-topright:11px;border-style:solid;border-width:1px;cursor:pointer;font-size:11px!important;line-height:14px;padding:2px 8px;text-decoration:none;}.ui-dialog-buttonpane button:hover{color:#000;border-color:#666;}.ui-icon{display:none;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);-moz-border-radius:8px;-webkit-border-radius:8px;} \ 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{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 diff --git a/wp-admin/css/nav-menu.dev.css b/wp-admin/css/nav-menu.dev.css index e909fbad2..530ba4128 100644 --- a/wp-admin/css/nav-menu.dev.css +++ b/wp-admin/css/nav-menu.dev.css @@ -2,80 +2,100 @@ * WordPress Administration Custom Navigation * Interface CSS * - * @version 1.1.0 + * @version 2.0.0 * * @package WordPress * @subpackage Administration */ -.maintitle { margin: 0 0 20px 0!important;} -.logo { vertical-align: middle; margin: 0 10px 0 0; } -h2.heading { margin: 32px 0 10px 0; } -.checkboxes { float: right; margin: 10px 12px 0 0; } +/* Menu Container */ +#menu-management { clear: both; } +#menu-management .inside { padding: 0 10px; } -#menus-container { clear: both; } -#nav-container .inside { padding: 0px 10px 10px; } -#menus-container .submit { padding: 0px; } -#menu-settings-column .inside { padding: 10px; } +/* Button Primary Actions */ +#menu-container .submit { margin: 0px 0px 10px; padding: 0px; } +.submitdelete { color: #ff0000; text-decoration: underline; font-size: 11px; float: left; margin-top: 5px; } +.submitdelete:hover { background-color: #FF0000; color: #fff; } +.save { float: right; } -#custom-nav ul { width: 100%; } -#custom-nav li { margin: 0; } -.ui-draggable-dragging { width: 500px; } -#custom-nav 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; } -#custom-nav li dl dt:hover { cursor: move; } -#custom-nav li dl dt .controls { position: absolute; right: 15px; top: -1px; } -#custom-nav li dl dt img { vertical-align: middle; } -#custom-nav li dl dt a {} -#custom-nav li .title { background:url(../images/ico-arrow.png) no-repeat 4px 5px; background-position: center left; padding-left: 15px; } -#custom-nav li ul li { margin-left: 20px; opacity: .7;} -#custom-nav li ul li ul li { opacity: .9;} -#custom-nav li ul li ul li ul li { opacity: .9;} -#custom-nav li ul li ul li ul li ul li { opacity: .95; } +/* Button Secondary Actions */ +.button-controls { float: left; } +.add-to-menu { float: right; } +/* CSS for switching the 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; } +*/ + +/* Create Menu */ +#create-menu-name { width: 159px; } + +/* Custom Links */ +#available-links { margin: 15px 0px 0px; } +#available-links dt { display: block; } #add-custom-link .howto { font-size: 11px; } -#add-custom-link .widefat { width: 85%; margin-right: 5px; } +#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; } -.list-container { max-height: 203px; overflow-y: auto; padding-left: 2px; padding-right: 5px; } +/* Pages/Categories */ +.show-all, .hide-all { cursor: pointer; } +.hide-all { display: none; } -.list { zoom: 1; } +.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; } + +/* Listings */ .list li { margin: 0; } -.list dt { display: none; margin: 0; border-bottom: 1px solid #e3e3e3; overflow: hidden; } -.list dt { background: url(../images/ico-add.png) no-repeat right; } +.list dt { display: none; margin: 0; overflow: hidden; margin-bottom: 5px; } -.list li .title { cursor: pointer; display: block; width: 95%; padding: 5px 0px; } -.list li .title { background: url(../images/ico-arrow.png) no-repeat 4px 13px; background-position: center left; padding-left: 5%; } +.list li .item-title { cursor: pointer; display: block; } +.list li .item-title input { margin-right: 3px; margin-top: -3px; } -/* Visually shows the menu item hierarchy. */ -.list li ul li .title { margin-left: 14px; } -.list li ul li ul li .title { margin-left: 28px; } -.list li ul li ul li ul li .title { margin-left: 42px; } -.list li ul li ul li ul li ul li .title { margin-left: 56px; } -.list li ul li ul li ul li ul li ul li .title { margin-left: 70px; } -.list li ul li ul li ul li ul li ul li ul li .title { margin-left: 84px; } -.list li ul li ul li ul li ul li ul li ul li ul li .title { margin-left: 98px; } -.list li ul li ul li ul li ul li ul li ul li ul li ul li .title { margin-left: 112px; } +.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; } -img.remove, img.edit { cursor: pointer; margin: 0 5px 0 0; } +/* 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 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; } -#custom-nav li dl { } -.hide { display: none; } -.type { text-transform: uppercase; font-size: 11px; color: #999999; padding-right: 10px; } +.ui-draggable-dragging { width: 600px; } -#menu_select { width: 170px; } -#dialog-confirm label { padding-left: 10px; } +/* Menu Controls */ +.item-type { text-transform: uppercase; font-size: 11px; color: #999999; 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: #ff0000; } -/* EDIT LINK BOX */ -.ui-dialog { background: #fff; border: 1px solid #555555; -moz-box-shadow:0 4px 30px #000000; } -.ui-dialog-titlebar { color: #CFCFCF; font-family: "Lucida Grande", Verdana, Arial, sans-serif; padding: 6px 10px 6px; background-color: #222222 !important; border: none !important; -moz-border-radius: none !important; } -#dialog-confirm { height: 168px !important; padding: 20px 10px 10px; } -#dialog-confirm input { margin: 0 0 15px 0; width: 280px; } -#dialog-confirm select { margin: 0 0 15px 0; } -.ui-dialog-buttonpane { padding: 10px; } -.ui-dialog-buttonpane button { margin: 0 10px 0 0; background: #F2F2F2; text-shadow: 0 1px 0 #FFFFFF; border-color: #BBBBBB; color: #464646; -moz-border-radius-bottomleft: 11px; -moz-border-radius-bottomright: 11px; -moz-border-radius-topleft: 11px; -moz-border-radius-topright: 11px; border-style: solid; border-width: 1px; cursor: pointer; font-size: 11px !important; line-height: 14px; padding: 2px 8px; text-decoration: none; } -.ui-dialog-buttonpane button:hover { color: #000; border-color: #666; } -.ui-icon { display: none; } +/* Thickbox */ +#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; } -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } -.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60; filter:Alpha(Opacity=60); } -.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60; filter: Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; } \ No newline at end of file +/* Misc */ +.hide { display: none; } \ No newline at end of file diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php index 00416c988..9ec783309 100644 --- a/wp-admin/includes/nav-menu.php +++ b/wp-admin/includes/nav-menu.php @@ -175,7 +175,7 @@ function wp_nav_menu_sub_items($childof, $items_counter, $parentli, $type, $outp if ( $sub_array ) { ?> -