sections, $parent->args );
$this->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
*/
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->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', 'redux-framework' );
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.', 'redux-framework').'';
}
}//function
/**
* Enqueue Function.
*
* If this field requires any scripts, or css define this function and register/enqueue the scripts/css
*
* @since ReduxFramework 1.0.0
*/
function enqueue(){
wp_enqueue_script(
'field-select-js',
ReduxFramework::$_url.'inc/fields/select/field_select.js',
array('jquery', 'select2-js'),
time(),
true
);
wp_enqueue_style(
'redux-field-select-css',
ReduxFramework::$_url.'inc/fields/select/field_select.css',
time(),
true
);
}//function
}//class