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/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 a677ec53..2bb0c7f9 100644 --- a/includes/admin/assets/js/um-admin-field.js +++ b/includes/admin/assets/js/um-admin-field.js @@ -3,13 +3,13 @@ jQuery(document).ready(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', @@ -21,13 +21,12 @@ jQuery(document).ready(function() { } }); - - } - + return false; }); - + + /* Add a Field */ jQuery(document).on('submit', 'form.um_add_field', function(e){ @@ -50,9 +49,8 @@ jQuery(document).ready(function() { form.css({'opacity': 1}); }, success: function(data){ - if (data.error){ - + c = 0; jQuery.each(data.error, function(i, v){ c++; @@ -61,11 +59,11 @@ jQuery(document).ready(function() { 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', ''); 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 7efae58b..3f61932c 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'] ); } @@ -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 ); ?> + +

+ +
+
@@ -659,6 +666,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' ) ) { ?>

- +

query()->get_attr( 'custom_fields', $form_id ); - if (isset( $fields[$id] )) { - unset( $fields[$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 ); } } @@ -4010,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; }