' . __('Please check settings. Values are empty', \JustCustomFields::TEXTDOMAIN) . '
';
return false;
}
- $single_checkbox = (count($values) == 1) ? true : false;
+ $single_checkbox = (count($this->instance['settings']) == 1) ? true : false;
?>
fieldOptions['before_widget']; ?>
@@ -41,16 +38,16 @@ public function field()
@@ -69,10 +66,10 @@ public function field()
public function form()
{
// Defaults
- $instance = wp_parse_args((array) $this->instance, array( 'title' => '', 'settings' => '', 'description' => '' ));
+ $instance = wp_parse_args((array) $this->instance, array( 'title' => '', 'settings' => array(), 'description' => '' ));
$title = esc_attr($instance['title']);
- $settings = esc_attr($instance['settings']);
+ $settings = $instance['settings'];
$description = esc_html($instance['description']);
?>
@@ -80,9 +77,47 @@ public function form()
-
-
-
label1|id1
label2|id2
label3', \JustCustomFields::TEXTDOMAIN); ?>
+
+
+ 'label',
+ 'placeholder' => 'Label',
+ 'type' => 'text',
+ ),
+ array(
+ 'name' => 'id',
+ 'placeholder' => 'ID',
+ 'type' => 'text',
+ ),
+ );
+ ?>
+
+
@@ -107,36 +142,11 @@ public function update( $new_instance, $old_instance )
{
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
- $instance['settings'] = strip_tags($new_instance['settings']);
+ $instance['settings'] = $this->orderOptions($new_instance['settings']);
$instance['description'] = strip_tags($new_instance['description']);
return $instance;
}
- /**
- * prepare list of options
- *
- * @param array $instance current instance
- * @return array
- */
- protected function parsedSelectOptions( $instance )
- {
- $values = array();
- $v = explode("\n", $instance['settings']);
-
- foreach ( $v as $val ) {
- $val = trim($val);
-
- if ( strpos($val, '|') !== FALSE ) {
- $a = explode('|', $val);
- $values[$a[0]] = $a[1];
- }
- elseif ( !empty($val) ) {
- $values[$val] = $val;
- }
- }
- return $values;
- }
-
/**
* print fields values from shortcode
*/
diff --git a/components/select/JustField_Select.php b/components/select/JustField_Select.php
index 39a7387..5391b9a 100644
--- a/components/select/JustField_Select.php
+++ b/components/select/JustField_Select.php
@@ -12,7 +12,6 @@
*/
class JustField_Select extends core\JustField
{
-
public function __construct()
{
$field_ops = array( 'classname' => 'field_select' );
@@ -25,7 +24,6 @@ public function __construct()
*/
public function field()
{
- $values = $this->parsedSelectOptions($this->instance);
?>
fieldOptions['before_widget']; ?>
@@ -35,8 +33,8 @@ public function field()
instance['empty_option'])) : ?>
- $val ) : ?>
-
+ instance['options'] as $val ) : ?>
+
@@ -54,16 +52,59 @@ public function field()
public function form()
{
//Defaults
- $instance = wp_parse_args((array) $this->instance, array( 'title' => '', 'description' => '', 'options' => '', 'empty_option' => '' ));
+ $instance =
+ wp_parse_args(
+ (array) $this->instance,
+ array( 'title' => '', 'description' => '', 'options' => array(), 'empty_option' => '' )
+ );
$title = esc_attr($instance['title']);
- $options = esc_attr($instance['options']);
+ $options = $instance['options'];
$description = esc_html($instance['description']);
$empty_option = esc_attr($instance['empty_option']);
?>
-
-
-
label1|id1
label2|id2
label3', \JustCustomFields::TEXTDOMAIN); ?>
+
+
+ 'label',
+ 'placeholder' => 'Label',
+ 'type' => 'text',
+ ),
+ array(
+ 'name' => 'id',
+ 'placeholder' => 'ID',
+ 'type' => 'text',
+ ),
+ );
+ ?>
+
+
+
@@ -75,6 +116,7 @@ public function form()
*/
public function save( $values )
{
+
$values = $values['val'];
return $values;
@@ -86,39 +128,14 @@ public function save( $values )
public function update( $new_instance, $old_instance )
{
$instance = $old_instance;
+
$instance['title'] = strip_tags($new_instance['title']);
- $instance['options'] = strip_tags($new_instance['options']);
+ $instance['options'] = $this->orderOptions($new_instance['options']);
$instance['description'] = strip_tags($new_instance['description']);
$instance['empty_option'] = strip_tags($new_instance['empty_option']);
return $instance;
}
- /**
- * prepare list of options
- *
- * @param array $instance current instance
- * @return array
- */
- public function parsedSelectOptions( $instance )
- {
- $values = array();
- $settings = $instance['options'];
-
- $v = explode("\n", $settings);
- foreach ( $v as $val ) {
- $val = trim($val);
- if ( empty($val) ) continue;
- if ( strpos($val, '|') !== FALSE ) {
- $a = explode('|', $val);
- $values[$a[0]] = $a[1];
- }
- elseif ( !empty($val) ) {
- $values[$val] = $val;
- }
- }
-
- return $values;
- }
/**
* print field values inside the shortcode
diff --git a/components/selectmultiple/JustField_SelectMultiple.php b/components/selectmultiple/JustField_SelectMultiple.php
index 17212f3..f5e9b4e 100644
--- a/components/selectmultiple/JustField_SelectMultiple.php
+++ b/components/selectmultiple/JustField_SelectMultiple.php
@@ -28,15 +28,14 @@ public function field()
if ( !is_array($this->entry) )
$this->entry = array();
// prepare options array
- $values = $this->parsedSelectOptions($this->instance);
?>
fieldOptions['before_widget']; ?>
fieldOptions['before_title'] . esc_html($this->instance['title']) . $this->fieldOptions['after_title']; ?>
@@ -54,17 +53,58 @@ public function field()
public function form()
{
//Defaults
- $instance = wp_parse_args((array) $this->instance, array( 'title' => '', 'description' => '', 'settings' => '' ));
+ $instance = wp_parse_args((array) $this->instance, array( 'title' => '', 'description' => '', 'settings' => array() ));
$title = esc_attr($instance['title']);
- $options = esc_attr($instance['options']);
+ $options = $instance['options'];
$description = esc_html($instance['description']);
?>
-
-
label1|id1
label2|id2
label3', \JustCustomFields::TEXTDOMAIN); ?>
+
+ 'label',
+ 'placeholder' => 'Label',
+ 'type' => 'text',
+ ),
+ array(
+ 'name' => 'id',
+ 'placeholder' => 'ID',
+ 'type' => 'text',
+ ),
+ );
+ ?>
+
+
+
+
+
orderOptions($new_instance['options']);
$instance['description'] = strip_tags($new_instance['description']);
return $instance;
}
- /**
- * prepare list of options
- *
- * @param array $instance current instance
- */
- protected function parsedSelectOptions( $instance )
- {
- $values = array();
-
- $v = explode("\n", $instance['options']);
- foreach ( $v as $val ) {
- $val = trim($val);
- if ( strpos($val, '|') !== FALSE ) {
- $a = explode('|', $val);
- $values[$a[0]] = $a[1];
- }
- elseif ( !empty($val) ) {
- $values[$val] = $val;
- }
- }
-
- return $values;
- }
-
/**
* print fields values from shortcode
*/
diff --git a/controllers/AdminController.php b/controllers/AdminController.php
index 7fd65e8..93fe92a 100644
--- a/controllers/AdminController.php
+++ b/controllers/AdminController.php
@@ -65,7 +65,13 @@ public function addScripts()
jcf_plugin_url('assets/just_custom_fields.js'),
array( 'jquery', 'json2', 'jquery-form', 'jquery-ui-sortable' )
);
+ wp_register_script(
+ 'jcforms-multifield',
+ jcf_plugin_url('assets/jcforms-multifield.js'),
+ array( 'jquery', 'json2', 'jquery-form', 'jquery-ui-sortable' )
+ );
wp_enqueue_script($slug);
+ wp_enqueue_script('jcforms-multifield');
wp_enqueue_script('jquery-ui-autocomplete');
}
@@ -88,7 +94,9 @@ public function addStyles()
{
$slug = \JustCustomFields::$pluginName;
wp_register_style($slug, jcf_plugin_url('assets/styles.css'), array( 'media-views' ));
+ wp_register_style('jcforms-multifield', jcf_plugin_url('assets/jcforms-multifield.css'), array( 'media-views' ));
wp_enqueue_style($slug);
+ wp_enqueue_style('jcforms-multifield');
}
}
diff --git a/core/JustField.php b/core/JustField.php
index 3149b0f..2de70ca 100644
--- a/core/JustField.php
+++ b/core/JustField.php
@@ -616,4 +616,32 @@ public function shortcodeValue( $args )
{
return $args['before_value'] . esc_html($this->entry) . $args['after_value'];
}
+
+ /**
+ * Correct order options after drup&drop
+ *
+ * @param $options
+ *
+ * @return array
+ */
+
+ public function orderOptions($options)
+ {
+
+ $new_options = array();
+ $i = 0;
+ foreach ($options as $val){
+ $option = [];
+ foreach($val as $key => $opt){
+ $option[$key] = strip_tags($opt);
+ }
+ if ( ! empty( $option['id'] && $option['label'] ) ){
+ $new_options[$i] = $option;
+ }
+ $i++;
+ }
+
+ return $new_options;
+ }
+
}