WordPress.org

Make WordPress Core

Ticket #29197: 28979.2.class-wp-customize-section.diff

File 28979.2.class-wp-customize-section.diff, 8.9 KB (added by celloexpressions, 7 years ago)

Straight diff on class-wp-customize-section.php, which would then be renamed to class-wp-customize-container.php. Will probably need to be refreshed once we're ready to do this, and it should happen early since it'll invalidate all patches against this file.

  • class-wp-customize-section.php

     
    11<?php
    22/**
    3  * Customize Section Class.
     3 * Customize Container Class.
    44 *
    5  * A UI container for controls, managed by the WP_Customize_Manager.
     5 * A UI container for Customizer components, managed by the WP_Customize_Manager.
    66 *
    77 * @package WordPress
    88 * @subpackage Customize
    9  * @since 3.4.0
     9 * @since 4.0.0
    1010 */
    11 class WP_Customize_Section {
     11abstract class WP_Customize_Container {
    1212
    1313        /**
    1414         * WP_Customize_Manager instance.
    1515         *
    16          * @since 3.4.0
     16         * @since 4.0.0
    1717         * @access public
    1818         * @var WP_Customize_Manager
    1919         */
     
    2222        /**
    2323         * Unique identifier.
    2424         *
    25          * @since 3.4.0
     25         * @since 4.0.0
    2626         * @access public
    2727         * @var string
    2828         */
     
    2929        public $id;
    3030
    3131        /**
    32          * Priority of the section which informs load order of sections.
     32         * Priority of the container, which determines display order.
    3333         *
    34          * @since 3.4.0
     34         * @since 4.0.0
    3535         * @access public
    3636         * @var integer
    3737         */
    38         public $priority = 10;
     38        public $priority = 160;
    3939
    4040        /**
    41          * Panel in which to show the section, making it a sub-section.
     41         * Capability required for the container.
    4242         *
    4343         * @since 4.0.0
    4444         * @access public
    4545         * @var string
    4646         */
    47         public $panel = '';
    48 
    49         /**
    50          * Capability required for the section.
    51          *
    52          * @since 3.4.0
    53          * @access public
    54          * @var string
    55          */
    5647        public $capability = 'edit_theme_options';
    5748
    5849        /**
    59          * Theme feature support for the section.
     50         * Theme feature support requied for the container.
    6051         *
    61          * @since 3.4.0
     52         * @since 4.0.0
    6253         * @access public
    6354         * @var string|array
    6455         */
     
    6556        public $theme_supports = '';
    6657
    6758        /**
    68          * Title of the section to show in UI.
     59         * Title to show in the UI.
    6960         *
    70          * @since 3.4.0
     61         * @since 4.0.0
    7162         * @access public
    7263         * @var string
    7364         */
     
    7667        /**
    7768         * Description to show in the UI.
    7869         *
    79          * @since 3.4.0
     70         * @since 4.0.0
    8071         * @access public
    8172         * @var string
    8273         */
     
    8374        public $description = '';
    8475
    8576        /**
    86          * Customizer controls for this section.
    87          *
    88          * @since 3.4.0
    89          * @access public
    90          * @var array
    91          */
    92         public $controls;
    93 
    94         /**
    9577         * Constructor.
    9678         *
    9779         * Any supplied $args override class property defaults.
    9880         *
    99          * @since 3.4.0
     81         * @since 4.0.0
    10082         *
    10183         * @param WP_Customize_Manager $manager Customizer bootstrap instance.
    102          * @param string               $id      An specific ID of the section.
    103          * @param array                $args    Section arguments.
     84         * @param string               $id      An specific ID for the container.
     85         * @param array                $args    Container arguments.
    10486         */
    10587        public function __construct( $manager, $id, $args = array() ) {
    10688                $keys = array_keys( get_object_vars( $this ) );
     
    11294                $this->manager = $manager;
    11395                $this->id = $id;
    11496
    115                 $this->controls = array(); // Users cannot customize the $controls array.
    116 
    11797                return $this;
    11898        }
    11999
    120100        /**
    121101         * Checks required user capabilities and whether the theme has the
    122          * feature support required by the section.
     102         * feature support required by the container.
    123103         *
    124          * @since 3.4.0
     104         * @since 4.0.0
    125105         *
    126          * @return bool False if theme doesn't support the section or user doesn't have the capability.
     106         * @return bool False if theme doesn't support the container or user doesn't have the capability.
    127107         */
    128108        public final function check_capabilities() {
    129109                if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) )
     
    136116        }
    137117
    138118        /**
    139          * Check capabilities and render the section.
     119         * Check capabilities and render the container.
    140120         *
    141          * @since 3.4.0
     121         * @since 4.0.0
    142122         */
    143123        public final function maybe_render() {
    144124                if ( ! $this->check_capabilities() )
     
    145125                        return;
    146126
    147127                /**
    148                  * Fires before rendering a Customizer section.
     128                 * Fires before rendering a Customizer section (or panel).
    149129                 *
    150130                 * @since 3.4.0
    151131                 *
     
    152132                 * @param WP_Customize_Section $this WP_Customize_Section instance.
    153133                 */
    154134                do_action( 'customize_render_section', $this );
     135
    155136                /**
    156                  * Fires before rendering a specific Customizer section.
     137                 * Fires before rendering a specific Customizer section (or panel).
    157138                 *
    158139                 * The dynamic portion of the hook name, $this->id, refers to the ID
    159                  * of the specific Customizer section to be rendered.
     140                 * of the specific Customizer container to be rendered.
    160141                 *
    161142                 * @since 3.4.0
    162143                 */
     
    166147        }
    167148
    168149        /**
    169          * Render the section, and the controls that have been added to it.
     150         * Render the container, and the objects that have been added to it.
    170151         *
    171          * @since 3.4.0
     152         * @since 4.0.0
    172153         */
    173         protected function render() {
    174                 $classes = 'control-section accordion-section';
    175                 if ( $this->panel ) {
    176                         $classes .= ' control-subsection';
    177                 }
    178                 ?>
    179                 <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
    180                         <h3 class="accordion-section-title" tabindex="0">
    181                                 <?php echo esc_html( $this->title ); ?>
    182                                 <span class="screen-reader-text"><?php _e( 'Press return or enter to expand' ); ?></span>
    183                         </h3>
    184                         <ul class="accordion-section-content">
    185                                 <?php if ( ! empty( $this->description ) ) : ?>
    186                                 <li><p class="description customize-section-description"><?php echo $this->description; ?></p></li>
    187                                 <?php endif; ?>
    188                                 <?php
    189                                 foreach ( $this->controls as $control )
    190                                         $control->maybe_render();
    191                                 ?>
    192                         </ul>
    193                 </li>
    194                 <?php
    195         }
     154        abstract protected function render();
    196155}
    197156
     157
    198158/**
    199159 * Customize Panel Class.
    200160 *
     
    204164 * @subpackage Customize
    205165 * @since 4.0.0
    206166 */
    207 class WP_Customize_Panel extends WP_Customize_Section {
     167class WP_Customize_Panel extends WP_Customize_Container {
    208168
    209169        /**
    210170         * Customizer sections for this panel.
     
    243203         */
    244204        protected function render() {
    245205                ?>
    246                 <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="control-section control-panel accordion-section">
     206                <li id="accordion-panel-<?php echo esc_attr( $this->id ); ?>" class="control-section control-panel accordion-section">
    247207                        <h3 class="accordion-section-title" tabindex="0">
    248208                                <?php echo esc_html( $this->title ); ?>
    249209                                <span class="screen-reader-text"><?php _e( 'Press return or enter to open panel' ); ?></span>
     
    253213                                <li class="accordion-section control-section<?php if ( empty( $this->description ) ) echo ' cannot-expand'; ?>">
    254214                                        <div class="accordion-section-title" tabindex="0">
    255215                                                <span class="preview-notice"><?php
    256                                                         /* translators: %s is the site/panel title in the Customize pane */
     216                                                        /* translators: %s is the site/panel title in the Customizer */
    257217                                                        echo sprintf( __( 'You are customizing %s' ), '<strong class="panel-title">' . esc_html( $this->title ) . '</strong>' );
    258218                                                ?></span>
    259219                                        </div>
     
    273233                <?php
    274234        }
    275235}
     236
     237
     238/**
     239 * Customize Section Class.
     240 *
     241 * A UI container for controls, managed by the WP_Customize_Manager.
     242 *
     243 * @package WordPress
     244 * @subpackage Customize
     245 * @since 3.4.0
     246 */
     247class WP_Customize_Section extends WP_Customize_Container {
     248
     249        /**
     250         * Panel in which to show the section, making it a sub-section.
     251         *
     252         * @since 4.0.0
     253         * @access public
     254         * @var string
     255         */
     256        public $panel = '';
     257
     258        /**
     259         * Customizer controls for this section.
     260         *
     261         * @since 3.4.0
     262         * @access public
     263         * @var array
     264         */
     265        public $controls;
     266
     267        /**
     268         * Constructor.
     269         *
     270         * Any supplied $args override class property defaults.
     271         *
     272         * @since 3.4.0
     273         *
     274         * @param WP_Customize_Manager $manager Customizer bootstrap instance.
     275         * @param string               $id      An specific ID of the section.
     276         * @param array                $args    Section arguments.
     277         */
     278        public function __construct( $manager, $id, $args = array() ) {
     279                parent::__construct( $manager, $id, $args );
     280
     281                $this->controls = array(); // Users cannot customize the $controls array.
     282
     283                return $this;
     284        }
     285
     286        /**
     287         * Render the section, and the controls that have been added to it.
     288         *
     289         * @since 3.4.0
     290         */
     291        protected function render() {
     292                $classes = 'control-section accordion-section';
     293                if ( $this->panel ) {
     294                        $classes .= ' control-subsection';
     295                }
     296                ?>
     297                <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
     298                        <h3 class="accordion-section-title" tabindex="0">
     299                                <?php echo esc_html( $this->title ); ?>
     300                                <span class="screen-reader-text"><?php _e( 'Press return or enter to expand' ); ?></span>
     301                        </h3>
     302                        <ul class="accordion-section-content">
     303                                <?php if ( ! empty( $this->description ) ) : ?>
     304                                <li><p class="description customize-section-description"><?php echo $this->description; ?></p></li>
     305                                <?php endif; ?>
     306                                <?php
     307                                foreach ( $this->controls as $control )
     308                                        $control->maybe_render();
     309                                ?>
     310                        </ul>
     311                </li>
     312                <?php
     313        }
     314}