250 lines
5.8 KiB
PHP
250 lines
5.8 KiB
PHP
<?php
|
|
/**
|
|
* Customizer Controls Base.
|
|
*
|
|
* Extend this in other controls.
|
|
*
|
|
* @package Kirki
|
|
* @subpackage Controls
|
|
* @copyright Copyright (c) 2020, David Vongries
|
|
* @license https://opensource.org/licenses/MIT
|
|
* @since 3.0.12
|
|
*/
|
|
|
|
/**
|
|
* A base for controls.
|
|
*/
|
|
class Kirki_Control_Base extends WP_Customize_Control {
|
|
|
|
/**
|
|
* Used to automatically generate all CSS output.
|
|
*
|
|
* @access public
|
|
* @var array
|
|
*/
|
|
public $output = array();
|
|
|
|
/**
|
|
* Data type
|
|
*
|
|
* @access public
|
|
* @var string
|
|
*/
|
|
public $option_type = 'theme_mod';
|
|
|
|
/**
|
|
* Option name (if using options).
|
|
*
|
|
* @access public
|
|
* @var string
|
|
*/
|
|
public $option_name = false;
|
|
|
|
/**
|
|
* The kirki_config we're using for this control
|
|
*
|
|
* @access public
|
|
* @var string
|
|
*/
|
|
public $kirki_config = 'global';
|
|
|
|
/**
|
|
* Whitelisting the "required" argument.
|
|
*
|
|
* @since 3.0.17
|
|
* @access public
|
|
* @var array
|
|
*/
|
|
public $required = array();
|
|
|
|
/**
|
|
* Whitelisting the "preset" argument.
|
|
*
|
|
* @since 3.0.26
|
|
* @access public
|
|
* @var array
|
|
*/
|
|
public $preset = array();
|
|
|
|
/**
|
|
* Whitelisting the "css_vars" argument.
|
|
*
|
|
* @since 3.0.28
|
|
* @access public
|
|
* @var string
|
|
*/
|
|
public $css_vars = '';
|
|
|
|
/**
|
|
* Extra script dependencies.
|
|
*
|
|
* @since 3.1.0
|
|
* @return array
|
|
*/
|
|
public function kirki_script_dependencies() {
|
|
return array();
|
|
}
|
|
|
|
/**
|
|
* Enqueue control related scripts/styles.
|
|
*
|
|
* @access public
|
|
*/
|
|
public function enqueue() {
|
|
|
|
// Build the suffix for the script.
|
|
$suffix = '';
|
|
$suffix .= ( ! defined( 'SCRIPT_DEBUG' ) || true !== SCRIPT_DEBUG ) ? '.min' : '';
|
|
|
|
// The Kirki plugin URL.
|
|
$kirki_url = trailingslashit( Kirki::$url );
|
|
|
|
// Enqueue ColorPicker.
|
|
wp_enqueue_script( 'wp-color-picker-alpha', trailingslashit( Kirki::$url ) . 'assets/vendor/wp-color-picker-alpha/wp-color-picker-alpha.js', array( 'wp-color-picker', 'wp-i18n' ), KIRKI_VERSION, true );
|
|
wp_enqueue_style( 'wp-color-picker' );
|
|
|
|
// Enqueue selectWoo.
|
|
wp_enqueue_script( 'selectWoo', trailingslashit( Kirki::$url ) . 'assets/vendor/selectWoo/js/selectWoo.full.js', array( 'jquery' ), '1.0.1', true );
|
|
wp_enqueue_style( 'selectWoo', trailingslashit( Kirki::$url ) . 'assets/vendor/selectWoo/css/selectWoo.css', array(), '1.0.1' );
|
|
wp_enqueue_style( 'kirki-selectWoo', trailingslashit( Kirki::$url ) . 'assets/vendor/selectWoo/kirki.css', array(), KIRKI_VERSION );
|
|
|
|
// Enqueue the script.
|
|
wp_enqueue_script(
|
|
'kirki-script',
|
|
"{$kirki_url}controls/js/script{$suffix}.js",
|
|
array(
|
|
'jquery',
|
|
'customize-base',
|
|
'wp-color-picker-alpha',
|
|
'selectWoo',
|
|
'jquery-ui-button',
|
|
'jquery-ui-datepicker',
|
|
),
|
|
KIRKI_VERSION,
|
|
false
|
|
);
|
|
|
|
wp_localize_script(
|
|
'kirki-script',
|
|
'kirkiL10n',
|
|
array(
|
|
'isScriptDebug' => ( defined( 'SCRIPT_DEBUG' ) && true === SCRIPT_DEBUG ),
|
|
'noFileSelected' => esc_html__( 'No File Selected', 'kirki' ),
|
|
'remove' => esc_html__( 'Remove', 'kirki' ),
|
|
'default' => esc_html__( 'Default', 'kirki' ),
|
|
'selectFile' => esc_html__( 'Select File', 'kirki' ),
|
|
'standardFonts' => esc_html__( 'Standard Fonts', 'kirki' ),
|
|
'googleFonts' => esc_html__( 'Google Fonts', 'kirki' ),
|
|
'defaultCSSValues' => esc_html__( 'CSS Defaults', 'kirki' ),
|
|
'defaultBrowserFamily' => esc_html__( 'Default Browser Font-Family', 'kirki' ),
|
|
)
|
|
);
|
|
|
|
$suffix = str_replace( '.min', '', $suffix );
|
|
|
|
// Enqueue the style.
|
|
wp_enqueue_style(
|
|
'kirki-styles',
|
|
"{$kirki_url}controls/css/styles{$suffix}.css",
|
|
array(),
|
|
KIRKI_VERSION
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Refresh the parameters passed to the JavaScript via JSON.
|
|
*
|
|
* @see WP_Customize_Control::to_json()
|
|
*/
|
|
public function to_json() {
|
|
|
|
// Get the basics from the parent class.
|
|
parent::to_json();
|
|
|
|
// Default value.
|
|
$this->json['default'] = $this->setting->default;
|
|
if ( isset( $this->default ) ) {
|
|
$this->json['default'] = $this->default;
|
|
}
|
|
|
|
// Required.
|
|
$this->json['required'] = $this->required;
|
|
|
|
// Output.
|
|
$this->json['output'] = $this->output;
|
|
|
|
// Value.
|
|
$this->json['value'] = $this->value();
|
|
|
|
// Choices.
|
|
$this->json['choices'] = $this->choices;
|
|
|
|
// The link.
|
|
$this->json['link'] = $this->get_link();
|
|
|
|
// The ID.
|
|
$this->json['id'] = $this->id;
|
|
|
|
// Translation strings.
|
|
$this->json['l10n'] = $this->l10n();
|
|
|
|
// The ajaxurl in case we need it.
|
|
$this->json['ajaxurl'] = admin_url( 'admin-ajax.php' );
|
|
|
|
// Input attributes.
|
|
$this->json['inputAttrs'] = '';
|
|
foreach ( $this->input_attrs as $attr => $value ) {
|
|
$this->json['inputAttrs'] .= $attr . '="' . esc_attr( $value ) . '" ';
|
|
}
|
|
|
|
// The kirki-config.
|
|
$this->json['kirkiConfig'] = $this->kirki_config;
|
|
|
|
// The option-type.
|
|
$this->json['kirkiOptionType'] = $this->option_type;
|
|
|
|
// The option-name.
|
|
$this->json['kirkiOptionName'] = $this->option_name;
|
|
|
|
// The preset.
|
|
$this->json['preset'] = $this->preset;
|
|
|
|
// The CSS-Variables.
|
|
$this->json['css-var'] = $this->css_vars;
|
|
}
|
|
|
|
/**
|
|
* Render the control's content.
|
|
*
|
|
* Allows the content to be overridden without having to rewrite the wrapper in `$this::render()`.
|
|
*
|
|
* Control content can alternately be rendered in JS. See WP_Customize_Control::print_template().
|
|
*
|
|
* @since 3.4.0
|
|
*/
|
|
protected function render_content() {}
|
|
|
|
/**
|
|
* An Underscore (JS) template for this control's content (but not its container).
|
|
*
|
|
* Class variables for this control class are available in the `data` JS object;
|
|
* export custom variables by overriding {@see WP_Customize_Control::to_json()}.
|
|
*
|
|
* @see WP_Customize_Control::print_template()
|
|
*
|
|
* @access protected
|
|
*/
|
|
protected function content_template() {}
|
|
|
|
/**
|
|
* Returns an array of translation strings.
|
|
*
|
|
* @access protected
|
|
* @since 3.0.0
|
|
* @return array
|
|
*/
|
|
protected function l10n() {
|
|
return array();
|
|
}
|
|
}
|