. * * @package ReduxFramework * @subpackage Field_Slider * @author Kevin Provance (kprovance) * @version 2.0.0 */ // Exit if accessed directly if (!defined('ABSPATH')) { exit; } if(!class_exists('ReduxFramework_slider')) { class ReduxFramework_slider { /** * Field Constructor. * * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 3.1.8 */ private $display_none = 0; private $display_label = 1; private $display_text = 2; private $display_select = 3; function __construct($field = array(), $value = '', $parent) { //parent::__construct( $parent->sections, $parent->args ); $this->parent = $parent; $this->field = $field; $this->value = $value; // Set defaults $defaults = array( 'handles' => 1, 'resolution' => 1, 'display_value' => 'text', 'float_mark' => '.', ); $this->field = wp_parse_args( $this->field, $defaults ); // Sanitize float mark switch($this->field['float_mark']) { case ',': case '.': break; default: $this->field['float_mark'] = '.'; break; } // Sanitize resolution value $this->field['resolution'] = $this->cleanVal($this->field['resolution']); // Sanitize handle value switch($this->field['handles']) { case 0: case 1: $this->field['handles'] = 1; break; default: $this->field['handles'] = 2; break; } // Sanitize display value switch($this->field['display_value']) { case 'label': $this->field['display_value'] = $this->display_label; break; case 'text': default: $this->field['display_value'] = $this->display_text; break; case 'select': $this->field['display_value'] = $this->display_select; break; case 'none': $this->field['display_value'] = $this->display_none; break; } } private function cleanVal($var){ if (is_float($var)) { $cleanVar = floatval($var); } else { $cleanVar = intval($var); } return $cleanVar; } private function cleanDefault($val) { if (empty($val) && !empty($this->field['default']) && $this->cleanVal($this->field['min']) >= 1) { $val = $this->cleanVal($this->field['default']); } if (empty($val) && $this->cleanVal($this->field['min']) >= 1) { $val = $this->cleanVal($this->field['min']); } if (empty($val)) { $val = 0; } // Extra Validation if ($val < $this->field['min']) { $val = $this->cleanVal($this->field['min']); } else if ($val > $this->field['max']) { $val = $this->cleanVal($this->field['max']); } return $val; } private function cleanDefaultArray($val) { $one = $this->value[1]; $two = $this->value[2]; if (empty($one) && !empty($this->field['default'][1]) && $this->cleanVal($this->field['min']) >= 1) { $one = $this->cleanVal($this->field['default'][1]); } if (empty($one) && $this->cleanVal($this->field['min']) >= 1) { $one = $this->cleanVal($this->field['min']); } if (empty($one)) { $one = 0; } if (empty($two) && !empty($this->field['default'][2]) && $this->cleanVal($this->field['min']) >= 1) { $two = $this->cleanVal($this->field['default'][1] + 1); } if (empty($two) && $this->cleanVal($this->field['min']) >= 1) { $two = $this->cleanVal($this->field['default'][1] + 1); } if (empty($two)) { $two = $this->field['default'][1] + 1; } $val[0] = $one; $val[1] = $two; return $val; } /** * * Clean the field data to the fields defaults given the parameters. * * @since Redux_Framework 3.1.8 * */ function clean() { // Set min to 0 if no value is set. $this->field['min'] = empty($this->field['min']) ? 0 : $this->cleanVal($this->field['min']); // Set max to min + 1 if empty. $this->field['max'] = empty($this->field['max']) ? $this->field['min'] + 1 : $this->cleanVal($this->field['max']); // Set step to 1 if step is empty ot step > max. $this->field['step'] = empty($this->field['step']) || $this->field['step'] > $this->field['max'] ? 1 : $this->cleanVal($this->field['step']); if (2 == $this->field['handles']) { if (!is_array($this->value)) { $this->value[1] = 0; $this->value[2] = 1; } $this->value = $this->cleanDefaultArray($this->value); } else { if (is_array($this->value)) { $this->value = 0; } $this->value = $this->cleanDefault($this->value); } // More dummy checks if (!is_array($this->field['default']) && 2 == $this->field['handles']) { $this->value[0] = $this->field['min']; $this->value[1] = $this->field['min'] + 1; } if (is_array($this->field['default']) && 1 == $this->field['handles']) { $this->value = $this->field['min']; } } /** * Enqueue Function. * * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 3.1.8 */ function enqueue() { $min = Redux_Functions::isMin(); wp_enqueue_style( 'nouislider-css', ReduxFramework::$_url . 'inc/fields/slider/vendor/nouislider/jquery.nouislider.css', array(), filemtime( ReduxFramework::$_dir . 'inc/fields/slider/vendor/nouislider/jquery.nouislider.css' ), 'all' ); wp_register_script( 'nouislider-js', ReduxFramework::$_url . 'inc/fields/slider/vendor/nouislider/jquery.nouislider' . $min . '.js', array( 'jquery' ), '5.0.0', true ); wp_enqueue_script( 'redux-field-slider-js', ReduxFramework::$_url . 'inc/fields/slider/field_slider' . $min . '.js', array('jquery', 'nouislider-js'), time(), true ); wp_enqueue_style( 'redux-field-slider-css', ReduxFramework::$_url . 'inc/fields/slider/field_slider.css', time(), true ); wp_enqueue_script( 'redux-field-select-js', ReduxFramework::$_url.'inc/fields/select/field_select' . $min . '.js', array('jquery', 'select2-js'), time(), true ); wp_enqueue_style( 'redux-redux-field-select-css', ReduxFramework::$_url.'inc/fields/select/field_select.css', time(), true ); } //function /** * Field Render Function. * * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 0.0.4 */ function render() { $this->clean(); $fieldID = $this->field['id']; $fieldName = $this->field['name']; // Set handle number variable. $twoHandles = false; if (2 == $this->field['handles']) { $twoHandles = true; } // Set default values(s) if (true == $twoHandles) { $valOne = $this->value[0]; $valTwo = $this->value[1]; $html = 'data-default-one="' . $valOne . '" '; $html .= 'data-default-two="' . $valTwo . '" '; $nameOne = $fieldName . '[1]'; $nameTwo = $fieldName . '[2]'; $idOne = $fieldID . '[1]'; $idTwo = $fieldID . '[2]'; } else { $valOne = $this->value; $valTwo = ''; $html = 'data-default-one="' . $valOne . '"'; $nameOne = $fieldName; $nameTwo = ''; $idOne = $fieldID; $idTwo = ''; } $showInput = false; $showLabel = false; $showSelect = false; // TEXT output if ($this->display_text == $this->field['display_value']) { $showInput = true; echo ''; // LABEL output } elseif ($this->display_label == $this->field['display_value']) { $showLabel = true; $labelNum = $twoHandles ? '-one' : ''; echo '
'; // SELECT output } elseif ($this->display_select == $this->field['display_value']) { $showSelect = true; echo ''; } // DIV output echo ''; // Double slider output if (true == $twoHandles) { // TEXT if (true == $showInput) { echo ''; } // LABEL if (true == $showLabel) { echo ''; } // SELECT if (true == $showSelect) { echo ''; } } // NO output (input hidden) if ($this->display_none == $this->field['display_value'] || $this->display_label == $this->field['display_value']) { echo ''; // double slider hidden output if (true == $twoHandles) { echo ''; } } } } }