/**
  * Get registered control fields
  *
  * @since  1.0.0
  * @since  1.1.3 Using dirname( __FILE__ ) instead of __DIR__.
  * @since  1.2.0 Use interface builder for HTML rendering.
  *
  * @param  mixed $post Current post object.
  * @return void
  */
 public function get_fields($post)
 {
     if (is_array($this->args['single']) && isset($this->args['single']['key'])) {
         $this->meta_values = get_post_meta($post->ID, $this->args['single']['key'], true);
     }
     $zero_allowed = apply_filters('cherry_zero_allowed_controls', array('stepper', 'slider'));
     foreach ($this->args['fields'] as $key => $field) {
         $default = Cherry_Toolkit::get_arg($field, 'value', '');
         $value = $this->get_meta($post, $key, $default);
         if (isset($field['options_callback'])) {
             $field['options'] = call_user_func($field['options_callback']);
         }
         $element = Cherry_Toolkit::get_arg($field, 'element', 'control');
         $field['id'] = Cherry_Toolkit::get_arg($field, 'id', $key);
         $field['name'] = Cherry_Toolkit::get_arg($field, 'name', $key);
         $field['type'] = Cherry_Toolkit::get_arg($field, 'type', '');
         $field['value'] = $value;
         // Fix zero values for stepper and slider
         if (!$value && in_array($field['type'], $zero_allowed)) {
             $field['value'] = 0;
         }
         $register_callback = 'register_' . $element;
         if (method_exists($this->builder, $register_callback)) {
             call_user_func(array($this->builder, $register_callback), $field);
         }
     }
     $this->builder->render();
 }
 /**
  * Get registered control fields
  *
  * @since  1.0.0
  * @param  mixed  $term     current term object.
  * @param  [type] $taxonomy current taxonomy name.
  * @return string
  */
 public function get_fields($term, $taxonomy, $format = '%s')
 {
     $result = '';
     foreach ($this->args['fields'] as $key => $field) {
         if (in_array($key, Cherry_Term_Meta::$register_fields)) {
             continue;
         } else {
             Cherry_Term_Meta::$register_fields[] = $key;
         }
         if (false !== $term) {
             $value = get_term_meta($term->term_id, $key, true);
         } else {
             $value = '';
         }
         $value = !empty($value) ? $value : Cherry_Toolkit::get_arg($field, 'value', '');
         if (isset($field['options_callback'])) {
             $options = call_user_func($field['options_callback']);
         } else {
             $options = Cherry_Toolkit::get_arg($field, 'options', array());
         }
         $args = array('type' => Cherry_Toolkit::get_arg($field, 'type', 'text'), 'id' => $key, 'name' => $key, 'value' => $value, 'label' => Cherry_Toolkit::get_arg($field, 'label', ''), 'options' => $options, 'multiple' => Cherry_Toolkit::get_arg($field, 'multiple', false), 'filter' => Cherry_Toolkit::get_arg($field, 'filter', false), 'size' => Cherry_Toolkit::get_arg($field, 'size', 1), 'null_option' => Cherry_Toolkit::get_arg($field, 'null_option', 'None'), 'multi_upload' => Cherry_Toolkit::get_arg($field, 'multi_upload', true), 'library_type' => Cherry_Toolkit::get_arg($field, 'library_type', 'image'), 'upload_button_text' => Cherry_Toolkit::get_arg($field, 'upload_button_text', 'Choose'), 'max_value' => Cherry_Toolkit::get_arg($field, 'max_value', '100'), 'min_value' => Cherry_Toolkit::get_arg($field, 'min_value', '0'), 'max' => Cherry_Toolkit::get_arg($field, 'max', '100'), 'min' => Cherry_Toolkit::get_arg($field, 'min', '0'), 'step_value' => Cherry_Toolkit::get_arg($field, 'step_value', '1'), 'style' => Cherry_Toolkit::get_arg($field, 'style', 'normal'), 'display_input' => Cherry_Toolkit::get_arg($field, 'display_input', true), 'controls' => Cherry_Toolkit::get_arg($field, 'controls', array()), 'fields' => Cherry_Toolkit::get_arg($field, 'fields', array()), 'auto_parse' => Cherry_Toolkit::get_arg($field, 'auto_parse', false), 'icon_data' => Cherry_Toolkit::get_arg($field, 'icon_data', array()), 'toggle' => Cherry_Toolkit::get_arg($field, 'toggle', array('true_toggle' => 'On', 'false_toggle' => 'Off', 'true_slave' => '', 'false_slave' => '')), 'class' => Cherry_Toolkit::get_arg($field, 'class'), 'required' => Cherry_Toolkit::get_arg($field, 'required', false), 'placeholder' => Cherry_Toolkit::get_arg($field, 'placeholder'), 'master' => Cherry_Toolkit::get_arg($field, 'master'), 'title_field' => Cherry_Toolkit::get_arg($field, 'title_field'), 'ui_kit' => Cherry_Toolkit::get_arg($field, 'ui_kit', true));
         $current_element = $this->ui_builder->get_ui_element_instance($args['type'], $args);
         $result .= sprintf($format, $current_element->render());
     }
     return $result;
 }
 /**
  * Show widget form
  *
  * @since  1.0.0
  * @see    WP_Widget->form
  * @param  array $instance current widget instance.
  * @return void
  */
 public function form($instance)
 {
     if (empty($this->settings)) {
         return;
     }
     foreach ($this->settings as $key => $setting) {
         $value = isset($instance[$key]) ? $instance[$key] : Cherry_Toolkit::get_arg($setting, 'value', '');
         if (isset($setting['options_callback'])) {
             $callback = $this->get_callback_data($setting['options_callback']);
             $options = call_user_func_array($callback['callback'], $callback['args']);
         } else {
             $options = Cherry_Toolkit::get_arg($setting, 'options', array());
         }
         $args = array('type' => Cherry_Toolkit::get_arg($setting, 'type', 'text'), 'id' => $this->get_field_id($key), 'name' => $this->get_field_name($key), 'value' => $value, 'label' => Cherry_Toolkit::get_arg($setting, 'label', ''), 'options' => $options, 'multiple' => Cherry_Toolkit::get_arg($setting, 'multiple', false), 'filter' => Cherry_Toolkit::get_arg($setting, 'filter', false), 'size' => Cherry_Toolkit::get_arg($setting, 'size', 1), 'null_option' => Cherry_Toolkit::get_arg($setting, 'null_option', 'None'), 'multi_upload' => Cherry_Toolkit::get_arg($setting, 'multi_upload', true), 'library_type' => Cherry_Toolkit::get_arg($setting, 'library_type', 'image'), 'upload_button_text' => Cherry_Toolkit::get_arg($setting, 'upload_button_text', 'Choose'), 'max_value' => Cherry_Toolkit::get_arg($setting, 'max_value', '100'), 'min_value' => Cherry_Toolkit::get_arg($setting, 'min_value', '0'), 'step_value' => Cherry_Toolkit::get_arg($setting, 'step_value', '1'), 'style' => Cherry_Toolkit::get_arg($setting, 'style', 'normal'), 'placeholder' => Cherry_Toolkit::get_arg($setting, 'placeholder', ''), 'toggle' => Cherry_Toolkit::get_arg($setting, 'toggle', array('true_toggle' => 'On', 'false_toggle' => 'Off', 'true_slave' => '', 'false_slave' => '')), 'master' => Cherry_Toolkit::get_arg($setting, 'master', ''), 'icon_data' => Cherry_Toolkit::get_arg($setting, 'icon_data', array()), 'title_field' => Cherry_Toolkit::get_arg($setting, 'title_field'), 'add_label' => Cherry_Toolkit::get_arg($setting, 'add_label', ''), 'fields' => Cherry_Toolkit::get_arg($setting, 'fields', array()), 'ui_kit' => Cherry_Toolkit::get_arg($setting, 'ui_kit', true));
         $this->render_control($args);
     }
 }