From 30b5e0bbbf6899286d55b14860dc8fb955a33bfe Mon Sep 17 00:00:00 2001 From: Denis Baranov Date: Sun, 3 Jun 2018 00:58:11 +0300 Subject: [PATCH 1/5] allow condition value to be zero --- includes/admin/assets/js/um-admin-field.js | 54 +++++++++++---------- includes/admin/core/class-admin-builder.php | 11 +++-- includes/admin/core/class-admin-metabox.php | 2 +- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/includes/admin/assets/js/um-admin-field.js b/includes/admin/assets/js/um-admin-field.js index a677ec53..035f4714 100644 --- a/includes/admin/assets/js/um-admin-field.js +++ b/includes/admin/assets/js/um-admin-field.js @@ -35,6 +35,8 @@ jQuery(document).ready(function() { var form = jQuery(this); + console.log(um_admin_field_data.ajax_url); + jQuery.ajax({ url: um_admin_field_data.ajax_url, type: 'POST', @@ -50,35 +52,35 @@ jQuery(document).ready(function() { form.css({'opacity': 1}); }, success: function(data){ - - if (data.error){ - - c = 0; - jQuery.each(data.error, function(i, v){ - c++; - if ( c == 1 ) { - form.find('#'+i).addClass('um-admin-error').focus(); - form.find('.um-admin-error-block').show().html(v); - } - }); - - um_admin_modal_responsive(); - - } else { - - jQuery('.um-col-demon-settings').data('in_row', ''); - jQuery('.um-col-demon-settings').data('in_sub_row', ''); - jQuery('.um-col-demon-settings').data('in_column', ''); - jQuery('.um-col-demon-settings').data('in_group', ''); - - um_admin_remove_modal(); - um_admin_update_builder(); - - } + console.log(data); + // if (data.error){ + // + // c = 0; + // jQuery.each(data.error, function(i, v){ + // c++; + // if ( c == 1 ) { + // form.find('#'+i).addClass('um-admin-error').focus(); + // form.find('.um-admin-error-block').show().html(v); + // } + // }); + // + // um_admin_modal_responsive(); + // + // } else { + // + // jQuery('.um-col-demon-settings').data('in_row', ''); + // jQuery('.um-col-demon-settings').data('in_sub_row', ''); + // jQuery('.um-col-demon-settings').data('in_column', ''); + // jQuery('.um-col-demon-settings').data('in_group', ''); + // + // um_admin_remove_modal(); + // um_admin_update_builder(); + // + // } }, error: function(data){ - + console.log(data); } }); diff --git a/includes/admin/core/class-admin-builder.php b/includes/admin/core/class-admin-builder.php index 7efae58b..3e8d2e30 100644 --- a/includes/admin/core/class-admin-builder.php +++ b/includes/admin/core/class-admin-builder.php @@ -167,27 +167,27 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { function um_admin_pre_save_field_to_form( $array ){ unset( $array['conditions'] ); if ( isset($array['conditional_field']) && !empty( $array['conditional_action'] ) && !empty( $array['conditional_operator'] ) ) { - $array['conditional_value'] = ! empty( $array['conditional_value'] ) ? $array['conditional_value'] : ''; + $array['conditional_value'] = isset( $array['conditional_value'] ) ? $array['conditional_value'] : ''; $array['conditions'][] = array( $array['conditional_action'], $array['conditional_field'], $array['conditional_operator'], $array['conditional_value'] ); } if ( isset($array['conditional_field1']) && !empty( $array['conditional_action1'] ) && !empty( $array['conditional_operator1'] ) ) { - $array['conditional_value1'] = ! empty( $array['conditional_value1'] ) ? $array['conditional_value1'] : ''; + $array['conditional_value1'] = isset( $array['conditional_value1'] ) ? $array['conditional_value1'] : ''; $array['conditions'][] = array( $array['conditional_action1'], $array['conditional_field1'], $array['conditional_operator1'], $array['conditional_value1'] ); } if ( isset($array['conditional_field2']) && !empty( $array['conditional_action2'] ) && !empty( $array['conditional_operator2'] ) ) { - $array['conditional_value2'] = ! empty( $array['conditional_value2'] ) ? $array['conditional_value2'] : ''; + $array['conditional_value2'] = isset( $array['conditional_value2'] ) ? $array['conditional_value2'] : ''; $array['conditions'][] = array( $array['conditional_action2'], $array['conditional_field2'], $array['conditional_operator2'], $array['conditional_value2'] ); } if ( isset($array['conditional_field3']) && !empty( $array['conditional_action3'] ) && !empty( $array['conditional_operator3'] ) ) { - $array['conditional_value3'] = ! empty( $array['conditional_value3'] ) ? $array['conditional_value3'] : ''; + $array['conditional_value3'] = isset( $array['conditional_value3'] ) ? $array['conditional_value3'] : ''; $array['conditions'][] = array( $array['conditional_action3'], $array['conditional_field3'], $array['conditional_operator3'], $array['conditional_value3'] ); } if ( isset($array['conditional_field4']) && !empty( $array['conditional_action4'] ) && !empty( $array['conditional_operator4'] ) ) { - $array['conditional_value4'] = ! empty( $array['conditional_value4'] ) ? $array['conditional_value4'] : ''; + $array['conditional_value4'] = isset( $array['conditional_value4'] ) ? $array['conditional_value4'] : ''; $array['conditions'][] = array( $array['conditional_action4'], $array['conditional_field4'], $array['conditional_operator4'], $array['conditional_value4'] ); } @@ -659,6 +659,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { $output['error'] = apply_filters( 'um_admin_field_update_error_handling', $output['error'], $array ); extract( $array['post'] ); + if ( empty( $output['error'] ) ){ $save = array(); diff --git a/includes/admin/core/class-admin-metabox.php b/includes/admin/core/class-admin-metabox.php index 2e7abdf9..86171059 100644 --- a/includes/admin/core/class-admin-metabox.php +++ b/includes/admin/core/class-admin-metabox.php @@ -1313,7 +1313,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) { ?>

- +

Date: Sun, 3 Jun 2018 21:02:05 +0300 Subject: [PATCH 2/5] fix condition logic with number field, fix delete condition if field deleted --- assets/js/um-conditional.js | 8 ++- includes/admin/assets/js/um-admin-field.js | 74 ++++++++++++++-------- includes/core/class-enqueue.php | 2 +- 3 files changed, 52 insertions(+), 32 deletions(-) diff --git a/assets/js/um-conditional.js b/assets/js/um-conditional.js index c66433d3..e6af4784 100644 --- a/assets/js/um-conditional.js +++ b/assets/js/um-conditional.js @@ -12,7 +12,6 @@ jQuery(document).ready( function (){ function um_get_field_default_value( $dom ) { var default_value = ''; var type = um_get_field_type($dom); - switch ( type ) { case 'text': @@ -25,7 +24,6 @@ jQuery(document).ready( function (){ case 'multiselect': default_value = $dom.find('select').val(); - break; case 'radio': @@ -249,7 +247,6 @@ jQuery(document).ready( function (){ } if (condition.operator == 'equals to') { - if (condition.value == live_field_value && um_in_array(live_field_value, $owners_values[condition.owner])) { $owners[condition.owner][index] = true; } else { @@ -515,6 +512,11 @@ jQuery(document).ready( function (){ um_apply_conditions(me, false); }); + jQuery(document).on('input change', '.um-field input[type=number]', function () { + var me = jQuery(this); + um_apply_conditions(me, false); + }); + jQuery(document).on('input change', '.um-field input[type=password]', function () { var me = jQuery(this); um_apply_conditions(me, false); diff --git a/includes/admin/assets/js/um-admin-field.js b/includes/admin/assets/js/um-admin-field.js index 035f4714..87866a1e 100644 --- a/includes/admin/assets/js/um-admin-field.js +++ b/includes/admin/assets/js/um-admin-field.js @@ -1,5 +1,26 @@ jQuery(document).ready(function() { + /* Remove deleted condition fields */ + jQuery(document).on('click', '.um-admin-btn-toggle a', function(){ + var fields = jQuery('.um-admin-btn-content').find('[name*="_conditional_field"]'); + + jQuery.each(fields, function(index, value) { + if ( !jQuery(value).val() ) { + console.log(jQuery(value).parents('.um-admin-cur-condition').find('.um-admin-remove-condition')); + jQuery(value).parents('.um-admin-cur-condition').remove(); + } + }); + + var form = jQuery('form.um_add_field'); + + jQuery.ajax({ + url: um_admin_field_data.ajax_url, + type: 'POST', + dataType: 'json', + data: form.serialize() + }); + }); + /* Remove field permanently */ jQuery(document).on('click', '.um-admin-btns a span.remove', function(e){ e.preventDefault(); @@ -35,8 +56,6 @@ jQuery(document).ready(function() { var form = jQuery(this); - console.log(um_admin_field_data.ajax_url); - jQuery.ajax({ url: um_admin_field_data.ajax_url, type: 'POST', @@ -52,35 +71,34 @@ jQuery(document).ready(function() { form.css({'opacity': 1}); }, success: function(data){ - console.log(data); - // if (data.error){ - // - // c = 0; - // jQuery.each(data.error, function(i, v){ - // c++; - // if ( c == 1 ) { - // form.find('#'+i).addClass('um-admin-error').focus(); - // form.find('.um-admin-error-block').show().html(v); - // } - // }); - // - // um_admin_modal_responsive(); - // - // } else { - // - // jQuery('.um-col-demon-settings').data('in_row', ''); - // jQuery('.um-col-demon-settings').data('in_sub_row', ''); - // jQuery('.um-col-demon-settings').data('in_column', ''); - // jQuery('.um-col-demon-settings').data('in_group', ''); - // - // um_admin_remove_modal(); - // um_admin_update_builder(); - // - // } + if (data.error){ + + c = 0; + jQuery.each(data.error, function(i, v){ + c++; + if ( c == 1 ) { + form.find('#'+i).addClass('um-admin-error').focus(); + form.find('.um-admin-error-block').show().html(v); + } + }); + + um_admin_modal_responsive(); + + } else { + + jQuery('.um-col-demon-settings').data('in_row', ''); + jQuery('.um-col-demon-settings').data('in_sub_row', ''); + jQuery('.um-col-demon-settings').data('in_column', ''); + jQuery('.um-col-demon-settings').data('in_group', ''); + + um_admin_remove_modal(); + um_admin_update_builder(); + + } }, error: function(data){ - console.log(data); + } }); diff --git a/includes/core/class-enqueue.php b/includes/core/class-enqueue.php index b723b213..e801c8c1 100644 --- a/includes/core/class-enqueue.php +++ b/includes/core/class-enqueue.php @@ -329,7 +329,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) { */ function load_customjs() { - wp_register_script('um_conditional', um_url . 'assets/js/um-conditional' . $this->suffix . '.js' ); + wp_register_script('um_conditional', um_url . 'assets/js/um-conditional.js' ); wp_enqueue_script('um_conditional'); wp_register_script('um_scripts', um_url . 'assets/js/um-scripts' . $this->suffix . '.js' ); From 804984e587216815fccf0bb04a770a4015cc76b7 Mon Sep 17 00:00:00 2001 From: Denis Baranov Date: Tue, 5 Jun 2018 15:39:18 +0300 Subject: [PATCH 3/5] code refactor --- includes/admin/assets/css/um-admin-misc.css | 4 +++ includes/admin/assets/js/um-admin-ajax.js | 2 +- includes/admin/assets/js/um-admin-field.js | 18 +------------ includes/admin/assets/js/um-admin-modal.js | 21 +++++++++------ includes/admin/core/class-admin-builder.php | 21 ++++++++++----- includes/core/class-fields.php | 30 +++++++++++++++++++++ 6 files changed, 63 insertions(+), 33 deletions(-) diff --git a/includes/admin/assets/css/um-admin-misc.css b/includes/admin/assets/css/um-admin-misc.css index 6aeb7869..eeb376ee 100644 --- a/includes/admin/assets/css/um-admin-misc.css +++ b/includes/admin/assets/css/um-admin-misc.css @@ -258,3 +258,7 @@ p.disabled-on-off .um-admin-yesno *{ visibility: hidden; height: 0; } + +.um-admin-cur-condition-template { + display: none; +} diff --git a/includes/admin/assets/js/um-admin-ajax.js b/includes/admin/assets/js/um-admin-ajax.js index a1df562d..a65eeab8 100644 --- a/includes/admin/assets/js/um-admin-ajax.js +++ b/includes/admin/assets/js/um-admin-ajax.js @@ -28,7 +28,7 @@ jQuery(document).ready(function() { jQuery('.tipsy').hide(); um_admin_remove_modal(); - + console.log(um_admin_ajax_data.ajax_url); jQuery.ajax({ url: um_admin_ajax_data.ajax_url, type: 'POST', diff --git a/includes/admin/assets/js/um-admin-field.js b/includes/admin/assets/js/um-admin-field.js index 87866a1e..007c8965 100644 --- a/includes/admin/assets/js/um-admin-field.js +++ b/includes/admin/assets/js/um-admin-field.js @@ -1,24 +1,8 @@ jQuery(document).ready(function() { /* Remove deleted condition fields */ - jQuery(document).on('click', '.um-admin-btn-toggle a', function(){ - var fields = jQuery('.um-admin-btn-content').find('[name*="_conditional_field"]'); + jQuery(document).on('click', '', function(){ - jQuery.each(fields, function(index, value) { - if ( !jQuery(value).val() ) { - console.log(jQuery(value).parents('.um-admin-cur-condition').find('.um-admin-remove-condition')); - jQuery(value).parents('.um-admin-cur-condition').remove(); - } - }); - - var form = jQuery('form.um_add_field'); - - jQuery.ajax({ - url: um_admin_field_data.ajax_url, - type: 'POST', - dataType: 'json', - data: form.serialize() - }); }); /* Remove field permanently */ diff --git a/includes/admin/assets/js/um-admin-modal.js b/includes/admin/assets/js/um-admin-modal.js index 3b690ee3..e66995ac 100644 --- a/includes/admin/assets/js/um-admin-modal.js +++ b/includes/admin/assets/js/um-admin-modal.js @@ -198,21 +198,26 @@ jQuery(document).ready(function() { if ( jQuery(this).hasClass('disabled') ) return false; - var content = jQuery(this).parents('.um-admin-btn-content'); - var length = content.find('.um-admin-cur-condition').length; + var content = jQuery(this).parents('.um-admin-btn-content'), + length = content.find('.um-admin-cur-condition').length; + if ( length < 5 ) { //content.find('select').select2('destroy'); - var cloned = jQuery(this).parents('.um-admin-cur-condition').clone(); - cloned.find('input[type=text],select').each(function(){ + var template = jQuery('.um-admin-btn-content').find('.um-admin-cur-condition-template').clone(); + + template.find('input[type=text],select').each(function(){ jQuery(this).attr('id', jQuery(this).attr('id') + length ); jQuery(this).attr('name', jQuery(this).attr('name') + length ); }); - cloned.find('input[type=text]').val(''); - cloned.find('.um-admin-new-condition').replaceWith('

'); - cloned.appendTo( content ); - cloned.find('select').val(''); + template.find('input[type=text]').val(''); + template.find('select').val(''); + + template.appendTo( content ); + jQuery(template).removeClass("um-admin-cur-condition-template"); + jQuery(template).addClass("um-admin-cur-condition"); + um_admin_live_update_scripts(); um_admin_modal_responsive(); } else { diff --git a/includes/admin/core/class-admin-builder.php b/includes/admin/core/class-admin-builder.php index 3e8d2e30..3f61932c 100644 --- a/includes/admin/core/class-admin-builder.php +++ b/includes/admin/core/class-admin-builder.php @@ -231,10 +231,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
-

+

+

- $arr ) { @@ -247,11 +248,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { field_input( '_conditional_operator' . $k, $form_id ); ?> field_input( '_conditional_value' . $k, $form_id ); ?> - -

- -

- +

@@ -274,7 +271,17 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { +
+ field_input( '_conditional_action', $form_id ); ?> + field_input( '_conditional_field', $form_id ); ?> + field_input( '_conditional_operator', $form_id ); ?> + field_input( '_conditional_value', $form_id ); ?> + +

+ +
+
diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index 40c2cb9e..a086dd05 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -182,7 +182,37 @@ if ( ! class_exists( 'um\core\Fields' ) ) { */ function delete_field_from_form( $id, $form_id ) { $fields = UM()->query()->get_attr( 'custom_fields', $form_id ); + if (isset( $fields[$id] )) { + $condition_fields = get_option( 'um_fields' ); + + foreach ( $condition_fields as $key => $value ) { + $deleted_field = array_search( $id, $value ); + + if ( $key != $id && $deleted_field != false ) { + $deleted_field_id = str_replace( 'conditional_field', '', $deleted_field ); + + if ( $deleted_field_id == '' ) { + $arr_id = 0; + } else { + $arr_id = $deleted_field_id; + } + + unset( $condition_fields[$key]['conditional_action' . $deleted_field_id] ); + unset( $condition_fields[$key][$deleted_field] ); + unset( $condition_fields[$key]['conditional_operator' . $deleted_field_id] ); + unset( $condition_fields[$key]['conditional_value' . $deleted_field_id] ); + unset( $condition_fields[$key]['conditions'][$arr_id] ); + + unset( $fields[$key]['conditional_action' . $deleted_field_id] ); + unset( $fields[$key][$deleted_field] ); + unset( $fields[$key]['conditional_operator' . $deleted_field_id] ); + unset( $fields[$key]['conditional_value' . $deleted_field_id] ); + unset( $fields[$key]['conditions'][$arr_id] ); + } + } + + update_option( 'um_fields' , $condition_fields ); unset( $fields[$id] ); UM()->query()->update_attr( 'custom_fields', $form_id, $fields ); } From b7a1fd352643ade4950ad36ac3d37403f47bbeb1 Mon Sep 17 00:00:00 2001 From: Denis Baranov Date: Tue, 5 Jun 2018 15:47:12 +0300 Subject: [PATCH 4/5] include script fix --- includes/core/class-enqueue.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/core/class-enqueue.php b/includes/core/class-enqueue.php index e801c8c1..b723b213 100644 --- a/includes/core/class-enqueue.php +++ b/includes/core/class-enqueue.php @@ -329,7 +329,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) { */ function load_customjs() { - wp_register_script('um_conditional', um_url . 'assets/js/um-conditional.js' ); + wp_register_script('um_conditional', um_url . 'assets/js/um-conditional' . $this->suffix . '.js' ); wp_enqueue_script('um_conditional'); wp_register_script('um_scripts', um_url . 'assets/js/um-scripts' . $this->suffix . '.js' ); From 49790e835f1b6dac7ef3c2e1f3434fe1dad53d84 Mon Sep 17 00:00:00 2001 From: nikitozzzzzzz Date: Thu, 7 Jun 2018 17:59:42 +0300 Subject: [PATCH 5/5] - small review; --- includes/admin/assets/js/um-admin-field.js | 22 +++++------- includes/core/class-fields.php | 40 +++++++++++----------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/includes/admin/assets/js/um-admin-field.js b/includes/admin/assets/js/um-admin-field.js index 007c8965..2bb0c7f9 100644 --- a/includes/admin/assets/js/um-admin-field.js +++ b/includes/admin/assets/js/um-admin-field.js @@ -1,20 +1,15 @@ jQuery(document).ready(function() { - /* Remove deleted condition fields */ - jQuery(document).on('click', '', function(){ - - }); - /* Remove field permanently */ jQuery(document).on('click', '.um-admin-btns a span.remove', function(e){ e.preventDefault(); - - if (confirm('This will permanently delete this custom field from database')) { - + + if ( confirm( 'This will permanently delete this custom field from database' ) ) { + jQuery(this).parents('a').remove(); - + arg1 = jQuery(this).parents('a').data('arg1'); - + jQuery.ajax({ url: um_admin_field_data.do_ajax_url, type: 'POST', @@ -26,13 +21,12 @@ jQuery(document).ready(function() { } }); - - } - + return false; }); - + + /* Add a Field */ jQuery(document).on('submit', 'form.um_add_field', function(e){ diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index a086dd05..74f59624 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -183,7 +183,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) { function delete_field_from_form( $id, $form_id ) { $fields = UM()->query()->get_attr( 'custom_fields', $form_id ); - if (isset( $fields[$id] )) { + if ( isset( $fields[ $id ] ) ) { $condition_fields = get_option( 'um_fields' ); foreach ( $condition_fields as $key => $value ) { @@ -193,27 +193,27 @@ if ( ! class_exists( 'um\core\Fields' ) ) { $deleted_field_id = str_replace( 'conditional_field', '', $deleted_field ); if ( $deleted_field_id == '' ) { - $arr_id = 0; + $arr_id = 0; } else { - $arr_id = $deleted_field_id; + $arr_id = $deleted_field_id; } - unset( $condition_fields[$key]['conditional_action' . $deleted_field_id] ); - unset( $condition_fields[$key][$deleted_field] ); - unset( $condition_fields[$key]['conditional_operator' . $deleted_field_id] ); - unset( $condition_fields[$key]['conditional_value' . $deleted_field_id] ); - unset( $condition_fields[$key]['conditions'][$arr_id] ); + unset( $condition_fields[ $key ][ 'conditional_action' . $deleted_field_id ] ); + unset( $condition_fields[ $key ][ $deleted_field ] ); + unset( $condition_fields[ $key ][ 'conditional_operator' . $deleted_field_id ] ); + unset( $condition_fields[ $key ][ 'conditional_value' . $deleted_field_id ] ); + unset( $condition_fields[ $key ]['conditions'][ $arr_id ] ); - unset( $fields[$key]['conditional_action' . $deleted_field_id] ); - unset( $fields[$key][$deleted_field] ); - unset( $fields[$key]['conditional_operator' . $deleted_field_id] ); - unset( $fields[$key]['conditional_value' . $deleted_field_id] ); - unset( $fields[$key]['conditions'][$arr_id] ); + unset( $fields[ $key ][ 'conditional_action' . $deleted_field_id ] ); + unset( $fields[ $key ][ $deleted_field ] ); + unset( $fields[ $key ][ 'conditional_operator' . $deleted_field_id ] ); + unset( $fields[ $key ][ 'conditional_value' . $deleted_field_id ] ); + unset( $fields[ $key ]['conditions'][ $arr_id ] ); } } - update_option( 'um_fields' , $condition_fields ); - unset( $fields[$id] ); + update_option( 'um_fields' , $condition_fields ); + unset( $fields[ $id ] ); UM()->query()->update_attr( 'custom_fields', $form_id, $fields ); } } @@ -4040,23 +4040,23 @@ if ( ! class_exists( 'um\core\Fields' ) ) { switch ($act_id) { case 'um_admin_duplicate_field': - UM()->fields()->duplicate_field( $arg1, $arg2 ); + $this->duplicate_field( $arg1, $arg2 ); break; case 'um_admin_remove_field_global': - UM()->fields()->delete_field_from_db( $arg1 ); + $this->delete_field_from_db( $arg1 ); break; case 'um_admin_remove_field': - UM()->fields()->delete_field_from_form( $arg1, $arg2 ); + $this->delete_field_from_form( $arg1, $arg2 ); break; case 'um_admin_add_field_from_predefined': - UM()->fields()->add_field_from_predefined( $arg1, $arg2, $position ); + $this->add_field_from_predefined( $arg1, $arg2, $position ); break; case 'um_admin_add_field_from_list': - UM()->fields()->add_field_from_list( $arg1, $arg2, $position ); + $this->add_field_from_list( $arg1, $arg2, $position ); break; }