<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[14852] trunk: First pass on better UX for menu item save.</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/14852">14852</a></dd>
<dt>Author</dt> <dd>nacin</dd>
<dt>Date</dt> <dd>2010-05-24 19:50:20 +0000 (Mon, 24 May 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>First pass on better UX for menu item save. props koopersmith, see <a href="http://trac.wordpress.org/ticket/13525">#13525</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminadminajaxphp">trunk/wp-admin/admin-ajax.php</a></li>
<li><a href="#trunkwpadmincssnavmenucss">trunk/wp-admin/css/nav-menu.css</a></li>
<li><a href="#trunkwpadmincssnavmenudevcss">trunk/wp-admin/css/nav-menu.dev.css</a></li>
<li><a href="#trunkwpadminincludesnavmenuphp">trunk/wp-admin/includes/nav-menu.php</a></li>
<li><a href="#trunkwpadminjsnavmenudevjs">trunk/wp-admin/js/nav-menu.dev.js</a></li>
<li><a href="#trunkwpadminjsnavmenujs">trunk/wp-admin/js/nav-menu.js</a></li>
<li><a href="#trunkwpadminnavmenusphp">trunk/wp-admin/nav-menus.php</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminadminajaxphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/admin-ajax.php (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/admin-ajax.php        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-admin/admin-ajax.php        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -399,17 +399,6 @@
</span><span class="cx">         else
</span><span class="cx">                 die('0');
</span><span class="cx">         break;
</span><del>-case 'delete-menu-item' :
-        $menu_item_id = (int) $_POST['menu-item'];
-        check_ajax_referer( 'delete-menu_item_' . $menu_item_id );
-        if ( ! current_user_can( 'edit_theme_options' ) )
-                die('-1');
-
-        if ( is_nav_menu_item( $menu_item_id ) &amp;&amp; wp_delete_post( $menu_item_id, true ) )
-                die('1');
-        else
-                die('0');
-        break;
</del><span class="cx"> case 'delete-meta' :
</span><span class="cx">         check_ajax_referer( &quot;delete-meta_$id&quot; );
</span><span class="cx">         if ( !$meta = get_post_meta_by_id( $id ) )
</span></span></pre></div>
<a id="trunkwpadmincssnavmenucss"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/css/nav-menu.css (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/css/nav-menu.css        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-admin/css/nav-menu.css        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -1 +1 @@
</span><del>-html,body{min-width:950px;}#nav-menus-frame{margin-left:300px;}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px;}.no-js #wpbody-content #menu-settings-column{padding-top:31px;}#menu-settings-column .inside{clear:both;padding:0 10px;}#menu-settings-column .handlediv{background:url(&quot;../images/menu-bits.gif&quot;) 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{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-nav{margin:0 20px;}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff;}#menu-management .nav-tabs-arrow a{color:#C1C1C1;}#menu-management .nav-tabs-arrow a:hover{color:#D54E21;}#menu-management .nav-tabs-arrow a:active{color:#464646;}#menu-management .nav-tabs-arrow-left{left:0;}#menu-management .nav-tabs-arrow-right{right:0;text-align:right;}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden;}#menu-management .nav-tabs{padding-left:30px;padding-right:10px;}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px;}#menu-management .nav-tab{margin-bottom:0;background:#f4f4f4;font-weight:bold;border-color:#dfdfdf;}#menu-management .nav-tab-active{border-color:#ccc;}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px;}#select-nav-menu{width:100px;display:inline;}#menu-management .major-publishing-actions #delete-action{float:right;margin-right:10px;}#menu-name-label{margin-top:-2px;}#wpbody .open-label{display:block;float:left;}#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;}#nav-menu-theme-locations .howto select{width:100%;}#nav-menu-theme-locations .button-controls{text-align:right;}.add-menu-item-view-all{height:400px;}#menu-container .submit{margin:0 0 10px;padding:0;}.meta-sep,.submitdelete,.submitclose{display:block;float:left;font-size:11px;margin:4px 0;line-height:15px;}.meta-sep{padding:0 2px;}#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;margin-top:5px;}.add-to-menu{float:right;}.postbox img.waiting{display:none;vertical-align:middle;}.button-controls{clear:both;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;}#menu-container .inside{padding-bottom:10px;}.menu{padding-top:1em;}#menu-to-edit{padding:1em 0;}.menu ul{width:100%;}.menu li{margin-bottom:0;position:relative;}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin-top:13px;}.menu-item-handle{border:1px solid #E6E6E6;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #FFF;font-weight:bold;overflow:hidden;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;}.menu-item-edit-active .menu-item-handle{-moz-border-radius:6px 6px 0 0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.js .menu-item-handle{cursor:move;}.menu li.deleting .menu-item-handle{background-color:#f66;background-image:none;text-shadow:0 0 0 #ccc;}.menu-item-handle .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(&quot;../images/menu-bits.gif&quot;) 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;display:block;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-active{display:block;}.menu-item-settings-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;}.save-menu-item{float:right;padding-left:10px;}#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{clear:both;padding:5px 10px;zoom:1;}.major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;}.major-publishing-actions .delete-action{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-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,#post-body-content:after,.button-controls:after,.major-publishing-actions:after,.menu-item-settings:after{clear:both;content:&quot;.&quot;;display:block;height:0;visibility:hidden;}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block;}
</del><span class="cx">\ No newline at end of file
</span><ins>+html,body{min-width:950px;}#nav-menus-frame{margin-left:300px;}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px;}.no-js #wpbody-content #menu-settings-column{padding-top:31px;}#menu-settings-column .inside{clear:both;padding:0 10px;}#menu-settings-column .handlediv{background:url(&quot;../images/menu-bits.gif&quot;) 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{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-nav{margin:0 20px;}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff;}#menu-management .nav-tabs-arrow a{color:#C1C1C1;}#menu-management .nav-tabs-arrow a:hover{color:#D54E21;}#menu-management .nav-tabs-arrow a:active{color:#464646;}#menu-management .nav-tabs-arrow-left{left:0;}#menu-management .nav-tabs-arrow-right{right:0;text-align:right;}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden;}#menu-management .nav-tabs{padding-left:30px;padding-right:10px;}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px;}#menu-management .nav-tab{margin-bottom:0;background:#f4f4f4;font-weight:bold;border-color:#dfdfdf;}#menu-management .nav-tab-active{border-color:#ccc;}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px;}#select-nav-menu{width:100px;display:inline;}#menu-management .major-publishing-actions #delete-action{float:right;margin-right:10px;}#menu-name-label{margin-top:-2px;}#wpbody .open-label{display:block;float:left;}#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;}#nav-menu-theme-locations .howto select{width:100%;}#nav-menu-theme-locations .button-controls{text-align:right;}.add-menu-item-view-all{height:400px;}#menu-container .submit{margin:0 0 10px;padding:0;}.meta-sep,.submitdelete,.submitcancel{display:block;float:left;font-size:11px;margin:4px 0;line-height:15px;}.meta-sep{padding:0 2px;}#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;margin-top:5px;}.add-to-menu{float:right;}.postbox img.waiting{display:none;vertical-align:middle;}.button-controls{clear:both;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;}#menu-container .inside{padding-bottom:10px;}.menu{padding-top:1em;}#menu-to-edit{padding:1em 0;}.menu ul{width:100%;}.menu li{margin-bottom:0;position:relative;}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin-top:13px;}.menu-item-handle{border:1px solid #E6E6E6;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #FFF;font-weight:bold;overflow:hidden;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;}.menu-item-edit-active .menu-item-handle{-moz-border-radius:6px 6px 0 0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.js .menu-item-handle{cursor:move;}.menu li.deleting .menu-item-handle{background-color:#f66;background-image:none;text-shadow:0 0 0 #ccc;}.menu-item-handle .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(&quot;../images/menu-bits.gif&quot;) 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;display:block;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-edit-active .menu-item-settings{display:block;}.menu-item-edit-inactive .menu-item-settings{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;}#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{clear:both;padding:5px 10px;zoom:1;}.major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;}.major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:right;padding-right:15px;}.menu-name-label span{font-size:11px;font-style:normal;}.submitbox .submitcancel{color:#21759B;border-bottom:1px solid #21759B;padding:1px 2px;text-decoration:none;}.submitbox .submitcancel:hover{background:#21759B;color:#fff;}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,#post-body-content:after,.button-controls:after,.major-publishing-actions:after,.menu-item-settings:after{clear:both;content:&quot;.&quot;;display:block;height:0;visibility:hidden;}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block;}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpadmincssnavmenudevcss"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/css/nav-menu.dev.css (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/css/nav-menu.dev.css        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-admin/css/nav-menu.dev.css        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> 
</span><span class="cx"> .meta-sep,
</span><span class="cx"> .submitdelete, 
</span><del>-.submitclose {
</del><ins>+.submitcancel {
</ins><span class="cx">         display:block;
</span><span class="cx">         float:left;
</span><span class="cx">         font-size: 11px;
</span><span class="lines">@@ -422,11 +422,11 @@
</span><span class="cx">         -khtml-border-bottom-right-radius: 6px;
</span><span class="cx">         -khtml-border-bottom-left-radius: 6px;
</span><span class="cx"> }
</span><del>-.menu-item-settings-active {
</del><ins>+.menu-item-edit-active .menu-item-settings {
</ins><span class="cx">         display:block;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-.menu-item-settings-inactive {
</del><ins>+.menu-item-edit-inactive .menu-item-settings {
</ins><span class="cx">         display:none;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -473,10 +473,6 @@
</span><span class="cx"> .menu-item-actions {
</span><span class="cx">         padding-top: 15px;
</span><span class="cx"> }
</span><del>-.save-menu-item {
-        float: right;
-        padding-left: 10px;
-}
</del><span class="cx"> 
</span><span class="cx"> #cancel-save { cursor: pointer; }
</span><span class="cx"> #cancel-save:hover { color: #fff !important; }
</span><span class="lines">@@ -506,13 +502,13 @@
</span><span class="cx">         font-size: 11px;
</span><span class="cx">         font-style: normal;
</span><span class="cx"> }
</span><del>-.submitbox .submitclose {
</del><ins>+.submitbox .submitcancel {
</ins><span class="cx">         color: #21759B;
</span><span class="cx">         border-bottom: 1px solid #21759B;
</span><span class="cx">         padding: 1px 2px;
</span><span class="cx">         text-decoration: none;
</span><span class="cx"> }
</span><del>-.submitbox .submitclose:hover {
</del><ins>+.submitbox .submitcancel:hover {
</ins><span class="cx">         background: #21759B;
</span><span class="cx">         color: #fff;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkwpadminincludesnavmenuphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/nav-menu.php (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/nav-menu.php        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-admin/includes/nav-menu.php        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -59,13 +59,8 @@
</span><span class="cx">                         $original_title = $original_object-&gt;post_title;
</span><span class="cx">                 }
</span><span class="cx">                 ?&gt;
</span><del>-                &lt;li id=&quot;menu-item-&lt;?php echo $item_id; ?&gt;&quot; class=&quot;menu-item menu-item-depth-&lt;?php echo $depth; ?&gt; menu-item-&lt;?php echo esc_attr( $item-&gt;object ); ?&gt;&quot;&gt;
-                        &lt;dl class=&quot;menu-item-bar &lt;?php
-                                if ( isset($_GET['edit-menu-item']) &amp;&amp; $item_id == $_GET['edit-menu-item'] )
-                                        echo 'menu-item-edit-active menu-item-bar-active';
-                                else
-                                        echo 'menu-item-edit-inactive menu-item-bar-inactive';
-                        ?&gt;&quot;&gt;
</del><ins>+                &lt;li id=&quot;menu-item-&lt;?php echo $item_id; ?&gt;&quot; class=&quot;menu-item menu-item-depth-&lt;?php echo $depth; ?&gt; menu-item-&lt;?php echo esc_attr( $item-&gt;object ); ?&gt; menu-item-edit-&lt;?php echo ( isset( $_GET['edit-menu-item'] ) &amp;&amp; $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'; ?&gt;&quot;&gt;
+                        &lt;dl class=&quot;menu-item-bar&quot;&gt;
</ins><span class="cx">                                 &lt;dt class=&quot;menu-item-handle&quot;&gt;
</span><span class="cx">                                         &lt;span class=&quot;item-title&quot;&gt;&lt;?php echo esc_html( $item-&gt;title ); ?&gt;&lt;/span&gt;
</span><span class="cx">                                         &lt;span class=&quot;item-controls&quot;&gt;
</span><span class="lines">@@ -104,12 +99,7 @@
</span><span class="cx">                                 &lt;/dt&gt;
</span><span class="cx">                         &lt;/dl&gt;
</span><span class="cx"> 
</span><del>-                        &lt;div class=&quot;menu-item-settings &lt;?php
-                                if ( isset($_GET['edit-menu-item']) &amp;&amp; $item_id == $_GET['edit-menu-item'] )
-                                        echo 'menu-item-edit-active menu-item-settings-active';
-                                else
-                                        echo 'menu-item-edit-inactive menu-item-settings-inactive';
-                        ?&gt;&quot; id=&quot;menu-item-settings-&lt;?php echo $item_id; ?&gt;&quot;&gt;
</del><ins>+                        &lt;div class=&quot;menu-item-settings&quot; id=&quot;menu-item-settings-&lt;?php echo $item_id; ?&gt;&quot;&gt;
</ins><span class="cx">                                 &lt;?php if( 'custom' == $item-&gt;type ) : ?&gt;
</span><span class="cx">                                         &lt;p class=&quot;field-url description description-wide&quot;&gt;
</span><span class="cx">                                                 &lt;label for=&quot;edit-menu-item-url-&lt;?php echo $item_id; ?&gt;&quot;&gt;
</span><span class="lines">@@ -178,8 +168,7 @@
</span><span class="cx">                                                         remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
</span><span class="cx">                                                 ),
</span><span class="cx">                                                 'delete-menu_item_' . $item_id
</span><del>-                                        ); ?&gt;&quot;&gt;&lt;?php _e('Remove'); ?&gt;&lt;/a&gt; &lt;span class=&quot;meta-sep&quot;&gt; | &lt;/span&gt; &lt;a class=&quot;item-close submitclose&quot; id=&quot;close-&lt;?php echo $item_id; ?&gt;&quot; href=&quot;&lt;?php echo admin_url( 'nav-menus.php' ); ?&gt;&quot;&gt;&lt;?php _e('Close'); ?&gt;&lt;/a&gt;
-                                        &lt;input class=&quot;button-primary save-menu-item&quot; name=&quot;save_menu_item&quot; type=&quot;submit&quot; value=&quot;&lt;?php esc_attr_e('Save Menu Item'); ?&gt;&quot; /&gt;
</del><ins>+                                        ); ?&gt;&quot;&gt;&lt;?php _e('Remove'); ?&gt;&lt;/a&gt; &lt;span class=&quot;meta-sep&quot;&gt; | &lt;/span&gt; &lt;a class=&quot;item-cancel submitcancel&quot; id=&quot;cancel-&lt;?php echo $item_id; ?&gt;&quot; href=&quot;&lt;?php echo admin_url( 'nav-menus.php' ); ?&gt;&quot;&gt;&lt;?php _e('Cancel'); ?&gt;&lt;/a&gt;
</ins><span class="cx">                                 &lt;/div&gt;
</span><span class="cx"> 
</span><span class="cx">                                 &lt;input class=&quot;menu-item-data-db-id&quot; type=&quot;hidden&quot; name=&quot;menu-item-db-id[&lt;?php echo $item_id; ?&gt;]&quot; value=&quot;&lt;?php echo $item_id; ?&gt;&quot; /&gt;
</span></span></pre></div>
<a id="trunkwpadminjsnavmenudevjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/nav-menu.dev.js (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/nav-menu.dev.js        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-admin/js/nav-menu.dev.js        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -132,9 +132,10 @@
</span><span class="cx"> 
</span><span class="cx">                                                 // Retrieve menu item data
</span><span class="cx">                                                 $(checkboxes).each(function(){
</span><del>-                                                        var listItemDBIDMatch = re.exec( $(this).attr('name') ),
</del><ins>+                                                        var t = $(this),
+                                                                listItemDBIDMatch = re.exec( t.attr('name') ),
</ins><span class="cx">                                                                 listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10);
</span><del>-                                                        menuItems[listItemDBID] = api.getListDataFromID(listItemDBID);
</del><ins>+                                                        menuItems[listItemDBID] = t.closest('li').getItemData( 'add-menu-item', listItemDBID );
</ins><span class="cx">                                                 });
</span><span class="cx">                                                 // Add the items
</span><span class="cx">                                                 api.addItemToMenu(menuItems, processMethod, function(){
</span><span class="lines">@@ -143,6 +144,76 @@
</span><span class="cx">                                                         t.find('img.waiting').hide();
</span><span class="cx">                                                 });
</span><span class="cx">                                         });
</span><ins>+                                },
+                                getItemData : function( itemType, id ) {
+                                        itemType = itemType || 'menu-item';
+                                        
+                                        var itemData = {}, i,
+                                        fields = [
+                                                'menu-item-db-id',
+                                                'menu-item-object-id',
+                                                'menu-item-object',
+                                                'menu-item-parent-id',
+                                                'menu-item-position',
+                                                'menu-item-type',
+                                                'menu-item-title',
+                                                'menu-item-url',
+                                                'menu-item-description',
+                                                'menu-item-attr-title',
+                                                'menu-item-target',
+                                                'menu-item-classes',
+                                                'menu-item-xfn'
+                                        ];
+                                        
+                                        if( !id &amp;&amp; itemType == 'menu-item' ) {
+                                                id = this.find('.menu-item-data-db-id').val();
+                                        }
+                                        
+                                        if( !id ) return itemData;
+                                        
+                                        this.find('input').each(function() {
+                                                var field;
+                                                i = fields.length;
+                                                while ( i-- ) {
+                                                        if( itemType == 'menu-item' )
+                                                                field = fields[i] + '[' + id + ']';
+                                                        else if( itemType == 'add-menu-item' )
+                                                                field = 'menu-item[' + id + '][' + fields[i] + ']';
+                                                                
+                                                        if (
+                                                                this.name &amp;&amp;
+                                                                field == this.name
+                                                        ) {
+                                                                itemData[fields[i]] = this.value;
+                                                        }
+                                                }
+                                        });
+                                        
+                                        return itemData;
+                                },
+                                setItemData : function( itemData, itemType, id ) { // Can take a type, such as 'menu-item', or an id.
+                                        itemType = itemType || 'menu-item';
+                                        
+                                        if( !id &amp;&amp; itemType == 'menu-item' ) {
+                                                id = $('.menu-item-data-db-id', this).val();
+                                        }
+                                        
+                                        if( !id ) return this;
+                                        
+                                        this.find('input').each(function() {
+                                                var t = $(this), field;
+                                                $.each( itemData, function( attr, val ) {
+                                                        if( itemType == 'menu-item' )
+                                                                field = attr + '[' + id + ']';
+                                                        else if( itemType == 'add-menu-item' )
+                                                                field = 'menu-item[' + id + '][' + attr + ']';
+                                                        
+                                                        if ( field == t.attr('name') ) {
+                                                                t.val( val );
+                                                        }
+                                                });
+                                        });
+                                        return this;
</ins><span class="cx">                                 }
</span><span class="cx">                         });
</span><span class="cx">                 },
</span><span class="lines">@@ -306,8 +377,8 @@
</span><span class="cx">                                                 return that.eventOnClickMenuDelete(e.target);
</span><span class="cx">                                         } else if ( -1 != e.target.className.indexOf('item-delete') ) {
</span><span class="cx">                                                 return that.eventOnClickMenuItemDelete(e.target);
</span><del>-                                        } else if ( -1 != e.target.className.indexOf('item-close') ) {
-                                                return that.eventOnClickCloseLink(e.target);
</del><ins>+                                        } else if ( -1 != e.target.className.indexOf('item-cancel') ) {
+                                                return that.eventOnClickCancelLink(e.target);
</ins><span class="cx">                                         }
</span><span class="cx">                                 }
</span><span class="cx">                         });
</span><span class="lines">@@ -498,7 +569,7 @@
</span><span class="cx">                                 if ( api.menusChanged )
</span><span class="cx">                                         return navMenuL10n.saveAlert;
</span><span class="cx">                         };
</span><del>-                        $('input.menu-save, input.save-menu-item').click(function(){
</del><ins>+                        $('input.menu-save').click(function(){
</ins><span class="cx">                                 window.onbeforeunload = null;
</span><span class="cx">                         });
</span><span class="cx">                 },
</span><span class="lines">@@ -652,20 +723,22 @@
</span><span class="cx">                 },
</span><span class="cx"> 
</span><span class="cx">                 eventOnClickEditLink : function(clickedEl) {
</span><del>-                        var activeEdit,
</del><ins>+                        var settings, item,
</ins><span class="cx">                         matchedSection = /#(.*)$/.exec(clickedEl.href);
</span><span class="cx">                         if ( matchedSection &amp;&amp; matchedSection[1] ) {
</span><del>-                                activeEdit = $('#'+matchedSection[1]);
-                                if( 0 != activeEdit.length ) {
-                                        if( activeEdit.hasClass('menu-item-edit-inactive') ) {
-                                                activeEdit.slideDown('fast')
-                                                        .siblings('dl').andSelf()
-                                                        .removeClass('menu-item-edit-inactive')
</del><ins>+                                settings = $('#'+matchedSection[1]);
+                                item = settings.parent();
+                                if( 0 != item.length ) {
+                                        if( item.hasClass('menu-item-edit-inactive') ) {
+                                                if( ! settings.data('menu-item-data') ) {
+                                                        settings.data( 'menu-item-data', settings.getItemData() );
+                                                }
+                                                settings.slideDown('fast');
+                                                item.removeClass('menu-item-edit-inactive')
</ins><span class="cx">                                                         .addClass('menu-item-edit-active');
</span><span class="cx">                                         } else {
</span><del>-                                                activeEdit.slideUp('fast')
-                                                        .siblings('dl').andSelf()
-                                                        .removeClass('menu-item-edit-active')
</del><ins>+                                                settings.slideUp('fast');
+                                                item.removeClass('menu-item-edit-active')
</ins><span class="cx">                                                         .addClass('menu-item-edit-inactive');
</span><span class="cx">                                         }
</span><span class="cx">                                         return false;
</span><span class="lines">@@ -673,8 +746,9 @@
</span><span class="cx">                         }
</span><span class="cx">                 },
</span><span class="cx"> 
</span><del>-                eventOnClickCloseLink : function(clickedEl) {
-                        $(clickedEl).closest('.menu-item-settings').siblings('dl').find('.item-edit').click();
</del><ins>+                eventOnClickCancelLink : function(clickedEl) {
+                        var settings = $(clickedEl).closest('.menu-item-settings');
+                        settings.setItemData( settings.data('menu-item-data') );
</ins><span class="cx">                         return false;
</span><span class="cx">                 },
</span><span class="cx"> 
</span><span class="lines">@@ -699,28 +773,9 @@
</span><span class="cx">                 },
</span><span class="cx"> 
</span><span class="cx">                 eventOnClickMenuItemDelete : function(clickedEl) {
</span><del>-                        var itemID,
-                        matchedSection,
-                        that = this;
-
-                        matchedSection = /_wpnonce=([a-zA-Z0-9]*)$/.exec(clickedEl.href);
-                        if ( matchedSection &amp;&amp; matchedSection[1] ) {
-                                itemID = parseInt(clickedEl.id.replace('delete-', ''), 10);
-                                $.post(
-                                        ajaxurl,
-                                        {
-                                                action:'delete-menu-item',
-                                                'menu-item':itemID,
-                                                '_wpnonce':matchedSection[1]
-                                        },
-                                        function (resp) {
-                                                if ( '1' == resp )
-                                                        that.removeMenuItem(document.getElementById('menu-item-' + itemID));
-                                        }
-                                );
-                                return false;
-                        }
-                        return true;
</del><ins>+                        var itemID = parseInt(clickedEl.id.replace('delete-', ''), 10);
+                        api.removeMenuItem( $('#menu-item-' + itemID) );
+                        return false;
</ins><span class="cx">                 },
</span><span class="cx"> 
</span><span class="cx">                 /**
</span><span class="lines">@@ -765,55 +820,17 @@
</span><span class="cx">                 },
</span><span class="cx"> 
</span><span class="cx">                 removeMenuItem : function(el) {
</span><del>-                        el = $(el);
</del><span class="cx">                         var children = el.childMenuItems();
</span><span class="cx"> 
</span><del>-                        el.addClass('deleting').fadeOut( 350 , function() {
-                                el.remove();
-                                children.shiftDepthClass(-1).updateParentMenuItemDBId();
-                        });
</del><ins>+                        el.addClass('deleting').animate({
+                                        opacity : 0,
+                                        height: 0
+                                }, 350, function() {
+                                        el.remove();
+                                        children.shiftDepthClass(-1).updateParentMenuItemDBId();
+                                });
</ins><span class="cx">                 },
</span><span class="cx"> 
</span><del>-                getListDataFromID : function(menuItemID, parentEl) {
-                        if ( ! menuItemID )
-                                return false;
-                        parentEl = parentEl || document;
-                        var fields = [
-                                'menu-item-db-id',
-                                'menu-item-object-id',
-                                'menu-item-object',
-                                'menu-item-parent-id',
-                                'menu-item-position',
-                                'menu-item-type',
-                                'menu-item-title',
-                                'menu-item-url',
-                                'menu-item-description',
-                                'menu-item-attr-title',
-                                'menu-item-target',
-                                'menu-item-classes',
-                                'menu-item-xfn'
-                        ],
-                        itemData = {},
-                        inputs = parentEl.getElementsByTagName('input'),
-                        i = inputs.length,
-                        j;
-
-                        while ( i-- ) {
-                                j = fields.length;
-                                while ( j-- ) {
-                                        if (
-                                                inputs[i] &amp;&amp;
-                                                inputs[i].name &amp;&amp;
-                                                'menu-item[' + menuItemID + '][' + fields[j] + ']' == inputs[i].name
-                                        ) {
-                                                itemData[fields[j]] = inputs[i].value;
-                                        }
-                                }
-                        }
-
-                        return itemData;
-                },
-
</del><span class="cx">                 depthToPx : function(depth) {
</span><span class="cx">                         return depth * api.options.menuItemDepthPerLevel;
</span><span class="cx">                 },
</span></span></pre></div>
<a id="trunkwpadminjsnavmenujs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/nav-menu.js (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/nav-menu.js        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-admin/js/nav-menu.js        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -1 +1 @@
</span><del>-var wpNavMenu;(function(b){var a=wpNavMenu={options:{menuItemDepthPerLevel:30,globalMaxDepth:11},menuList:undefined,targetList:undefined,menusChanged:false,init:function(){a.menuList=b(&quot;#menu-to-edit&quot;);a.targetList=a.menuList;this.jQueryExtensions();this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachAddMenuItemListeners();this.attachQuickSearchListeners();this.attachThemeLocationsListeners();this.attachTabsPanelListeners();this.attachHomeLinkListener();this.attachUnsavedChangesListener();if(a.menuList.length){this.initSortables()}this.initToggles();this.initTabManager()},jQueryExtensions:function(){b.fn.extend({menuItemDepth:function(){var c=this.eq(0).css(&quot;margin-left&quot;);return a.pxToDepth(c&amp;&amp;-1!=c.indexOf(&quot;px&quot;)?c.slice(0,-2):0)},updateDepthClass:function(d,c){return this.each(function(){var e=b(this);c=c||e.menuItemDepth();b(this).removeClass(&quot;menu-item-depth-&quot;+c).addClass(&quot;menu-item-depth-&quot;+d)})},shiftDepthClass:function(c){return this.each(function(){var d=b(this),e=d.menuItemDepth();b(this).removeClass(&quot;menu-item-depth-&quot;+e).addClass(&quot;menu-item-depth-&quot;+(e+c))})},childMenuItems:function(){var c=b();this.each(function(){var d=b(this),f=d.menuItemDepth(),e=d.next();while(e.length&amp;&amp;e.menuItemDepth()&gt;f){c=c.add(e);e=e.next()}});return c},updateParentMenuItemDBId:function(){return this.each(function(){var e=b(this),c=e.find(&quot;.menu-item-data-parent-id&quot;),f=e.menuItemDepth(),d=e.prev();if(f==0){c.val(0)}else{while(d.menuItemDepth()!=f-1){d=d.prev()}c.val(d.find(&quot;.menu-item-data-db-id&quot;).val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var c=b(this);b(&quot;.hide-column-tog&quot;).not(&quot;:checked&quot;).each(function(){c.find(&quot;.field-&quot;+b(this).val()).addClass(&quot;hidden-field&quot;)})})},addSelectedToMenu:function(c){return this.each(function(){var e=b(this),d={},g=e.find(&quot;.tabs-panel-active .categorychecklist li input:checked&quot;),f=new RegExp(&quot;menu-item\\[([^\\]]*)&quot;);c=c||a.addMenuItemToBottom;if(!g.length){return false}e.find(&quot;img.waiting&quot;).show();b(g).each(function(){var h=f.exec(b(this).attr(&quot;name&quot;)),i=&quot;undefined&quot;==typeof h[1]?0:parseInt(h[1],10);d[i]=a.getListDataFromID(i)});a.addItemToMenu(d,c,function(){g.removeAttr(&quot;checked&quot;);e.find(&quot;img.waiting&quot;).hide()})})}})},initToggles:function(){postboxes.add_postbox_toggles(&quot;nav-menus&quot;);columns.useCheckboxesForHidden();columns.checked=function(c){b(&quot;.field-&quot;+c).removeClass(&quot;hidden-field&quot;)};columns.unchecked=function(c){b(&quot;.field-&quot;+c).addClass(&quot;hidden-field&quot;)};a.menuList.hideAdvancedMenuItemFields()},initSortables:function(){var m=0,l,j,e,h,n,k,o,d,g,i=a.menuList.offset().left;a.menuList.sortable({handle:&quot;.menu-item-handle&quot;,placeholder:&quot;sortable-placeholder&quot;,start:function(w,v){var p,t,s,q,r,u;g=v.item.children(&quot;.menu-item-transport&quot;);l=v.item.menuItemDepth();f(v,l);s=(v.item.next()[0]==v.placeholder[0])?v.item.next():v.item;q=s.childMenuItems();g.append(q);p=g.outerHeight();p+=(p&gt;0)?(v.placeholder.css(&quot;margin-top&quot;).slice(0,-2)*1):0;p+=v.helper.outerHeight();d=p;p-=2;v.placeholder.height(p);r=l;q.each(function(){var x=b(this).menuItemDepth();r=(x&gt;r)?x:r});t=v.helper.find(&quot;.menu-item-handle&quot;).outerWidth();t+=a.depthToPx(r-l);t-=2;v.placeholder.width(t);u=v.placeholder.next();u.css(&quot;margin-top&quot;,d+&quot;px&quot;);v.placeholder.detach();b(this).sortable(&quot;refresh&quot;);v.item.after(v.placeholder);u.css(&quot;margin-top&quot;,0);c(v)},stop:function(s,r){var q,p=m-l;q=g.children().insertAfter(r.item);if(p!=0){r.item.updateDepthClass(m);q.shiftDepthClass(p);a.registerChange()}r.item.updateParentMenuItemDBId();r.item[0].style.top=0},change:function(q,p){if(!p.placeholder.parent().hasClass(&quot;menu&quot;)){(h.length)?h.after(p.placeholder):a.menuList.prepend(p.placeholder)}c(p)},sort:function(q,p){var s=p.helper.offset(),r=a.pxToDepth(s.left-i);if(r&gt;e||s.top&lt;k){r=e}else{if(r&lt;j){r=j}}if(r!=m){f(p,r)}if(o&amp;&amp;s.top+d&gt;o){n.after(p.placeholder);c(p);b(this).sortable(&quot;refreshPositions&quot;)}},update:function(q,p){a.registerChange()}});function c(p){var q;h=p.placeholder.prev();n=p.placeholder.next();if(h[0]==p.item[0]){h=h.prev()}if(n[0]==p.item[0]){n=n.next()}k=(h.length)?h.offset().top+h.height():0;o=(n.length)?n.offset().top+n.height()/3:0;j=(n.length)?n.menuItemDepth():0;if(h.length){e=((q=h.menuItemDepth()+1)&gt;a.options.globalMaxDepth)?a.options.globalMaxDepth:q}else{e=0}}function f(p,q){p.placeholder.updateDepthClass(q,m);m=q}},attachMenuEditListeners:function(){var c=this;b(&quot;#update-nav-menu&quot;).bind(&quot;click&quot;,function(d){if(d.target&amp;&amp;d.target.className){if(-1!=d.target.className.indexOf(&quot;item-edit&quot;)){return c.eventOnClickEditLink(d.target)}else{if(-1!=d.target.className.indexOf(&quot;menu-save&quot;)){return c.eventOnClickMenuSave(d.target)}else{if(-1!=d.target.className.indexOf(&quot;menu-delete&quot;)){return c.eventOnClickMenuDelete(d.target)}else{if(-1!=d.target.className.indexOf(&quot;item-delete&quot;)){return c.eventOnClickMenuItemDelete(d.target)}else{if(-1!=d.target.className.indexOf(&quot;item-close&quot;)){return c.eventOnClickCloseLink(d.target)}}}}}}})},setupInputWithDefaultTitle:function(){var c=&quot;input-with-default-title&quot;;b(&quot;.&quot;+c).each(function(){var f=b(this),e=f.attr(&quot;title&quot;),d=f.val();f.data(c,e);if(&quot;&quot;==d){f.val(e)}else{if(e==d){return}else{f.removeClass(c)}}}).focus(function(){var d=b(this);if(d.val()==d.data(c)){d.val(&quot;&quot;).removeClass(c)}}).blur(function(){var d=b(this);if(&quot;&quot;==d.val()){d.addClass(c).val(d.data(c))}})},attachAddMenuItemListeners:function(){var c=b(&quot;#nav-menu-meta&quot;);c.find(&quot;.add-to-menu input&quot;).click(function(){a.registerChange();b(this).trigger(&quot;wp-add-menu-item&quot;,[a.addMenuItemToBottom]);return false});c.find(&quot;.customlinkdiv&quot;).bind(&quot;wp-add-menu-item&quot;,function(f,d){a.addCustomLink(d)});c.find(&quot;.posttypediv, .taxonomydiv&quot;).bind(&quot;wp-add-menu-item&quot;,function(f,d){b(this).addSelectedToMenu(d)})},attachThemeLocationsListeners:function(){var d=b(&quot;#nav-menu-theme-locations&quot;),c={};c.action=&quot;menu-locations-save&quot;;c[&quot;menu-settings-column-nonce&quot;]=b(&quot;#menu-settings-column-nonce&quot;).val();d.find(&quot;input[type=submit]&quot;).click(function(){d.find(&quot;select&quot;).each(function(){c[this.name]=b(this).val()});d.find(&quot;.waiting&quot;).show();b.post(ajaxurl,c,function(e){d.find(&quot;.waiting&quot;).hide()});return false})},attachQuickSearchListeners:function(){var c;b(&quot;.quick-search&quot;).keypress(function(f){var d=b(this);if(13==f.which){a.updateQuickSearchResults(d);return false}if(c){clearTimeout(c)}c=setTimeout(function(){a.updateQuickSearchResults(d)},400)}).attr(&quot;autocomplete&quot;,&quot;off&quot;)},updateQuickSearchResults:function(d){var c,g,e=2,f=d.val();if(f.length&lt;e){return}c=d.parents(&quot;.tabs-panel&quot;);g={action:&quot;menu-quick-search&quot;,&quot;response-format&quot;:&quot;markup&quot;,menu:b(&quot;#menu&quot;).val(),&quot;menu-settings-column-nonce&quot;:b(&quot;#menu-settings-column-nonce&quot;).val(),q:f,type:d.attr(&quot;name&quot;)};b(&quot;img.waiting&quot;,c).show();b.post(ajaxurl,g,function(h){a.processQuickSearchQueryResponse(h,g,c)})},addCustomLink:function(c){var e=b(&quot;#custom-menu-item-url&quot;).val(),d=b(&quot;#custom-menu-item-name&quot;).val();c=c||a.addMenuItemToBottom;if(&quot;&quot;==e||&quot;http://&quot;==e){return false}b(&quot;.customlinkdiv img.waiting&quot;).show();this.addLinkToMenu(e,d,c,function(){b(&quot;.customlinkdiv img.waiting&quot;).hide();b(&quot;#custom-menu-item-name&quot;).val(&quot;&quot;).blur();b(&quot;#custom-menu-item-url&quot;).val(&quot;http://&quot;)})},addLinkToMenu:function(e,d,c,f){c=c||a.addMenuItemToBottom;f=f||function(){};a.addItemToMenu({&quot;-1&quot;:{&quot;menu-item-type&quot;:&quot;custom&quot;,&quot;menu-item-url&quot;:e,&quot;menu-item-title&quot;:d}},c,f)},addItemToMenu:function(e,c,g){var f=b(&quot;#menu&quot;).val(),d=b(&quot;#menu-settings-column-nonce&quot;).val();c=c||function(){};g=g||function(){};params={action:&quot;add-menu-item&quot;,menu:f,&quot;menu-settings-column-nonce&quot;:d,&quot;menu-item&quot;:e};b.post(ajaxurl,params,function(h){c(h,params);g()})},addMenuItemToBottom:function(c,d){b(c).hideAdvancedMenuItemFields().appendTo(a.targetList)},addMenuItemToTop:function(c,d){b(c).hideAdvancedMenuItemFields().prependTo(a.targetList)},attachHomeLinkListener:function(){b(&quot;.add-home-link&quot;,&quot;.customlinkdiv&quot;).click(function(c){a.addLinkToMenu(navMenuL10n.homeurl,navMenuL10n.home,a.addMenuItemToTop);return false})},attachUnsavedChangesListener:function(){b(&quot;#menu-management input, #menu-management select, #menu-management, #menu-management textarea&quot;).change(function(){a.registerChange()});window.onbeforeunload=function(){if(a.menusChanged){return navMenuL10n.saveAlert}};b(&quot;input.menu-save, input.save-menu-item&quot;).click(function(){window.onbeforeunload=null})},registerChange:function(){a.menusChanged=true},attachTabsPanelListeners:function(){b(&quot;#menu-settings-column&quot;).bind(&quot;click&quot;,function(h){var f,d,i,c,g=b(h.target);if(g.hasClass(&quot;nav-tab-link&quot;)){d=/#(.*)$/.exec(h.target.href);if(d&amp;&amp;d[1]){d=d[1]}else{return false}i=g.parents(&quot;.inside&quot;).first();b(&quot;input&quot;,i).removeAttr(&quot;checked&quot;);b(&quot;.tabs-panel-active&quot;,i).removeClass(&quot;tabs-panel-active&quot;).addClass(&quot;tabs-panel-inactive&quot;);b(&quot;#&quot;+d,i).removeClass(&quot;tabs-panel-inactive&quot;).addClass(&quot;tabs-panel-active&quot;);b(&quot;.tabs&quot;,i).removeClass(&quot;tabs&quot;);g.parent().addClass(&quot;tabs&quot;);b(&quot;.quick-search&quot;,i).focus();return false}else{if(g.hasClass(&quot;select-all&quot;)){f=/#(.*)$/.exec(h.target.href);if(f&amp;&amp;f[1]){c=b(&quot;#&quot;+f[1]+&quot; .tabs-panel-active .menu-item-title input&quot;);if(c.length===c.filter(&quot;:checked&quot;).length){c.removeAttr(&quot;checked&quot;)}else{c.attr(&quot;checked&quot;,&quot;checked&quot;)}return false}}}})},initTabManager:function(){var h=b(&quot;.nav-tabs-wrapper&quot;),i=h.children(&quot;.nav-tabs&quot;),g=i.children(&quot;.nav-tab-active&quot;),l=i.children(&quot;.nav-tab&quot;),e=0,m,f,k,d,j=false;function c(){f=h.offset().left;m=f+h.width();g.makeTabVisible()}b.fn.extend({makeTabVisible:function(){var o=this.eq(0),p,n;if(!o.length){return}p=o.offset().left;n=p+o.outerWidth();if(n&gt;m){i.animate({&quot;margin-left&quot;:&quot;+=&quot;+(m-n)+&quot;px&quot;},&quot;fast&quot;)}else{if(p&lt;f){i.animate({&quot;margin-left&quot;:&quot;-=&quot;+(p-f)+&quot;px&quot;},&quot;fast&quot;)}}return o},isTabVisible:function(){var o=this.eq(0),p=o.offset().left,n=p+o.outerWidth();return(n&lt;=m&amp;&amp;p&gt;=f)?true:false}});l.each(function(){e+=b(this).outerWidth(true)});if(e&lt;=h.width()-i.css(&quot;padding-left&quot;).slice(0,-2)-i.css(&quot;padding-right&quot;).slice(0,-2)){return}i.css({&quot;margin-right&quot;:(-1*e)+&quot;px&quot;,padding:0});k=b('&lt;div class=&quot;nav-tabs-arrow nav-tabs-arrow-left&quot;&gt;&lt;a&gt;&amp;laquo;&lt;/a&gt;&lt;/div&gt;');d=b('&lt;div class=&quot;nav-tabs-arrow nav-tabs-arrow-right&quot;&gt;&lt;a&gt;&amp;raquo;&lt;/a&gt;&lt;/div&gt;');h.wrap('&lt;div class=&quot;nav-tabs-nav&quot;/&gt;').parent().prepend(k).append(d);c();b(window).resize(function(){if(j){return}j=true;setTimeout(function(){c();j=false},1000)});b.each([{arrow:k,next:&quot;next&quot;,last:&quot;first&quot;,operator:&quot;+=&quot;},{arrow:d,next:&quot;prev&quot;,last:&quot;last&quot;,operator:&quot;-=&quot;}],function(){var n=this;this.arrow.mousedown(function(){var p=l[n.last](),o=function(){if(!p.isTabVisible()){i.animate({&quot;margin-left&quot;:n.operator+&quot;90px&quot;},300,&quot;linear&quot;,o)}};o()}).mouseup(function(){var p,o;i.stop(true);p=l[n.last]();while((o=p[n.next]())&amp;&amp;o.length&amp;&amp;!o.isTabVisible()){p=o}p.makeTabVisible()})})},eventOnClickEditLink:function(c){var e,d=/#(.*)$/.exec(c.href);if(d&amp;&amp;d[1]){e=b(&quot;#&quot;+d[1]);if(0!=e.length){if(e.hasClass(&quot;menu-item-edit-inactive&quot;)){e.slideDown(&quot;fast&quot;).siblings(&quot;dl&quot;).andSelf().removeClass(&quot;menu-item-edit-inactive&quot;).addClass(&quot;menu-item-edit-active&quot;)}else{e.slideUp(&quot;fast&quot;).siblings(&quot;dl&quot;).andSelf().removeClass(&quot;menu-item-edit-active&quot;).addClass(&quot;menu-item-edit-inactive&quot;)}return false}}},eventOnClickCloseLink:function(c){b(c).closest(&quot;.menu-item-settings&quot;).siblings(&quot;dl&quot;).find(&quot;.item-edit&quot;).click();return false},eventOnClickMenuSave:function(c){var d=&quot;&quot;;b(&quot;#nav-menu-theme-locations select&quot;).each(function(){d+='&lt;input type=&quot;hidden&quot; name=&quot;'+this.name+'&quot; value=&quot;'+b(this).val()+'&quot; /&gt;'});b(&quot;#update-nav-menu&quot;).append(d);a.menuList.find(&quot;.menu-item-data-position&quot;).val(function(e){return e+1});return true},eventOnClickMenuDelete:function(c){if(confirm(navMenuL10n.warnDeleteMenu)){return true}else{return false}},eventOnClickMenuItemDelete:function(c){var f,e,d=this;e=/_wpnonce=([a-zA-Z0-9]*)$/.exec(c.href);if(e&amp;&amp;e[1]){f=parseInt(c.id.replace(&quot;delete-&quot;,&quot;&quot;),10);b.post(ajaxurl,{action:&quot;delete-menu-item&quot;,&quot;menu-item&quot;:f,_wpnonce:e[1]},function(g){if(&quot;1&quot;==g){d.removeMenuItem(document.getElementById(&quot;menu-item-&quot;+f))}});return false}return true},processQuickSearchQueryResponse:function(g,m,c){var h,e,j,f={},d=document.getElementById(&quot;nav-menu-meta&quot;),l=new RegExp(&quot;menu-item\\[([^\\]]*)&quot;,&quot;g&quot;),k=g.match(/&lt;li&gt;.*&lt;\/li&gt;/g);if(!k){b(&quot;.categorychecklist&quot;,c).html(&quot;&lt;li&gt;&lt;p&gt;&quot;+navMenuL10n.noResultsFound+&quot;&lt;/p&gt;&lt;/li&gt;&quot;);b(&quot;img.waiting&quot;,c).hide();return}h=k.length;while(h--){e=l.exec(k[h]);if(e&amp;&amp;e[1]){j=e[1];while(d.elements[&quot;menu-item[&quot;+j+&quot;][menu-item-type]&quot;]||f[j]){j--}f[j]=true;if(j!=e[1]){k[h]=k[h].replace(new RegExp(&quot;menu-item\\[&quot;+e[1]+&quot;\\]&quot;,&quot;g&quot;),&quot;menu-item[&quot;+j+&quot;]&quot;)}}}b(&quot;.categorychecklist&quot;,c).html(k.join(&quot;&quot;));b(&quot;img.waiting&quot;,c).hide()},removeMenuItem:function(d){d=b(d);var c=d.childMenuItems();d.addClass(&quot;deleting&quot;).fadeOut(350,function(){d.remove();c.shiftDepthClass(-1).updateParentMenuItemDBId()})},getListDataFromID:function(k,h){if(!k){return false}h=h||document;var d=[&quot;menu-item-db-id&quot;,&quot;menu-item-object-id&quot;,&quot;menu-item-object&quot;,&quot;menu-item-parent-id&quot;,&quot;menu-item-position&quot;,&quot;menu-item-type&quot;,&quot;menu-item-title&quot;,&quot;menu-item-url&quot;,&quot;menu-item-description&quot;,&quot;menu-item-attr-title&quot;,&quot;menu-item-target&quot;,&quot;menu-item-classes&quot;,&quot;menu-item-xfn&quot;],c={},e=h.getElementsByTagName(&quot;input&quot;),g=e.length,f;while(g--){f=d.length;while(f--){if(e[g]&amp;&amp;e[g].name&amp;&amp;&quot;menu-item[&quot;+k+&quot;][&quot;+d[f]+&quot;]&quot;==e[g].name){c[d[f]]=e[g].value}}}return c},depthToPx:function(c){return c*a.options.menuItemDepthPerLevel},pxToDepth:function(c){return Math.floor(c/a.options.menuItemDepthPerLevel)}};b(document).ready(function(){wpNavMenu.init()})})(jQuery);
</del><span class="cx">\ No newline at end of file
</span><ins>+var wpNavMenu;(function(b){var a=wpNavMenu={options:{menuItemDepthPerLevel:30,globalMaxDepth:11},menuList:undefined,targetList:undefined,menusChanged:false,init:function(){a.menuList=b(&quot;#menu-to-edit&quot;);a.targetList=a.menuList;this.jQueryExtensions();this.attachMenuEditListeners();this.setupInputWithDefaultTitle();this.attachAddMenuItemListeners();this.attachQuickSearchListeners();this.attachThemeLocationsListeners();this.attachTabsPanelListeners();this.attachHomeLinkListener();this.attachUnsavedChangesListener();if(a.menuList.length){this.initSortables()}this.initToggles();this.initTabManager()},jQueryExtensions:function(){b.fn.extend({menuItemDepth:function(){var c=this.eq(0).css(&quot;margin-left&quot;);return a.pxToDepth(c&amp;&amp;-1!=c.indexOf(&quot;px&quot;)?c.slice(0,-2):0)},updateDepthClass:function(d,c){return this.each(function(){var e=b(this);c=c||e.menuItemDepth();b(this).removeClass(&quot;menu-item-depth-&quot;+c).addClass(&quot;menu-item-depth-&quot;+d)})},shiftDepthClass:function(c){return this.each(function(){var d=b(this),e=d.menuItemDepth();b(this).removeClass(&quot;menu-item-depth-&quot;+e).addClass(&quot;menu-item-depth-&quot;+(e+c))})},childMenuItems:function(){var c=b();this.each(function(){var d=b(this),f=d.menuItemDepth(),e=d.next();while(e.length&amp;&amp;e.menuItemDepth()&gt;f){c=c.add(e);e=e.next()}});return c},updateParentMenuItemDBId:function(){return this.each(function(){var e=b(this),c=e.find(&quot;.menu-item-data-parent-id&quot;),f=e.menuItemDepth(),d=e.prev();if(f==0){c.val(0)}else{while(d.menuItemDepth()!=f-1){d=d.prev()}c.val(d.find(&quot;.menu-item-data-db-id&quot;).val())}})},hideAdvancedMenuItemFields:function(){return this.each(function(){var c=b(this);b(&quot;.hide-column-tog&quot;).not(&quot;:checked&quot;).each(function(){c.find(&quot;.field-&quot;+b(this).val()).addClass(&quot;hidden-field&quot;)})})},addSelectedToMenu:function(c){return this.each(function(){var e=b(this),d={},g=e.find(&quot;.tabs-panel-active .categorychecklist li input:checked&quot;),f=new RegExp(&quot;menu-item\\[([^\\]]*)&quot;);c=c||a.addMenuItemToBottom;if(!g.length){return false}e.find(&quot;img.waiting&quot;).show();b(g).each(function(){var i=b(this),h=f.exec(i.attr(&quot;name&quot;)),j=&quot;undefined&quot;==typeof h[1]?0:parseInt(h[1],10);d[j]=i.closest(&quot;li&quot;).getItemData(&quot;add-menu-item&quot;,j)});a.addItemToMenu(d,c,function(){g.removeAttr(&quot;checked&quot;);e.find(&quot;img.waiting&quot;).hide()})})},getItemData:function(f,g){f=f||&quot;menu-item&quot;;var d={},e,c=[&quot;menu-item-db-id&quot;,&quot;menu-item-object-id&quot;,&quot;menu-item-object&quot;,&quot;menu-item-parent-id&quot;,&quot;menu-item-position&quot;,&quot;menu-item-type&quot;,&quot;menu-item-title&quot;,&quot;menu-item-url&quot;,&quot;menu-item-description&quot;,&quot;menu-item-attr-title&quot;,&quot;menu-item-target&quot;,&quot;menu-item-classes&quot;,&quot;menu-item-xfn&quot;];if(!g&amp;&amp;f==&quot;menu-item&quot;){g=this.find(&quot;.menu-item-data-db-id&quot;).val()}if(!g){return d}this.find(&quot;input&quot;).each(function(){var h;e=c.length;while(e--){if(f==&quot;menu-item&quot;){h=c[e]+&quot;[&quot;+g+&quot;]&quot;}else{if(f==&quot;add-menu-item&quot;){h=&quot;menu-item[&quot;+g+&quot;][&quot;+c[e]+&quot;]&quot;}}if(this.name&amp;&amp;h==this.name){d[c[e]]=this.value}}});return d},setItemData:function(c,d,e){d=d||&quot;menu-item&quot;;if(!e&amp;&amp;d==&quot;menu-item&quot;){e=b(&quot;.menu-item-data-db-id&quot;,this).val()}if(!e){return this}this.find(&quot;input&quot;).each(function(){var f=b(this),g;b.each(c,function(h,i){if(d==&quot;menu-item&quot;){g=h+&quot;[&quot;+e+&quot;]&quot;}else{if(d==&quot;add-menu-item&quot;){g=&quot;menu-item[&quot;+e+&quot;][&quot;+h+&quot;]&quot;}}if(g==f.attr(&quot;name&quot;)){f.val(i)}})});return this}})},initToggles:function(){postboxes.add_postbox_toggles(&quot;nav-menus&quot;);columns.useCheckboxesForHidden();columns.checked=function(c){b(&quot;.field-&quot;+c).removeClass(&quot;hidden-field&quot;)};columns.unchecked=function(c){b(&quot;.field-&quot;+c).addClass(&quot;hidden-field&quot;)};a.menuList.hideAdvancedMenuItemFields()},initSortables:function(){var m=0,l,j,e,h,n,k,o,d,g,i=a.menuList.offset().left;a.menuList.sortable({handle:&quot;.menu-item-handle&quot;,placeholder:&quot;sortable-placeholder&quot;,start:function(w,v){var p,t,s,q,r,u;g=v.item.children(&quot;.menu-item-transport&quot;);l=v.item.menuItemDepth();f(v,l);s=(v.item.next()[0]==v.placeholder[0])?v.item.next():v.item;q=s.childMenuItems();g.append(q);p=g.outerHeight();p+=(p&gt;0)?(v.placeholder.css(&quot;margin-top&quot;).slice(0,-2)*1):0;p+=v.helper.outerHeight();d=p;p-=2;v.placeholder.height(p);r=l;q.each(function(){var x=b(this).menuItemDepth();r=(x&gt;r)?x:r});t=v.helper.find(&quot;.menu-item-handle&quot;).outerWidth();t+=a.depthToPx(r-l);t-=2;v.placeholder.width(t);u=v.placeholder.next();u.css(&quot;margin-top&quot;,d+&quot;px&quot;);v.placeholder.detach();b(this).sortable(&quot;refresh&quot;);v.item.after(v.placeholder);u.css(&quot;margin-top&quot;,0);c(v)},stop:function(s,r){var q,p=m-l;q=g.children().insertAfter(r.item);if(p!=0){r.item.updateDepthClass(m);q.shiftDepthClass(p);a.registerChange()}r.item.updateParentMenuItemDBId();r.item[0].style.top=0},change:function(q,p){if(!p.placeholder.parent().hasClass(&quot;menu&quot;)){(h.length)?h.after(p.placeholder):a.menuList.prepend(p.placeholder)}c(p)},sort:function(q,p){var s=p.helper.offset(),r=a.pxToDepth(s.left-i);if(r&gt;e||s.top&lt;k){r=e}else{if(r&lt;j){r=j}}if(r!=m){f(p,r)}if(o&amp;&amp;s.top+d&gt;o){n.after(p.placeholder);c(p);b(this).sortable(&quot;refreshPositions&quot;)}},update:function(q,p){a.registerChange()}});function c(p){var q;h=p.placeholder.prev();n=p.placeholder.next();if(h[0]==p.item[0]){h=h.prev()}if(n[0]==p.item[0]){n=n.next()}k=(h.length)?h.offset().top+h.height():0;o=(n.length)?n.offset().top+n.height()/3:0;j=(n.length)?n.menuItemDepth():0;if(h.length){e=((q=h.menuItemDepth()+1)&gt;a.options.globalMaxDepth)?a.options.globalMaxDepth:q}else{e=0}}function f(p,q){p.placeholder.updateDepthClass(q,m);m=q}},attachMenuEditListeners:function(){var c=this;b(&quot;#update-nav-menu&quot;).bind(&quot;click&quot;,function(d){if(d.target&amp;&amp;d.target.className){if(-1!=d.target.className.indexOf(&quot;item-edit&quot;)){return c.eventOnClickEditLink(d.target)}else{if(-1!=d.target.className.indexOf(&quot;menu-save&quot;)){return c.eventOnClickMenuSave(d.target)}else{if(-1!=d.target.className.indexOf(&quot;menu-delete&quot;)){return c.eventOnClickMenuDelete(d.target)}else{if(-1!=d.target.className.indexOf(&quot;item-delete&quot;)){return c.eventOnClickMenuItemDelete(d.target)}else{if(-1!=d.target.className.indexOf(&quot;item-cancel&quot;)){return c.eventOnClickCancelLink(d.target)}}}}}}})},setupInputWithDefaultTitle:function(){var c=&quot;input-with-default-title&quot;;b(&quot;.&quot;+c).each(function(){var f=b(this),e=f.attr(&quot;title&quot;),d=f.val();f.data(c,e);if(&quot;&quot;==d){f.val(e)}else{if(e==d){return}else{f.removeClass(c)}}}).focus(function(){var d=b(this);if(d.val()==d.data(c)){d.val(&quot;&quot;).removeClass(c)}}).blur(function(){var d=b(this);if(&quot;&quot;==d.val()){d.addClass(c).val(d.data(c))}})},attachAddMenuItemListeners:function(){var c=b(&quot;#nav-menu-meta&quot;);c.find(&quot;.add-to-menu input&quot;).click(function(){a.registerChange();b(this).trigger(&quot;wp-add-menu-item&quot;,[a.addMenuItemToBottom]);return false});c.find(&quot;.customlinkdiv&quot;).bind(&quot;wp-add-menu-item&quot;,function(f,d){a.addCustomLink(d)});c.find(&quot;.posttypediv, .taxonomydiv&quot;).bind(&quot;wp-add-menu-item&quot;,function(f,d){b(this).addSelectedToMenu(d)})},attachThemeLocationsListeners:function(){var d=b(&quot;#nav-menu-theme-locations&quot;),c={};c.action=&quot;menu-locations-save&quot;;c[&quot;menu-settings-column-nonce&quot;]=b(&quot;#menu-settings-column-nonce&quot;).val();d.find(&quot;input[type=submit]&quot;).click(function(){d.find(&quot;select&quot;).each(function(){c[this.name]=b(this).val()});d.find(&quot;.waiting&quot;).show();b.post(ajaxurl,c,function(e){d.find(&quot;.waiting&quot;).hide()});return false})},attachQuickSearchListeners:function(){var c;b(&quot;.quick-search&quot;).keypress(function(f){var d=b(this);if(13==f.which){a.updateQuickSearchResults(d);return false}if(c){clearTimeout(c)}c=setTimeout(function(){a.updateQuickSearchResults(d)},400)}).attr(&quot;autocomplete&quot;,&quot;off&quot;)},updateQuickSearchResults:function(d){var c,g,e=2,f=d.val();if(f.length&lt;e){return}c=d.parents(&quot;.tabs-panel&quot;);g={action:&quot;menu-quick-search&quot;,&quot;response-format&quot;:&quot;markup&quot;,menu:b(&quot;#menu&quot;).val(),&quot;menu-settings-column-nonce&quot;:b(&quot;#menu-settings-column-nonce&quot;).val(),q:f,type:d.attr(&quot;name&quot;)};b(&quot;img.waiting&quot;,c).show();b.post(ajaxurl,g,function(h){a.processQuickSearchQueryResponse(h,g,c)})},addCustomLink:function(c){var e=b(&quot;#custom-menu-item-url&quot;).val(),d=b(&quot;#custom-menu-item-name&quot;).val();c=c||a.addMenuItemToBottom;if(&quot;&quot;==e||&quot;http://&quot;==e){return false}b(&quot;.customlinkdiv img.waiting&quot;).show();this.addLinkToMenu(e,d,c,function(){b(&quot;.customlinkdiv img.waiting&quot;).hide();b(&quot;#custom-menu-item-name&quot;).val(&quot;&quot;).blur();b(&quot;#custom-menu-item-url&quot;).val(&quot;http://&quot;)})},addLinkToMenu:function(e,d,c,f){c=c||a.addMenuItemToBottom;f=f||function(){};a.addItemToMenu({&quot;-1&quot;:{&quot;menu-item-type&quot;:&quot;custom&quot;,&quot;menu-item-url&quot;:e,&quot;menu-item-title&quot;:d}},c,f)},addItemToMenu:function(e,c,g){var f=b(&quot;#menu&quot;).val(),d=b(&quot;#menu-settings-column-nonce&quot;).val();c=c||function(){};g=g||function(){};params={action:&quot;add-menu-item&quot;,menu:f,&quot;menu-settings-column-nonce&quot;:d,&quot;menu-item&quot;:e};b.post(ajaxurl,params,function(h){c(h,params);g()})},addMenuItemToBottom:function(c,d){b(c).hideAdvancedMenuItemFields().appendTo(a.targetList)},addMenuItemToTop:function(c,d){b(c).hideAdvancedMenuItemFields().prependTo(a.targetList)},attachHomeLinkListener:function(){b(&quot;.add-home-link&quot;,&quot;.customlinkdiv&quot;).click(function(c){a.addLinkToMenu(navMenuL10n.homeurl,navMenuL10n.home,a.addMenuItemToTop);return false})},attachUnsavedChangesListener:function(){b(&quot;#menu-management input, #menu-management select, #menu-management, #menu-management textarea&quot;).change(function(){a.registerChange()});window.onbeforeunload=function(){if(a.menusChanged){return navMenuL10n.saveAlert}};b(&quot;input.menu-save&quot;).click(function(){window.onbeforeunload=null})},registerChange:function(){a.menusChanged=true},attachTabsPanelListeners:function(){b(&quot;#menu-settings-column&quot;).bind(&quot;click&quot;,function(h){var f,d,i,c,g=b(h.target);if(g.hasClass(&quot;nav-tab-link&quot;)){d=/#(.*)$/.exec(h.target.href);if(d&amp;&amp;d[1]){d=d[1]}else{return false}i=g.parents(&quot;.inside&quot;).first();b(&quot;input&quot;,i).removeAttr(&quot;checked&quot;);b(&quot;.tabs-panel-active&quot;,i).removeClass(&quot;tabs-panel-active&quot;).addClass(&quot;tabs-panel-inactive&quot;);b(&quot;#&quot;+d,i).removeClass(&quot;tabs-panel-inactive&quot;).addClass(&quot;tabs-panel-active&quot;);b(&quot;.tabs&quot;,i).removeClass(&quot;tabs&quot;);g.parent().addClass(&quot;tabs&quot;);b(&quot;.quick-search&quot;,i).focus();return false}else{if(g.hasClass(&quot;select-all&quot;)){f=/#(.*)$/.exec(h.target.href);if(f&amp;&amp;f[1]){c=b(&quot;#&quot;+f[1]+&quot; .tabs-panel-active .menu-item-title input&quot;);if(c.length===c.filter(&quot;:checked&quot;).length){c.removeAttr(&quot;checked&quot;)}else{c.attr(&quot;checked&quot;,&quot;checked&quot;)}return false}}}})},initTabManager:function(){var h=b(&quot;.nav-tabs-wrapper&quot;),i=h.children(&quot;.nav-tabs&quot;),g=i.children(&quot;.nav-tab-active&quot;),l=i.children(&quot;.nav-tab&quot;),e=0,m,f,k,d,j=false;function c(){f=h.offset().left;m=f+h.width();g.makeTabVisible()}b.fn.extend({makeTabVisible:function(){var o=this.eq(0),p,n;if(!o.length){return}p=o.offset().left;n=p+o.outerWidth();if(n&gt;m){i.animate({&quot;margin-left&quot;:&quot;+=&quot;+(m-n)+&quot;px&quot;},&quot;fast&quot;)}else{if(p&lt;f){i.animate({&quot;margin-left&quot;:&quot;-=&quot;+(p-f)+&quot;px&quot;},&quot;fast&quot;)}}return o},isTabVisible:function(){var o=this.eq(0),p=o.offset().left,n=p+o.outerWidth();return(n&lt;=m&amp;&amp;p&gt;=f)?true:false}});l.each(function(){e+=b(this).outerWidth(true)});if(e&lt;=h.width()-i.css(&quot;padding-left&quot;).slice(0,-2)-i.css(&quot;padding-right&quot;).slice(0,-2)){return}i.css({&quot;margin-right&quot;:(-1*e)+&quot;px&quot;,padding:0});k=b('&lt;div class=&quot;nav-tabs-arrow nav-tabs-arrow-left&quot;&gt;&lt;a&gt;&amp;laquo;&lt;/a&gt;&lt;/div&gt;');d=b('&lt;div class=&quot;nav-tabs-arrow nav-tabs-arrow-right&quot;&gt;&lt;a&gt;&amp;raquo;&lt;/a&gt;&lt;/div&gt;');h.wrap('&lt;div class=&quot;nav-tabs-nav&quot;/&gt;').parent().prepend(k).append(d);c();b(window).resize(function(){if(j){return}j=true;setTimeout(function(){c();j=false},1000)});b.each([{arrow:k,next:&quot;next&quot;,last:&quot;first&quot;,operator:&quot;+=&quot;},{arrow:d,next:&quot;prev&quot;,last:&quot;last&quot;,operator:&quot;-=&quot;}],function(){var n=this;this.arrow.mousedown(function(){var p=l[n.last](),o=function(){if(!p.isTabVisible()){i.animate({&quot;margin-left&quot;:n.operator+&quot;90px&quot;},300,&quot;linear&quot;,o)}};o()}).mouseup(function(){var p,o;i.stop(true);p=l[n.last]();while((o=p[n.next]())&amp;&amp;o.length&amp;&amp;!o.isTabVisible()){p=o}p.makeTabVisible()})})},eventOnClickEditLink:function(d){var c,e,f=/#(.*)$/.exec(d.href);if(f&amp;&amp;f[1]){c=b(&quot;#&quot;+f[1]);e=c.parent();if(0!=e.length){if(e.hasClass(&quot;menu-item-edit-inactive&quot;)){if(!c.data(&quot;menu-item-data&quot;)){c.data(&quot;menu-item-data&quot;,c.getItemData())}c.slideDown(&quot;fast&quot;);e.removeClass(&quot;menu-item-edit-inactive&quot;).addClass(&quot;menu-item-edit-active&quot;)}else{c.slideUp(&quot;fast&quot;);e.removeClass(&quot;menu-item-edit-active&quot;).addClass(&quot;menu-item-edit-inactive&quot;)}return false}}},eventOnClickCancelLink:function(d){var c=b(d).closest(&quot;.menu-item-settings&quot;);c.setItemData(c.data(&quot;menu-item-data&quot;));return false},eventOnClickMenuSave:function(c){var d=&quot;&quot;;b(&quot;#nav-menu-theme-locations select&quot;).each(function(){d+='&lt;input type=&quot;hidden&quot; name=&quot;'+this.name+'&quot; value=&quot;'+b(this).val()+'&quot; /&gt;'});b(&quot;#update-nav-menu&quot;).append(d);a.menuList.find(&quot;.menu-item-data-position&quot;).val(function(e){return e+1});return true},eventOnClickMenuDelete:function(c){if(confirm(navMenuL10n.warnDeleteMenu)){return true}else{return false}},eventOnClickMenuItemDelete:function(c){var d=parseInt(c.id.replace(&quot;delete-&quot;,&quot;&quot;),10);a.removeMenuItem(b(&quot;#menu-item-&quot;+d));return false},processQuickSearchQueryResponse:function(g,m,c){var h,e,j,f={},d=document.getElementById(&quot;nav-menu-meta&quot;),l=new RegExp(&quot;menu-item\\[([^\\]]*)&quot;,&quot;g&quot;),k=g.match(/&lt;li&gt;.*&lt;\/li&gt;/g);if(!k){b(&quot;.categorychecklist&quot;,c).html(&quot;&lt;li&gt;&lt;p&gt;&quot;+navMenuL10n.noResultsFound+&quot;&lt;/p&gt;&lt;/li&gt;&quot;);b(&quot;img.waiting&quot;,c).hide();return}h=k.length;while(h--){e=l.exec(k[h]);if(e&amp;&amp;e[1]){j=e[1];while(d.elements[&quot;menu-item[&quot;+j+&quot;][menu-item-type]&quot;]||f[j]){j--}f[j]=true;if(j!=e[1]){k[h]=k[h].replace(new RegExp(&quot;menu-item\\[&quot;+e[1]+&quot;\\]&quot;,&quot;g&quot;),&quot;menu-item[&quot;+j+&quot;]&quot;)}}}b(&quot;.categorychecklist&quot;,c).html(k.join(&quot;&quot;));b(&quot;img.waiting&quot;,c).hide()},removeMenuItem:function(d){var c=d.childMenuItems();d.addClass(&quot;deleting&quot;).animate({opacity:0,height:0},350,function(){d.remove();c.shiftDepthClass(-1).updateParentMenuItemDBId()})},depthToPx:function(c){return c*a.options.menuItemDepthPerLevel},pxToDepth:function(c){return Math.floor(c/a.options.menuItemDepthPerLevel)}};b(document).ready(function(){wpNavMenu.init()})})(jQuery);
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpadminnavmenusphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/nav-menus.php (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/nav-menus.php        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-admin/nav-menus.php        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -318,7 +318,12 @@
</span><span class="cx">                         // Update menu items
</span><span class="cx"> 
</span><span class="cx">                         if ( ! is_wp_error( $_menu_object ) ) {
</span><del>-                                $menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' =&gt; 'ID', 'output' =&gt; ARRAY_A, 'output_key' =&gt; 'ID') );
</del><ins>+                                $unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array('orderby' =&gt; 'ID', 'output' =&gt; ARRAY_A, 'output_key' =&gt; 'ID') );
+                                $menu_items = array();
+                                // Index menu items by db ID
+                                foreach( $unsorted_menu_items as $_item )
+                                        $menu_items[$_item-&gt;db_id] = $_item;
+
</ins><span class="cx">                                 $post_fields = array( 'menu-item-db-id', 'menu-item-object-id', 'menu-item-object', 'menu-item-parent-id', 'menu-item-position', 'menu-item-type', 'menu-item-title', 'menu-item-url', 'menu-item-description', 'menu-item-attr-title', 'menu-item-target', 'menu-item-classes', 'menu-item-xfn' );
</span><span class="cx">                                 wp_defer_term_counting(true);
</span><span class="cx">                                 // Loop through all the menu items' POST variables
</span><span class="lines">@@ -356,7 +361,7 @@
</span><span class="cx">                                 do_action( 'wp_update_nav_menu', $nav_menu_selected_id );
</span><span class="cx"> 
</span><span class="cx">                                 $messages[] = '&lt;div id=&quot;message&quot; class=&quot;updated&quot;&gt;&lt;p&gt;' . sprintf( __('The &lt;strong&gt;%s&lt;/strong&gt; menu has been updated.'), $nav_menu_selected_title ) . '&lt;/p&gt;&lt;/div&gt;';
</span><del>-                                unset( $menu_items );
</del><ins>+                                unset( $menu_items, $unsorted_menu_items );
</ins><span class="cx">                         }
</span><span class="cx">                 }
</span><span class="cx">                 break;
</span><span class="lines">@@ -410,11 +415,6 @@
</span><span class="cx">         // Set up nav menu
</span><span class="cx">         wp_nav_menu_setup();
</span><span class="cx">         $messages[] = '&lt;div id=&quot;message&quot; class=&quot;error&quot;&gt;&lt;p&gt;' . __('The current theme does not natively support menus, but you can use the &amp;#8220;Navigation Menu&amp;#8221; widget to add any menus you create here to the theme&amp;#8217;s sidebar.') . '&lt;/p&gt;&lt;/div&gt;';
</span><del>-
-// The theme supports neither menus nor widgets.
-} else {
-        remove_meta_box( 'create-menu', 'nav-menus', 'side' );
-        $messages[] = '&lt;div id=&quot;message&quot; class=&quot;error&quot;&gt;&lt;p&gt;' . __('The current theme does not support menus.') . '&lt;/p&gt;&lt;/div&gt;';
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> wp_initial_nav_menu_meta_boxes();
</span><span class="lines">@@ -512,9 +512,11 @@
</span><span class="cx">                                                                 &lt;?php endif; ?&gt;
</span><span class="cx">                                                         &lt;/div&gt;&lt;!--END .major-publishing-actions--&gt;
</span><span class="cx">                                                 &lt;/div&gt;&lt;!--END #submitpost .submitbox--&gt;
</span><del>-                                                &lt;?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?&gt;
-                                                &lt;?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?&gt;
-                                                &lt;?php wp_nonce_field( 'update-nav_menu', 'update-nav-menu-nonce' ); ?&gt;
</del><ins>+                                                &lt;?php
+                                                wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
+                                                wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
+                                                wp_nonce_field( 'update-nav_menu', 'update-nav-menu-nonce' );
+                                                ?&gt;
</ins><span class="cx">                                                 &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;update&quot; /&gt;
</span><span class="cx">                                                 &lt;input type=&quot;hidden&quot; name=&quot;menu&quot; id=&quot;menu&quot; value=&quot;&lt;?php echo esc_attr( $nav_menu_selected_id ); ?&gt;&quot; /&gt;
</span><span class="cx">                                         &lt;/div&gt;&lt;!--END #nav-menu-header--&gt;
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (14851 => 14852)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2010-05-24 19:43:36 UTC (rev 14851)
+++ trunk/wp-includes/script-loader.php        2010-05-24 19:50:20 UTC (rev 14852)
</span><span class="lines">@@ -385,7 +385,7 @@
</span><span class="cx">                 ) );
</span><span class="cx"> 
</span><span class="cx">                 // Custom Navigation
</span><del>-                $scripts-&gt;add( 'nav-menu', &quot;/wp-admin/js/nav-menu$suffix.js&quot;, false, '20100524' );
</del><ins>+                $scripts-&gt;add( 'nav-menu', &quot;/wp-admin/js/nav-menu$suffix.js&quot;, false, '20100524a' );
</ins><span class="cx">                 $scripts-&gt;localize( 'nav-menu', 'navMenuL10n', array(
</span><span class="cx">                         'home' =&gt; _x('Home', 'nav menu home label'),
</span><span class="cx">                         'homeurl' =&gt; home_url('/'),
</span><span class="lines">@@ -467,7 +467,7 @@
</span><span class="cx">         $styles-&gt;add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.2' );
</span><span class="cx">         $styles-&gt;add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
</span><span class="cx">         $styles-&gt;add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' );
</span><del>-        $styles-&gt;add( 'nav-menu', &quot;/wp-admin/css/nav-menu$suffix.css&quot;, array(), '20100521' );
</del><ins>+        $styles-&gt;add( 'nav-menu', &quot;/wp-admin/css/nav-menu$suffix.css&quot;, array(), '20100524' );
</ins><span class="cx"> 
</span><span class="cx">         foreach ( $rtl_styles as $rtl_style ) {
</span><span class="cx">                 $styles-&gt;add_data( $rtl_style, 'rtl', true );
</span></span></pre>
</div>
</div>

</body>
</html>