WordPress.org

Make WordPress Core

Ticket #21583: 21583.18.b.diff

File 21583.18.b.diff, 12.5 KB (added by ryelle, 6 years 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.hoverIntent({
     99                        over: this.toggleEvent,
     100                        out: this.toggleEvent
     101                });
    103102        },
    104103
    105104        toggleEvent: function( e ) {
     
    116115        },
    117116
    118117        open: function( panel, link ) {
    119 
    120                 $('.screen-meta-toggle').not( link.parent() ).css('visibility', 'hidden');
    121 
    122                 panel.parent().show();
    123                 panel.slideDown( 'fast', function() {
     118                panel.show( 0, function() {
    124119                        panel.focus();
    125120                        link.addClass('screen-meta-active').attr('aria-expanded', true);
    126121                });
    127122        },
    128123
    129124        close: function( panel, link ) {
    130                 panel.slideUp( 'fast', function() {
     125                panel.hide( 0, function() {
    131126                        link.removeClass('screen-meta-active').attr('aria-expanded', false);
    132                         $('.screen-meta-toggle').css('visibility', '');
    133                         panel.parent().hide();
    134127                });
    135128        }
    136129};
  • 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;