WordPress.org

Make WordPress Core

Changeset 38767


Ignore:
Timestamp:
10/09/2016 11:40:53 PM (20 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.