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
}