<!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>[17263] trunk/wp-includes: Expand shortlink menu when clicked.</title>
</head>
<body>
<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/17263">17263</a></dd>
<dt>Author</dt> <dd>ryan</dd>
<dt>Date</dt> <dd>2011-01-11 22:45:14 +0000 (Tue, 11 Jan 2011)</dd>
</dl>
<h3>Log Message</h3>
<pre>Expand shortlink menu when clicked. Fix displayed of shortlinks when rel shortlink is missing. Props koopersmith. fixes <a href="http://trac.wordpress.org/ticket/16155">#16155</a></pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpincludesadminbarphp">trunk/wp-includes/admin-bar.php</a></li>
<li><a href="#trunkwpincludescssadminbarcss">trunk/wp-includes/css/admin-bar.css</a></li>
<li><a href="#trunkwpincludescssadminbardevcss">trunk/wp-includes/css/admin-bar.dev.css</a></li>
<li><a href="#trunkwpincludesjsadminbardevjs">trunk/wp-includes/js/admin-bar.dev.js</a></li>
<li><a href="#trunkwpincludesjsadminbarjs">trunk/wp-includes/js/admin-bar.js</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpincludesadminbarphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/admin-bar.php (17262 => 17263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/admin-bar.php        2011-01-11 22:42:22 UTC (rev 17262)
+++ trunk/wp-includes/admin-bar.php        2011-01-11 22:45:14 UTC (rev 17263)
</span><span class="lines">@@ -139,9 +139,19 @@
</span><span class="cx">         global $wp_admin_bar;
</span><span class="cx">
</span><span class="cx">         $short = wp_get_shortlink( 0, 'query' );
</span><ins>+        $id = 'get-shortlink';
</ins><span class="cx">
</span><del>-        if ( ! empty( $short) )
-                $wp_admin_bar->add_menu( array( 'id' => 'get-shortlink', 'title' => __( 'Shortlink' ), 'href' => $short ) );
</del><ins>+        if ( empty( $short ) )
+                return;
+        
+        $html = '<input class="shortlink-input" type="text" readonly="readonly" value="' . esc_attr( $short ) . '" />';
+        
+        $wp_admin_bar->add_menu( array(
+                'id' => $id,
+                'title' => __( 'Shortlink' ),
+                'href' => $short,
+                'meta' => array( 'html' => $html ),
+        ) );
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span></span></pre></div>
<a id="trunkwpincludescssadminbarcss"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/css/admin-bar.css (17262 => 17263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/css/admin-bar.css        2011-01-11 22:42:22 UTC (rev 17262)
+++ trunk/wp-includes/css/admin-bar.css        2011-01-11 22:45:14 UTC (rev 17263)
</span><span class="lines">@@ -1 +1 @@
</span><del>-#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;}#wpadminbar :before,#wpadminbar :after{content:normal;}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:none;border:none;text-decoration:none;background:none;}#wpadminbar{direction:ltr;background-color:#777;background-image:-moz-linear-gradient(bottom,#666,#7f7f7f);background-image:-webkit-gradient(linear,left bottom,left top,from(#666),to(#7f7f7f));color:#ddd;font:normal 12px/28px Arial,Helvetica,sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;z-index:99999;min-width:960px;}#wpadminbar ul,#wpadminbar ul li{background:none;list-style:none;margin:0;padding:0;position:relative;z-index:99999;}#wpadminbar .quicklinks ul{text-align:left;}#wpadminbar .quicklinks ul li{float:left;}#wpadminbar .quicklinks>ul>li>a{border-right:1px solid #686868;border-left:1px solid #808080;}#wpadminbar .quicklinks>ul>li:last-child>a{border-right:none;}#wpadminbar .quicklinks>ul>li:hover>a{border-left-color:#707070;}#wpadminbar .quicklinks a{color:#ddd;height:28px;text-shadow:#555 0 -1px 0;display:block;font:normal 13px/28px Arial,Helvetica,sans-serif;padding:0 .85em;margin:0;}#wpadminbar .quicklinks a>span{line-height:28px;}#wpadminbar .quicklinks .menupop ul{-moz-box-shadow:0 4px 8px rgba(0,0,0,0.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,0.1);box-shadow:0 4px 8px rgba(0,0,0,0.1);background:#fff;background:rgba(255,255,255,0.97);display:none;position:absolute;border:1px solid #dfdfdf;border-top:none;float:none;}#wpadminbar .quicklinks .menupop ul li{float:none;}#wpadminbar .quicklinks .menupop ul li a{color:#555;text-shadow:none;white-space:nowrap;overflow:hidden;width:160px;}#wpadminbar .quicklinks .menupop ul li:hover>a{color:#fff;text-shadow:#666 0 -1px 0;}#wpadminbar .quicklinks li:hover>ul,#wpadminbar .quicklinks li.hover>ul{display:block;}#wpadminbar .quicklinks .menupop li:hover>ul,#wpadminbar .quicklinks .menupop li.hover>ul{margin-left:100%;margin-top:-28px;}#wpadminbar .quicklinks li:hover{background:#555;background:-moz-linear-gradient(bottom,#555,#3e3e3e);background:-webkit-gradient(linear,left bottom,left top,from(#555),to(#3e3e3e));}#wpadminbar .quicklinks .menupop li:hover{background:#888;background:-moz-linear-gradient(bottom,#888,#9d9d9d);background:-webkit-gradient(linear,left bottom,left top,from(#888),to(#9d9d9d));}#wpadminbar .quicklinks .menupop a>span{display:inline;background:url(../images/admin-bar-sprite.png?d=11122010) right -58px no-repeat;padding-right:.8em;}#wpadminbar .quicklinks .menupop ul li a>span{display:block;background:url(../images/admin-bar-sprite.png?d=11122010) right -29px no-repeat;padding-right:1.5em;}#wpadminbar .quicklinks a span#ab-awaiting-mod,#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}#wpadminbar .quicklinks a:hover span#ab-awaiting-mod,#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000;}#wpadminbar .quicklinks li.ab-my-account>a{border-left:none;}#wpadminbar .quicklinks li.ab-my-account-with-avatar>a{border-left:none;background:url(../images/admin-bar-sprite.png?d=11122010) top left no-repeat;}#wpadminbar .quicklinks li.ab-my-account-with-avatar>a img{display:inline;border:1px solid #999;vertical-align:middle;margin:-2px 23px 0 -5px;padding:0;background:#eee;float:none;}#wpadminbar .quicklinks li.ab-my-account-with-avatar ul{left:30px;}#wpadminbar .quicklinks .menupop li a img.blavatar{vertical-align:middle;margin:0 8px 0 0;padding:0;}#wpadminbar #adminbarsearch{float:right;height:18px;padding:3px;margin:0;}#wpadminbar #adminbarsearch .adminbar-input{width:140px;height:auto;float:left;font:12px Arial,Helvetica,sans-serif;color:#555;text-shadow:0 1px 0 #fff;border:1px solid #626262;padding:2px 3px;margin:0 3px 0 0;background:#ddd;-moz-box-shadow:inset 2px 2px 1px #cdcdcd;-webkit-box-shadow:inset 2px 2px 1px #cdcdcd;box-shadow:inset 2px 2px 1px #cdcdcd;-webkit-border-radius:0;-khtml-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;outline:none;}#wpadminbar #adminbarsearch .adminbar-button{font:bold 12px Arial,Helvetica,sans-serif;color:#444;text-shadow:0 1px 0 #eee;cursor:pointer;float:left;background:#aaa;background:-moz-linear-gradient(bottom,#aaa,#cecece);background:-webkit-gradient(linear,left bottom,left top,from(#aaa),to(#cecece));-webkit-border-radius:10px;-khtml-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:1px solid #626262;padding:2px 13px;margin:0;width:auto;height:auto;}#wpadminbar #adminbarsearch .adminbar-button:active{background:#a0a0a0;background:-moz-linear-gradient(bottom,#a0a0a0,#c1c1c1);background:-webkit-gradient(linear,left bottom,left top,from(#a0a0a0),to(#c1c1c1));-moz-box-shadow:inset 1px 1px 1px #9b9b9b;-webkit-box-shadow:inset 1px 1px 1px #9b9b9b;box-shadow:inset 1px 1px 1px #9b9b9b;}#wpadminbar #adminbarsearch .adminbar-button:hover{color:#000;}#wpadminbar #adminbarsearch .adminbar-button::-moz-focus-inner{border:none;}* html #wpadminbar{overflow:hidden;position:absolute;}* html #wpadminbar .quicklinks ul li a{float:left;}* html #wpadminbar .menupop a span{background-image:none;}
</del><span class="cx">\ No newline at end of file
</span><ins>+#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-transform:none;letter-spacing:normal;line-height:1;}#wpadminbar :before,#wpadminbar :after{content:normal;}#wpadminbar a,#wpadminbar a:hover,#wpadminbar a img,#wpadminbar a img:hover{outline:none;border:none;text-decoration:none;background:none;}#wpadminbar{direction:ltr;background-color:#777;background-image:-moz-linear-gradient(bottom,#666,#7f7f7f);background-image:-webkit-gradient(linear,left bottom,left top,from(#666),to(#7f7f7f));color:#ddd;font:normal 12px/28px Arial,Helvetica,sans-serif;height:28px;position:fixed;top:0;left:0;width:100%;z-index:99999;min-width:960px;}#wpadminbar ul,#wpadminbar ul li{background:none;list-style:none;margin:0;padding:0;position:relative;z-index:99999;}#wpadminbar .quicklinks ul{text-align:left;}#wpadminbar .quicklinks ul li{float:left;}#wpadminbar .quicklinks>ul>li>a{border-right:1px solid #686868;border-left:1px solid #808080;}#wpadminbar .quicklinks>ul>li:last-child>a{border-right:none;}#wpadminbar .quicklinks>ul>li:hover>a{border-left-color:#707070;}#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{color:#ddd;height:28px;text-shadow:#555 0 -1px 0;display:block;font:normal 13px/28px Arial,Helvetica,sans-serif;padding:0 .85em;margin:0;}#wpadminbar .quicklinks a>span{line-height:28px;}#wpadminbar .quicklinks .menupop ul,#wpadminbar .shortlink-input{-moz-box-shadow:0 4px 8px rgba(0,0,0,0.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,0.1);box-shadow:0 4px 8px rgba(0,0,0,0.1);background:#fff;background:rgba(255,255,255,0.97);display:none;position:absolute;border:1px solid #dfdfdf;border-top:none;float:none;}#wpadminbar .selected .shortlink-input{display:block;}#wpadminbar .quicklinks .menupop ul li{float:none;}#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .shortlink-input{color:#555;text-shadow:none;white-space:nowrap;overflow:hidden;width:160px;}#wpadminbar .quicklinks .menupop ul li:hover>a{color:#fff;text-shadow:#666 0 -1px 0;}#wpadminbar .quicklinks li:hover>ul,#wpadminbar .quicklinks li.hover>ul{display:block;}#wpadminbar .quicklinks .menupop li:hover>ul,#wpadminbar .quicklinks .menupop li.hover>ul{margin-left:100%;margin-top:-28px;}#wpadminbar .quicklinks li:hover,#wpadminbar .quicklinks .selected{background:#555;background:-moz-linear-gradient(bottom,#555,#3e3e3e);background:-webkit-gradient(linear,left bottom,left top,from(#555),to(#3e3e3e));}#wpadminbar .quicklinks .menupop li:hover{background:#888;background:-moz-linear-gradient(bottom,#888,#9d9d9d);background:-webkit-gradient(linear,left bottom,left top,from(#888),to(#9d9d9d));}#wpadminbar .quicklinks .menupop a>span{display:inline;background:url(../images/admin-bar-sprite.png?d=11122010) right -58px no-repeat;padding-right:.8em;}#wpadminbar .quicklinks .menupop ul li a>span{display:block;background:url(../images/admin-bar-sprite.png?d=11122010) right -29px no-repeat;padding-right:1.5em;}#wpadminbar .quicklinks a span#ab-awaiting-mod,#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}#wpadminbar .quicklinks a:hover span#ab-awaiting-mod,#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000;}#wpadminbar .quicklinks li.ab-my-account>a{border-left:none;}#wpadminbar .quicklinks li.ab-my-account-with-avatar>a{border-left:none;background:url(../images/admin-bar-sprite.png?d=11122010) top left no-repeat;}#wpadminbar .quicklinks li.ab-my-account-with-avatar>a img{display:inline;border:1px solid #999;vertical-align:middle;margin:-2px 23px 0 -5px;padding:0;background:#eee;float:none;}#wpadminbar .quicklinks li.ab-my-account-with-avatar ul{left:30px;}#wpadminbar .quicklinks .menupop li a img.blavatar{vertical-align:middle;margin:0 8px 0 0;padding:0;}#wpadminbar #adminbarsearch{float:right;height:18px;padding:3px;margin:0;}#wpadminbar #adminbarsearch .adminbar-input{width:140px;height:auto;float:left;font:12px Arial,Helvetica,sans-serif;color:#555;text-shadow:0 1px 0 #fff;border:1px solid #626262;padding:2px 3px;margin:0 3px 0 0;background:#ddd;-moz-box-shadow:inset 2px 2px 1px #cdcdcd;-webkit-box-shadow:inset 2px 2px 1px #cdcdcd;box-shadow:inset 2px 2px 1px #cdcdcd;-webkit-border-radius:0;-khtml-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;outline:none;}#wpadminbar #adminbarsearch .adminbar-button{font:bold 12px Arial,Helvetica,sans-serif;color:#444;text-shadow:0 1px 0 #eee;cursor:pointer;float:left;background:#aaa;background:-moz-linear-gradient(bottom,#aaa,#cecece);background:-webkit-gradient(linear,left bottom,left top,from(#aaa),to(#cecece));-webkit-border-radius:10px;-khtml-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:1px solid #626262;padding:2px 13px;margin:0;width:auto;height:auto;}#wpadminbar #adminbarsearch .adminbar-button:active{background:#a0a0a0;background:-moz-linear-gradient(bottom,#a0a0a0,#c1c1c1);background:-webkit-gradient(linear,left bottom,left top,from(#a0a0a0),to(#c1c1c1));-moz-box-shadow:inset 1px 1px 1px #9b9b9b;-webkit-box-shadow:inset 1px 1px 1px #9b9b9b;box-shadow:inset 1px 1px 1px #9b9b9b;}#wpadminbar #adminbarsearch .adminbar-button:hover{color:#000;}#wpadminbar #adminbarsearch .adminbar-button::-moz-focus-inner{border:none;}* html #wpadminbar{overflow:hidden;position:absolute;}* html #wpadminbar .quicklinks ul li a{float:left;}* html #wpadminbar .menupop a span{background-image:none;}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludescssadminbardevcss"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/css/admin-bar.dev.css (17262 => 17263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/css/admin-bar.dev.css        2011-01-11 22:42:22 UTC (rev 17262)
+++ trunk/wp-includes/css/admin-bar.dev.css        2011-01-11 22:45:14 UTC (rev 17263)
</span><span class="lines">@@ -71,7 +71,8 @@
</span><span class="cx">         border-left-color: #707070;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#wpadminbar .quicklinks a {
</del><ins>+#wpadminbar .quicklinks a,
+#wpadminbar .shortlink-input {
</ins><span class="cx">         color: #ddd;
</span><span class="cx">         height: 28px;
</span><span class="cx">         text-shadow: #555 0px -1px 0px;
</span><span class="lines">@@ -85,7 +86,8 @@
</span><span class="cx">         line-height: 28px;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#wpadminbar .quicklinks .menupop ul {
</del><ins>+#wpadminbar .quicklinks .menupop ul,
+#wpadminbar .shortlink-input {
</ins><span class="cx">         -moz-box-shadow: 0 4px 8px rgba(0,0,0,0.1);
</span><span class="cx">         -webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.1);
</span><span class="cx">         box-shadow: 0 4px 8px rgba(0,0,0,0.1);
</span><span class="lines">@@ -98,11 +100,16 @@
</span><span class="cx">         float: none;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#wpadminbar .selected .shortlink-input {
+        display: block;
+}
+
</ins><span class="cx"> #wpadminbar .quicklinks .menupop ul li {
</span><span class="cx">         float: none;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#wpadminbar .quicklinks .menupop ul li a {
</del><ins>+#wpadminbar .quicklinks .menupop ul li a,
+#wpadminbar .shortlink-input {
</ins><span class="cx">         color: #555;
</span><span class="cx">         text-shadow: none;
</span><span class="cx">         white-space: nowrap;
</span><span class="lines">@@ -126,7 +133,8 @@
</span><span class="cx">         margin-top: -28px;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#wpadminbar .quicklinks li:hover {
</del><ins>+#wpadminbar .quicklinks li:hover,
+#wpadminbar .quicklinks .selected {
</ins><span class="cx">         background: #555;
</span><span class="cx">         background: -moz-linear-gradient(bottom, #555, #3e3e3e);
</span><span class="cx">         background: -webkit-gradient(linear, left bottom, left top, from(#555), to(#3e3e3e));
</span></span></pre></div>
<a id="trunkwpincludesjsadminbardevjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/js/admin-bar.dev.js (17262 => 17263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/js/admin-bar.dev.js        2011-01-11 22:42:22 UTC (rev 17262)
+++ trunk/wp-includes/js/admin-bar.dev.js        2011-01-11 22:45:14 UTC (rev 17263)
</span><span class="lines">@@ -7,6 +7,7 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         aB, hc = new RegExp('\\bhover\\b', 'g'), q = [],
</span><ins>+        rselected = new RegExp('\\bselected\\b', 'g'),
</ins><span class="cx">
</span><span class="cx">         /**
</span><span class="cx">          * Get the timeout ID of the given element
</span><span class="lines">@@ -19,12 +20,11 @@
</span><span class="cx">                 return false;
</span><span class="cx">         },
</span><span class="cx">
</span><del>-        addClass = function(t) {
-                var ancestors = [],
-                ancestorLength = 0,
-                id,
-                i = q.length,
-                inA;
</del><ins>+        addHoverClass = function(t) {
+                var i, id, inA, hovering, ul, li,
+                        ancestors = [],
+                        ancestorLength = 0;
+
</ins><span class="cx">                 while ( t && t != aB && t != d ) {
</span><span class="cx">                         if( 'LI' == t.nodeName.toUpperCase() ) {
</span><span class="cx">                                 ancestors[ ancestors.length ] = t;
</span><span class="lines">@@ -32,11 +32,24 @@
</span><span class="cx">                                 if ( id )
</span><span class="cx">                                         clearTimeout( id );
</span><span class="cx">                                 t.className = t.className ? ( t.className.replace(hc, '') + ' hover' ) : 'hover';
</span><ins>+                                hovering = t;
</ins><span class="cx">                         }
</span><span class="cx">                         t = t.parentNode;
</span><span class="cx">                 }
</span><span class="cx">
</span><ins>+                // Remove any selected classes.
+                ul = hovering.parentNode;
+                if ( ul && 'UL' == ul.nodeName.toUpperCase() ) {
+                        i = ul.childNodes.length;
+                        while ( i-- ) {
+                                li = ul.childNodes[i];
+                                if ( li != hovering )
+                                        li.className = li.className ? li.className.replace( rselected, '' ) : '';
+                        }
+                }
+
</ins><span class="cx">                 /* remove the hover class for any objects not in the immediate element's ancestry */
</span><ins>+                i = q.length;
</ins><span class="cx">                 while ( i-- ) {
</span><span class="cx">                         inA = false;        
</span><span class="cx">                         ancestorLength = ancestors.length;
</span><span class="lines">@@ -50,7 +63,7 @@
</span><span class="cx">                 }
</span><span class="cx">         },
</span><span class="cx">
</span><del>-        removeClass = function(t) {
</del><ins>+        removeHoverClass = function(t) {
</ins><span class="cx">                 while ( t && t != aB && t != d ) {
</span><span class="cx">                         if( 'LI' == t.nodeName.toUpperCase() ) {
</span><span class="cx">                                 (function(t) {
</span><span class="lines">@@ -65,54 +78,55 @@
</span><span class="cx">         },
</span><span class="cx">
</span><span class="cx">         clickShortlink = function(e) {
</span><del>-                var t = e.target || e.srcElement, links, i;
</del><ins>+                var i, l, node, className,
+                        t = e.target || e.srcElement,
+                        shortlink = t.href;
</ins><span class="cx">
</span><del>-                if ( 'undefined' == typeof adminBarL10n )
-                        return;
-
-                while( t && t != aB && t != d && (
-                        ! t.className ||
-                        -1 == t.className.indexOf('ab-get-shortlink')
-                ) )
</del><ins>+                // Make t the shortlink menu item, or return.
+                while ( true ) {
+                        // Check if we've gone past the shortlink node,
+                        // or if the user is clicking on the input.
+                        if ( ! t || t == d || t == aB || -1 != t.className.indexOf('shortlink-input') )
+                                return;
+                        // Check if we've found the shortlink node.
+                        if ( t.className && -1 != t.className.indexOf('ab-get-shortlink') )
+                                break;
</ins><span class="cx">                         t = t.parentNode;
</span><ins>+                }
+                
+                if ( e.preventDefault )
+                        e.preventDefault();
+                e.returnValue = false;
+                
+                if ( -1 == t.className.indexOf('selected') )
+                        t.className += ' selected';
</ins><span class="cx">
</span><del>-                if ( t && t.className && -1 != t.className.indexOf('ab-get-shortlink') ) {
-                        links = d.getElementsByTagName('link');
-                        if ( ! links.length )
-                                links = d.links;
-
-                        i = links.length;
-
-                        if ( e.preventDefault )
-                                e.preventDefault();
-                        e.returnValue = false;
-
-                        while( i-- ) {
-                                if ( links[i] && 'shortlink' == links[i].getAttribute('rel') ) {
-                                        prompt( adminBarL10n.url, links[i].href );
-                                        return false;
-                                }
</del><ins>+                for ( i = 0, l = t.childNodes.length; i < l; i++ ) {
+                        node = t.childNodes[i];
+                        if ( node.className && -1 != node.className.indexOf('shortlink-input') ) {
+                                node.focus();
+                                node.select();
+                                node.onblur = function() {
+                                        t.className = t.className ? t.className.replace( rselected, '' ) : '';
+                                };
+                                break;
</ins><span class="cx">                         }
</span><del>-
-                        alert( adminBarL10n.noShortlink );
-                        return false;
</del><span class="cx">                 }
</span><del>-        }
</del><ins>+                return false;
+        };
</ins><span class="cx">
</span><span class="cx">         addEvent(w, 'load', function() {
</span><del>-                var b = d.getElementsByTagName('body')[0],
-
</del><span class="cx">                 aB = d.getElementById('wpadminbar');
</span><span class="cx">
</span><del>-                if ( b && aB ) {
-                        b.appendChild( aB );
</del><ins>+                if ( d.body && aB ) {
+                        d.body.appendChild( aB );
</ins><span class="cx">
</span><span class="cx">                         addEvent(aB, 'mouseover', function(e) {
</span><del>-                                addClass( e.target || e.srcElement );
</del><ins>+                                addHoverClass( e.target || e.srcElement );
</ins><span class="cx">                         });
</span><span class="cx">
</span><span class="cx">                         addEvent(aB, 'mouseout', function(e) {
</span><del>-                                removeClass( e.target || e.srcElement );        
</del><ins>+                                removeHoverClass( e.target || e.srcElement );
</ins><span class="cx">                         });
</span><span class="cx">
</span><span class="cx">                         addEvent(aB, 'click', clickShortlink );
</span></span></pre></div>
<a id="trunkwpincludesjsadminbarjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/js/admin-bar.js (17262 => 17263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/js/admin-bar.js        2011-01-11 22:42:22 UTC (rev 17262)
+++ trunk/wp-includes/js/admin-bar.js        2011-01-11 22:45:14 UTC (rev 17263)
</span><span class="lines">@@ -1 +1 @@
</span><del>-(function(i,j){var c=function(m,l,d){if(m.addEventListener){m.addEventListener(l,d,false)}else{if(m.attachEvent){m.attachEvent("on"+l,function(){return d.call(m,window.event)})}}},e,f=new RegExp("\\bhover\\b","g"),a=[],g=function(l){var d=a.length;while(d--){if(a[d]&&l==a[d][1]){return a[d][0]}}return false},h=function(l){var m=[],p=0,o,d=a.length,n;while(l&&l!=e&&l!=i){if("LI"==l.nodeName.toUpperCase()){m[m.length]=l;o=g(l);if(o){clearTimeout(o)}l.className=l.className?(l.className.replace(f,"")+" hover"):"hover"}l=l.parentNode}while(d--){n=false;p=m.length;while(p--){if(m[p]==a[d][1]){n=true}}if(!n){a[d][1].className=a[d][1].className?a[d][1].className.replace(f,""):""}}},k=function(d){while(d&&d!=e&&d!=i){if("LI"==d.nodeName.toUpperCase()){(function(l){var m=setTimeout(function(){l.className=l.className?l.className.replace(f,""):""},500);a[a.length]=[m,l]})(d)}d=d.parentNode}},b=function(n){var m=n.target||n.srcElement,d,l;if("undefined"==typeof adminBarL10n){return}while(m&&m!=e&&m!=i&&(!m.className||-1==m.className.indexOf("ab-get-shortlink"))){m=m.parentNode}if(m&&m.className&&-1!=m.className.indexOf("ab-get-shortlink")){d=i.getElementsByTagName("link");if(!d.length){d=i.links}l=d.length;if(n.preventDefault){n.preventDefault()}n.returnValue=false;while(l--){if(d[l]&&"shortlink"==d[l].getAttribute("rel")){prompt(adminBarL10n.url,d[l].href);return false}}alert(adminBarL10n.noShortlink);return false}};c(j,"load",function(){var d=i.getElementsByTagName("body")[0],l=i.getElementById("wpadminbar");if(d&&l){d.appendChild(l);c(l,"mouseover",function(m){h(m.target||m.srcElement)});c(l,"mouseout",function(m){k(m.target||m.srcElement)});c(l,"click",b)}if(j.location.hash){j.scrollBy(0,-32)}})})(document,window);
</del><span class="cx">\ No newline at end of file
</span><ins>+(function(i,k){var c=function(n,m,d){if(n.addEventListener){n.addEventListener(m,d,false)}else{if(n.attachEvent){n.attachEvent("on"+m,function(){return d.call(n,window.event)})}}},e,f=new RegExp("\\bhover\\b","g"),a=[],j=new RegExp("\\bselected\\b","g"),g=function(m){var d=a.length;while(d--){if(a[d]&&m==a[d][1]){return a[d][0]}}return false},h=function(s){var n,d,q,m,p,r,u=[],o=0;while(s&&s!=e&&s!=i){if("LI"==s.nodeName.toUpperCase()){u[u.length]=s;d=g(s);if(d){clearTimeout(d)}s.className=s.className?(s.className.replace(f,"")+" hover"):"hover";m=s}s=s.parentNode}p=m.parentNode;if(p&&"UL"==p.nodeName.toUpperCase()){n=p.childNodes.length;while(n--){r=p.childNodes[n];if(r!=m){r.className=r.className?r.className.replace(j,""):""}}}n=a.length;while(n--){q=false;o=u.length;while(o--){if(u[o]==a[n][1]){q=true}}if(!q){a[n][1].className=a[n][1].className?a[n][1].className.replace(f,""):""}}},l=function(d){while(d&&d!=e&&d!=i){if("LI"==d.nodeName.toUpperCase()){(function(m){var n=setTimeout(function(){m.className=m.className?m.className.replace(f,""):""},500);a[a.length]=[n,m]})(d)}d=d.parentNode}},b=function(r){var n,d,q,o,m=r.target||r.srcElement,p=m.href;while(true){if(!m||m==i||m==e||-1!=m.className.indexOf("shortlink-input")){return}if(m.className&&-1!=m.className.indexOf("ab-get-shortlink")){break}m=m.parentNode}if(r.preventDefault){r.preventDefault()}r.returnValue=false;if(-1==m.className.indexOf("selected")){m.className+=" selected"}for(n=0,d=m.childNodes.length;n<d;n++){q=m.childNodes[n];if(q.className&&-1!=q.className.indexOf("shortlink-input")){q.focus();q.select();q.onblur=function(){m.className=m.className?m.className.replace(j,""):""};break}}return false};c(k,"load",function(){e=i.getElementById("wpadminbar");if(i.body&&e){i.body.appendChild(e);c(e,"mouseover",function(d){h(d.target||d.srcElement)});c(e,"mouseout",function(d){l(d.target||d.srcElement)});c(e,"click",b)}if(k.location.hash){k.scrollBy(0,-32)}})})(document,window);
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (17262 => 17263)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2011-01-11 22:42:22 UTC (rev 17262)
+++ trunk/wp-includes/script-loader.php        2011-01-11 22:45:14 UTC (rev 17263)
</span><span class="lines">@@ -262,11 +262,9 @@
</span><span class="cx">         $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter' ), '20100925' );
</span><span class="cx">         $scripts->add_data( 'user-profile', 'group', 1 );
</span><span class="cx">
</span><del>-        $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", false, '20101210');
</del><ins>+        $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", false, '20110111');
</ins><span class="cx">         $scripts->add_data( 'admin-bar', 'group', 1 );
</span><span class="cx">         $scripts->localize( 'admin-bar', 'adminBarL10n', array(
</span><del>-                'url' => __( 'URL:' ),
-                'noShortlink' => __( 'No shortlink available for this page.' ),
</del><span class="cx">                 'l10n_print_after' => 'try{convertEntities(adminBarL10n);}catch(e){};',
</span><span class="cx">         ) );
</span><span class="cx">
</span><span class="lines">@@ -515,7 +513,7 @@
</span><span class="cx">         $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
</span><span class="cx">         $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' );
</span><span class="cx">         $styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100907' );
</span><del>-        $styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css", array(), '20100111' );
</del><ins>+        $styles->add( 'admin-bar', "/wp-includes/css/admin-bar$suffix.css", array(), '20110111' );
</ins><span class="cx">         $styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css", array(), '20101224' );
</span><span class="cx">         $styles->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/css/wplink$suffix.css", array(), '20101224' );
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>