*/ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'ReduxFramework_select_image' ) ) { class ReduxFramework_select_image { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 1.0.0 */ function __construct( $field = array(), $value = '', $parent = null ) { $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() { // If options is NOT empty, the process if ( ! empty( $this->field['options'] ) ) { // beancounter $x = 1; // Process width if ( ! empty( $this->field['width'] ) ) { $width = ' style="width:' . $this->field['width'] . ';"'; } else { $width = ' style="width: 40%;"'; } // Process placeholder $placeholder = ( isset( $this->field['placeholder'] ) ) ? esc_attr( $this->field['placeholder'] ) : __( 'Select an item', 'ascend' ); 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 ''; } // Begin the '; echo ''; // Enum through the options array foreach ( $this->field['options'] as $k => $v ) { // No array? No problem! if ( ! is_array( $v ) ) { $v = array( 'img' => $v ); } // No title set? Make it blank. if ( ! isset( $v['title'] ) ) { $v['title'] = ''; } // No alt? Set it to title. We do this so the alt tag shows // something. It also makes HTML/SEO purists happy. if ( ! isset( $v['alt'] ) ) { $v['alt'] = $v['title']; } // Set the selected entry $selected = selected( $this->value, $v['img'], false ); // If selected returns something other than a blank space, we // found our default/saved name. Save the array number in a // variable to use later on when we want to extract its associted // url. if ( '' != $selected ) { $arrNum = $x; } // Add the option tag, with values. echo ''; // Add a bean $x ++; } // Close the '; // Some space echo '

'; // Show the preview image. echo '
'; // just in case. You never know. if ( ! isset( $arrNum ) ) { $this->value = ''; } // Set the default image. To get the url from the default name, // we save the array count from the for/each loop, when the default image // is mark as selected. Since the for/each loop starts at one, we must // substract one from the saved array number. We then pull the url // out of the options array, and there we go. if ( '' == $this->value ) { echo ''; } else { echo ''; } // Close the
tag. echo '
'; } else { // No options specified. Really? echo '' . __( 'No items of this type were found.', 'ascend' ) . ''; } } //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_style( 'select2-css' ); wp_enqueue_script( 'field-select-image-js', ReduxFramework::$_url . 'inc/fields/select_image/field_select_image' . Redux_Functions::isMin() . '.js', array('jquery', 'select2-js', 'redux-js'), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-select-image-css', ReduxFramework::$_url . 'inc/fields/select_image/field_select_image.css', array(), time(), 'all' ); } } //function } //class }