.
*
* @package ReduxFramework
* @subpackage Field_slides
* @author Luciano "WebCaos" Ubertini
* @author Daniel J Griffiths (Ghost1227)
* @author Dovy Paukstys
* @version 3.0.0
*/
// Exit if accessed directly
if (!defined('ABSPATH')) exit;
// Don't duplicate me!
if (!class_exists('widget_handler')) {
class widget_handler {
static $product_selector = "product_selector_field";
static $category_selector = "category_selector_field";
static $inApp_selector = "inAppPages_selector_field";
static $url ="url_field" ;
static $widgets = array('slider_widgets' => "Slider Widgets",
'grid_widgets' => "Grid widgets",
'product_scroller_widgets'=>"Product scroller widgets",
'banner_widgets'=>"Banner widgets",
'search_widgets' => "Search widgets",
'html_widgets' => "HTML widgets",
'menu_widgets' => "Menu widgets",
);
function __construct( $field = array(), $value ='', $parent ) {
$this->parent = $parent;
$this->field = $field;
$this->value = $value;
require_once(wooapp_path('inc/redux-framework/ReduxCore/inc/fields/select/field_select.php'));
include_once(ReduxFramework::$_dir. "inc/fields/media/field_media.php");
}
public function enqueue() {
wp_enqueue_script(
'redux-field-widget-handler-js',
plugins_url('widget-handler.js',__FILE__),
array('jquery', 'jquery-ui-core', 'jquery-ui-accordion', 'wp-color-picker'),
time(),
true
);
/* wp_enqueue_style(
'redux-field-select2-css',
ReduxFramework::$_url . 'assets/js/vendor/select2/select2.css',
time(),
true
);
*/
}
public static function single_display($id,$callback){
if((!isset($GLOBALS[$id]) || !$GLOBALS[$id])){
$GLOBALS[$id] = true;
call_user_func($callback);
}
}
public function widget_field($field_name,$hidden=true,$field=array(),$value=array()){
$index = "widget_".$field_name;
if(isset($field['multi']) && $field['multi']) $index.="_multi";
if(isset($field['sortable']) && $field['sortable']) {
$index .= "_sortable";
}
$style = $hidden?"display:none;":"";
if((!isset($GLOBALS[$index]) || !$GLOBALS[$index]) || !$hidden){
if($hidden) $GLOBALS[$index] = true;
if($hidden) echo '
';
if(!isset($field['class']))
$field['class'] = '';
else
$field['class'] = $field['class'].' widget-field';
call_user_func(array($this,$field_name),$field,$value);
if($hidden) echo '
';
}
}
private function widget_filed_args($field_defaults,$field_args){
$field_defaults = array_merge(array('id'=>'__toReplace',
'name_suffix' =>'',
'name'=>'',
'class' =>'widget-field',
'title' => '',
'subtitle' => '',
),$field_defaults);
return wp_parse_args($field_args,$field_defaults);
}
public function product_selector_field($field,$value){
$default = array(
'type' => 'select',
'data' => 'posts',
'args' => array('post_type' => array('product'),'posts_per_page' => 200),
);
$field = $this->widget_filed_args($default,$field);
$widget = new ReduxFramework_select($field,$value,$this->parent);
$widget->render();
}
public function inAppPages_selector_field($field,$value){
$option_name = 'inApp_pages' ;
$pages = get_option( $option_name );
if ( $pages !== false ) {
$pages = json_decode( $pages, true );
if ( is_array( $pages ) ) {
$pages = array_merge( array( "home" => "Home Page" ), $pages );
} else {
$pages = array( "home" => "Home Page" );
}
}else {
$pages = array( "home" => "Home Page" );
}
$class = isset($field['class'])?$field['class']:'';
$multi = (isset($field['multi']) && $field['multi'])?'multiple="multiple"':'';
echo "";
}
public function category_selector_field($field,$value){
$default = array(
'type' => 'select',
'data' => 'categories',
'args' => array('taxonomy' => array('product_cat')),
);
$field = $this->widget_filed_args($default,$field);
$widget = new ReduxFramework_select($field,$value,$this->parent);
$widget->render();
}
public function url_field($field,$value=""){
$class = isset($this->field['class'])?$this->field['class']:'';
echo '';
}
public static function filter_widget_values($widget_values){
if(isset($widget_values['items']['_blank'])) unset($widget_values['items']['_blank']);
return $widget_values;
}
public static function widget_title($widget){
return isset(self::$widgets[$widget])?self::$widgets[$widget]:'';
}
public static function system_product_scrollers(){
$return = array();
$return = Array(
"recent" => Array ( "title" => __("Recent Products Scroller")),
"featured" => Array ( "title" => __("Featured products Scroller")),
"sale" => Array ( "title" => __("Sale Products Scroller")),
"bestselling" => Array ( "title" => __("Best Selling Products Scroller")),
"toprated" => Array ( "title" => __("Top Rated Products Scroller")),
);
return $return;
}
public static function get_widgets($widget = null){
if($widget!=null && !isset(self::$widgets[$widget])) return false;
$return = array();
global $mobappSettings;
if($widget == null){
foreach(self::$widgets as $widget=>$title){
if(isset($mobappSettings[$widget]))
$return = array_merge($return,array($widget=>self::filter_widget_values($mobappSettings[$widget])));
if($widget=="product_scroller_widgets"){
if(!isset($return[$widget]["slides"]) || empty($return[$widget]["slides"]))
$return[$widget]["slides"] = array();
$return[$widget]["slides"] = array_merge($return[$widget]["slides"],self::system_product_scrollers());
}
}
}else{
$return = isset($mobappSettings[$widget])?$mobappSettings[$widget]:array();
}
return $return;
}
}
}