parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ public function render() { $sortable = ( isset( $this->field['sortable'] ) && $this->field['sortable'] ) ? ' select2-sortable"' : ""; if ( ! empty( $sortable ) ) { // Dummy proofing :P $this->field['multi'] = true; } if ( ! empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { if ( empty( $this->field['args'] ) ) { $this->field['args'] = array(); } if ( $this->field['data'] == "elusive-icons" || $this->field['data'] == "elusive-icon" || $this->field['data'] == "elusive" ) { $icons_file = ReduxFramework::$_dir . 'inc/fields/select/elusive-icons.php'; /** * filter 'redux-font-icons-file}' * * @param array $icon_file File for the icons */ $icons_file = apply_filters( 'redux-font-icons-file', $icons_file ); /** * filter 'redux/{opt_name}/field/font/icons/file' * * @param array $icon_file File for the icons */ $icons_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/font/icons/file", $icons_file ); if ( file_exists( $icons_file ) ) { require_once $icons_file; } } $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); } if ( ! empty( $this->field['data'] ) && ( $this->field['data'] == "elusive-icons" || $this->field['data'] == "elusive-icon" || $this->field['data'] == "elusive" ) ) { $this->field['class'] .= " font-icons"; } //if if ( ! empty( $this->field['options'] ) ) { $multi = ( isset( $this->field['multi'] ) && $this->field['multi'] ) ? ' multiple="multiple"' : ""; if ( ! empty( $this->field['width'] ) ) { $width = ' style="' . $this->field['width'] . '"'; } else { $width = ' style="width: 40%;"'; } $nameBrackets = ""; if ( ! empty( $multi ) ) { $nameBrackets = "[]"; } $placeholder = ( isset( $this->field['placeholder'] ) ) ? esc_attr( $this->field['placeholder'] ) : __( 'Select an item', 'virtue' ); if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } if ( isset( $this->field['multi'] ) && $this->field['multi'] && isset( $this->field['sortable'] ) && $this->field['sortable'] && ! empty( $this->value ) && is_array( $this->value ) ) { $origOption = $this->field['options']; $this->field['options'] = array(); foreach ( $this->value as $value ) { $this->field['options'][ $value ] = $origOption[ $value ]; } if ( count( $this->field['options'] ) < count( $origOption ) ) { foreach ( $origOption as $key => $value ) { if ( ! in_array( $key, $this->field['options'] ) ) { $this->field['options'][ $key ] = $value; } } } } $sortable = ( isset( $this->field['sortable'] ) && $this->field['sortable'] ) ? ' select2-sortable"' : ""; echo ''; } else { echo '' . __( 'No items of this type were found.', 'virtue' ) . ''; } } //function private function make_option($id, $value, $group_name = '') { if ( is_array( $this->value ) ) { $selected = ( is_array( $this->value ) && in_array( $id, $this->value ) ) ? ' selected="selected"' : ''; } else { $selected = selected( $this->value, $id, false ); } echo ''; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ public function enqueue() { wp_enqueue_style( 'select2-css' ); if (isset($this->field['sortable']) && $this->field['sortable']) { wp_enqueue_script('jquery-ui-sortable'); } wp_enqueue_script( 'redux-field-select-js', ReduxFramework::$_url . 'inc/fields/select/field_select' . Redux_Functions::isMin() . '.js', array( 'jquery', 'select2-js', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-select-css', ReduxFramework::$_url . 'inc/fields/select/field_select.css', array(), time(), 'all' ); } } //function } //class }