Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
10 / 10 |
CRAP | |
100.00% |
44 / 44 |
| WP_Customize_Panel | |
100.00% |
1 / 1 |
|
100.00% |
12 / 12 |
20 | |
100.00% |
44 / 44 |
| __construct | |
100.00% |
1 / 1 |
4 | |
100.00% |
15 / 15 |
|||
| active | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| active_callback | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| json | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
| check_capabilities | |
100.00% |
1 / 1 |
5 | |
100.00% |
5 / 5 |
|||
| get_content | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| maybe_render | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
| render | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
| render_content | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
| print_template | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| render_template | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| content_template | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| <?php | |
| /** | |
| * WordPress Customize Panel classes | |
| * | |
| * @package WordPress | |
| * @subpackage Customize | |
| * @since 4.0.0 | |
| */ | |
| /** | |
| * Customize Panel class. | |
| * | |
| * A UI container for sections, managed by the WP_Customize_Manager. | |
| * | |
| * @since 4.0.0 | |
| * | |
| * @see WP_Customize_Manager | |
| */ | |
| class WP_Customize_Panel { | |
| /** | |
| * Incremented with each new class instantiation, then stored in $instance_number. | |
| * | |
| * Used when sorting two instances whose priorities are equal. | |
| * | |
| * @since 4.1.0 | |
| * | |
| * @static | |
| * @access protected | |
| * @static | |
| * @var int | |
| */ | |
| protected static $instance_count = 0; | |
| /** | |
| * Order in which this instance was created in relation to other instances. | |
| * | |
| * @since 4.1.0 | |
| * @access public | |
| * @var int | |
| */ | |
| public $instance_number; | |
| /** | |
| * WP_Customize_Manager instance. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var WP_Customize_Manager | |
| */ | |
| public $manager; | |
| /** | |
| * Unique identifier. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var string | |
| */ | |
| public $id; | |
| /** | |
| * Priority of the panel, defining the display order of panels and sections. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var integer | |
| */ | |
| public $priority = 160; | |
| /** | |
| * Capability required for the panel. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var string | |
| */ | |
| public $capability = 'edit_theme_options'; | |
| /** | |
| * Theme feature support for the panel. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var string|array | |
| */ | |
| public $theme_supports = ''; | |
| /** | |
| * Title of the panel to show in UI. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var string | |
| */ | |
| public $title = ''; | |
| /** | |
| * Description to show in the UI. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var string | |
| */ | |
| public $description = ''; | |
| /** | |
| * Customizer sections for this panel. | |
| * | |
| * @since 4.0.0 | |
| * @access public | |
| * @var array | |
| */ | |
| public $sections; | |
| /** | |
| * Type of this panel. | |
| * | |
| * @since 4.1.0 | |
| * @access public | |
| * @var string | |
| */ | |
| public $type = 'default'; | |
| /** | |
| * Active callback. | |
| * | |
| * @since 4.1.0 | |
| * @access public | |
| * | |
| * @see WP_Customize_Section::active() | |
| * | |
| * @var callable Callback is called with one argument, the instance of | |
| * {@see WP_Customize_Section}, and returns bool to indicate | |
| * whether the section is active (such as it relates to the URL | |
| * currently being previewed). | |
| */ | |
| public $active_callback = ''; | |
| /** | |
| * Constructor. | |
| * | |
| * Any supplied $args override class property defaults. | |
| * | |
| * @since 4.0.0 | |
| * | |
| * @param WP_Customize_Manager $manager Customizer bootstrap instance. | |
| * @param string $id An specific ID for the panel. | |
| * @param array $args Panel arguments. | |
| */ | |
| public function __construct( $manager, $id, $args = array() ) { | |
| $keys = array_keys( get_object_vars( $this ) ); | |
| foreach ( $keys as $key ) { | |
| if ( isset( $args[ $key ] ) ) { | |
| $this->$key = $args[ $key ]; | |
| } | |
| } | |
| $this->manager = $manager; | |
| $this->id = $id; | |
| if ( empty( $this->active_callback ) ) { | |
| $this->active_callback = array( $this, 'active_callback' ); | |
| } | |
| self::$instance_count += 1; | |
| $this->instance_number = self::$instance_count; | |
| $this->sections = array(); // Users cannot customize the $sections array. | |
| } | |
| /** | |
| * Check whether panel is active to current Customizer preview. | |
| * | |
| * @since 4.1.0 | |
| * @access public | |
| * | |
| * @return bool Whether the panel is active to the current preview. | |
| */ | |
| final public function active() { | |
| $panel = $this; | |
| $active = call_user_func( $this->active_callback, $this ); | |
| /** | |
| * Filter response of WP_Customize_Panel::active(). | |
| * | |
| * @since 4.1.0 | |
| * | |
| * @param bool $active Whether the Customizer panel is active. | |
| * @param WP_Customize_Panel $panel {@see WP_Customize_Panel} instance. | |
| */ | |
| $active = apply_filters( 'customize_panel_active', $active, $panel ); | |
| return $active; | |
| } | |
| /** | |
| * Default callback used when invoking {@see WP_Customize_Panel::active()}. | |
| * | |
| * Subclasses can override this with their specific logic, or they may | |
| * provide an 'active_callback' argument to the constructor. | |
| * | |
| * @since 4.1.0 | |
| * @access public | |
| * | |
| * @return bool Always true. | |
| */ | |
| public function active_callback() { | |
| return true; | |
| } | |
| /** | |
| * Gather the parameters passed to client JavaScript via JSON. | |
| * | |
| * @since 4.1.0 | |
| * | |
| * @return array The array to be exported to the client as JSON. | |
| */ | |
| public function json() { | |
| $array = wp_array_slice_assoc( (array) $this, array( 'id', 'description', 'priority', 'type' ) ); | |
| $array['title'] = html_entity_decode( $this->title, ENT_QUOTES, get_bloginfo( 'charset' ) ); | |
| $array['content'] = $this->get_content(); | |
| $array['active'] = $this->active(); | |
| $array['instanceNumber'] = $this->instance_number; | |
| return $array; | |
| } | |
| /** | |
| * Checks required user capabilities and whether the theme has the | |
| * feature support required by the panel. | |
| * | |
| * @since 4.0.0 | |
| * | |
| * @return bool False if theme doesn't support the panel or the user doesn't have the capability. | |
| */ | |
| final public function check_capabilities() { | |
| if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) { | |
| return false; | |
| } | |
| if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) { | |
| return false; | |
| } | |
| return true; | |
| } | |
| /** | |
| * Get the panel's content template for insertion into the Customizer pane. | |
| * | |
| * @since 4.1.0 | |
| * | |
| * @return string Content for the panel. | |
| */ | |
| final public function get_content() { | |
| ob_start(); | |
| $this->maybe_render(); | |
| return trim( ob_get_clean() ); | |
| } | |
| /** | |
| * Check capabilities and render the panel. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| final public function maybe_render() { | |
| if ( ! $this->check_capabilities() ) { | |
| return; | |
| } | |
| /** | |
| * Fires before rendering a Customizer panel. | |
| * | |
| * @since 4.0.0 | |
| * | |
| * @param WP_Customize_Panel $this WP_Customize_Panel instance. | |
| */ | |
| do_action( 'customize_render_panel', $this ); | |
| /** | |
| * Fires before rendering a specific Customizer panel. | |
| * | |
| * The dynamic portion of the hook name, `$this->id`, refers to | |
| * the ID of the specific Customizer panel to be rendered. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| do_action( "customize_render_panel_{$this->id}" ); | |
| $this->render(); | |
| } | |
| /** | |
| * Render the panel container, and then its contents (via `this->render_content()`) in a subclass. | |
| * | |
| * Panel containers are now rendered in JS by default, see {@see WP_Customize_Panel::print_template()}. | |
| * | |
| * @since 4.0.0 | |
| * @access protected | |
| */ | |
| protected function render() {} | |
| /** | |
| * Render the panel UI in a subclass. | |
| * | |
| * Panel contents are now rendered in JS by default, see {@see WP_Customize_Panel::print_template()}. | |
| * | |
| * @since 4.1.0 | |
| * @access protected | |
| */ | |
| protected function render_content() {} | |
| /** | |
| * Render the panel's JS templates. | |
| * | |
| * This function is only run for panel types that have been registered with | |
| * WP_Customize_Manager::register_panel_type(). | |
| * | |
| * @since 4.3.0 | |
| * | |
| * @see WP_Customize_Manager::register_panel_type() | |
| */ | |
| public function print_template() { | |
| ?> | |
| <script type="text/html" id="tmpl-customize-panel-<?php echo esc_attr( $this->type ); ?>-content"> | |
| <?php $this->content_template(); ?> | |
| </script> | |
| <script type="text/html" id="tmpl-customize-panel-<?php echo esc_attr( $this->type ); ?>"> | |
| <?php $this->render_template(); ?> | |
| </script> | |
| <?php | |
| } | |
| /** | |
| * An Underscore (JS) template for rendering this panel's container. | |
| * | |
| * Class variables for this panel class are available in the `data` JS object; | |
| * export custom variables by overriding WP_Customize_Panel::json(). | |
| * | |
| * @see WP_Customize_Panel::print_template() | |
| * | |
| * @since 4.3.0 | |
| * @access protected | |
| */ | |
| protected function render_template() { | |
| ?> | |
| <li id="accordion-panel-{{ data.id }}" class="accordion-section control-section control-panel control-panel-{{ data.type }}"> | |
| <h3 class="accordion-section-title" tabindex="0"> | |
| {{ data.title }} | |
| <span class="screen-reader-text"><?php _e( 'Press return or enter to open this panel' ); ?></span> | |
| </h3> | |
| <ul class="accordion-sub-container control-panel-content"></ul> | |
| </li> | |
| <?php | |
| } | |
| /** | |
| * An Underscore (JS) template for this panel's content (but not its container). | |
| * | |
| * Class variables for this panel class are available in the `data` JS object; | |
| * export custom variables by overriding WP_Customize_Panel::json(). | |
| * | |
| * @see WP_Customize_Panel::print_template() | |
| * | |
| * @since 4.3.0 | |
| * @access protected | |
| */ | |
| protected function content_template() { | |
| ?> | |
| <li class="panel-meta customize-info accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>"> | |
| <button class="customize-panel-back" tabindex="-1"><span class="screen-reader-text"><?php _e( 'Back' ); ?></span></button> | |
| <div class="accordion-section-title"> | |
| <span class="preview-notice"><?php | |
| /* translators: %s is the site/panel title in the Customizer */ | |
| echo sprintf( __( 'You are customizing %s' ), '<strong class="panel-title">{{ data.title }}</strong>' ); | |
| ?></span> | |
| <button class="customize-help-toggle dashicons dashicons-editor-help" tabindex="0" aria-expanded="false"><span class="screen-reader-text"><?php _e( 'Help' ); ?></span></button> | |
| </div> | |
| <# if ( data.description ) { #> | |
| <div class="description customize-panel-description"> | |
| {{{ data.description }}} | |
| </div> | |
| <# } #> | |
| </li> | |
| <?php | |
| } | |
| } | |
| /** WP_Customize_Nav_Menus_Panel class */ | |
| require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menus-panel.php' ); |