Make WordPress Core


Ignore:
Timestamp:
10/09/2016 11:40:53 PM (10 years ago)
Author:
westonruter
Message:

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

Props ryankienstra, westonruter.
Fixes #36984.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.