nguyen dung 39b8cb3612 init
2022-02-18 16:43:41 +07:00

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();
}
}