You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1031 lines
30 KiB
1031 lines
30 KiB
<?php
|
|
// phpcs:disable
|
|
/**
|
|
* WordPress Widgets Helper Class
|
|
*
|
|
* https://github.com/sksmatt/WordPress-Widgets-Helper-Class
|
|
*
|
|
* By @sksmatt | www.mattvarone.com
|
|
*
|
|
* @package WordPress
|
|
* @subpackage WPH Widget Class
|
|
* @author Matt Varone
|
|
* @license GPLv2
|
|
* @version 1.6
|
|
*/
|
|
|
|
if ( ! class_exists( 'WPH_Widget' ) )
|
|
{
|
|
|
|
class WPH_Widget extends WP_Widget
|
|
{
|
|
|
|
public function get_layered_get_categories() {
|
|
global $wpdb;
|
|
|
|
$categories = $wpdb->get_results(
|
|
"
|
|
SELECT
|
|
t.term_id AS id,
|
|
t.name AS post_title,
|
|
t.slug AS post_url,
|
|
parent AS parent
|
|
FROM {$wpdb->prefix}terms t
|
|
LEFT JOIN {$wpdb->prefix}term_taxonomy tt
|
|
ON t.term_id = tt.term_id
|
|
WHERE tt.taxonomy = 'product_cat'
|
|
ORDER BY name"
|
|
);
|
|
|
|
return $categories;
|
|
}
|
|
|
|
public function get_layered_get_attributes_options() {
|
|
$attribute_array = array();
|
|
$attribute_taxonomies = wc_get_attribute_taxonomies();
|
|
|
|
if ( $attribute_taxonomies ) {
|
|
foreach ( $attribute_taxonomies as $tax ) {
|
|
$attribute_array[ $tax->attribute_name ] = $tax->attribute_name;
|
|
}
|
|
}
|
|
|
|
return $attribute_array;
|
|
}
|
|
|
|
public function get_layered_get_categories_options() {
|
|
$categories_array = array(
|
|
esc_html__( 'All categories', 'woodmart' ) => 'all',
|
|
);
|
|
|
|
$categories = $this->get_layered_get_categories();
|
|
|
|
if ( ! empty( $categories ) ) {
|
|
foreach ( $categories as $cat ) {
|
|
$title = $cat->post_title;
|
|
$id = ' (ID:' . $cat->id . ')';
|
|
if ( property_exists( $cat, 'parent' ) && $cat->parent ) {
|
|
$title = $title . $id . ' (Parent ID:' . $cat->parent . ')';
|
|
}
|
|
$categories_array[ $title . $id ] = $cat->id;
|
|
}
|
|
}
|
|
|
|
return $categories_array;
|
|
}
|
|
|
|
public function is_widget_preview() {
|
|
if ( apply_filters( 'woodmart_hide_content_on_widget_preview', true ) && defined( 'REST_REQUEST' ) && REST_REQUEST ) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Create Widget
|
|
*
|
|
* Creates a new widget and sets it's labels, description, fields and options
|
|
*
|
|
* @access public
|
|
* @param array
|
|
* @return void
|
|
* @since 1.0
|
|
*/
|
|
|
|
function create_widget( $args ) {
|
|
// settings some defaults
|
|
$defaults = array(
|
|
'label' => '',
|
|
'description' => '',
|
|
'fields' => array(),
|
|
'options' => array(),
|
|
'slug' => '',
|
|
);
|
|
|
|
// parse and merge args with defaults
|
|
$args = wp_parse_args( $args, $defaults );
|
|
|
|
// extract each arg to its own variable
|
|
extract( $args, EXTR_SKIP );
|
|
|
|
// set the widget vars
|
|
$this->slug = ( $slug ) ? $slug : sanitize_title( $label );
|
|
$this->fields = $fields;
|
|
|
|
// check options
|
|
$this->options = array( 'classname' => $this->slug, 'description' => $description );
|
|
if ( ! empty( $options ) ) $this->options = array_merge( $this->options, $options );
|
|
|
|
// call WP_Widget to create the widget
|
|
parent::__construct( $this->slug, $label, $this->options );
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Form
|
|
*
|
|
* Creates the settings form.
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @return void
|
|
* @since 1.0
|
|
*/
|
|
|
|
function form( $instance ) {
|
|
$this->instance = $instance;
|
|
echo $this->create_fields(); //Dynamic data escaped while generating the variable.
|
|
}
|
|
|
|
|
|
/**
|
|
* Update Fields
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param array
|
|
* @return array
|
|
* @since 1.0
|
|
*/
|
|
|
|
function update( $new_instance, $old_instance ) {
|
|
$instance = $old_instance;
|
|
|
|
$this->before_update_fields();
|
|
|
|
foreach ( $this->fields as $key ) {
|
|
if ( isset( $key['id'] ) ) {
|
|
$slug = $key['id'];
|
|
} elseif ( isset( $key['param_name'] ) ) {
|
|
$slug = $key['param_name'];
|
|
} else {
|
|
continue;
|
|
}
|
|
|
|
if ( isset( $key['validate'] ) ) {
|
|
if ( false === $this->validate( $key['validate'], $new_instance[$slug] ) )
|
|
return $instance;
|
|
}
|
|
|
|
if ( isset( $key['filter'] ) ) {
|
|
$instance[ $slug ] = $this->filter( $key['filter'], $new_instance[ $slug ] );
|
|
} elseif ( isset( $new_instance[ $slug ] ) ) {
|
|
if ( is_array( $new_instance[ $slug ] ) ) {
|
|
$instance[ $slug ] = $new_instance[ $slug ];
|
|
} else {
|
|
$instance[ $slug ] = strip_tags( $new_instance[ $slug ] );
|
|
}
|
|
} else {
|
|
$instance[ $slug ] = false;
|
|
}
|
|
}
|
|
|
|
return $this->after_validate_fields( $instance );
|
|
}
|
|
|
|
|
|
/**
|
|
* Before Validate Fields
|
|
*
|
|
* Allows to hook code on the update.
|
|
*
|
|
* @access public
|
|
* @param string
|
|
* @return string
|
|
* @since 1.6
|
|
*/
|
|
|
|
function before_update_fields() {
|
|
return;
|
|
}
|
|
|
|
|
|
/**
|
|
* After Validate Fields
|
|
*
|
|
* Allows to modify the output after validating the fields.
|
|
*
|
|
* @access public
|
|
* @param string
|
|
* @return string
|
|
* @since 1.6
|
|
*/
|
|
|
|
function after_validate_fields( $instance = "" ) {
|
|
return $instance;
|
|
}
|
|
|
|
|
|
/**
|
|
* Validate
|
|
*
|
|
* @access private
|
|
* @param string
|
|
* @param string
|
|
* @return boolean
|
|
* @since 1.0
|
|
*/
|
|
|
|
function validate( $rules, $value ) {
|
|
$rules = explode( '|', $rules );
|
|
|
|
if ( empty( $rules ) || count( $rules ) < 1 )
|
|
return true;
|
|
|
|
foreach ( $rules as $rule ) {
|
|
if ( false === $this->do_validation( $rule, $value ) )
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
/**
|
|
* Filter
|
|
*
|
|
* @access private
|
|
* @param string
|
|
* @param string
|
|
* @return void
|
|
* @since 1.0
|
|
*/
|
|
|
|
function filter( $filters, $value ) {
|
|
$filters = explode( '|', $filters );
|
|
|
|
if ( empty( $filters ) || count( $filters ) < 1 )
|
|
return $value;
|
|
|
|
foreach ( $filters as $filter )
|
|
$value = $this->do_filter( $filter, $value );
|
|
|
|
return $value;
|
|
}
|
|
|
|
|
|
/**
|
|
* Do Validation Rule
|
|
*
|
|
* @access private
|
|
* @param string
|
|
* @param string
|
|
* @return boolean
|
|
* @since 1.0
|
|
*/
|
|
|
|
function do_validation( $rule, $value = "" )
|
|
{
|
|
switch ( $rule ) {
|
|
|
|
case 'alpha':
|
|
return ctype_alpha( $value );
|
|
break;
|
|
|
|
case 'alpha_numeric':
|
|
return ctype_alnum( $value );
|
|
break;
|
|
|
|
case 'alpha_dash':
|
|
return preg_match( '/^[a-z0-9-_]+$/', $value );
|
|
break;
|
|
|
|
case 'numeric':
|
|
return ctype_digit( $value );
|
|
break;
|
|
|
|
case 'integer':
|
|
return ( bool ) preg_match( '/^[\-+]?[0-9]+$/', $value );
|
|
break;
|
|
|
|
case 'boolean':
|
|
return is_bool( $value );
|
|
break;
|
|
|
|
case 'email':
|
|
return is_email( $value );
|
|
break;
|
|
|
|
case 'decimal':
|
|
return ( bool ) preg_match( '/^[\-+]?[0-9]+\.[0-9]+$/', $value );
|
|
break;
|
|
|
|
case 'natural':
|
|
return ( bool ) preg_match( '/^[0-9]+$/', $value );
|
|
return;
|
|
|
|
case 'natural_not_zero':
|
|
if ( ! preg_match( '/^[0-9]+$/', $value ) ) return false;
|
|
if ( $value == 0 ) return false;
|
|
return true;
|
|
return;
|
|
|
|
default:
|
|
if ( method_exists( $this, $rule ) )
|
|
return $this->$rule( $value );
|
|
else
|
|
return false;
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Do Filter
|
|
*
|
|
* @access private
|
|
* @param string
|
|
* @param string
|
|
* @return boolean
|
|
* @since 1.0
|
|
*/
|
|
|
|
function do_filter( $filter, $value = "" )
|
|
{
|
|
switch ( $filter )
|
|
{
|
|
case 'strip_tags':
|
|
return $value;
|
|
break;
|
|
|
|
case 'wp_strip_all_tags':
|
|
return wp_strip_all_tags( $value );
|
|
break;
|
|
|
|
case 'esc_attr':
|
|
return esc_attr( $value );
|
|
break;
|
|
|
|
case 'esc_url':
|
|
return esc_url( $value );
|
|
break;
|
|
|
|
case 'esc_textarea':
|
|
return esc_textarea( $value );
|
|
break;
|
|
|
|
default:
|
|
if ( method_exists( $this, $filter ) )
|
|
return $this->$filter( $value );
|
|
else
|
|
return $value;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Create Fields
|
|
*
|
|
* Creates each field defined.
|
|
*
|
|
* @access private
|
|
* @param string
|
|
* @return string
|
|
* @since 1.0
|
|
*/
|
|
|
|
function create_fields( $out = "" ) {
|
|
|
|
$out = $this->before_create_fields( $out );
|
|
|
|
if ( ! empty( $this->fields ) ) {
|
|
foreach ( $this->fields as $key ) {
|
|
if ( empty( $key ) ) continue;
|
|
$out .= $this->create_field( $key );
|
|
}
|
|
}
|
|
|
|
$out = $this->after_create_fields( $out );
|
|
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Before Create Fields
|
|
*
|
|
* Allows to modify code before creating the fields.
|
|
*
|
|
* @access public
|
|
* @param string
|
|
* @return string
|
|
* @since 1.0
|
|
*/
|
|
|
|
function before_create_fields( $out = "" ) {
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* After Create Fields
|
|
*
|
|
* Allows to modify code after creating the fields.
|
|
*
|
|
* @access public
|
|
* @param string
|
|
* @return string
|
|
* @since 1.0
|
|
*/
|
|
|
|
function after_create_fields( $out = "" ) {
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Create Fields
|
|
*
|
|
* @access private
|
|
* @param string
|
|
* @param string
|
|
* @return string
|
|
* @since 1.0
|
|
*/
|
|
|
|
function create_field( $key, $out = "" ) {
|
|
|
|
/* Set Defaults */
|
|
$key['std'] = isset( $key['std'] ) ? $key['std'] : "";
|
|
$key['std'] = isset( $key['default'] ) ? $key['default'] : $key['std'];
|
|
|
|
$slug = (isset($key['id'])) ? $key['id'] : $key['param_name'];
|
|
$heading = isset( $key['heading'] ) ? $key['heading'] : '';
|
|
$key['name'] = (isset($key['name'])) ? $key['name'] : $heading;
|
|
|
|
if(isset($key['skip_in']) && $key['skip_in'] == 'widget') {
|
|
return;
|
|
}
|
|
if(isset($key['value'])) {
|
|
$key['fields'] = $key['value'];
|
|
}
|
|
|
|
if ( isset( $key['true_state'] ) && isset( $key['false_state'] ) ) {
|
|
$key['fields'] = array(
|
|
$key['true_state'] => $key['true_state'],
|
|
$key['false_state'] => $key['false_state'],
|
|
);
|
|
}
|
|
|
|
if(!isset($key['class'])) {
|
|
$key['class'] = 'widefat';
|
|
}
|
|
|
|
if(isset($key['description'])) {
|
|
$key['desc'] = $key['description'];
|
|
}
|
|
|
|
if ( isset( $this->instance[$slug] ) )
|
|
$key['value'] = empty( $this->instance[$slug] ) ? '' : $this->instance[$slug];
|
|
else
|
|
unset( $key['value'] );
|
|
|
|
/* Set field id and name */
|
|
$key['_id'] = $this->get_field_id( $slug );
|
|
$key['_name'] = $this->get_field_name( $slug );
|
|
|
|
/* Set field type */
|
|
if ( ! isset( $key['type'] ) ) $key['type'] = 'text';
|
|
|
|
$key['type'] = $this->woodmart_change_type($key['type']);
|
|
|
|
/* Prefix method */
|
|
$field_method = 'create_field_' . str_replace( '-', '_', $key['type'] );
|
|
|
|
$attr = '<div class="wd-widget-field wd-type-' . $key['type'] . '"';
|
|
|
|
if ( isset( $key['param_name'] ) && isset( $key['value'] ) ) {
|
|
$attr .= ' data-param_name="' . $key['param_name'] . '"';
|
|
$attr .= ' data-value="' . $key['value'] . '"';
|
|
}
|
|
|
|
if ( isset( $key['dependency'] ) ) {
|
|
$attr .= ' data-dependency=\'' . wp_json_encode( $key['dependency'] ) . '\'';
|
|
}
|
|
|
|
$attr .= '>';
|
|
|
|
/* Run method */
|
|
if ( method_exists( $this, $field_method ) ) {
|
|
return $attr . $this->$field_method( $key ) . '</div>';
|
|
}
|
|
}
|
|
|
|
private function woodmart_change_type($key) {
|
|
switch ($key) {
|
|
case 'textfield':
|
|
$key = 'text';
|
|
break;
|
|
case 'vc_link':
|
|
$key = 'text';
|
|
break;
|
|
case 'href':
|
|
$key = 'text';
|
|
break;
|
|
case 'textarea_html':
|
|
$key = 'textarea';
|
|
break;
|
|
case 'woodmart_switch':
|
|
$key = 'dropdown';
|
|
break;
|
|
case 'woodmart_button_set':
|
|
$key = 'dropdown';
|
|
break;
|
|
case 'woodmart_slider':
|
|
$key = 'dropdown';
|
|
break;
|
|
case 'woodmart_image_select':
|
|
$key = 'dropdown';
|
|
break;
|
|
case 'woodmart_dropdown':
|
|
$key = 'dropdown';
|
|
break;
|
|
}
|
|
return $key;
|
|
}
|
|
|
|
/**
|
|
* select2 field
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_select2( $key, $out = "" ) {
|
|
$value = '';
|
|
|
|
if ( isset( $key['std'] ) ) {
|
|
$value = $key['std'];
|
|
}
|
|
|
|
if ( isset( $key['value'] ) ) {
|
|
$value = $key['value'];
|
|
}
|
|
|
|
if ( ! is_array( $value ) ) {
|
|
$value = explode( ',', $value );
|
|
}
|
|
|
|
if ( isset( $key['callback'] ) && method_exists( $this, $key['callback'] ) ) {
|
|
$key['fields'] = $this->{$key['callback']}();
|
|
}
|
|
|
|
if ( isset( $key['callback_global'] ) && function_exists( $key['callback_global'] ) ) {
|
|
$key['fields'] = $key['callback_global']();
|
|
}
|
|
|
|
wp_enqueue_script( 'select2', WOODMART_ASSETS . '/js/libs/select2.full.min.js', array(), woodmart_get_theme_info( 'Version' ), true );
|
|
wp_enqueue_script( 'woodmart-admin-options', WOODMART_ASSETS . '/js/options.js', array(), WOODMART_VERSION, true );
|
|
|
|
ob_start();
|
|
|
|
?>
|
|
<?php echo $this->create_field_label( $key['name'], $key['_id'] ); ?>
|
|
<select name="<?php echo esc_attr( $key['_name'] ); ?>[]" id="<?php echo esc_attr( $key['_id'] ); ?>" class="xts-select xts-select2" multiple>
|
|
<?php foreach ( $key['fields'] as $field => $option ) : ?>
|
|
<?php
|
|
$selected = false;
|
|
|
|
if ( is_array( $value ) && in_array( $option, $value, false ) ) {
|
|
$selected = true;
|
|
}
|
|
|
|
?>
|
|
|
|
<option value="<?php echo esc_attr( $option ); ?>" <?php selected( true, $selected ); ?>>
|
|
<?php echo esc_html( $field ); ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
<?php
|
|
|
|
return ob_get_clean();
|
|
}
|
|
|
|
|
|
/**
|
|
* dropdown field
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_dropdown( $key, $out = "" )
|
|
{
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>';
|
|
|
|
if ( isset( $key['callback'] ) && method_exists( $this, $key['callback'] ) ) {
|
|
$key['fields'] = $this->{$key['callback']}();
|
|
}
|
|
|
|
if ( isset( $key['callback_global'] ) && function_exists( $key['callback_global'] ) ) {
|
|
$key['fields'] = $key['callback_global']();
|
|
}
|
|
|
|
$selected = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
$out .= '<select id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" data-value="' . esc_attr( $selected ) . '" ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="' . esc_attr( $key['class'] ) . '" ';
|
|
|
|
$out .= '> ';
|
|
|
|
if ( isset( $key['fields'] ) ) {
|
|
foreach ( $key['fields'] as $field => $option )
|
|
{
|
|
|
|
$out .= '<option value="' . esc_attr( $option ) . '" ';
|
|
|
|
if ( esc_attr( $selected ) == $option )
|
|
$out .= ' selected="selected" ';
|
|
|
|
$out .= '> '.esc_html( $field ).'</option>';
|
|
|
|
}
|
|
}
|
|
|
|
$out .= ' </select> ';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.wp_kses( $key['desc'], true ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
/**
|
|
* attach image field
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_attach_image( $key, $out = "" )
|
|
{
|
|
wp_enqueue_script( 'woodmart-admin-options', WOODMART_ASSETS . '/js/options.js', array(), WOODMART_VERSION, true );
|
|
wp_enqueue_script( 'woodmart-admin-scripts', WOODMART_ASSETS . '/js/admin.js', array(), WOODMART_VERSION, true );
|
|
|
|
$value = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
$url = $style = '';
|
|
|
|
if(isset($value)) {
|
|
$url = wp_get_attachment_url($value);
|
|
}
|
|
|
|
if($url == '') {
|
|
$style = 'display:none;';
|
|
}
|
|
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>';
|
|
|
|
$out .= '<img src="'.$url.'" class="woodmart-image-src" style="'.$style.'" />';
|
|
|
|
$out .= '<input type="hidden" ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="woodmart-image-upload ' . esc_attr( $key['class'] ) . '" ';
|
|
|
|
|
|
$out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="' . esc_attr( $value ) . '" ';
|
|
|
|
if ( isset( $key['size'] ) )
|
|
$out .= 'size="' . esc_attr( $key['size'] ) . '" ';
|
|
|
|
$out .= ' />';
|
|
|
|
$out .= '<button class="button woodmart-image-upload-btn">' .__('Upload image', 'woodmart') . '</button>';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
/**
|
|
* Attach images field
|
|
*
|
|
* @access private
|
|
* @since 1.5
|
|
*
|
|
* @param string
|
|
* @param array
|
|
*
|
|
* @return string
|
|
*/
|
|
function create_field_attach_images( $key, $out = '' ) {
|
|
wp_enqueue_script( 'woodmart-admin-options', WOODMART_ASSETS . '/js/options.js', array(), WOODMART_VERSION, true );
|
|
wp_enqueue_script( 'woodmart-admin-scripts', WOODMART_ASSETS . '/js/admin.js', array(), WOODMART_VERSION, true );
|
|
|
|
$value = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
$ids = explode( ',', $value );
|
|
|
|
ob_start();
|
|
|
|
?>
|
|
<div class="xts-upload_list-control">
|
|
<?php echo $this->create_field_label( $key['name'], $key['_id'] ); ?>
|
|
<div class="xts-upload-preview">
|
|
<?php foreach ( $ids as $id ) : ?>
|
|
<?php if ( $id ) : ?>
|
|
<div data-attachment_id="<?php echo esc_attr( $id ); ?>">
|
|
<?php echo wp_get_attachment_image( $id, 'thumbnail' ); // phpcs:ignore ?>
|
|
<a href="#" class="xts-remove">
|
|
<span class="xts-i-close"></span>
|
|
</a>
|
|
</div>
|
|
<?php endif; ?>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
|
|
<div class="xts-upload-btns">
|
|
<button class="xts-btn xts-upload-btn xts-i-import">
|
|
<?php esc_html_e( 'Upload', 'woodmart' ); ?>
|
|
</button>
|
|
|
|
<button class="xts-btn xts-btn-remove xts-color-warning">
|
|
<?php esc_html_e( 'Clear all', 'woodmart' ); ?>
|
|
</button>
|
|
|
|
<input type="hidden" class="xts-upload-input-id" name="<?php echo esc_attr( $key['_name'] ); ?>" value="<?php echo esc_attr( $value ); ?>" />
|
|
</div>
|
|
|
|
<?php if ( isset( $key['desc'] ) ) : ?>
|
|
<small class="description">
|
|
<?php echo esc_html( $key['desc'] ); ?>
|
|
</small>
|
|
<?php endif; ?>
|
|
</div>
|
|
<?php
|
|
|
|
return $out . ob_get_clean();
|
|
}
|
|
|
|
|
|
/**
|
|
* Field Text
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_text( $key, $out = "" )
|
|
{
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>';
|
|
|
|
$out .= '<input type="text" ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="' . esc_attr( $key['class'] ) . '" ';
|
|
|
|
$value = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
$out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="' . esc_attr( $value ) . '" ';
|
|
|
|
if ( isset( $key['size'] ) )
|
|
$out .= 'size="' . esc_attr( $key['size'] ) . '" ';
|
|
|
|
$out .= ' />';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Field Textarea
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_textarea( $key, $out = "" )
|
|
{
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>';
|
|
|
|
$out .= '<textarea ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="' . esc_attr( $key['class'] ) . '" ';
|
|
|
|
if ( isset( $key['rows'] ) )
|
|
$out .= 'rows="' . esc_attr( $key['rows'] ) . '" ';
|
|
|
|
if ( isset( $key['cols'] ) )
|
|
$out .= 'cols="' . esc_attr( $key['cols'] ) . '" ';
|
|
|
|
$value = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
$out .= 'id="'. esc_attr( $key['_id'] ) .'" name="' . esc_attr( $key['_name'] ) . '">'.esc_html( $value );
|
|
|
|
$out .= '</textarea>';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Field Checkbox
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_checkbox( $key, $out = "" )
|
|
{
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] );
|
|
|
|
$out .= ' <input type="checkbox" ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="checkbox ' . esc_attr( $key['class'] ) . '"';
|
|
|
|
$out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="1" ';
|
|
|
|
if ( ( isset( $key['value'] ) && $key['value'] == 1 ) OR ( ! isset( $key['value'] ) && $key['std'] == 1 ) )
|
|
$out .= ' checked="checked" ';
|
|
|
|
$out .= ' /> ';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Field Select
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_select( $key, $out = "" )
|
|
{
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>';
|
|
|
|
$out .= '<select id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="' . esc_attr( $key['class'] ) . '" ';
|
|
|
|
$out .= '> ';
|
|
|
|
$selected = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
foreach ( $key['fields'] as $field => $option )
|
|
{
|
|
|
|
$out .= '<option value="' . esc_attr( $option['value'] ) . '" ';
|
|
|
|
if ( esc_attr( $selected ) == $option['value'] )
|
|
$out .= ' selected="selected" ';
|
|
|
|
$out .= '> '.esc_html( $option['name'] ).'</option>';
|
|
|
|
}
|
|
|
|
$out .= ' </select> ';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Field Select with Options Group
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_select_group( $key, $out = "" )
|
|
{
|
|
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>';
|
|
|
|
$out .= '<select id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="' . esc_attr( $key['class'] ) . '" ';
|
|
|
|
$out .= '> ';
|
|
|
|
$selected = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
foreach ( $key['fields'] as $group => $fields )
|
|
{
|
|
|
|
$out .= '<optgroup label="' . $group . '">';
|
|
|
|
foreach ( $fields as $field => $option )
|
|
{
|
|
$out .= '<option value="' . esc_attr( $option['value'] ) . '" ';
|
|
|
|
if ( esc_attr( $selected ) == $option['value'] )
|
|
$out .= ' selected="selected" ';
|
|
|
|
$out .= '> ' . esc_html( $option['name'] ) . '</option>';
|
|
}
|
|
|
|
$out .= '</optgroup>';
|
|
|
|
}
|
|
|
|
$out .= '</select>';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Field Number
|
|
*
|
|
* @access private
|
|
* @param array
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_number( $key, $out = "" )
|
|
{
|
|
$out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>';
|
|
|
|
$out .= '<input type="number" ';
|
|
|
|
if ( isset( $key['class'] ) )
|
|
$out .= 'class="' . esc_attr( $key['class'] ) . '" ';
|
|
|
|
$value = isset( $key['value'] ) ? $key['value'] : $key['std'];
|
|
|
|
$out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="' . esc_attr( $value ) . '" ';
|
|
|
|
if ( isset( $key['size'] ) )
|
|
$out .= 'size="' . esc_attr( $key['size'] ) . '" ';
|
|
|
|
$out .= ' />';
|
|
|
|
if ( isset( $key['desc'] ) )
|
|
$out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>';
|
|
|
|
return $out;
|
|
}
|
|
|
|
|
|
/**
|
|
* Field Label
|
|
*
|
|
* @access private
|
|
* @param string
|
|
* @param string
|
|
* @return string
|
|
* @since 1.5
|
|
*/
|
|
|
|
function create_field_label( $name = "", $id = "" ) {
|
|
return '<label for="' . esc_attr( $id ). '">' . esc_html( $name ) . ':</label>';
|
|
}
|
|
|
|
} // class
|
|
}
|
|
|