WordPress.org

Make WordPress Core

Changeset 14337


Ignore:
Timestamp:
05/02/10 19:09:10 (5 years ago)
Author:
nacin
Message:

Alot of drag/drop/sortable improvements to nav menu admin UI. props koopersmith, fixes #12675.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/css/nav-menu.css

    r14314 r14337  
    1 #nav-menus-frame{margin-left:300px;}#menu-settings-column{display:block;width:281px;margin-left:-300px;clear:both;float:left;}#menu-settings-column .inside{padding:0 10px;}#menu-settings-column .handlediv{background:url("../images/menu-bits.gif") no-repeat scroll 0 -110px;}#wpbody{position:relative;}#menu-management-liquid{float:left;min-width:100%;}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;}#menu-management .menu-edit{margin-bottom:20px;}#nav-menu-header,#post-body{border-color:#ccc;border-style:solid;}#nav-menu-header{background:url("../images/gray-grad.png") repeat-x scroll left top #dfdfdf;border-width:1px 1px 0 1px;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;-khtml-border-top-right-radius:6px;border-top-right-radius:6px;}#post-body{background:#fff;padding:0 0 10px 10px;border-width:0 1px 1px 1px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;-khtml-border-bottom-right-radius:6px;border-bottom-right-radius:6px;}.post-body-plain{padding:10px 10px 0 0;}#menu-management .menu-add-new abbr{font-weight:bold;}#menu-management .nav-tabs{padding-left:30px;}#menu-management .nav-tab{background:#f4f4f4;font-weight:bold;border-color:#dfdfdf;}#menu-management .nav-tab-active{background:#ececec;border-color:#ccc;border-bottom-color:#ececec;}#menu-management #major-publishing-actions #delete-action{float:right;margin-right:10px;}#menu-name-label{margin-top:-2px;}#wpbody .open-label{display:inline-block;}#wpbody .open-label span{padding-right:10px;}.js .label-with-default-title{color:#aaa;font-style:italic;}#menu-management .inside{padding:0 10px;}.postbox .howto input{width:180px;float:right;}.customlinkdiv .howto input{width:210px;}#menu-container .submit{margin:0 0 10px;padding:0;}.submitdelete,.submitclose{font-size:11px;}#cancel-save{color:#f00;text-decoration:underline;font-size:11px;margin-left:20px;margin-top:5px;}#cancel-save:hover{background-color:#F00;color:#fff;}.list-controls{float:left;}.add-to-menu{float:right;}.postbox img.waiting{display:none;vertical-align:middle;}form.processing .postbox img.waiting{display:inline;}.button-controls{margin:10px 0;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}#create-menu-name{width:159px;}#manage-menu .inside{padding: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-textbox{width:180px;}.howto span{margin-top:4px;display:block;float:left;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;margin-bottom:10px;}.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 .menu-item-title{cursor:pointer;display:block;}.list li .menu-item-title input{margin-right:3px;margin-top:-3px;}.list li li .menu-item-title{margin-left:14px;}.list li li li .menu-item-title{margin-left:28px;}.list li li li li .menu-item-title{margin-left:42px;}.list li li li li li .menu-item-title{margin-left:56px;}.list li li li li li li .menu-item-title{margin-left:70px;}.list li li li li li li li .menu-item-title{margin-left:84px;}.list li li li li li li li li .menu-item-title{margin-left:98px;}.list li li li li li li li li li .menu-item-title{margin-left:112px;}#menu-container .inside{padding-bottom:10px;}.menu{padding-top:1em;}.menu ul{width:100%;}.menu li{margin:0;}.menu li dl{clear:both;line-height:1.5em;position:relative;}.menu li dl dt{background:url("../images/gray-grad.png") repeat-x scroll left top #DFDFDF;border:1px solid #E6E6E6;clear:both;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #FFF;font-weight:bold;overflow:hidden;}.menu li.deleting dl dt{background-color:#f66;background-image:none;text-shadow:0 0 0 #ccc;}.menu li dl.menu-item-edit-inactive dt{border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;}.menu li dl.menu-item-edit-active dt{-moz-border-radius:6px 6px 0 0;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-right-radius:6px;-khtml-border-top-left-radius:6px;border-top-right-radius:6px;border-top-left-radius:6px;}.js .menu li dl dt{cursor:move;}.no-js .menu li dl{margin-top:13px;}.menu li .item-title{padding:7px 0;line-height:20px;display:block;margin-right:13em;}.menu li .sortable-placeholder{width:430px;}.menu li div.sortable-placeholder{background:#f5f5f5;border:1px dashed #bbb;margin:10px 0;padding-top:40px;}.menu li dl.sortable-placeholder{background:#f5f5f5;padding-bottom:40px;}.menu li li{margin-left:20px;}.dropzone{height:7px;margin:3px 0 3px 0;}.item-type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}.item-controls{font-size:11px;position:absolute;right:20px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-order{padding-right:10px;}.item-controls .item-order a{font-weight:bold;}body.js .item-order{display:none;}.item-controls .menu-item-delete:hover{color:#f00;}.item-edit{background:url("../images/menu-bits.gif") no-repeat scroll 0 -105px;position:absolute;right:-20px;top:0;display:block;width:23px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid #eee;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.menu-item-settings{background:#F9F9F9;width:400px;padding:10px 0 10px 10px;border:solid #E6E6E6;border-width:0 1px 1px 1px;-moz-border-radius:0 0 6px 6px;-webkit-border-bottom-right-radius:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-right-radius:6px;-khtml-border-bottom-left-radius:6px;}.menu-item-settings.menu-item-edit-active{display:block;}.menu-item-settings.menu-item-edit-inactive{display:none;}.add-menu-item-pagelinks{margin:.5em auto;text-align:center;}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:11px;color:#777;font-style:italic;border:1px solid #dfdfdf;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;}.link-to-original a{padding-left:4px;font-style:normal;}.hidden-field{display:none;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left;}.description-thin{width:190px;height:40px;}.description-wide{width:390px;}.menu-item-actions{padding-top:15px;line-height:25px;}.save-menu-item{padding-left:10px;float:right;}#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;}.major-publishing-actions{padding:5px 10px;border-bottom:1px solid #eee;}.major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;}.major-publishing-actions .delete-action{line-height:25px;vertical-align:middle;text-align:left;float:right;padding-right:15px;}.menu-name-label span{font-size:11px;font-style:normal;}.submitbox .submitclose{color:#21759B;border-bottom:1px solid #21759B;padding:1px 2px;text-decoration:none;}.submitbox .submitclose:hover{background:#21759B;color:#fff;}.menu-item-settings:after,.button-controls:after,#menu-item-url-wrap:after,#menu-item-name-wrap:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.menu-item-settings,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block;} 
     1#nav-menus-frame{margin-left:300px;}#menu-settings-column{display:block;width:281px;margin-left:-300px;clear:both;float:left;}#menu-settings-column .inside{padding:0 10px;}#menu-settings-column .handlediv{background:url("../images/menu-bits.gif") no-repeat scroll 0 -110px;}#wpbody{position:relative;}#menu-management-liquid{float:left;min-width:100%;}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;}#menu-management .menu-edit{margin-bottom:20px;}#nav-menu-header,#post-body{border-color:#ccc;border-style:solid;}#nav-menu-header{background:url("../images/gray-grad.png") repeat-x scroll left top #dfdfdf;border-width:1px 1px 0 1px;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;-khtml-border-top-right-radius:6px;border-top-right-radius:6px;}#post-body{background:#fff;padding:0 0 10px 10px;border-width:0 1px 1px 1px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;-khtml-border-bottom-right-radius:6px;border-bottom-right-radius:6px;}#post-body-content{position:relative;}.post-body-plain{padding:10px 10px 0 0;}#menu-management .menu-add-new abbr{font-weight:bold;}#menu-management .nav-tabs{padding-left:30px;}#menu-management .nav-tab{background:#f4f4f4;font-weight:bold;border-color:#dfdfdf;}#menu-management .nav-tab-active{background:#ececec;border-color:#ccc;border-bottom-color:#ececec;}#menu-management #major-publishing-actions #delete-action{float:right;margin-right:10px;}#menu-name-label{margin-top:-2px;}#wpbody .open-label{display:inline-block;}#wpbody .open-label span{padding-right:10px;}.js .input-with-default-title{color:#aaa;font-style:italic;}#menu-management .inside{padding:0 10px;}.postbox .howto input{width:180px;float:right;}.customlinkdiv .howto input{width:210px;}#menu-container .submit{margin:0 0 10px;padding:0;}.submitdelete,.submitclose{font-size:11px;}#cancel-save{color:#f00;text-decoration:underline;font-size:11px;margin-left:20px;margin-top:5px;}#cancel-save:hover{background-color:#F00;color:#fff;}.list-controls{float:left;}.add-to-menu{float:right;}.postbox img.waiting{display:none;vertical-align:middle;}form.processing .postbox img.waiting{display:inline;}.button-controls{margin:10px 0;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}#create-menu-name{width:159px;}#manage-menu .inside{padding: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-textbox{width:180px;}.howto span{margin-top:4px;display:block;float:left;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;margin-bottom:10px;}.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 .menu-item-title{cursor:pointer;display:block;}.list li .menu-item-title input{margin-right:3px;margin-top:-3px;}.list li li .menu-item-title{margin-left:14px;}.list li li li .menu-item-title{margin-left:28px;}.list li li li li .menu-item-title{margin-left:42px;}.list li li li li li .menu-item-title{margin-left:56px;}.list li li li li li li .menu-item-title{margin-left:70px;}.list li li li li li li li .menu-item-title{margin-left:84px;}.list li li li li li li li li .menu-item-title{margin-left:98px;}.list li li li li li li li li li .menu-item-title{margin-left:112px;}#menu-container .inside{padding-bottom:10px;}.menu{padding-top:1em;}.menu ul{width:100%;}.menu li{margin-bottom:0;}.menu li dl{clear:both;line-height:1.5em;position:relative;margin-top:13px;}.menu li dl dt{background:url("../images/gray-grad.png") repeat-x scroll left top #DFDFDF;border:1px solid #E6E6E6;clear:both;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #FFF;font-weight:bold;overflow:hidden;}.menu li dl.menu-item-edit-inactive dt{border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;}.menu li dl.menu-item-edit-active dt{-moz-border-radius:6px 6px 0 0;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-right-radius:6px;-khtml-border-top-left-radius:6px;border-top-right-radius:6px;border-top-left-radius:6px;}.js .menu li dl dt{cursor:move;}.menu li.deleting dl dt{background-color:#faa;}.menu li .item-title{padding:7px 0;line-height:20px;display:block;margin-right:13em;}li.menu-item.ui-sortable-helper dl{margin-top:0;}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px;}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px;}.menu-item-depth-0{margin-left:0;}.menu-item-depth-1{margin-left:30px;}.menu-item-depth-2{margin-left:60px;}.menu-item-depth-3{margin-left:90px;}.menu-item-depth-4{margin-left:120px;}.menu-item-depth-5{margin-left:150px;}.menu-item-depth-6{margin-left:180px;}.menu-item-depth-7{margin-left:210px;}.menu-item-depth-8{margin-left:240px;}.menu-item-depth-9{margin-left:270px;}.menu-item-depth-10{margin-left:300px;}.menu-item-depth-11{margin-left:330px;}.menu-item-depth-0 .menu-item-transport{margin-left:0;}.menu-item-depth-1 .menu-item-transport{margin-left:-30px;}.menu-item-depth-2 .menu-item-transport{margin-left:-60px;}.menu-item-depth-3 .menu-item-transport{margin-left:-90px;}.menu-item-depth-4 .menu-item-transport{margin-left:-120px;}.menu-item-depth-5 .menu-item-transport{margin-left:-150px;}.menu-item-depth-6 .menu-item-transport{margin-left:-180px;}.menu-item-depth-7 .menu-item-transport{margin-left:-210px;}.menu-item-depth-8 .menu-item-transport{margin-left:-240px;}.menu-item-depth-9 .menu-item-transport{margin-left:-270px;}.menu-item-depth-10 .menu-item-transport{margin-left:-300px;}.menu-item-depth-11 .menu-item-transport{margin-left:-330px;}.item-type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}.item-controls{font-size:11px;position:absolute;right:20px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-order{padding-right:10px;}.item-controls .item-order a{font-weight:bold;}body.js .item-order{display:none;}.item-controls .menu-item-delete:hover{color:#f00;}.item-edit{background:url("../images/menu-bits.gif") no-repeat scroll 0 -105px;position:absolute;right:-20px;top:0;display:block;width:23px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid #eee;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.menu-item-settings{background:#F9F9F9;width:400px;padding:10px 0 10px 10px;border:solid #E6E6E6;border-width:0 1px 1px 1px;-moz-border-radius:0 0 6px 6px;-webkit-border-bottom-right-radius:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-right-radius:6px;-khtml-border-bottom-left-radius:6px;}.menu-item-settings.menu-item-edit-active{display:block;}.menu-item-settings.menu-item-edit-inactive{display:none;}.add-menu-item-pagelinks{margin:.5em auto;text-align:center;}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:11px;color:#777;font-style:italic;border:1px solid #dfdfdf;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;}.link-to-original a{padding-left:4px;font-style:normal;}.hidden-field{display:none;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left;}.description-thin{width:190px;height:40px;}.description-wide{width:390px;}.menu-item-actions{padding-top:15px;line-height:25px;}.save-menu-item{padding-left:10px;float:right;}#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;}.major-publishing-actions{padding:5px 10px;border-bottom:1px solid #eee;}.major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;}.major-publishing-actions .delete-action{line-height:25px;vertical-align:middle;text-align:left;float:right;padding-right:15px;}.menu-name-label span{font-size:11px;font-style:normal;}.submitbox .submitclose{color:#21759B;border-bottom:1px solid #21759B;padding:1px 2px;text-decoration:none;}.submitbox .submitclose:hover{background:#21759B;color:#fff;}.menu-item-settings:after,.button-controls:after,#menu-item-url-wrap:after,#menu-item-name-wrap:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.menu-item-settings,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block;} 
  • trunk/wp-admin/css/nav-menu.dev.css

    r14314 r14337  
    8080    } 
    8181     
     82    #post-body-content { 
     83        position: relative; 
     84    } 
     85     
    8286    .post-body-plain { 
    8387        padding: 10px 10px 0 0; 
     
    120124    } 
    121125     
    122     .js .label-with-default-title { 
     126    .js .input-with-default-title { 
    123127        color: #aaa; 
    124128        font-style: italic; 
     
    204208} 
    205209.menu li {  
    206     margin: 0; 
     210    margin-bottom: 0; 
    207211} 
    208212.menu li dl { 
     
    210214    line-height:1.5em; 
    211215    position:relative; 
     216    margin-top: 13px; 
    212217} 
    213218.menu li dl dt { 
     
    224229    overflow: hidden; 
    225230} 
    226     .menu li.deleting dl dt { 
    227         background-color:#f66; 
    228         background-image: none; 
    229         text-shadow: 0 0 0 #ccc; 
    230     } 
    231  
    232231.menu li dl.menu-item-edit-inactive dt { 
    233232    border-radius: 6px; 
     
    248247    cursor: move; 
    249248} 
    250 .no-js .menu li dl { 
    251     margin-top: 13px; 
     249.menu li dl dt:hover { 
     250} 
     251.menu li.deleting dl dt { 
     252    background-color:#faa; 
    252253} 
    253254 
     
    259260} 
    260261 
    261 .menu li .sortable-placeholder { 
    262     width: 430px; 
    263 } 
    264 .menu li div.sortable-placeholder { 
    265     background: #f5f5f5; 
    266     border: 1px dashed #bbb; 
    267     margin: 10px 0; 
    268     padding-top:40px; 
    269 } 
    270  
    271 .menu li dl.sortable-placeholder { 
    272     background: #f5f5f5; 
    273     padding-bottom:40px; 
    274 } 
    275  
    276 .menu li li { margin-left: 20px; } 
    277  
    278 /* Drag and Drop */ 
    279 .dropzone { height: 7px; margin: 3px 0 3px 0; } 
     262/* Sortables */ 
     263li.menu-item.ui-sortable-helper dl { 
     264    margin-top: 0; 
     265} 
     266    li.menu-item.ui-sortable-helper .menu-item-transport dl { 
     267        margin-top: 13px; 
     268    } 
     269.menu .sortable-placeholder { 
     270    height: 35px; 
     271    width: 410px; 
     272    margin-top: 13px; 
     273} 
     274 
     275/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */ 
     276.menu-item-depth-0 { margin-left: 0px; } 
     277.menu-item-depth-1 { margin-left: 30px; } 
     278.menu-item-depth-2 { margin-left: 60px; } 
     279.menu-item-depth-3 { margin-left: 90px; } 
     280.menu-item-depth-4 { margin-left: 120px; } 
     281.menu-item-depth-5 { margin-left: 150px; } 
     282.menu-item-depth-6 { margin-left: 180px; } 
     283.menu-item-depth-7 { margin-left: 210px; } 
     284.menu-item-depth-8 { margin-left: 240px; } 
     285.menu-item-depth-9 { margin-left: 270px; } 
     286.menu-item-depth-10 { margin-left: 300px; } 
     287.menu-item-depth-11 { margin-left: 330px; } 
     288 
     289.menu-item-depth-0 .menu-item-transport { margin-left: 0px; } 
     290.menu-item-depth-1 .menu-item-transport { margin-left: -30px; } 
     291.menu-item-depth-2 .menu-item-transport { margin-left: -60px; } 
     292.menu-item-depth-3 .menu-item-transport { margin-left: -90px; } 
     293.menu-item-depth-4 .menu-item-transport { margin-left: -120px; } 
     294.menu-item-depth-5 .menu-item-transport { margin-left: -150px; } 
     295.menu-item-depth-6 .menu-item-transport { margin-left: -180px; } 
     296.menu-item-depth-7 .menu-item-transport { margin-left: -210px; } 
     297.menu-item-depth-8 .menu-item-transport { margin-left: -240px; } 
     298.menu-item-depth-9 .menu-item-transport { margin-left: -270px; } 
     299.menu-item-depth-10 .menu-item-transport { margin-left: -300px; } 
     300.menu-item-depth-11 .menu-item-transport { margin-left: -330px; } 
    280301 
    281302/* Menu item controls */ 
  • trunk/wp-admin/includes/nav-menu.php

    r14306 r14337  
    99 */ 
    1010class Walker_Nav_Menu_Edit extends Walker_Nav_Menu  { 
    11  
     11    /** 
     12     * @see Walker_Nav_Menu::start_lvl() 
     13     * @since 3.0.0 
     14     * 
     15     * @param string $output Passed by reference. 
     16     * @param int $depth Depth of page. 
     17     */ 
     18    function start_lvl(&$output, $depth) {} 
     19     
     20    /** 
     21     * @see Walker_Nav_Menu::end_lvl() 
     22     * @since 3.0.0 
     23     * 
     24     * @param string $output Passed by reference. 
     25     * @param int $depth Depth of page. 
     26     */ 
     27    function end_lvl(&$output, $depth) {} 
     28     
    1229    /** 
    1330     * @see Walker::start_el() 
     
    4259        } 
    4360        ?> 
    44         <li id="menu-item-<?php echo $item_id; ?>" class="menu-item-<?php echo strtolower(esc_attr( $item->append )); ?>"> 
     61        <li id="menu-item-<?php echo $item_id; ?>" class="menu-item menu-item-depth-<?php echo $depth; ?> menu-item-<?php echo strtolower(esc_attr( $item->append )); ?>"> 
    4562            <dl class="<?php  
    4663                if ( isset($_GET['edit-menu-item']) && $item_id == $_GET['edit-menu-item'] ) 
     
    167184                </span> 
    168185                 
    169                 <input type="hidden" name="menu-item-append[<?php echo $item_id; ?>]" value="<?php echo $item->append; ?>" /> 
    170                 <input type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" /> 
    171                 <input type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" /> 
    172                 <input type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" /> 
    173                 <input type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_parent ); ?>" /> 
    174                 <input type="hidden" class="menu-item-position" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" /> 
    175                 <input type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" /> 
    176             </div><!-- .menu-item-settings--> 
     186                <input class="menu-item-data-append" type="hidden" name="menu-item-append[<?php echo $item_id; ?>]" value="<?php echo $item->append; ?>" /> 
     187                <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" /> 
     188                <input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" /> 
     189                <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" /> 
     190                <input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_parent ); ?>" /> 
     191                <input class="menu-item-data-position" type="hidden" class="menu-item-position" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" /> 
     192                <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" /> 
     193            </div><!-- .menu-item-settings-->    
     194            <ul class="menu-item-transport"></ul> 
    177195        <?php 
    178196        $output .= ob_get_clean(); 
     
    427445                <label class="howto" for="custom-menu-item-name"> 
    428446                    <span><?php _e('Text'); ?></span> 
    429                     <input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox label-with-default-title" title="<?php esc_attr_e('Menu Item'); ?>" /> 
     447                    <input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Menu Item'); ?>" /> 
    430448                </label> 
    431449            </p> 
  • trunk/wp-admin/js/nav-menu.dev.js

    r14332 r14337  
    99 */ 
    1010 
    11 var WPNavMenuHandler = function () { 
    12     var $ = jQuery, 
    13     activeHovering = false, 
    14     currentDropzone = null, 
     11var WPNavMenuHandler = function ($) { 
     12    var autoCompleteData = {}, 
    1513     
    16     customLinkNameInput, 
    17     customLinkURLInput, 
    18     customLinkNameDefault, 
    19     customLinkURLDefault, 
    20  
    21     autoCompleteData = {}, 
     14    menuItemDepthPerLevel = 30, // Do not use directly. Use depthToPx and pxToDepth instead. 
     15    globalMaxDepth = 11, 
    2216 
    2317    formatAutocompleteResponse = function( resultRow, pos, total, queryTerm ) { 
     
    8175        return itemData; 
    8276    }, 
    83  
    84     getParentMenuItemDBId = function() { 
    85         var allInputs = this.getElementsByTagName('input'), 
    86         i = allInputs.length, 
    87         j, 
    88         parentEl, 
    89         parentInputs; 
    90  
    91         while( i-- ) { 
    92             if ( -1 != allInputs[i].name.indexOf('menu-item-parent-id[' + parseInt(this.id.replace('menu-item-', ''), 10) + ']') ) { 
    93                 /*  This LI element is not in a submenu */ 
    94                 if ( ! this.parentNode.className || -1 == this.parentNode.className.indexOf('sub-menu') ) { 
    95                     allInputs[i].value = 0; 
    96  
    97                 /* This LI is in a submenu, so need to get the parent's object ID (which is different from the parent's DB ID, the ID in its attributes) */ 
    98                 } else if ( 'LI' == this.parentNode.parentNode.nodeName && -1 != this.parentNode.parentNode.id.indexOf('menu-item-') )  { 
    99                      parentEl = this.parentNode.parentNode; 
    100                      parentInputs = parentEl.getElementsByTagName('input'); 
    101                      j = parentInputs.length; 
    102                      while ( j-- ) { 
    103                         if ( parentInputs[j].name && -1 != parentInputs[j].name.indexOf('menu-item-object-id[' + parseInt(parentEl.id.replace('menu-item-', ''), 10) + ']') ) { 
    104                             allInputs[i].value = parseInt(parentInputs[j].value, 10); 
    105                             break; 
    106                         } 
    107                      } 
    108                 } 
    109                 break; 
    110             } 
    111         } 
     77     
     78    recalculateMenuItemPositions = function() { 
     79        menuList.find('.menu-item-data-position').val( function(index) { return index + 1; } ); 
    11280    }, 
    113  
    114     makeDroppable = function(el) { 
    115         var that = this; 
    116  
    117         $(el).droppable({ 
    118             accept: '.menu li', 
    119             tolerance: 'pointer', 
    120             drop: function(e, ui) { 
    121                 that.eventOnDrop(ui.draggable[0], this, ui, e); 
    122             }, 
    123  
    124             over: function(e,ui) { 
    125                 that.eventOnDragOver(ui.draggable[0], this, ui, e); 
    126             }, 
    127  
    128             out: function(e, ui) { 
    129                 that.eventOnDragOut(ui.draggable[0], this, ui, e); 
    130             } 
    131         }); 
     81     
     82    depthToPx = function(depth) { 
     83        return depth * menuItemDepthPerLevel; 
    13284    }, 
    133  
    134     menuList, 
    135  
    136     setupListItemsDragAndDrop = function(list) { 
    137         if ( ! list ) 
    138             return; 
    139  
    140         var dummyListItem = document.getElementById(list.id + '-dummy-list-item'), 
    141         menuListItems = list.getElementsByTagName('li'), 
    142         i = menuListItems.length; 
    143  
    144         if ( ! dummyListItem ) { 
    145             dummyListItem = document.createElement('li'); 
    146             dummyListItem.id = list.id + '-dummy-list-item'; 
    147             list.appendChild(dummyListItem); 
    148             this.setupListItemDragAndDrop(dummyListItem); 
    149         } 
    150          
    151         while ( i-- ) 
    152             this.setupListItemDragAndDrop(menuListItems[i]); 
    153     }; 
     85     
     86    pxToDepth = function(px) { 
     87        return Math.floor(px / menuItemDepthPerLevel); 
     88    }, 
     89 
     90    menuList; 
     91     
     92    // jQuery extensions 
     93    $.fn.extend({ 
     94        menuItemDepth : function() { 
     95            return pxToDepth( this.eq(0).css('margin-left').slice(0, -2) ); 
     96        }, 
     97        updateDepthClass : function(current, prev) { 
     98            return this.each(function(){ 
     99                var t = $(this); 
     100                prev = prev || t.menuItemDepth(); 
     101                $(this).removeClass('menu-item-depth-'+ prev ) 
     102                    .addClass('menu-item-depth-'+ current ); 
     103            }); 
     104        }, 
     105        shiftDepthClass : function(change) { 
     106            return this.each(function(){ 
     107                var t = $(this), 
     108                    depth = t.menuItemDepth(); 
     109                $(this).removeClass('menu-item-depth-'+ depth ) 
     110                    .addClass('menu-item-depth-'+ (depth + change) ); 
     111            }); 
     112        }, 
     113        childMenuItems : function() { 
     114            var result = $(); 
     115            this.each(function(){ 
     116                var t = $(this), depth = t.menuItemDepth(), next = t.next(); 
     117                while( next.length && next.menuItemDepth() > depth ) { 
     118                    result = result.add( next ); 
     119                    next = next.next(); 
     120                } 
     121            }); 
     122            return result; 
     123        }, 
     124        updateParentMenuItemDBId : function() { 
     125            return this.each(function(){ 
     126                var item = $(this), 
     127                    input = item.find('.menu-item-data-parent-id'), 
     128                    depth = item.menuItemDepth(), 
     129                    parent = item.prev(); 
     130 
     131                if( depth == 0 ) { // Item is on the top level, has no parent 
     132                    input.val(0); 
     133                } else { // Find the parent item, and retrieve its object id. 
     134                    while( parent.menuItemDepth() != depth - 1 ) { 
     135                        parent = parent.prev(); 
     136                    } 
     137                    input.val( parent.find('.menu-item-data-object-id').val() ); 
     138                } 
     139            }); 
     140        }, 
     141        hideAdvancedMenuItemFields : function() { 
     142            return this.each(function(){ 
     143                var that = $(this); 
     144                $('.hide-column-tog').not(':checked').each(function(){ 
     145                    that.find('.field-' + $(this).val() ).addClass('hidden-field'); 
     146                }); 
     147            }); 
     148        }, 
     149    }); 
    154150 
    155151    return { 
     
    157153        // Functions that run on init. 
    158154        init : function() { 
    159             menuList = document.getElementById('menu-to-edit'); 
     155            menuList = $('#menu-to-edit'); 
    160156             
    161157            this.attachMenuEditListeners(); 
     
    165161            this.attachTabsPanelListeners(); 
    166162             
    167             // init drag and drop 
    168             setupListItemsDragAndDrop.call(this, menuList);  
     163            if( menuList.length ) // If no menu, we're in the + tab. 
     164                this.initSortables(); 
    169165 
    170166            this.initToggles(); 
     
    184180            } 
    185181            // hide fields 
    186             this.hideAdvancedMenuItemFields(); 
     182            menuList.hideAdvancedMenuItemFields(); 
    187183        }, 
    188184         
    189         hideAdvancedMenuItemFields : function(container) { 
    190             container = container || '.menu'; 
    191             $('.hide-column-tog').not(':checked').each(function(){ 
    192                 $(container).find('.field-' + $(this).val() ).addClass('hidden-field'); 
    193             }); 
     185        initSortables : function() { 
     186            var currentDepth = 0, originalDepth, minDepth, maxDepth, 
     187                menuLeft = menuList.offset().left; 
     188             
     189            menuList.sortable({ 
     190                handle: ' > dl', 
     191                placeholder: 'sortable-placeholder', 
     192                start: function(e, ui) { 
     193                    var next, height, width, parent, children, maxChildDepth, 
     194                        transport = ui.item.children('.menu-item-transport'); 
     195                     
     196                    // Set depths 
     197                    originalDepth = ui.item.menuItemDepth(); 
     198                    updateCurrentDepth(ui, originalDepth); 
     199                     
     200                    // Attach child elements to parent 
     201                    // Skip the placeholder 
     202                    parent = ( ui.item.next()[0] == ui.placeholder[0] ) ? ui.item.next() : ui.item; 
     203                    children = parent.childMenuItems(); 
     204                    transport.append( children ); 
     205 
     206                    // Now that the element is complete, we can update... 
     207                    updateDepthRange(ui); 
     208                     
     209                    // Update the height of the placeholder to match the moving item. 
     210                    height = transport.outerHeight(); 
     211                    // If there are children, account for distance between top of children and parent 
     212                    height += ( height > 0 ) ? (ui.placeholder.css('margin-top').slice(0, -2) * 1) : 0; 
     213                    height += ui.item.outerHeight(); 
     214                    height -= 2; // Subtract 2 for borders 
     215                    ui.placeholder.height(height); 
     216                     
     217                    // Update the width of the placeholder to match the moving item. 
     218                    maxChildDepth = originalDepth; 
     219                    children.each(function(){ 
     220                        var depth = $(this).menuItemDepth(); 
     221                        maxChildDepth = (depth > maxChildDepth) ? depth : maxChildDepth; 
     222                    }); 
     223                    width = ui.item.find('dl dt').outerWidth(); // Get original width 
     224                    width += depthToPx(maxChildDepth - originalDepth); // Account for children 
     225                    width -= 2; // Subtract 2 for borders 
     226                    ui.placeholder.width(width); 
     227                }, 
     228                stop: function(e, ui) { 
     229                    var children, depthChange = currentDepth - originalDepth; 
     230                     
     231                    // Return child elements to the list 
     232                    children = ui.item.children('.menu-item-transport').children().insertAfter(ui.item); 
     233                     
     234                    // Update depth classes 
     235                    if( depthChange != 0 ) { 
     236                        ui.item.updateDepthClass( currentDepth ); 
     237                        children.shiftDepthClass( depthChange ); 
     238                    } 
     239                    // Finally, update the item/menu data. 
     240                    ui.item.updateParentMenuItemDBId(); 
     241                    recalculateMenuItemPositions(); 
     242                }, 
     243                change: function(e, ui) { 
     244                    // Make sure the placeholder is inside the menu. 
     245                    // Otherwise fix it, or we're in trouble. 
     246                    if( ! ui.placeholder.parent().hasClass('menu') ) 
     247                        ui.placeholder.appendTo(menuList); 
     248                         
     249                    updateDepthRange(ui); 
     250                }, 
     251                sort: function(e, ui) { 
     252                    var depth = pxToDepth(ui.item.offset().left - menuLeft); 
     253                    // Check and correct if depth is not within range. 
     254                    if ( depth < minDepth ) depth = minDepth; 
     255                    else if ( depth > maxDepth ) depth = maxDepth; 
     256                     
     257                    if( depth != currentDepth ) 
     258                        updateCurrentDepth(ui, depth); 
     259                } 
     260            }); 
     261             
     262            function updateDepthRange(ui) { 
     263                var prev = ui.placeholder.prev(), 
     264                    next = ui.placeholder.next(), depth; 
     265                     
     266                // Make sure we don't select the moving item. 
     267                if( prev[0] == ui.item[0] ) prev = prev.prev();  
     268                if( next[0] == ui.item[0] ) next = next.next(); 
     269                 
     270                minDepth = (next.length) ? next.menuItemDepth() : 0; 
     271                 
     272                if( prev.length ) 
     273                    maxDepth = ( (depth = prev.menuItemDepth() + 1) > globalMaxDepth ) ? globalMaxDepth : depth; 
     274                else 
     275                    maxDepth = 0; 
     276            } 
     277             
     278            function updateCurrentDepth(ui, depth) { 
     279                ui.placeholder.updateDepthClass( depth, currentDepth ); 
     280                currentDepth = depth; 
     281            } 
    194282        }, 
    195283         
     
    210298            }); 
    211299        }, 
     300         
     301        /** 
     302         * An interface for managing default values for input elements 
     303         * that is both JS and accessibility-friendly. 
     304         * 
     305         * Input elements that add the class 'input-with-default-title' 
     306         * will have their values set to the provided HTML title when empty. 
     307         */ 
     308        setupInputWithDefaultTitle : function() { 
     309            var name = 'input-with-default-title'; 
     310             
     311            $('.' + name).each( function(){ 
     312                var $t = $(this), title = $t.attr('title'), val = $t.val(); 
     313                $t.data( name, title ); 
     314                 
     315                if( '' == val ) $t.val( title ); 
     316                else if ( title == val ) return; 
     317                else $t.removeClass( name ); 
     318            }).focus( function(){ 
     319                var $t = $(this); 
     320                if( $t.val() == $t.data(name) ) 
     321                    $t.val('').removeClass( name ); 
     322            }).blur( function(){ 
     323                var $t = $(this); 
     324                if( '' == $t.val() ) 
     325                    $t.val( $t.data(name) ).addClass( name ); 
     326            }); 
     327        }, 
    212328 
    213329        attachMenuMetaListeners : function(formEL) { 
     
    215331                return; 
    216332 
    217             var that = this, lwd = 'label-with-default-title'; 
    218              
    219             $('.'+lwd).each(function(){ 
    220                 var $t = $(this), title = $t.attr('title'), val = $t.val(); 
    221                 $t.data(lwd, title); 
    222                 if( '' == val ) $t.val(title); 
    223                 else if ( title == val ) return; 
    224                 else $t.removeClass(lwd); 
    225             }).focus(function(){ 
    226                 var $t = $(this); 
    227                 if( $t.val() == $t.data(lwd) ) 
    228                     $t.val('').removeClass(lwd); 
    229             }).blur(function(){ 
    230                 var $t = $(this); 
    231                 if( '' == $t.val() ) 
    232                     $t.val( $t.data(lwd) ).addClass(lwd); 
    233             }); 
    234  
     333            var that = this; 
     334            this.setupInputWithDefaultTitle(); 
     335             
    235336            // auto-suggest for the quick-search boxes 
    236337            $('input.quick-search').each(function(i, el) { 
     
    240341            $(formEL).bind('submit', function(e) { 
    241342                return that.eventSubmitMetaForm.call(that, this, e); 
    242             }); 
    243             $(formEL).find('input:submit').click(function() { 
    244                 $(this).siblings('img.waiting').show(); 
    245343            }); 
    246344        }, 
     
    287385                } 
    288386            }); 
    289         }, 
    290  
    291         setupListItemDragAndDrop : function(el) { 
    292             var defLists = el.getElementsByTagName('dl'), 
    293             dropZone = this.makeListItemDropzone(el), 
    294             i = defLists.length; 
    295  
    296             makeDroppable.call(this, dropZone); 
    297             this.makeListItemDraggable(el); 
    298  
    299             while( i-- ) { 
    300                 makeDroppable.call(this, defLists[i]); 
    301             } 
    302387        }, 
    303388 
     
    400485 
    401486        /** 
    402          * Callback for the drag over action when dragging a list item. 
    403          * 
    404          * @param object draggedEl The DOM element being dragged 
    405          * @param object dropEl The DOM element on top of which we're dropping. 
    406          */ 
    407         eventOnDragOver : function(draggedEl, dropEl) { 
    408             activeHovering = true; 
    409             currentDropzone = dropEl; 
    410             dropEl.className += ' sortable-placeholder'; 
    411         }, 
    412  
    413         /** 
    414          * Callback for the drag out action when dragging a list item. 
    415          * 
    416          * @param object draggedEl The DOM element being dragged 
    417          * @param object dropEl The DOM element on top of which we're dropping. 
    418          */ 
    419         eventOnDragOut : function(draggedEl, dropEl) { 
    420             activeHovering = false; 
    421  
    422             /* delay the disappearance of the droppable area so it doesn't flicker in and out */ 
    423             (function(that) { 
    424                 setTimeout(function() { 
    425                     if ( that != currentDropzone || ( ! activeHovering && that.className && -1 != that.className.indexOf('sortable-placeholder') ) ) { 
    426                         that.className = that.className.replace(/sortable-placeholder/g, ''); 
    427                     } 
    428                 }, 800); 
    429             })(dropEl); 
    430         }, 
    431  
    432         /** 
    433          * Callback for the drop action when dragging and dropping a list item. 
    434          * 
    435          * @param object draggedEl The DOM element being dragged (and now dropped) 
    436          * @param object dropEl The DOM element on top of which we're dropping. 
    437          */ 
    438         eventOnDrop : function(draggedEl, dropEl) { 
    439             var dropIntoSublist = !! ( -1 == dropEl.className.indexOf('dropzone') ), 
    440             subLists = dropEl.parentNode.getElementsByTagName('ul'), 
    441             hasSublist = false, 
    442             i = subLists.length, 
    443             subList; 
    444  
    445             activeHovering = false; 
    446              
    447             dropEl.className = dropEl.className.replace(/sortable-placeholder/g, ''); 
    448  
    449             if ( dropIntoSublist ) { 
    450                 while ( i-- ) { 
    451                     if ( subLists[i] && 1 != subLists[i].className.indexOf('sub-menu') ) { 
    452                         hasSublist = true; 
    453                         subList = subLists[i]; 
    454                     } 
    455                 } 
    456  
    457                 if ( ! hasSublist ) { 
    458                     subList = document.createElement('ul'); 
    459                     subList.className = 'sub-menu'; 
    460                     dropEl.parentNode.appendChild(subList); 
    461                 } 
    462  
    463                 subList.appendChild(draggedEl); 
    464             } else { 
    465                 dropEl.parentNode.parentNode.insertBefore(draggedEl, dropEl.parentNode); 
    466             } 
    467  
    468             this.recalculateSortOrder(menuList); 
    469  
    470             getParentMenuItemDBId.call(draggedEl);  
    471         }, 
    472  
    473         /** 
    474487         * Callback for the meta form submit action listener. 
    475488         * 
     
    488501            re = new RegExp('menu-item\\[(\[^\\]\]*)'); 
    489502 
     503            thisForm.className = thisForm.className + ' processing', 
    490504            that = this; 
    491505            params['action'] = ''; 
     
    535549            $.post( ajaxurl, params, function(menuMarkup) { 
    536550                processMethod.call(that, menuMarkup, params);    
    537                 $(thisForm).find('img.waiting').hide(); 
     551                thisForm.className = thisForm.className.replace(/processing/g, ''); 
    538552            }); 
    539553 
    540554            return false; 
    541         }, 
    542  
    543         makeListItemDraggable : function(el) { 
    544             // make menu item draggable 
    545             $(el).draggable({ 
    546                 handle: ' > dl', 
    547                 opacity: .8, 
    548                 addClasses: false, 
    549                 helper: 'clone', 
    550                 zIndex: 100 
    551             }); 
    552         }, 
    553  
    554         /** 
    555          * Add the child element that acts as the dropzone for drag-n-drop. 
    556          *  
    557          * @param object el The parent object to which we'll prepend the dropzone. 
    558          * @return object The dropzone DOM element. 
    559          */ 
    560         makeListItemDropzone : function(el) { 
    561             if ( ! el ) 
    562                 return false; 
    563             var divs = el.getElementsByTagName('div'), 
    564             i = divs.length, 
    565             dropZone = document.createElement('div'); 
    566  
    567             while( i-- ) { 
    568                 if ( divs[i].className && -1 != divs[i].className.indexOf('dropzone') && ( el == divs[i].parentNode ) )  
    569                     return divs[i]; 
    570             } 
    571  
    572             dropZone.className = 'dropzone'; 
    573             el.insertBefore(dropZone, el.firstChild); 
    574             return dropZone; 
    575555        }, 
    576556 
     
    582562         */ 
    583563        processAddMenuItemResponse : function( menuMarkup, req ) { 
    584             if ( ! req ) 
    585                 req = {}; 
    586             var dropZone, 
    587             dummyListItem = document.getElementById(menuList.id + '-dummy-list-item'), 
    588             i, 
    589             listElements, 
    590             wrap = document.createElement('ul'); 
    591  
    592             wrap.innerHTML = menuMarkup; 
    593             listElements = wrap.getElementsByTagName('li'); 
    594             i = listElements.length; 
    595             while ( i-- ) { 
    596                 this.setupListItemDragAndDrop(listElements[i]); 
    597                 if ( dummyListItem ) 
    598                     menuList.insertBefore(listElements[i], dummyListItem); 
    599                 else 
    600                     menuList.appendChild(listElements[i]); 
    601             } 
    602  
    603             this.recalculateSortOrder(menuList); 
    604             this.hideAdvancedMenuItemFields(menuList); 
     564            $(menuMarkup).hideAdvancedMenuItemFields().appendTo( menuList ); 
    605565 
    606566            /* set custom link form back to defaults */ 
     
    669629        }, 
    670630 
    671         recalculateSortOrder : function(parentEl) { 
    672             var allInputs = parentEl.getElementsByTagName('input'), 
    673             i, 
    674             j = 0; 
    675  
    676             for( i = 0; i < allInputs.length; i++ ) { 
    677                 if ( allInputs[i].name && -1 != allInputs[i].name.indexOf('menu-item-position') ) { 
    678                     allInputs[i].value = ++j; 
    679                 } 
    680             } 
    681         }, 
    682  
    683631        removeMenuItem : function(el) { 
    684             if ( ! el )  
    685                 return false; 
    686  
    687             var subMenus = el.getElementsByTagName('ul'), 
    688             subs, 
    689             i; 
    690  
    691             if ( subMenus[0] ) { 
    692                 subs = subMenus[0].getElementsByTagName('li'); 
    693                 for ( i = 0; i < subs.length; i++ ) { 
    694                     if ( subs[i].id && -1 != subs[i].id.indexOf('menu-item-') && subs[i].parentNode == subMenus[0] ) { 
    695                         el.parentNode.insertBefore(subs[i], el); 
    696                     } 
    697                 } 
    698             } 
    699  
    700             el.className += ' deleting'; 
    701             $(el).fadeOut( 350 , function() { 
    702                 this.parentNode.removeChild(this);   
    703             }); 
    704              
    705             this.recalculateSortOrder(menuList); 
     632            el = $(el) 
     633            var children = el.childMenuItems(); 
     634             
     635            el.addClass('deleting').fadeOut( 350 , function() { 
     636                el.remove(); 
     637                children.shiftDepthClass(-1).updateParentMenuItemDBId(); 
     638                recalculateMenuItemPositions(); 
     639            }); 
    706640        } 
    707641    } 
    708642} 
    709643 
    710 var wpNavMenu = new WPNavMenuHandler(); 
     644var wpNavMenu = new WPNavMenuHandler(jQuery); 
    711645 
    712646jQuery(function() { 
  • trunk/wp-admin/js/nav-menu.js

    r14333 r14337  
    1 var WPNavMenuHandler=function(){var h=jQuery,a=false,j=null,g,d,m,i,l={},n=function(p,t,q,s){if(p&&p[0]){var r=h.parseJSON(p[0]);if(r.post_title){if(r.ID&&r.post_type){l[r.post_title]={ID:r.ID,object_type:r.post_type}}return r.post_title}}},o=function(p,t,q,s){if(p&&p[0]){var r=h.parseJSON(p[0]);if(r.post_title){return r.post_title}}},b=function(v,u){if(!v){return false}u=u||document;var q=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-append","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"],p={},r=u.getElementsByTagName("input"),t=r.length,s,w=document.getElementById("nav-menu-meta-object-id").value;while(t--){s=q.length;while(s--){if(r[t]&&r[t].name&&"menu-item["+v+"]["+q[s]+"]"==r[t].name){p[q[s]]=r[t].value}}}return p},c=function(){var t=this.getElementsByTagName("input"),q=t.length,p,s,r;while(q--){if(-1!=t[q].name.indexOf("menu-item-parent-id["+parseInt(this.id.replace("menu-item-",""),10)+"]")){if(!this.parentNode.className||-1==this.parentNode.className.indexOf("sub-menu")){t[q].value=0}else{if("LI"==this.parentNode.parentNode.nodeName&&-1!=this.parentNode.parentNode.id.indexOf("menu-item-")){s=this.parentNode.parentNode;r=s.getElementsByTagName("input");p=r.length;while(p--){if(r[p].name&&-1!=r[p].name.indexOf("menu-item-object-id["+parseInt(s.id.replace("menu-item-",""),10)+"]")){t[q].value=parseInt(r[p].value,10);break}}}}break}}},e=function(p){var q=this;h(p).droppable({accept:".menu li",tolerance:"pointer",drop:function(s,r){q.eventOnDrop(r.draggable[0],this,r,s)},over:function(s,r){q.eventOnDragOver(r.draggable[0],this,r,s)},out:function(s,r){q.eventOnDragOut(r.draggable[0],this,r,s)}})},k,f=function(s){if(!s){return}var q=document.getElementById(s.id+"-dummy-list-item"),p=s.getElementsByTagName("li"),r=p.length;if(!q){q=document.createElement("li");q.id=s.id+"-dummy-list-item";s.appendChild(q);this.setupListItemDragAndDrop(q)}while(r--){this.setupListItemDragAndDrop(p[r])}};return{init:function(){k=document.getElementById("menu-to-edit");this.attachMenuEditListeners();this.attachMenuMetaListeners(document.getElementById("nav-menu-meta"));this.attachTabsPanelListeners();f.call(this,k);this.initToggles()},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(p){h(".field-"+p).removeClass("hidden-field")};columns.unchecked=function(p){h(".field-"+p).addClass("hidden-field")};this.hideAdvancedMenuItemFields()},hideAdvancedMenuItemFields:function(p){p=p||".menu";h(".hide-column-tog").not(":checked").each(function(){h(p).find(".field-"+h(this).val()).addClass("hidden-field")})},attachMenuEditListeners:function(){var p=this;h("#update-nav-menu").bind("click",function(q){if(q.target&&q.target.className){if(-1!=q.target.className.indexOf("item-edit")){return p.eventOnClickEditLink(q.target)}else{if(-1!=q.target.className.indexOf("menu-delete")){return p.eventOnClickMenuDelete(q.target)}else{if(-1!=q.target.className.indexOf("item-delete")){return p.eventOnClickMenuItemDelete(q.target)}else{if(-1!=q.target.className.indexOf("item-close")){return p.eventOnClickCloseLink(q.target)}}}}}})},attachMenuMetaListeners:function(q){if(!q){return}var r=this,p="label-with-default-title";h("."+p).each(function(){var u=h(this),t=u.attr("title"),s=u.val();u.data(p,t);if(""==s){u.val(t)}else{if(t==s){return}else{u.removeClass(p)}}}).focus(function(){var s=h(this);if(s.val()==s.data(p)){s.val("").removeClass(p)}}).blur(function(){var s=h(this);if(""==s.val()){s.val(s.data(p)).addClass(p)}});h("input.quick-search").each(function(s,t){r.setupQuickSearchEventListeners(t)});h(q).bind("submit",function(s){return r.eventSubmitMetaForm.call(r,this,s)});h(q).find("input:submit").click(function(){h(this).siblings("img.waiting").show()})},attachTabsPanelListeners:function(){h("#menu-settings-column").bind("click",function(u){if(u.target&&u.target.className&&-1!=u.target.className.indexOf("nav-tab-link")){var v,q=/#(.*)$/.exec(u.target.href),t,w=h(u.target).parents(".inside").first()[0],p=w?w.getElementsByTagName("input"):[],r=p.length;while(r--){p[r].checked=false}h(".tabs-panel",w).each(function(){if(this.className){this.className=this.className.replace("tabs-panel-active","tabs-panel-inactive")}});h(".tabs",w).each(function(){this.className=this.className.replace("tabs","")});u.target.parentNode.className+=" tabs";if(q&&q[1]){v=document.getElementById(q[1]);if(v){v.className=v.className.replace("tabs-panel-inactive","tabs-panel-active")}}return false}else{if(u.target&&u.target.className&&-1!=u.target.className.indexOf("select-all")){var s=/#(.*)$/.exec(u.target.href);if(s&&s[1]){h("#"+s[1]+" .tabs-panel-active input[type=checkbox]").attr("checked","checked");return false}}}})},setupListItemDragAndDrop:function(r){var p=r.getElementsByTagName("dl"),s=this.makeListItemDropzone(r),q=p.length;e.call(this,s);this.makeListItemDraggable(r);while(q--){e.call(this,p[q])}},setupQuickSearchEventListeners:function(p){var q=this;h(p).autocomplete(ajaxurl+"?action=menu-quick-search&type="+p.name,{delay:500,formatItem:n,formatResult:o,minchars:2,multiple:false}).bind("blur",function(t){var r=l[this.value],s=this;if(r){h.post(ajaxurl+"?action=menu-quick-search&type=get-post-item&response-format=markup",r,function(u){q.processQuickSearchQueryResponse.call(q,u,r);l[s.value]=false})}})},eventOnClickEditLink:function(p){var r,q=/#(.*)$/.exec(p.href);if(q&&q[1]){r=h("#"+q[1]);if(0!=r.length){if(r.hasClass("menu-item-edit-inactive")){r.slideDown("fast").siblings("dl").andSelf().removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{r.slideUp("fast").siblings("dl").andSelf().removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCloseLink:function(p){h(p).closest(".menu-item-settings").siblings("dl").find(".item-edit").click();return false},eventOnClickMenuDelete:function(p){if(confirm(navMenuL10n.warnDeleteMenu)){return true}else{return false}},eventOnClickMenuItemDelete:function(p){var s,r,q=this;if(confirm(navMenuL10n.warnDeleteMenuItem)){r=/_wpnonce=([a-zA-Z0-9]*)$/.exec(p.href);if(r&&r[1]){s=parseInt(p.id.replace("delete-",""),10);h.post(ajaxurl,{action:"delete-menu-item","menu-item":s,_wpnonce:r[1]},function(t){if("1"==t){q.removeMenuItem(document.getElementById("menu-item-"+s))}});return false}return true}else{return false}},eventOnDragOver:function(p,q){a=true;j=q;q.className+=" sortable-placeholder"},eventOnDragOut:function(p,q){a=false;(function(r){setTimeout(function(){if(r!=j||(!a&&r.className&&-1!=r.className.indexOf("sortable-placeholder"))){r.className=r.className.replace(/sortable-placeholder/g,"")}},800)})(q)},eventOnDrop:function(s,v){var t=!!(-1==v.className.indexOf("dropzone")),q=v.parentNode.getElementsByTagName("ul"),u=false,r=q.length,p;a=false;v.className=v.className.replace(/sortable-placeholder/g,"");if(t){while(r--){if(q[r]&&1!=q[r].className.indexOf("sub-menu")){u=true;p=q[r]}}if(!u){p=document.createElement("ul");p.className="sub-menu";v.parentNode.appendChild(p)}p.appendChild(s)}else{v.parentNode.parentNode.insertBefore(s,v.parentNode)}this.recalculateSortOrder(k);c.call(s)},eventSubmitMetaForm:function(q,w){var u=q.getElementsByTagName("input"),t=u.length,s,y,p,v,r={},x=function(){},z=new RegExp("menu-item\\[([^\\]]*)");that=this;r.action="";while(t--){if(u[t].name&&-1!=u[t].name.indexOf("menu-item-object-id")&&u[t].checked||("undefined"!=typeof u[t].id&&"custom-menu-item-url"==u[t].id&&""!=u[t].value&&"http://"!=u[t].value)){r.action="add-menu-item";x=that.processAddMenuItemResponse;v=z.exec(u[t].name);p="undefined"==typeof v[1]?0:parseInt(v[1],10);y=b(p);for(s in y){r["menu-item["+p+"]["+s+"]"]=y[s]}u[t].checked=false}else{if(""==r.action&&""!=u[t].value&&u[t].className&&-1!=u[t].className.search(/quick-search\b[^-]/)){r.action="menu-quick-search";r.q=u[t].value;r["response-format"]="markup";r.type=u[t].name;x=that.processQuickSearchQueryResponse}}}r.menu=q.elements.menu.value;r["menu-settings-column-nonce"]=q.elements["menu-settings-column-nonce"].value;h.post(ajaxurl,r,function(A){x.call(that,A,r);h(q).find("img.waiting").hide()});return false},makeListItemDraggable:function(p){h(p).draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100})},makeListItemDropzone:function(r){if(!r){return false}var q=r.getElementsByTagName("div"),p=q.length,s=document.createElement("div");while(p--){if(q[p].className&&-1!=q[p].className.indexOf("dropzone")&&(r==q[p].parentNode)){return q[p]}}s.className="dropzone";r.insertBefore(s,r.firstChild);return s},processAddMenuItemResponse:function(p,u){if(!u){u={}}var v,q=document.getElementById(k.id+"-dummy-list-item"),s,r,t=document.createElement("ul");t.innerHTML=p;r=t.getElementsByTagName("li");s=r.length;while(s--){this.setupListItemDragAndDrop(r[s]);if(q){k.insertBefore(r[s],q)}else{k.appendChild(r[s])}}this.recalculateSortOrder(k);this.hideAdvancedMenuItemFields(k);h("#custom-menu-item-name").val("").blur();h("#custom-menu-item-url").val("http://")},processQuickSearchQueryResponse:function(t,y){if(!y){y={}}var q=document.createElement("ul"),p=document.getElementById("nav-menu-meta"),u,x,r,z,v,w=new RegExp("menu-item\\[([^\\]]*)"),s;r=w.exec(t);if(r&&r[1]){v=r[1];while(p.elements["menu-item["+v+"][menu-item-type]"]){v--}if(v!=r[1]){t=t.replace(new RegExp("menu-item\\["+r[1]+"\\]","g"),"menu-item["+v+"]")}}q.innerHTML=t;x=q.getElementsByTagName("li");if(x[0]&&y.object_type){s=document.getElementById(y.object_type+"-search-checklist");if(s){s.appendChild(x[0])}}else{if(y.type){r=/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*)/.exec(y.type);if(r&&r[2]){s=document.getElementById(r[2]+"-search-checklist");if(s){u=x.length;if(!u){z=document.createElement("li");z.appendChild(document.createTextNode(navMenuL10n.noResultsFound));s.appendChild(z)}while(u--){s.appendChild(x[u])}}}}}},recalculateSortOrder:function(r){var s=r.getElementsByTagName("input"),q,p=0;for(q=0;q<s.length;q++){if(s[q].name&&-1!=s[q].name.indexOf("menu-item-position")){s[q].value=++p}}},removeMenuItem:function(r){if(!r){return false}var s=r.getElementsByTagName("ul"),q,p;if(s[0]){q=s[0].getElementsByTagName("li");for(p=0;p<q.length;p++){if(q[p].id&&-1!=q[p].id.indexOf("menu-item-")&&q[p].parentNode==s[0]){r.parentNode.insertBefore(q[p],r)}}}r.className+=" deleting";h(r).fadeOut(350,function(){this.parentNode.removeChild(this)});this.recalculateSortOrder(k)}}};var wpNavMenu=new WPNavMenuHandler();jQuery(function(){wpNavMenu.init()}); 
     1var WPNavMenuHandler=function(d){var h={},f=30,c=11,j=function(l,p,m,o){if(l&&l[0]){var n=d.parseJSON(l[0]);if(n.post_title){if(n.ID&&n.post_type){h[n.post_title]={ID:n.ID,object_type:n.post_type}}return n.post_title}}},k=function(l,p,m,o){if(l&&l[0]){var n=d.parseJSON(l[0]);if(n.post_title){return n.post_title}}},b=function(r,q){if(!r){return false}q=q||document;var m=["menu-item-db-id","menu-item-object-id","menu-item-object","menu-item-parent-id","menu-item-position","menu-item-type","menu-item-append","menu-item-title","menu-item-url","menu-item-description","menu-item-attr-title","menu-item-target","menu-item-classes","menu-item-xfn"],l={},n=q.getElementsByTagName("input"),p=n.length,o,s=document.getElementById("nav-menu-meta-object-id").value;while(p--){o=m.length;while(o--){if(n[p]&&n[p].name&&"menu-item["+r+"]["+m[o]+"]"==n[p].name){l[m[o]]=n[p].value}}}return l},a=function(){g.find(".menu-item-data-position").val(function(l){return l+1})},e=function(l){return l*f},i=function(l){return Math.floor(l/f)},g;d.fn.extend({menuItemDepth:function(){return i(this.eq(0).css("margin-left").slice(0,-2))},updateDepthClass:function(m,l){return this.each(function(){var n=d(this);l=l||n.menuItemDepth();d(this).removeClass("menu-item-depth-"+l).addClass("menu-item-depth-"+m)})},shiftDepthClass:function(l){return this.each(function(){var m=d(this),n=m.menuItemDepth();d(this).removeClass("menu-item-depth-"+n).addClass("menu-item-depth-"+(n+l))})},childMenuItems:function(){var l=d();this.each(function(){var m=d(this),o=m.menuItemDepth(),n=m.next();while(n.length&&n.menuItemDepth()>o){l=l.add(n);n=n.next()}});return l},updateParentMenuItemDBId:function(){return this.each(function(){var n=d(this),l=n.find(".menu-item-data-parent-id"),o=n.menuItemDepth(),m=n.prev();if(o==0){l.val(0)}else{while(m.menuItemDepth()!=o-1){m=m.prev()}l.val(m.find(".menu-item-data-object-id").val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var l=d(this);d(".hide-column-tog").not(":checked").each(function(){l.find(".field-"+d(this).val()).addClass("hidden-field")})})},});return{init:function(){g=d("#menu-to-edit");this.attachMenuEditListeners();this.attachMenuMetaListeners(document.getElementById("nav-menu-meta"));this.attachTabsPanelListeners();if(g.length){this.initSortables()}this.initToggles()},initToggles:function(){postboxes.add_postbox_toggles("nav-menus");columns.useCheckboxesForHidden();columns.checked=function(l){d(".field-"+l).removeClass("hidden-field")};columns.unchecked=function(l){d(".field-"+l).addClass("hidden-field")};g.hideAdvancedMenuItemFields()},initSortables:function(){var o=0,m,p,r,n=g.offset().left;g.sortable({handle:" > dl",placeholder:"sortable-placeholder",start:function(w,x){var v,z,s,y,t,A,u=x.item.children(".menu-item-transport");m=x.item.menuItemDepth();l(x,m);y=(x.item.next()[0]==x.placeholder[0])?x.item.next():x.item;t=y.childMenuItems();u.append(t);q(x);z=u.outerHeight();z+=(z>0)?(x.placeholder.css("margin-top").slice(0,-2)*1):0;z+=x.item.outerHeight();z-=2;x.placeholder.height(z);A=m;t.each(function(){var B=d(this).menuItemDepth();A=(B>A)?B:A});s=x.item.find("dl dt").outerWidth();s+=e(A-m);s-=2;x.placeholder.width(s)},stop:function(v,u){var t,s=o-m;t=u.item.children(".menu-item-transport").children().insertAfter(u.item);if(s!=0){u.item.updateDepthClass(o);t.shiftDepthClass(s)}u.item.updateParentMenuItemDBId();a()},change:function(t,s){if(!s.placeholder.parent().hasClass("menu")){s.placeholder.appendTo(g)}q(s)},sort:function(t,s){var u=i(s.item.offset().left-n);if(u<p){u=p}else{if(u>r){u=r}}if(u!=o){l(s,u)}}});function q(u){var t=u.placeholder.prev(),s=u.placeholder.next(),v;if(t[0]==u.item[0]){t=t.prev()}if(s[0]==u.item[0]){s=s.next()}p=(s.length)?s.menuItemDepth():0;if(t.length){r=((v=t.menuItemDepth()+1)>c)?c:v}else{r=0}}function l(s,t){s.placeholder.updateDepthClass(t,o);o=t}},attachMenuEditListeners:function(){var l=this;d("#update-nav-menu").bind("click",function(m){if(m.target&&m.target.className){if(-1!=m.target.className.indexOf("item-edit")){return l.eventOnClickEditLink(m.target)}else{if(-1!=m.target.className.indexOf("menu-delete")){return l.eventOnClickMenuDelete(m.target)}else{if(-1!=m.target.className.indexOf("item-delete")){return l.eventOnClickMenuItemDelete(m.target)}else{if(-1!=m.target.className.indexOf("item-close")){return l.eventOnClickCloseLink(m.target)}}}}}})},setupInputWithDefaultTitle:function(){var l="input-with-default-title";d("."+l).each(function(){var o=d(this),n=o.attr("title"),m=o.val();o.data(l,n);if(""==m){o.val(n)}else{if(n==m){return}else{o.removeClass(l)}}}).focus(function(){var m=d(this);if(m.val()==m.data(l)){m.val("").removeClass(l)}}).blur(function(){var m=d(this);if(""==m.val()){m.val(m.data(l)).addClass(l)}})},attachMenuMetaListeners:function(l){if(!l){return}var m=this;this.setupInputWithDefaultTitle();d("input.quick-search").each(function(n,o){m.setupQuickSearchEventListeners(o)});d(l).bind("submit",function(n){return m.eventSubmitMetaForm.call(m,this,n)})},attachTabsPanelListeners:function(){d("#menu-settings-column").bind("click",function(q){if(q.target&&q.target.className&&-1!=q.target.className.indexOf("nav-tab-link")){var r,m=/#(.*)$/.exec(q.target.href),p,s=d(q.target).parents(".inside").first()[0],l=s?s.getElementsByTagName("input"):[],n=l.length;while(n--){l[n].checked=false}d(".tabs-panel",s).each(function(){if(this.className){this.className=this.className.replace("tabs-panel-active","tabs-panel-inactive")}});d(".tabs",s).each(function(){this.className=this.className.replace("tabs","")});q.target.parentNode.className+=" tabs";if(m&&m[1]){r=document.getElementById(m[1]);if(r){r.className=r.className.replace("tabs-panel-inactive","tabs-panel-active")}}return false}else{if(q.target&&q.target.className&&-1!=q.target.className.indexOf("select-all")){var o=/#(.*)$/.exec(q.target.href);if(o&&o[1]){d("#"+o[1]+" .tabs-panel-active input[type=checkbox]").attr("checked","checked");return false}}}})},setupQuickSearchEventListeners:function(l){var m=this;d(l).autocomplete(ajaxurl+"?action=menu-quick-search&type="+l.name,{delay:500,formatItem:j,formatResult:k,minchars:2,multiple:false}).bind("blur",function(p){var n=h[this.value],o=this;if(n){d.post(ajaxurl+"?action=menu-quick-search&type=get-post-item&response-format=markup",n,function(q){m.processQuickSearchQueryResponse.call(m,q,n);h[o.value]=false})}})},eventOnClickEditLink:function(l){var n,m=/#(.*)$/.exec(l.href);if(m&&m[1]){n=d("#"+m[1]);if(0!=n.length){if(n.hasClass("menu-item-edit-inactive")){n.slideDown("fast").siblings("dl").andSelf().removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active")}else{n.slideUp("fast").siblings("dl").andSelf().removeClass("menu-item-edit-active").addClass("menu-item-edit-inactive")}return false}}},eventOnClickCloseLink:function(l){d(l).closest(".menu-item-settings").siblings("dl").find(".item-edit").click();return false},eventOnClickMenuDelete:function(l){if(confirm(navMenuL10n.warnDeleteMenu)){return true}else{return false}},eventOnClickMenuItemDelete:function(l){var o,n,m=this;if(confirm(navMenuL10n.warnDeleteMenuItem)){n=/_wpnonce=([a-zA-Z0-9]*)$/.exec(l.href);if(n&&n[1]){o=parseInt(l.id.replace("delete-",""),10);d.post(ajaxurl,{action:"delete-menu-item","menu-item":o,_wpnonce:n[1]},function(p){if("1"==p){m.removeMenuItem(document.getElementById("menu-item-"+o))}});return false}return true}else{return false}},eventSubmitMetaForm:function(m,s){var q=m.getElementsByTagName("input"),p=q.length,o,u,l,r,n={},t=function(){},v=new RegExp("menu-item\\[([^\\]]*)");m.className=m.className+" processing",that=this;n.action="";while(p--){if(q[p].name&&-1!=q[p].name.indexOf("menu-item-object-id")&&q[p].checked||("undefined"!=typeof q[p].id&&"custom-menu-item-url"==q[p].id&&""!=q[p].value&&"http://"!=q[p].value)){n.action="add-menu-item";t=that.processAddMenuItemResponse;r=v.exec(q[p].name);l="undefined"==typeof r[1]?0:parseInt(r[1],10);u=b(l);for(o in u){n["menu-item["+l+"]["+o+"]"]=u[o]}q[p].checked=false}else{if(""==n.action&&""!=q[p].value&&q[p].className&&-1!=q[p].className.search(/quick-search\b[^-]/)){n.action="menu-quick-search";n.q=q[p].value;n["response-format"]="markup";n.type=q[p].name;t=that.processQuickSearchQueryResponse}}}n.menu=m.elements.menu.value;n["menu-settings-column-nonce"]=m.elements["menu-settings-column-nonce"].value;d.post(ajaxurl,n,function(w){t.call(that,w,n);m.className=m.className.replace(/processing/g,"")});return false},processAddMenuItemResponse:function(l,m){d(l).hideAdvancedMenuItemFields().appendTo(g);d("#custom-menu-item-name").val("").blur();d("#custom-menu-item-url").val("http://")},processQuickSearchQueryResponse:function(p,u){if(!u){u={}}var m=document.createElement("ul"),l=document.getElementById("nav-menu-meta"),q,t,n,v,r,s=new RegExp("menu-item\\[([^\\]]*)"),o;n=s.exec(p);if(n&&n[1]){r=n[1];while(l.elements["menu-item["+r+"][menu-item-type]"]){r--}if(r!=n[1]){p=p.replace(new RegExp("menu-item\\["+n[1]+"\\]","g"),"menu-item["+r+"]")}}m.innerHTML=p;t=m.getElementsByTagName("li");if(t[0]&&u.object_type){o=document.getElementById(u.object_type+"-search-checklist");if(o){o.appendChild(t[0])}}else{if(u.type){n=/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*)/.exec(u.type);if(n&&n[2]){o=document.getElementById(n[2]+"-search-checklist");if(o){q=t.length;if(!q){v=document.createElement("li");v.appendChild(document.createTextNode(navMenuL10n.noResultsFound));o.appendChild(v)}while(q--){o.appendChild(t[q])}}}}}},removeMenuItem:function(m){m=d(m);var l=m.childMenuItems();m.addClass("deleting").fadeOut(350,function(){m.remove();l.shiftDepthClass(-1).updateParentMenuItemDBId();a()})}}};var wpNavMenu=new WPNavMenuHandler(jQuery);jQuery(function(){wpNavMenu.init()}); 
  • trunk/wp-admin/nav-menus.php

    r14333 r14337  
    385385                                <label class="menu-name-label howto open-label" for="menu-name"> 
    386386                                    <span><?php _e('Menu Name'); ?></span> 
    387                                     <input name="menu-name" type="text" class="menu-name regular-text menu-item-textbox label-with-default-title" title="Enter menu name here." value="<?php echo esc_attr( $nav_menu_selected_title  ); ?>" /> 
     387                                    <input name="menu-name" type="text" class="menu-name regular-text menu-item-textbox input-with-default-title" title="Enter menu name here." value="<?php echo esc_attr( $nav_menu_selected_title  ); ?>" /> 
    388388                                    <br class="clear" /> 
    389389                                </label> 
  • trunk/wp-includes/script-loader.php

    r14333 r14337  
    394394 
    395395        // Custom Navigation 
    396         $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", false, '20100502' ); 
     396        $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", false, '20100502a' ); 
    397397        $scripts->localize( 'nav-menu', 'navMenuL10n', array( 
    398398            'custom' => _x('Custom', 'menu nav item type'), 
     
    475475    $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' ); 
    476476    $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' ); 
    477     $styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100429a' ); 
     477    $styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100501a' ); 
    478478 
    479479    foreach ( $rtl_styles as $rtl_style ) { 
Note: See TracChangeset for help on using the changeset viewer.