WordPress.org

Make WordPress Core

Ticket #16155: 16155.diff

File 16155.diff, 6.6 KB (added by koopersmith, 3 years ago)
  • wp-includes/admin-bar.php

     
    139139        global $wp_admin_bar; 
    140140 
    141141        $short = wp_get_shortlink( 0, 'query' ); 
     142        $id = 'get-shortlink'; 
    142143 
    143         if ( ! empty( $short) ) 
    144                 $wp_admin_bar->add_menu( array( 'id' => 'get-shortlink', 'title' => __( 'Shortlink' ), 'href' => $short ) ); 
     144        if ( empty( $short ) ) 
     145                return; 
     146         
     147        $html = '<input class="shortlink-input" type="text" readonly="readonly" value="' . esc_attr( $short ) . '" />'; 
     148         
     149        $wp_admin_bar->add_menu( array( 
     150                'id' => $id, 
     151                'title' => __( 'Shortlink' ), 
     152                'href' => $short, 
     153                'meta' => array( 'html' => $html ), 
     154        ) ); 
    145155} 
    146156 
    147157/** 
  • wp-includes/js/admin-bar.dev.js

     
    77        }, 
    88 
    99        aB, hc = new RegExp('\\bhover\\b', 'g'), q = [], 
     10        rselected = new RegExp('\\bselected\\b', 'g'), 
    1011 
    1112        /** 
    1213         * Get the timeout ID of the given element 
     
    1920                return false; 
    2021        }, 
    2122 
    22         addClass = function(t) { 
    23                 var ancestors = [], 
    24                 ancestorLength = 0, 
    25                 id, 
    26                 i = q.length, 
    27                 inA; 
     23        addHoverClass = function(t) { 
     24                var i, id, inA, hovering, ul, li, 
     25                        ancestors = [], 
     26                        ancestorLength = 0; 
     27 
    2828                while ( t && t != aB && t != d ) { 
    2929                        if( 'LI' == t.nodeName.toUpperCase() ) { 
    3030                                ancestors[ ancestors.length ] = t; 
     
    3232                                if ( id ) 
    3333                                        clearTimeout( id ); 
    3434                                t.className = t.className ? ( t.className.replace(hc, '') + ' hover' ) : 'hover'; 
     35                                hovering = t; 
    3536                        } 
    3637                        t = t.parentNode; 
    3738                } 
    3839 
     40                // Remove any selected classes. 
     41                ul = hovering.parentNode; 
     42                if ( ul && 'UL' == ul.nodeName.toUpperCase() ) { 
     43                        i = ul.childNodes.length; 
     44                        while ( i-- ) { 
     45                                li = ul.childNodes[i]; 
     46                                if ( li != hovering ) 
     47                                        li.className = li.className ? li.className.replace( rselected, '' ) : ''; 
     48                        } 
     49                } 
     50 
    3951                /* remove the hover class for any objects not in the immediate element's ancestry */ 
     52                i = q.length; 
    4053                while ( i-- ) { 
    4154                        inA = false;     
    4255                        ancestorLength = ancestors.length; 
     
    5063                } 
    5164        }, 
    5265 
    53         removeClass = function(t) { 
     66        removeHoverClass = function(t) { 
    5467                while ( t && t != aB && t != d ) { 
    5568                        if( 'LI' == t.nodeName.toUpperCase() ) { 
    5669                                (function(t) { 
     
    6578        }, 
    6679 
    6780        clickShortlink = function(e) { 
    68                 var t = e.target || e.srcElement, links, i; 
     81                var i, l, node, className, 
     82                        t = e.target || e.srcElement, 
     83                        shortlink = t.href; 
    6984 
    70                 if ( 'undefined' == typeof adminBarL10n ) 
    71                         return; 
    72  
    73                 while( t && t != aB && t != d && ( 
    74                         ! t.className || 
    75                         -1 == t.className.indexOf('ab-get-shortlink') 
    76                 ) ) 
     85                // Make t the shortlink menu item, or return. 
     86                while ( true ) { 
     87                        // Check if we've gone past the shortlink node, 
     88                        // or if the user is clicking on the input. 
     89                        if ( ! t || t == d || t == aB || -1 != t.className.indexOf('shortlink-input') ) 
     90                                return; 
     91                        // Check if we've found the shortlink node. 
     92                        if ( t.className && -1 != t.className.indexOf('ab-get-shortlink') ) 
     93                                break; 
    7794                        t = t.parentNode; 
     95                } 
     96                 
     97                if ( e.preventDefault ) 
     98                        e.preventDefault(); 
     99                e.returnValue = false; 
     100                 
     101                if ( -1 == t.className.indexOf('selected') ) 
     102                        t.className += ' selected'; 
    78103 
    79                 if ( t && t.className && -1 != t.className.indexOf('ab-get-shortlink') ) { 
    80                         links = d.getElementsByTagName('link'); 
    81                         if ( ! links.length ) 
    82                                 links = d.links; 
    83  
    84                         i = links.length; 
    85  
    86                         if ( e.preventDefault ) 
    87                                 e.preventDefault(); 
    88                         e.returnValue = false; 
    89  
    90                         while( i-- ) { 
    91                                 if ( links[i] && 'shortlink' == links[i].getAttribute('rel') ) { 
    92                                         prompt( adminBarL10n.url, links[i].href ); 
    93                                         return false; 
    94                                 } 
     104                for ( i = 0, l = t.childNodes.length; i < l; i++ ) { 
     105                        node = t.childNodes[i]; 
     106                        if ( node.className && -1 != node.className.indexOf('shortlink-input') ) { 
     107                                node.select(); 
     108                                node.onblur = function() { 
     109                                        t.className = t.className ? t.className.replace( rselected, '' ) : ''; 
     110                                }; 
     111                                break; 
    95112                        } 
    96  
    97                         alert( adminBarL10n.noShortlink ); 
    98                         return false; 
    99113                } 
    100         } 
     114                return false; 
     115        }; 
    101116 
    102117        addEvent(w, 'load', function() { 
    103                 var b = d.getElementsByTagName('body')[0], 
    104  
    105118                aB = d.getElementById('wpadminbar'); 
    106119 
    107                 if ( b && aB ) { 
    108                         b.appendChild( aB ); 
     120                if ( d.body && aB ) { 
     121                        d.body.appendChild( aB ); 
    109122 
    110123                        addEvent(aB, 'mouseover', function(e) { 
    111                                 addClass( e.target || e.srcElement ); 
     124                                addHoverClass( e.target || e.srcElement ); 
    112125                        }); 
    113126 
    114127                        addEvent(aB, 'mouseout', function(e) { 
    115                                 removeClass( e.target || e.srcElement );         
     128                                removeHoverClass( e.target || e.srcElement ); 
    116129                        }); 
    117130 
    118131                        addEvent(aB, 'click', clickShortlink ); 
  • wp-includes/css/admin-bar.dev.css

     
    7171        border-left-color: #707070; 
    7272} 
    7373 
    74 #wpadminbar .quicklinks a { 
     74#wpadminbar .quicklinks a, 
     75#wpadminbar .shortlink-input { 
    7576        color: #ddd; 
    7677        height: 28px; 
    7778        text-shadow: #555 0px -1px 0px; 
     
    8586        line-height: 28px; 
    8687} 
    8788 
    88 #wpadminbar .quicklinks .menupop ul { 
     89#wpadminbar .quicklinks .menupop ul, 
     90#wpadminbar .shortlink-input { 
    8991        -moz-box-shadow: 0 4px 8px rgba(0,0,0,0.1); 
    9092        -webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.1); 
    9193        box-shadow: 0 4px 8px rgba(0,0,0,0.1); 
     
    98100        float: none; 
    99101} 
    100102 
     103#wpadminbar .selected .shortlink-input { 
     104        display: block; 
     105} 
     106 
    101107#wpadminbar .quicklinks .menupop ul li { 
    102108        float: none; 
    103109} 
    104110 
    105 #wpadminbar .quicklinks .menupop ul li a { 
     111#wpadminbar .quicklinks .menupop ul li a, 
     112#wpadminbar .shortlink-input { 
    106113        color: #555; 
    107114        text-shadow: none; 
    108115        white-space: nowrap; 
     
    126133        margin-top: -28px; 
    127134} 
    128135 
    129 #wpadminbar .quicklinks li:hover { 
     136#wpadminbar .quicklinks li:hover, 
     137#wpadminbar .quicklinks .selected { 
    130138        background: #555; 
    131139        background: -moz-linear-gradient(bottom,  #555,  #3e3e3e); 
    132140        background: -webkit-gradient(linear, left bottom, left top, from(#555), to(#3e3e3e)); 
  • wp-includes/script-loader.php

     
    265265        $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", false, '20101210'); 
    266266        $scripts->add_data( 'admin-bar', 'group', 1 ); 
    267267        $scripts->localize( 'admin-bar', 'adminBarL10n', array( 
    268                 'url' => __( 'URL:' ), 
    269                 'noShortlink' => __( 'No shortlink available for this page.' ), 
    270268                'l10n_print_after' => 'try{convertEntities(adminBarL10n);}catch(e){};', 
    271269        ) ); 
    272270