%PDF- %PDF-
Direktori : /home/tradesc/www/relax/wp-content/plugins/Ereferer/lib/titan-framework/lib/ |
Current File : /home/tradesc/www/relax/wp-content/plugins/Ereferer/lib/titan-framework/lib/class-option-select.php |
<?php if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class TitanFrameworkOptionSelect extends TitanFrameworkOption { public $defaultSecondarySettings = array( 'options' => array(), ); /** * Check if this instance is the first load of the option class * * @since 1.9.3 * @var bool $firstLoad */ private static $firstLoad = true; /** * Constructor * * @param array $settings Option settings * @param string $owner Namespace * * @since 1.9.3 */ function __construct( $settings, $owner ) { parent::__construct( $settings, $owner ); tf_add_action_once( 'admin_enqueue_scripts', array( $this, 'load_select_scripts' ) ); tf_add_action_once( 'customize_controls_enqueue_scripts', array( $this, 'load_select_scripts' ) ); tf_add_action_once( 'admin_head', array( $this, 'init_select_script' ) ); tf_add_action_once( 'customize_controls_print_footer_scripts', array( $this, 'init_select_script' ) ); } /* * Display for options and meta */ public function display() { $this->echoOptionHeader(); $multiple = isset( $this->settings['multiple'] ) && true == $this->settings['multiple'] ? 'multiple' : ''; $name = $this->getID(); $val = (array) $this->getValue(); if ( ! empty( $multiple ) ) { $name = "{$name}[]"; } ?><select name="<?php echo $name; ?>" <?php echo $multiple; ?>><?php tf_parse_select_options( $this->settings['options'], $val ); ?></select><?php $this->echoOptionFooter(); } /* * Display for theme customizer */ public function registerCustomizerControl( $wp_customize, $section, $priority = 1 ) { $wp_customize->add_control( new TitanFrameworkOptionSelectControl( $wp_customize, $this->getID(), array( 'label' => $this->settings['name'], 'section' => $section->settings['id'], 'type' => 'select', 'choices' => $this->settings['options'], 'settings' => $this->getID(), 'description' => $this->settings['desc'], 'priority' => $priority, ) ) ); } /** * Register and load the select2 script * * @since 1.9.3 * @return void */ public function load_select_scripts() { wp_enqueue_script( 'tf-select2', TitanFramework::getURL( '../js/select2/select2.min.js', __FILE__ ), array( 'jquery' ), TF_VERSION, true ); wp_enqueue_style( 'tf-select2-style', TitanFramework::getURL( '../css/select2/select2.min.css', __FILE__ ), null, TF_VERSION, 'all' ); wp_enqueue_style( 'tf-select-option-style', TitanFramework::getURL( '../css/class-option-select.css', __FILE__ ), null, TF_VERSION, 'all' ); } /** * Initialize the select2 field * * @since 1.9.3 * @return void */ public function init_select_script() { if ( ! self::$firstLoad ) { return; } self::$firstLoad = false; ?> <script> jQuery( document ).ready( function () { 'use strict'; /** * Select2 * @see https://select2.github.io/ */ if ( jQuery().select2 ) { jQuery( 'select.tf-select, [class*="tf-select"] select' ).select2(); } }); </script> <?php } } /* * We create a new control for the theme customizer (for the grouped options only) */ add_action( 'customize_register', 'registerTitanFrameworkOptionSelectControl', 1 ); function registerTitanFrameworkOptionSelectControl() { class TitanFrameworkOptionSelectControl extends WP_Customize_Control { public $description; public function render_content() { ?> <label> <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span> <select class="tf-select" <?php $this->link(); ?>> <?php tf_parse_select_options( $this->choices, (array) $this->value() ); ?> ?></select> </select> </label> <?php if ( ! empty( $this->description ) ) { echo "<p class='description'>{$this->description}</p>"; } } } } /** * Helper function for parsing select options * * This function is used to reduce duplicated code between the TF option * and the customizer control. * * @since 1.9 * * @param array $options List of options * @param array $val Current value * * @return void */ function tf_parse_select_options( $options, $val = array() ) { // No options? Duh... if ( empty( $options ) ) { return; } // Make sure the current value is an array (for multiple select). if ( ! is_array( $val ) ) { $val = (array) $val; } foreach ( $options as $value => $label ) { // This is if we have option groupings. if ( is_array( $label ) ) { ?> <optgroup label="<?php echo $value ?>"><?php foreach ( $label as $subValue => $subLabel ) { printf( '<option value="%s" %s %s>%s</option>', $subValue, in_array( $subValue, $val ) ? 'selected="selected"' : '', disabled( stripos( $subValue, '!' ), 0, false ), $subLabel ); } ?></optgroup><?php // This is for normal list of options. } else { printf( '<option value="%s" %s %s>%s</option>', $value, in_array( $value, $val ) ? 'selected="selected"' : '', disabled( stripos( $value, '!' ), 0, false ), $label ); } } }