WordPress.org

Make WordPress Core

Changeset 38767


Ignore:
Timestamp:
10/09/16 23:40:53 (8 months ago)
Author:
westonruter
Message:

Customize: Show Pages section first and pre-expanded in list of available nav menu items.

Props ryankienstra, westonruter.
Fixes #36984.

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/js/customize-nav-menus.js

    r38709 r38767  
    398398                    self.pages[ type + ':' + object ] = -1; 
    399399                    return; 
     400                } else if ( 'page' === object ) { 
     401                    availableMenuItemContainer.find( '.accordion-section-title > button' ).click(); 
    400402                } 
    401403                items = new api.Menus.AvailableItemCollection( items ); // @todo Why is this collection created and then thrown away? 
  • trunk/src/wp-includes/class-wp-customize-nav-menus.php

    r38709 r38767  
    896896                <ul class="accordion-section-content available-menu-items-list" data-type="search"></ul> 
    897897            </div> 
    898             <div id="new-custom-menu-item" class="accordion-section"> 
    899                 <h4 class="accordion-section-title" role="presentation"> 
    900                     <?php _e( 'Custom Links' ); ?> 
    901                     <button type="button" class="button-link" aria-expanded="false"> 
    902                         <span class="screen-reader-text"><?php _e( 'Toggle section: Custom Links' ); ?></span> 
    903                         <span class="toggle-indicator" aria-hidden="true"></span> 
    904                     </button> 
    905                 </h4> 
    906                 <div class="accordion-section-content customlinkdiv"> 
    907                     <input type="hidden" value="custom" id="custom-menu-item-type" name="menu-item[-1][menu-item-type]" /> 
    908                     <p id="menu-item-url-wrap" class="wp-clearfix"> 
    909                         <label class="howto" for="custom-menu-item-url"><?php _e( 'URL' ); ?></label> 
    910                         <input id="custom-menu-item-url" name="menu-item[-1][menu-item-url]" type="text" class="code menu-item-textbox" value="http://"> 
    911                     </p> 
    912                     <p id="menu-item-name-wrap" class="wp-clearfix"> 
    913                         <label class="howto" for="custom-menu-item-name"><?php _e( 'Link Text' ); ?></label> 
    914                         <input id="custom-menu-item-name" name="menu-item[-1][menu-item-title]" type="text" class="regular-text menu-item-textbox"> 
    915                     </p> 
    916                     <p class="button-controls"> 
    917                         <span class="add-to-menu"> 
    918                             <input type="submit" class="button submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-custom-menu-item" id="custom-menu-item-submit"> 
    919                             <span class="spinner"></span> 
    920                         </span> 
    921                     </p> 
    922                 </div> 
    923             </div> 
    924898            <?php 
    925899 
     900            // Ensure the page post type comes first in the list. 
     901            $item_types = $this->available_item_types(); 
     902            $page_item_type = null; 
     903            foreach ( $item_types as $i => $item_type ) { 
     904                if ( isset( $item_type['object'] ) && 'page' === $item_type['object'] ) { 
     905                    $page_item_type = $item_type; 
     906                    unset( $item_types[ $i ] ); 
     907                } 
     908            } 
     909 
     910            if ( $page_item_type ) { 
     911                $this->print_post_type_container( $page_item_type ); 
     912            } 
     913            $this->print_custom_links_available_menu_item(); 
    926914            // Containers for per-post-type item browsing; items are added with JS. 
    927             foreach ( $this->available_item_types() as $available_item_type ) { 
    928                 $id = sprintf( 'available-menu-items-%s-%s', $available_item_type['type'], $available_item_type['object'] ); 
    929                 ?> 
    930                 <div id="<?php echo esc_attr( $id ); ?>" class="accordion-section"> 
    931                     <h4 class="accordion-section-title" role="presentation"> 
    932                         <?php echo esc_html( $available_item_type['title'] ); ?> 
    933                         <span class="spinner"></span> 
    934                         <span class="no-items"><?php _e( 'No items' ); ?></span> 
    935                         <button type="button" class="button-link" aria-expanded="false"> 
    936                             <span class="screen-reader-text"><?php 
    937                             /* translators: %s: Title of a section with menu items */ 
    938                             printf( __( 'Toggle section: %s' ), esc_html( $available_item_type['title'] ) ); ?></span> 
    939                             <span class="toggle-indicator" aria-hidden="true"></span> 
    940                         </button> 
    941                     </h4> 
    942                     <div class="accordion-section-content"> 
    943                         <?php if ( 'post_type' === $available_item_type['type'] ) : ?> 
    944                             <?php $post_type_obj = get_post_type_object( $available_item_type['object'] ); ?> 
    945                             <?php if ( current_user_can( $post_type_obj->cap->create_posts ) && current_user_can( $post_type_obj->cap->publish_posts ) ) : ?> 
    946                                 <div class="new-content-item"> 
    947                                     <input type="text" class="create-item-input" placeholder="<?php echo esc_attr( $post_type_obj->labels->add_new_item ); ?>"> 
    948                                     <button type="button" class="button add-content"><?php _e( 'Add' ); ?></button> 
    949                                 </div> 
    950                             <?php endif; ?> 
    951                         <?php endif; ?> 
    952                         <ul class="available-menu-items-list" data-type="<?php echo esc_attr( $available_item_type['type'] ); ?>" data-object="<?php echo esc_attr( $available_item_type['object'] ); ?>" data-type_label="<?php echo esc_attr( isset( $available_item_type['type_label'] ) ? $available_item_type['type_label'] : $available_item_type['type'] ); ?>"></ul> 
    953                     </div> 
    954                 </div> 
    955                 <?php 
     915            foreach ( $item_types as $item_type ) { 
     916                $this->print_post_type_container( $item_type ); 
    956917            } 
    957918            ?> 
    958919        </div><!-- #available-menu-items --> 
    959920    <?php 
     921    } 
     922 
     923    /** 
     924     * Print the markup for new menu items. 
     925     * 
     926     * To be used in the template #available-menu-items. 
     927     * 
     928     * @since 4.7.0 
     929     * @access private 
     930     * 
     931     * @param array $available_item_type Menu item data to output, including title, type, and label. 
     932     * @return void 
     933     */ 
     934    protected function print_post_type_container( $available_item_type ) { 
     935        $id = sprintf( 'available-menu-items-%s-%s', $available_item_type['type'], $available_item_type['object'] ); 
     936        ?> 
     937        <div id="<?php echo esc_attr( $id ); ?>" class="accordion-section"> 
     938            <h4 class="accordion-section-title" role="presentation"> 
     939                <?php echo esc_html( $available_item_type['title'] ); ?> 
     940                <span class="spinner"></span> 
     941                <span class="no-items"><?php _e( 'No items' ); ?></span> 
     942                <button type="button" class="button-link" aria-expanded="false"> 
     943                    <span class="screen-reader-text"><?php 
     944                        /* translators: %s: Title of a section with menu items */ 
     945                        printf( __( 'Toggle section: %s' ), esc_html( $available_item_type['title'] ) ); ?></span> 
     946                    <span class="toggle-indicator" aria-hidden="true"></span> 
     947                </button> 
     948            </h4> 
     949            <div class="accordion-section-content"> 
     950                <?php if ( 'post_type' === $available_item_type['type'] ) : ?> 
     951                    <?php $post_type_obj = get_post_type_object( $available_item_type['object'] ); ?> 
     952                    <?php if ( current_user_can( $post_type_obj->cap->create_posts ) && current_user_can( $post_type_obj->cap->publish_posts ) ) : ?> 
     953                        <div class="new-content-item"> 
     954                            <input type="text" class="create-item-input" placeholder="<?php echo esc_attr( $post_type_obj->labels->add_new_item ); ?>"> 
     955                            <button type="button" class="button add-content"><?php _e( 'Add' ); ?></button> 
     956                        </div> 
     957                    <?php endif; ?> 
     958                <?php endif; ?> 
     959                <ul class="available-menu-items-list" data-type="<?php echo esc_attr( $available_item_type['type'] ); ?>" data-object="<?php echo esc_attr( $available_item_type['object'] ); ?>" data-type_label="<?php echo esc_attr( isset( $available_item_type['type_label'] ) ? $available_item_type['type_label'] : $available_item_type['type'] ); ?>"></ul> 
     960            </div> 
     961        </div> 
     962        <?php 
     963    } 
     964 
     965    /** 
     966     * Print the markup for available menu item custom links. 
     967     * 
     968     * @since 4.7.0 
     969     * @access private 
     970     * 
     971     * @return void 
     972     */ 
     973    protected function print_custom_links_available_menu_item() { 
     974        ?> 
     975        <div id="new-custom-menu-item" class="accordion-section"> 
     976            <h4 class="accordion-section-title" role="presentation"> 
     977                <?php _e( 'Custom Links' ); ?> 
     978                <button type="button" class="button-link" aria-expanded="false"> 
     979                    <span class="screen-reader-text"><?php _e( 'Toggle section: Custom Links' ); ?></span> 
     980                    <span class="toggle-indicator" aria-hidden="true"></span> 
     981                </button> 
     982            </h4> 
     983            <div class="accordion-section-content customlinkdiv"> 
     984                <input type="hidden" value="custom" id="custom-menu-item-type" name="menu-item[-1][menu-item-type]" /> 
     985                <p id="menu-item-url-wrap" class="wp-clearfix"> 
     986                    <label class="howto" for="custom-menu-item-url"><?php _e( 'URL' ); ?></label> 
     987                    <input id="custom-menu-item-url" name="menu-item[-1][menu-item-url]" type="text" class="code menu-item-textbox" value="http://"> 
     988                </p> 
     989                <p id="menu-item-name-wrap" class="wp-clearfix"> 
     990                    <label class="howto" for="custom-menu-item-name"><?php _e( 'Link Text' ); ?></label> 
     991                    <input id="custom-menu-item-name" name="menu-item[-1][menu-item-title]" type="text" class="regular-text menu-item-textbox"> 
     992                </p> 
     993                <p class="button-controls"> 
     994                    <span class="add-to-menu"> 
     995                        <input type="submit" class="button submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-custom-menu-item" id="custom-menu-item-submit"> 
     996                        <span class="spinner"></span> 
     997                    </span> 
     998                </p> 
     999            </div> 
     1000        </div> 
     1001        <?php 
    9601002    } 
    9611003 
Note: See TracChangeset for help on using the changeset viewer.