mirror of https://github.com/vtrois/kratos
146 lines
4.2 KiB
PHP
146 lines
4.2 KiB
PHP
<?php if (!defined('ABSPATH')) {
|
|
die;
|
|
}
|
|
/**
|
|
*
|
|
* WP Customize custom panel
|
|
*
|
|
* @since 1.0.0
|
|
* @version 1.0.0
|
|
*
|
|
*/
|
|
if (!class_exists('WP_Customize_Panel_CSF') && class_exists('WP_Customize_Panel')) {
|
|
class WP_Customize_Panel_CSF extends WP_Customize_Panel
|
|
{
|
|
public $type = 'csf';
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* WP Customize custom section
|
|
*
|
|
* @since 1.0.0
|
|
* @version 1.0.0
|
|
*
|
|
*/
|
|
if (!class_exists('WP_Customize_Section_CSF') && class_exists('WP_Customize_Section')) {
|
|
class WP_Customize_Section_CSF extends WP_Customize_Section
|
|
{
|
|
public $type = 'csf';
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* WP Customize custom control
|
|
*
|
|
* @since 1.0.0
|
|
* @version 1.0.0
|
|
*
|
|
*/
|
|
if (!class_exists('WP_Customize_Control_CSF') && class_exists('WP_Customize_Control')) {
|
|
class WP_Customize_Control_CSF extends WP_Customize_Control
|
|
{
|
|
|
|
public $type = 'csf';
|
|
public $field = '';
|
|
public $unique = '';
|
|
|
|
public function render()
|
|
{
|
|
|
|
$depend = '';
|
|
$visible = '';
|
|
|
|
if (!empty($this->field['dependency'])) {
|
|
|
|
$dependency = $this->field['dependency'];
|
|
$depend_visible = '';
|
|
$data_controller = '';
|
|
$data_condition = '';
|
|
$data_value = '';
|
|
$data_global = '';
|
|
|
|
if (is_array($dependency[0])) {
|
|
$data_controller = implode('|', array_column($dependency, 0));
|
|
$data_condition = implode('|', array_column($dependency, 1));
|
|
$data_value = implode('|', array_column($dependency, 2));
|
|
$data_global = implode('|', array_column($dependency, 3));
|
|
$depend_visible = implode('|', array_column($dependency, 4));
|
|
} else {
|
|
$data_controller = (!empty($dependency[0])) ? $dependency[0] : '';
|
|
$data_condition = (!empty($dependency[1])) ? $dependency[1] : '';
|
|
$data_value = (!empty($dependency[2])) ? $dependency[2] : '';
|
|
$data_global = (!empty($dependency[3])) ? $dependency[3] : '';
|
|
$depend_visible = (!empty($dependency[4])) ? $dependency[4] : '';
|
|
}
|
|
|
|
$depend .= ' data-controller="' . esc_attr($data_controller) . '"';
|
|
$depend .= ' data-condition="' . esc_attr($data_condition) . '"';
|
|
$depend .= ' data-value="' . esc_attr($data_value) . '"';
|
|
$depend .= (!empty($data_global)) ? ' data-depend-global="true"' : '';
|
|
|
|
$visible = ' csf-dependency-control';
|
|
$visible .= (!empty($depend_visible)) ? ' csf-depend-visible' : ' csf-depend-hidden';
|
|
}
|
|
|
|
$id = 'customize-control-' . str_replace(array('[', ']'), array('-', ''), $this->id);
|
|
$class = 'customize-control customize-control-' . $this->type . $visible;
|
|
|
|
echo '<li id="' . esc_attr($id) . '" class="' . esc_attr($class) . '"' . $depend . '>';
|
|
$this->render_field_content();
|
|
echo '</li>';
|
|
}
|
|
|
|
public function render_field_content()
|
|
{
|
|
|
|
$complex = apply_filters('csf_customize_complex_fields', array(
|
|
'accordion',
|
|
'background',
|
|
'border',
|
|
'button_set',
|
|
'checkbox',
|
|
'color_group',
|
|
'date',
|
|
'dimensions',
|
|
'fieldset',
|
|
'group',
|
|
'image_select',
|
|
'link',
|
|
'link_color',
|
|
'media',
|
|
'palette',
|
|
'repeater',
|
|
'sortable',
|
|
'sorter',
|
|
'spacing',
|
|
'switcher',
|
|
'tabbed',
|
|
'typography'
|
|
));
|
|
|
|
$field_id = (!empty($this->field['id'])) ? $this->field['id'] : '';
|
|
$custom = (!empty($this->field['customizer'])) ? true : false;
|
|
$is_complex = (in_array($this->field['type'], $complex)) ? true : false;
|
|
$class = ($is_complex || $custom) ? ' csf-customize-complex' : '';
|
|
$atts = ($is_complex || $custom) ? ' data-unique-id="' . esc_attr($this->unique) . '" data-option-id="' . esc_attr($field_id) . '"' : '';
|
|
|
|
if (!$is_complex && !$custom) {
|
|
$this->field['attributes']['data-customize-setting-link'] = $this->settings['default']->id;
|
|
}
|
|
|
|
$this->field['name'] = $this->settings['default']->id;
|
|
|
|
$this->field['dependency'] = array();
|
|
|
|
echo '<div class="csf-customize-field' . esc_attr($class) . '"' . $atts . '>';
|
|
|
|
CSF::field($this->field, $this->value(), $this->unique, 'customize');
|
|
|
|
echo '</div>';
|
|
}
|
|
}
|
|
}
|