WordPress.org

Make WordPress Core

Ticket #21583: 21583.18.a.diff

File 21583.18.a.diff, 12.4 KB (added by ryelle, 19 months ago)
  • wp-includes/admin-bar.php

     
    657657        ) ); 
    658658} 
    659659 
     660function wp_admin_bar_screen_options( $wp_admin_bar ) { 
     661 
     662        if ( ! get_current_screen()->show_screen_options() ) 
     663                return; 
     664 
     665        $wp_admin_bar->add_menu( array( 
     666                'parent' => 'top-secondary', 
     667                'id'    => 'screen-options', 
     668                'title' => '<span class="ab-icon"></span>', 
     669                'href'  => '#screen-options-wrap', 
     670                'meta'   => array( 
     671                        'class'    => 'screen-meta-toggle' 
     672                ) 
     673        ) ); 
     674} 
     675 
     676function wp_admin_bar_contextual_help( $wp_admin_bar ) { 
     677        $wp_admin_bar->add_menu( array( 
     678                'parent' => 'top-secondary', 
     679                'id'    => 'screen-help', 
     680                'title' => 'Help<span class="ab-icon"></span>', 
     681                'href'  => '#contextual-help-wrap', 
     682                'meta'   => array( 
     683                        'class'    => 'screen-meta-toggle' 
     684                ) 
     685        ) ); 
     686} 
     687 
    660688/** 
    661689 * Add secondary menus. 
    662690 * 
  • wp-includes/js/admin-bar.js

     
    1010                                node.attr('tabindex', '0').attr('tabindex', tab); 
    1111                }; 
    1212 
    13                 $('#wpadminbar').removeClass('nojq').removeClass('nojs').find('li.menupop').hoverIntent({ 
     13                $('#wpadminbar').removeClass('nojq').removeClass('nojs').find('li.menupop').not('.sticky').hoverIntent({ 
    1414                        over: function(e){ 
    1515                                $(this).addClass('hover'); 
     16                                heightCheck($(this)); 
    1617                        }, 
    1718                        out: function(e){ 
    1819                                $(this).removeClass('hover'); 
     
    2223                        interval: 100 
    2324                }); 
    2425 
     26                $('.sticky', '#wpadminbar').click(function(e){ 
     27                        e.preventDefault(); 
     28                        $(this).toggleClass('hover'); 
     29                }); 
     30 
    2531                $('#wp-admin-bar-get-shortlink').click(function(e){ 
    2632                        e.preventDefault(); 
    2733                        $(this).addClass('selected').children('.shortlink-input').blur(function(){ 
     
    6672                        e.preventDefault(); 
    6773                        $('html, body').animate({ scrollTop: 0 }, 'fast'); 
    6874                }); 
     75                 
     76                 
    6977 
    7078        }); 
     79         
     80        function heightCheck( menu ) { 
     81                // Add overflow if sub menu height exceeds window height 
     82                var wHeight = jQuery(window).height(), 
     83                        toolbarPlusPadding = 28 + 23, 
     84                        subWrapper = menu.find('.ab-sub-wrapper'), 
     85                        subMenuHeight = subWrapper.height() + toolbarPlusPadding; 
     86                 
     87                if ( subMenuHeight > wHeight ) 
     88                        subWrapper.css({ 'overflow-y': 'auto', 'overflow-x': 'hidden', 'height': wHeight - toolbarPlusPadding + 'px'}); 
     89        } 
     90         
    7191} else { 
    7292        (function(d, w) { 
    7393                var addEvent = function( obj, type, fn ) { 
  • wp-includes/css/admin-bar.css

     
    1010        font: normal 13px/28px sans-serif; 
    1111        color: #ccc; 
    1212        text-shadow: #444 0px -1px 0px; 
    13 } 
     13}  
    1414 
    1515#wpadminbar ul li:before, 
    1616#wpadminbar ul li:after { 
     
    206206} 
    207207 
    208208#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, 
    209 #wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { 
     209#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item, 
     210#wpadminbar .ab-top-menu > li > .screen-meta-active, 
     211#wpadminbar .ab-top-menu > li:hover > .screen-meta-active { 
    210212        background: #fff; 
    211213        color: #333; 
    212214        text-shadow: none; 
     
    517519} 
    518520 
    519521/** 
     522 * Sticky menu toggle arrows 
     523 */ 
     524#wpadminbar .sticky .sticky-indicator { 
     525        position: relative; 
     526        float: right; 
     527        width: 20px; 
     528        height: 16px; 
     529        margin-top: 6px; 
     530        background-image: url("../images/admin-bar-sprite.png"); 
     531        background-position: 0 -254px; 
     532        background-repeat: no-repeat; 
     533        cursor: pointer; 
     534} 
     535 
     536#wpadminbar .sticky.hover .sticky-indicator { 
     537        background-position: 0 -228px; 
     538} 
     539 
     540/** 
    520541 * WP Logo icon 
    521542 */ 
    522543#wp-admin-bar-wp-logo > .ab-item .ab-icon { 
     
    573594} 
    574595 
    575596/** 
     597 * Screen Settings icon 
     598 */ 
     599#wpadminbar #wp-admin-bar-screen-options > .ab-item .ab-icon { 
     600        background-image: url(../images/admin-bar-sprite.png?d=20111130); 
     601        background-position: -3px -252px; 
     602        background-repeat: no-repeat; 
     603} 
     604 
     605#wpadminbar.nojs #wp-admin-bar-screen-options:hover > .ab-item .ab-icon, 
     606#wpadminbar #wp-admin-bar-screen-options.hover > .ab-item .ab-icon { 
     607        background-image: url(../images/admin-bar-sprite.png?d=20111130); 
     608        background-position: -3px -228px; 
     609        background-repeat: no-repeat; 
     610} 
     611 
     612/** 
    576613 * Customize support classes 
    577614 */ 
    578615.no-customize-support .hide-if-no-customize, 
     
    590627        #wp-admin-bar-wp-logo > .ab-item .ab-icon, 
    591628        #wp-admin-bar-updates > .ab-item .ab-icon, 
    592629        #wp-admin-bar-comments > .ab-item .ab-icon, 
    593         #wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon { 
    594                 background-image: url(../images/admin-bar-sprite-2x.png?d=20120830); 
    595                 background-size: 20px 220px; 
     630        #wpadminbar #wp-admin-bar-new-content > .ab-item .ab-icon, 
     631        #wpadminbar #wp-admin-bar-screen-options > .ab-item .ab-icon, 
     632        #wpadminbar .sticky .sticky-indicator { 
     633                background-image: url( "../images/admin-bar-sprite-2x.png?d=20120830" ); 
     634                background-size: 20px 276px; 
    596635        } 
    597636} 
    598637 
  • wp-includes/class-wp-admin-bar.php

     
    104104                        'parent' => false, 
    105105                        'href'   => false, 
    106106                        'group'  => false, 
     107                        'sticky' => false, 
    107108                        'meta'   => array(), 
    108109                ); 
    109110 
     
    396397 
    397398                $is_parent = ! empty( $node->children ); 
    398399                $has_link  = ! empty( $node->href ); 
     400                $has_title = ! empty( $node->title ); 
     401                $is_sticky = $node->sticky === true ? true : false; 
    399402 
    400403                $tabindex = isset( $node->meta['tabindex'] ) ? (int) $node->meta['tabindex'] : ''; 
    401404                $aria_attributes = $tabindex ? 'tabindex="' . $tabindex . '"' : ''; 
     
    410413                if ( ! empty( $node->meta['class'] ) ) 
    411414                        $menuclass .= $node->meta['class']; 
    412415 
     416                if ( $is_sticky ) 
     417                        $menuclass .= 'sticky'; 
     418 
    413419                if ( $menuclass ) 
    414420                        $menuclass = ' class="' . esc_attr( trim( $menuclass ) ) . '"'; 
    415421 
    416422                ?> 
    417423 
    418424                <li id="<?php echo esc_attr( 'wp-admin-bar-' . $node->id ); ?>"<?php echo $menuclass; ?>><?php 
    419                         if ( $has_link ): 
    420                                 ?><a class="ab-item" <?php echo $aria_attributes; ?> href="<?php echo esc_url( $node->href ) ?>"<?php 
    421                                         if ( ! empty( $node->meta['onclick'] ) ) : 
    422                                                 ?> onclick="<?php echo esc_js( $node->meta['onclick'] ); ?>"<?php 
     425                        if ( $has_title ): 
     426                                if ( $has_link ): 
     427                                        ?><a class="ab-item" <?php echo $aria_attributes; ?> href="<?php echo esc_url( $node->href ) ?>"<?php 
     428                                                if ( ! empty( $node->meta['onclick'] ) ) : 
     429                                                        ?> onclick="<?php echo esc_js( $node->meta['onclick'] ); ?>"<?php 
     430                                                endif; 
     431                                        if ( ! empty( $node->meta['target'] ) ) : 
     432                                                ?> target="<?php echo esc_attr( $node->meta['target'] ); ?>"<?php 
    423433                                        endif; 
    424                                 if ( ! empty( $node->meta['target'] ) ) : 
    425                                         ?> target="<?php echo esc_attr( $node->meta['target'] ); ?>"<?php 
     434                                        if ( ! empty( $node->meta['title'] ) ) : 
     435                                                ?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php 
     436                                        endif; 
     437                                        ?>><?php 
     438                                else: 
     439                                        ?><a href="#" onclick="return false;" class="ab-item ab-empty-item" <?php echo $aria_attributes; 
     440                                        if ( ! empty( $node->meta['title'] ) ) : 
     441                                                ?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php 
     442                                        endif; 
     443                                        ?>><?php 
    426444                                endif; 
    427                                 if ( ! empty( $node->meta['title'] ) ) : 
    428                                         ?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php 
     445         
     446                                echo $node->title; 
     447 
     448                                if ( $is_sticky ) : 
     449                                        ?><span class="sticky-indicator"></span><?php 
    429450                                endif; 
    430                                 ?>><?php 
    431                         else: 
    432                                 ?><div class="ab-item ab-empty-item" <?php echo $aria_attributes; 
    433                                 if ( ! empty( $node->meta['title'] ) ) : 
    434                                         ?> title="<?php echo esc_attr( $node->meta['title'] ); ?>"<?php 
     451 
     452                                if ( $has_link ) : 
     453                                        ?></a><?php 
     454                                else: 
     455                                        ?></a><?php 
    435456                                endif; 
    436                                 ?>><?php 
    437457                        endif; 
    438458 
    439                         echo $node->title; 
    440  
    441                         if ( $has_link ) : 
    442                                 ?></a><?php 
    443                         else: 
    444                                 ?></div><?php 
    445                         endif; 
    446  
    447459                        if ( $is_parent ) : 
    448460                                ?><div class="ab-sub-wrapper"><?php 
    449461                                        foreach ( $node->children as $group ) { 
     
    455467                        if ( ! empty( $node->meta['html'] ) ) 
    456468                                echo $node->meta['html']; 
    457469 
     470                        if ( ! empty( $node->meta['html_callback'] ) ) 
     471                                call_user_func( $node->meta['html_callback'] ); 
    458472                        ?> 
    459473                </li><?php 
    460474        } 
     
    483497                } 
    484498                add_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu', 80 ); 
    485499 
     500                if ( is_admin() ) { 
     501                        add_action( 'admin_bar_menu', 'wp_admin_bar_screen_options', 0 ); 
     502                        add_action( 'admin_bar_menu', 'wp_admin_bar_contextual_help', 90 ); 
     503                } 
     504 
    486505                add_action( 'admin_bar_menu', 'wp_admin_bar_add_secondary_groups', 200 ); 
    487506 
    488507                do_action( 'add_admin_bar_menus' ); 
  • wp-admin/includes/screen.php

     
    784784 
    785785                // Time to render! 
    786786                ?> 
    787                 <div id="screen-meta" class="metabox-prefs"> 
    788  
    789787                        <div id="contextual-help-wrap" class="<?php echo esc_attr( $help_class ); ?>" tabindex="-1" aria-label="<?php esc_attr_e('Contextual Help Tab'); ?>"> 
    790788                                <div id="contextual-help-back"></div> 
    791789                                <div id="contextual-help-columns"> 
     
    860858                // Add screen options 
    861859                if ( $this->show_screen_options() ) 
    862860                        $this->render_screen_options(); 
    863                 ?> 
    864                 </div> 
    865                 <?php 
    866                 if ( ! $this->get_help_tabs() && ! $this->show_screen_options() ) 
    867                         return; 
    868                 ?> 
    869                 <div id="screen-meta-links"> 
    870                 <?php if ( $this->get_help_tabs() ) : ?> 
    871                         <div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle"> 
    872                         <a href="#contextual-help-wrap" id="contextual-help-link" class="show-settings" aria-controls="contextual-help-wrap" aria-expanded="false"><?php _e( 'Help' ); ?></a> 
    873                         </div> 
    874                 <?php endif; 
    875                 if ( $this->show_screen_options() ) : ?> 
    876                         <div id="screen-options-link-wrap" class="hide-if-no-js screen-meta-toggle"> 
    877                         <a href="#screen-options-wrap" id="show-settings-link" class="show-settings" aria-controls="screen-options-wrap" aria-expanded="false"><?php _e( 'Screen Options' ); ?></a> 
    878                         </div> 
    879                 <?php endif; ?> 
    880                 </div> 
    881                 <?php 
    882861        } 
    883862 
    884863        public function show_screen_options() { 
  • wp-admin/js/common.js

     
    9090}; 
    9191 
    9292screenMeta = { 
    93         element: null, // #screen-meta 
    9493        toggles: null, // .screen-meta-toggle 
    95         page:    null, // #wpcontent 
    9694 
    9795        init: function() { 
    98                 this.element = $('#screen-meta'); 
    9996                this.toggles = $('.screen-meta-toggle a'); 
    100                 this.page    = $('#wpcontent'); 
    10197 
    102                 this.toggles.click( this.toggleEvent ); 
     98                this.toggles.on('click', this.toggleEvent ); 
    10399        }, 
    104100 
    105101        toggleEvent: function( e ) { 
     
    116112        }, 
    117113 
    118114        open: function( panel, link ) { 
    119  
    120                 $('.screen-meta-toggle').not( link.parent() ).css('visibility', 'hidden'); 
    121  
    122                 panel.parent().show(); 
    123115                panel.slideDown( 'fast', function() { 
    124116                        panel.focus(); 
    125117                        link.addClass('screen-meta-active').attr('aria-expanded', true); 
     
    129121        close: function( panel, link ) { 
    130122                panel.slideUp( 'fast', function() { 
    131123                        link.removeClass('screen-meta-active').attr('aria-expanded', false); 
    132                         $('.screen-meta-toggle').css('visibility', ''); 
    133                         panel.parent().hide(); 
    134124                }); 
    135125        } 
    136126}; 
  • wp-admin/admin-header.php

     
    115115<div id="wpcontent"> 
    116116 
    117117<?php 
     118$current_screen->set_parentage( $parent_file ); 
    118119do_action('in_admin_header'); 
    119120?> 
    120121 
     
    122123<?php 
    123124unset($title_class, $blog_name, $total_update_count, $update_title); 
    124125 
    125 $current_screen->set_parentage( $parent_file ); 
    126  
    127126?> 
    128127 
    129128<div id="wpbody-content" aria-label="<?php esc_attr_e('Main content'); ?>"> 
  • wp-admin/css/wp-admin.css

     
    11171117 
    11181118#screen-options-wrap, 
    11191119#contextual-help-wrap { 
    1120         margin: 0; 
     1120        margin: 0 2px 0 0; 
    11211121        padding: 8px 20px 12px; 
    1122         position: relative; 
     1122        position: absolute; 
    11231123        overflow: auto; 
     1124        z-index: 9999; 
     1125        -webkit-box-shadow: 0 4px 4px rgba(0,0,0,0.2); 
     1126        box-shadow: 0 4px 4px rgba(0,0,0,0.2); 
     1127        background: #f1f1f1; 
     1128        border-width: 0 1px 1px 1px; 
     1129        border-style: solid; 
     1130        border-color: #dfdfdf; 
    11241131} 
     1132#screen-options-wrap { 
     1133        right: 0; 
     1134        margin: 0; 
     1135        width: 200px; 
     1136        background: #fff; 
     1137} 
    11251138 
    11261139#screen-meta .screen-reader-text { 
    11271140        visibility: hidden;