File "class-redux-customizer-section.php"
Full Path: /home/elegucvf/public_html/video/wp-content/plugins/atlas-core/framework/redux-core/inc/extensions/customizer/inc/class-redux-customizer-section.php
File size: 5.62 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Customizer section representing widget area (sidebar).
*
* @package WordPress
* @subpackage Customize
* @since 4.0.0
* @see WP_Customize_Section
*/
defined( 'ABSPATH' ) || exit;
/**
* Class Redux_Customizer_Section
*/
class Redux_Customizer_Section extends WP_Customize_Section {
/**
* Type of this section.
*
* @since 4.1.0
* @access public
* @var string
*/
public $type = 'redux';
/**
* Panel opt_name.
*
* @since 4.0.0
* @access public
* @var string
*/
public $opt_name = '';
/**
* Section array.
*
* @var array|mixed
*/
public $section = array();
/**
* Constructor.
* Any supplied $args override class property defaults.
*
* @since 3.4.0
*
* @param WP_Customize_Manager $manager Customizer bootstrap instance.
* @param string $id A specific ID of the section.
* @param array $args Section arguments.
*/
public function __construct( $manager, $id, $args = array() ) {
parent::__construct( $manager, $id, $args );
// Redux addition.
if ( isset( $args['section'] ) ) {
$this->section = $args['section'];
$this->description = $this->section['desc'] ?? '';
$this->opt_name = $args['opt_name'] ?? '';
}
}
/**
* WP < 4.3 Render
*/
protected function render() {
global $wp_version;
$version = explode( '-', $wp_version );
if ( version_compare( $version[0], '4.3', '<' ) ) {
$this->render_fallback();
}
}
/**
* Render the section, and the controls that have been added to it.
*
* @since 3.4.0
*/
protected function render_fallback() {
$classes = 'accordion-section redux-section control-section control-section-' . $this->type;
?>
<li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
<h3 class="accordion-section-title" tabindex="0">
<?php
echo wp_kses(
$this->title,
array(
'em' => array(),
'i' => array(),
'strong' => array(),
'span' => array(
'class' => array(),
'style' => array(),
),
)
);
?>
<span class="screen-reader-text"><?php esc_attr_e( 'Press return or enter to expand', 'redux-framework' ); ?></span>
</h3>
<ul class="accordion-section-content redux-main">
<?php
if ( isset( $this->opt_name ) && isset( $this->section ) ) {
// phpcs:ignore WordPress.NamingConventions.ValidHookName
do_action( "redux/page/$this->opt_name/section/before", $this->section );
}
?>
<?php if ( ! empty( $this->description ) ) { ?>
<li class="customize-section-description-container">
<p class="description customize-section-description legacy"><?php echo wp_kses_post( $this->description ); ?></p>
</li>
<?php } ?>
</ul>
</li>
<?php
}
/**
* 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 {
$array = wp_array_slice_assoc(
parent::json(),
array(
'id',
'title',
'description',
'priority',
'panel',
'type',
)
);
$array['content'] = $this->get_content();
$array['active'] = $this->active();
$array['instanceNumber'] = $this->instance_number;
if ( $this->panel ) {
/* translators: ▸ is the unicode right-pointing triangle, and %s is the section title in the Customizer */
$array['customizeAction'] = sprintf( __( 'Customizing ▸ %s', 'redux-framework' ), esc_html( $this->manager->get_panel( $this->panel )->title ) );
} else {
$array['customizeAction'] = __( 'Customizing', 'redux-framework' );
}
// BEGIN Redux Additions.
$array['width'] = $this->section['customizer_width'] ?? '';
$array['icon'] = ( isset( $this->section['icon'] ) && ! empty( $this->section['icon'] ) ) ? $this->section['icon'] : 'hide';
$array['opt_name'] = $this->opt_name;
return $array;
}
/**
* An Underscore (JS) template for rendering this section.
* Class variables for this section class are available in the `data` JS object;
* export custom variables by overriding {@see WP_Customize_Section::json()}.
*
* @see WP_Customize_Section::print_template()
* @since 4.3.0
*/
protected function render_template() {
?>
<li id="accordion-section-{{ data.id }}"
class="redux-standalone-section redux-customizer-opt-name redux-section accordion-section control-section control-section-{{ data.type }}"
data-opt-name="{{ data.opt_name }}"
data-width="{{ data.width }}">
<h3 class="accordion-section-title" tabindex="0">
<# if ( data.icon ) { #><i class="{{ data.icon }}"></i> <# } #>{{ data.title }}
<span class="screen-reader-text"><?php esc_html_e( 'Press return or enter to open', 'redux-framework' ); ?></span>
</h3>
<ul class="accordion-section-content redux-main">
<li class="customize-section-description-container">
<div class="customize-section-title">
<button class="customize-section-back" tabindex="-1">
<span class="screen-reader-text"><?php esc_html_e( 'Back', 'redux-framework' ); ?></span>
</button>
<h3>
<span class="customize-action">
{{{ data.customizeAction }}}
</span> {{ data.title }}
</h3>
</div>
<# if ( data.description ) { #>
<p class="description customize-section-description">{{{ data.description }}}</p>
<# } #>
<?php
if ( isset( $this->opt_name ) && isset( $this->section ) ) {
// phpcs:ignore WordPress.NamingConventions.ValidHookName
do_action( "redux/page/$this->opt_name/section/before", $this->section );
}
?>
</li>
</ul>
</li>
<?php
}
}