Make WordPress Core

Ticket #37513: 37513.3.patch

File 37513.3.patch, 4.1 KB (added by keraweb, 8 years ago)

Fix top-secondary + node tree functions

  • wp-includes/class-wp-admin-bar.php

     
    258258        }
    259259
    260260        /**
     261         * @param string|object $node  The node ID or object
     262         * @param array         $tree  An array of tree node ID's
     263         *
     264         * @return array
     265         */
     266        final public function get_node_tree( $node, $tree = array() ) {
     267
     268                if ( ! is_object( $node ) && isset( $this->nodes[ $node ] ) ) {
     269                        $node = $this->nodes[ $node ];
     270                }
     271
     272                if ( isset( $node->parent ) && 'root' !== $node->parent  ) {
     273                        array_unshift( $tree, $node->parent );
     274                        $tree = $this->get_node_tree( $node->parent, $tree );
     275                }
     276
     277                return $tree;
     278        }
     279
     280        /**
     281         * @param string|object $node    The node ID or object
     282         * @param string        $search  The search item ID
     283         *
     284         * @return bool
     285         */
     286        final public function is_tree( $node, $search ) {
     287                $tree = $this->get_node_tree( $node );
     288                if ( in_array( $search, $tree ) ) {
     289                        return true;
     290                }
     291                return false;
     292        }
     293
     294        /**
    261295         * @access public
    262296         */
    263297        public function render() {
     
    478512                $has_link              = ! empty( $node->href );
    479513                $is_root_top_item      = 'root-default' === $node->parent;
    480514                $is_top_secondary_item = 'top-secondary' === $node->parent;
     515                $is_root_top_tree = $this->is_tree( $node, 'root-default' );
     516                $is_top_secondary_tree = $this->is_tree( $node, 'top-secondary' );
    481517
    482518                // Allow only numeric values, then casted to integers, and allow a tabindex value of `0` for a11y.
    483519                $tabindex = ( isset( $node->meta['tabindex'] ) && is_numeric( $node->meta['tabindex'] ) ) ? (int) $node->meta['tabindex'] : '';
    484520                $aria_attributes = ( '' !== $tabindex ) ? ' tabindex="' . $tabindex . '"' : '';
    485521
    486                 $menuclass = $arrow_right = '';
     522                $menuclass = $arrow = '';
    487523
    488524                if ( $is_parent ) {
    489525                        $menuclass = 'menupop ';
     
    491527                }
    492528
    493529                // Print the right arrow icon for the primary menu children with children.
    494                 if ( ! $is_root_top_item && ! $is_top_secondary_item && $is_parent ) {
    495                         $arrow_right = '<span class="wp-admin-bar-arrow-right" aria-hidden="true"></span>';
     530                if ( ! $is_root_top_item && ! $is_top_secondary_item && ! $is_top_secondary_tree && $is_parent ) {
     531                        $arrow = '<span class="wp-admin-bar-arrow-right" aria-hidden="true"></span>';
    496532                }
     533                // Print the left arrow icon for the secondary menu children with children.
     534                elseif ( ! $is_root_top_item && ! $is_top_secondary_item && ! $is_root_top_tree && $is_parent ) {
     535                        $arrow = '<span class="wp-admin-bar-arrow-left" aria-hidden="true"></span>';
     536                }
    497537
    498538                if ( ! empty( $node->meta['class'] ) )
    499539                        $menuclass .= $node->meta['class'];
     
    539579                                ?>><?php
    540580                        endif;
    541581
    542                         echo $arrow_right . $node->title;
     582                        echo $arrow . $node->title;
    543583
    544584                        if ( $has_link ) :
    545585                                ?></a><?php
  • wp-includes/css/admin-bar.css

     
    235235#wpadminbar > #wp-toolbar > #wp-admin-bar-root-default .ab-icon,
    236236#wpadminbar .ab-icon,
    237237#wpadminbar .ab-item:before,
     238.wp-admin-bar-arrow-left,
    238239.wp-admin-bar-arrow-right {
    239240        position: relative;
    240241        float: left;
     
    313314        color: #00b9eb;
    314315}
    315316
     317#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow-left:before,
    316318#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow-right:before,
    317319#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before {
    318320        position: absolute;
     
    327329        padding-right: 2em;
    328330}
    329331
     332#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow-left:before {
     333        top: 1px;
     334        left: 6px;
     335        padding: 4px 0;
     336        content: "\f141";
     337        color: inherit;
     338}
     339
    330340#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow-right:before {
    331341        top: 1px;
    332342        right: 10px;
     
    340350        padding-right: 1em;
    341351}
    342352
    343 #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before {
    344         top: 1px;
    345         left: 6px;
    346         content: "\f141";
    347 }
    348 
    349353#wpadminbar .quicklinks .menupop ul.ab-sub-secondary {
    350354        display: block;
    351355        position: relative;