Changeset 3310866
- Timestamp:
- 06/13/2025 07:10:10 AM (10 months ago)
- Location:
- formscrm
- Files:
-
- 12 edited
- 1 copied
-
assets/icon-158x158.gif (modified) (1 prop) (previous)
-
assets/icon-256x256.gif (modified) (1 prop) (previous)
-
tags/4.0.2 (copied) (copied from formscrm/trunk)
-
tags/4.0.2/formscrm.php (modified) (2 diffs)
-
tags/4.0.2/includes/crm-library/class-crmlib-clientify.php (modified) (2 diffs)
-
tags/4.0.2/includes/formscrm-library/class-elementor.php (modified) (5 diffs)
-
tags/4.0.2/includes/formscrm-library/elementor-ajax.php (modified) (7 diffs)
-
tags/4.0.2/readme.txt (modified) (4 diffs)
-
trunk/formscrm.php (modified) (2 diffs)
-
trunk/includes/crm-library/class-crmlib-clientify.php (modified) (2 diffs)
-
trunk/includes/formscrm-library/class-elementor.php (modified) (5 diffs)
-
trunk/includes/formscrm-library/elementor-ajax.php (modified) (7 diffs)
-
trunk/readme.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
formscrm/assets/icon-158x158.gif
-
Property
svn:mime-type
changed from
application/octet-streamtoimage/gif
-
Property
svn:mime-type
changed from
-
formscrm/assets/icon-256x256.gif
-
Property
svn:mime-type
changed from
application/octet-streamtoimage/gif
-
Property
svn:mime-type
changed from
-
formscrm/tags/4.0.2/formscrm.php
r3303369 r3310866 4 4 * Plugin URI: https://close.technology/wordpress-plugins/formscrm/ 5 5 * Description: Connects Forms with CRM, ERP and Email Marketing. 6 * Version: 4.0. 16 * Version: 4.0.2 7 7 * Author: CloseTechnology 8 8 * Author URI: https://close.technology … … 24 24 defined( 'ABSPATH' ) || die( 'No script kiddies please!' ); 25 25 26 define( 'FORMSCRM_VERSION', '4.0. 1' );26 define( 'FORMSCRM_VERSION', '4.0.2' ); 27 27 define( 'FORMSCRM_PLUGIN', __FILE__ ); 28 28 define( 'FORMSCRM_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); 29 29 define( 'FORMSCRM_PLUGIN_PATH', plugin_dir_path( __FILE__ ) ); 30 30 define( 'FORMSCRM_CRED_VARIABLES', array( 'url', 'username', 'password', 'apipassword', 'odoodb', 'apisales' ) ); 31 32 add_action( 'plugins_loaded', 'fcrm_plugin_init' );33 /**34 * Load localization files35 *36 * @return void37 */38 function fcrm_plugin_init() {39 load_plugin_textdomain( 'formscrm', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );40 }41 31 42 32 add_filter( -
formscrm/tags/4.0.2/includes/crm-library/class-crmlib-clientify.php
r3290078 r3310866 714 714 'required' => false, 715 715 ); 716 717 $fields[] = array( 718 'name' => 'deal|expected_closed_date_days', 719 'label' => __( 'Expected Closure Date in Days', 'formscrm' ), 720 'required' => false, 721 ); 716 722 } 717 723 … … 782 788 if ( 'deal|product_skus' === $element['name'] ) { 783 789 $deal_product_skus = $element['value']; 790 } elseif ( 'deal|expected_closed_date_days' === $element['name'] ) { 791 $deal['expected_closed_date'] = gmdate( 'Y-m-d', strtotime( '+' . (int) $element['value'] . ' days' ) ); 784 792 } else { 785 793 $custom_field = explode( '|', $element['name'] ); -
formscrm/tags/4.0.2/includes/formscrm-library/class-elementor.php
r3290078 r3310866 16 16 } 17 17 18 use ElementorPro\Modules\Forms\Submissions\Database\Query; 19 18 20 /** 19 21 * Action Class … … 73 75 } 74 76 75 formscrm_debug_message( $array_path[ $crmname ] );76 77 77 if ( class_exists( $crmclassname ) ) { 78 78 $this->crmlib = new $crmclassname(); 79 } else { 80 // If the class does not exist, we throw an error. 81 formscrm_debug_message( 'Class ' . $crmclassname . ' not found in ' . $array_path[ $crmname ] ); 82 wp_send_json_error( __( 'CRM library not found', 'formscrm' ) ); 79 83 } 80 84 } … … 255 259 $raw_fields = $record->get( 'fields' ); 256 260 257 // Normalize the Form Data.258 $merge_vars = [];259 foreach ( $raw_fields as $id => $field ) {260 $merge_vars[ $id ] = [261 'name' => $id,262 'value' => $field['value'],263 ];264 }265 266 261 // Unpack hidden settings for the form. 267 262 if ( isset( $settings['formscrm_settings_hidden'] ) ) { … … 270 265 271 266 if ( isset( $settings['fc_crm_type'] ) && ! empty( $hidden_settings[ $settings['fc_crm_type'] ] ) ) { 272 $settings['fc_crm_module'] = $hidden_settings[ $settings['fc_crm_type'] ] ;267 $settings['fc_crm_module'] = $hidden_settings[ $settings['fc_crm_type'] ] ?? ''; 273 268 } 269 } 270 271 // Normalize the Form Data. 272 $merge_vars = []; 273 foreach ( $raw_fields as $id => $field ) { 274 $key = array_search( $id, $hidden_settings, true ); 275 if ( false === $key ) { 276 continue; 277 } 278 $field_id = str_replace( 'fc_crm_field-', '', $key ); 279 $merge_vars[] = [ 280 'name' => $field_id, 281 'value' => $field['value'] ?? '', 282 ]; 274 283 } 275 284 … … 277 286 $merge_vars['visitor_key'] = [ 278 287 'name' => 'visitor_key', 279 'value' => sanitize_text_field( wp_unslash( $_POST['visitor_key'] ) ) 288 'value' => sanitize_text_field( wp_unslash( $_POST['visitor_key'] ) ), 280 289 ]; 281 290 } 282 291 // Create contact in CRM. 292 $settings = formscrm_elementor_process_settings( $settings ); 283 293 $this->include_library( $settings['fc_crm_type'] ); 284 294 $response_result = $this->crmlib->create_entry( $settings, $merge_vars ); 285 295 296 $response_message = ''; 286 297 if ( 'error' === $response_result['status'] ) { 287 $url = isset( $response_result['url'] ) ? $response_result['url'] : ''; 288 $query = isset( $response_result['query'] ) ? $response_result['query'] : ''; 289 290 formscrm_debug_email_lead( $settings['fc_crm_type'], 'Error ' . $response_result['message'], $merge_vars, $url, $query ); 298 $url = isset( $response_result['url'] ) ? $response_result['url'] : ''; 299 $query = isset( $response_result['query'] ) ? $response_result['query'] : ''; 300 $message = isset( $response_result['message'] ) ? $response_result['message'] : ''; 301 302 formscrm_debug_email_lead( $settings['fc_crm_type'], 'Error ' . $message, $merge_vars, $url, $query ); 303 304 $response_message = sprintf( 305 // translators: %1$s CRM name %2$s Error message %3$s URL %4$s Query. 306 __( 'Error creating %1$s Error: %2$s URL: %3$s QUERY: %4$s', 'formscrm' ), 307 esc_html( $settings['fc_crm_type'] ), 308 $message, 309 $url, 310 $query 311 ); 312 $ajax_handler->messages['admin_error'][] = $response_message; 313 } else { 314 $response_message = sprintf( 315 // translators: %1$s CRM name %2$s ID number of entry created. 316 __( 'Success creating %1$s Entry ID: %2$s', 'formscrm' ), 317 esc_html( $settings['fc_crm_type'] ), 318 $response_result['id'] 319 ); 320 $ajax_handler->messages['success'][] = $response_message; 291 321 } 292 322 } -
formscrm/tags/4.0.2/includes/formscrm-library/elementor-ajax.php
r3303369 r3310866 17 17 * @return void 18 18 */ 19 function formscrm_elementor_process_post( $post_data ) { 20 // Sanitize the post data. 21 foreach ( $post_data as $key => $value ) { 22 if ( 'fc_crm_url' === $key ) { 23 $post_data[ $key ] = isset( $value['url'] ) ? sanitize_url( $value['url'] ) : $value; 24 continue; 25 } 26 $post_data[ $key ] = sanitize_text_field( $value ); 19 function formscrm_elementor_process_settings( $post_data ) { 20 if ( isset( $post_data['fc_crm_url'] ) && is_array( $post_data['fc_crm_url'] ) ) { 21 // If the URL is an array, we assume it has a 'url' key. 22 $post_data['fc_crm_url'] = isset( $post_data['fc_crm_url']['url'] ) ? sanitize_text_field( $post_data['fc_crm_url']['url'] ) : ''; 23 } elseif ( isset( $post_data['fc_crm_url'] ) ) { 24 // If it's not an array, sanitize it directly. 25 $post_data['fc_crm_url'] = sanitize_text_field( $post_data['fc_crm_url'] ); 27 26 } 28 27 return $post_data; … … 76 75 $crmlib = new $crmclassname(); 77 76 78 $post_data = formscrm_elementor_process_ post( $_POST['crmSettings'] ?? array() );77 $post_data = formscrm_elementor_process_settings( $_POST['crmSettings'] ?? array() ); 79 78 80 79 // 2. Show modules dropdown … … 112 111 <div class="elementor-control-field-description"></div> 113 112 </div> 114 </div> <?php115 113 </div> 114 <?php 116 115 // 3. Show settings for each module 117 116 foreach ( $modules as $module ) { … … 126 125 } 127 126 128 $post_data = formscrm_elementor_process_ post( $_POST['crmSettings'] ?? array() );127 $post_data = formscrm_elementor_process_settings( $_POST['crmSettings'] ?? array() ); 129 128 $crm_fields = $crmlib->list_fields( $post_data, $value ); 130 129 … … 133 132 } ?> 134 133 135 <table class="elementor-map-table" cellspacing="0" cellpadding="0" data-module="<?php echo $value; ?>"><tbody>134 <table class="elementor-map-table" cellspacing="0" cellpadding="0" data-module="<?php echo esc_html( $value ); ?>"><tbody> 136 135 <tr class="elementor-map-row"> 137 136 <th class="elementor-map-column elementor-map-column-heading elementor-map-column-key"><?php esc_html_e( 'Field CRM', 'formscrm' ); ?></th> … … 148 147 $crm_field_name = sanitize_text_field( $crm_field['name'] ); 149 148 $crm_field_label = isset( $crm_field['label'] ) ? sanitize_text_field( $crm_field['label'] ) : ''; 150 $crm_field_req = isset( $crm_field['req'] ) ? (bool) $crm_field['req'] : false; ?> 149 $crm_field_req = isset( $crm_field['req'] ) ? (bool) $crm_field['req'] : false; 150 ?> 151 151 152 152 <tr class="elementor-map-row"> 153 153 <td class="elementor-map-column elementor-map-column-key"> 154 <label for="wpelementor-crm-field-<?php echo esc_html( $crm_field_name ); ?>"> <?php155 154 <label for="wpelementor-crm-field-<?php echo esc_html( $crm_field_name ); ?>"> 155 <?php 156 156 echo esc_html( $crm_field_label ); 157 157 … … 163 163 </td> 164 164 <td class="elementor-map-column elementor-map-column-value"> 165 <select class="wide" name="fc_crm_field-<?php e sc_html( $crm_field_name ); ?>" >166 <option value=""><?php esc_html_e( 'Select a field', 'formscrm' ); ?></option> <?php167 165 <select class="wide" name="fc_crm_field-<?php echo esc_html( $crm_field_name ); ?>" > 166 <option value=""><?php esc_html_e( 'Select a field', 'formscrm' ); ?></option> 167 <?php 168 168 foreach ( $_POST['formFields'] as $form_name => $form_label ) { 169 169 echo '<option value="' . esc_html( $form_name ) . '" '; -
formscrm/tags/4.0.2/readme.txt
r3303369 r3310866 5 5 Requires at least: 5.5 6 6 Tested up to: 6.8 7 Stable tag: 4.0. 18 Version: 4.0. 17 Stable tag: 4.0.2 8 Version: 4.0.2 9 9 License: GPL2 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 54 54 [youtube https://www.youtube.com/watch?v=HHG763ikL7o] 55 55 56 **Instructions for adding Clientify cookie in the forms**57 58 Clientify cookie adds the ability to merge the contact with the Clientify cookie in the form. You will see if Clientify is added as CRM, a new hidden field in your form. You could check if is already in the form, but if you don't have it you can add it and put as css *clientify_cookie* .59 60 56 **Dynamic values in GravityForms and WPForms** 61 57 We have developed a way to get values from other fields in GravityForms and WPForms. You can use this in the field mapping in the feed. You can use: … … 65 61 We recommend to use this in the field mapping in the feed and hidden field that gets the value. 66 62 63 == Settings for Clientify == 64 **Instructions for adding Clientify cookie in the forms** 65 Clientify cookie adds the ability to merge the contact with the Clientify cookie in the form. You will see if Clientify is added as CRM, a new hidden field in your form. You could check if is already in the form, but if you don't have it you can add it and put as css *clientify_cookie* . 66 67 **Add expected closure date for Deals in Clientify** 68 You can add a new field that fits with expected closure date for Deals in Clientify. This field is optional, and you need to add a number of days to the expected closure date. The plugin will calculate the date from today and will add it to the Deal in Clientify. 69 67 70 **Autoassignment in Clientify** 68 71 We have added a new field in Clientify to apply the autoassignment to the contact. You can add a string with the list of usernames separated by comma (,) to apply the autoassignment. … … 77 80 78 81 == Changelog == 82 = 4.0.2 = 83 * Added: Expected closure date for Deals in Clientify. 84 * Fixed: Elementor Forms Fields and values not sending. 85 * Fixed: Warnings messages in load_plugin_textdomain. 86 79 87 = 4.0.1 = 80 88 * Fixed: Elementor Forms with URL Odoo not working. -
formscrm/trunk/formscrm.php
r3303369 r3310866 4 4 * Plugin URI: https://close.technology/wordpress-plugins/formscrm/ 5 5 * Description: Connects Forms with CRM, ERP and Email Marketing. 6 * Version: 4.0. 16 * Version: 4.0.2 7 7 * Author: CloseTechnology 8 8 * Author URI: https://close.technology … … 24 24 defined( 'ABSPATH' ) || die( 'No script kiddies please!' ); 25 25 26 define( 'FORMSCRM_VERSION', '4.0. 1' );26 define( 'FORMSCRM_VERSION', '4.0.2' ); 27 27 define( 'FORMSCRM_PLUGIN', __FILE__ ); 28 28 define( 'FORMSCRM_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); 29 29 define( 'FORMSCRM_PLUGIN_PATH', plugin_dir_path( __FILE__ ) ); 30 30 define( 'FORMSCRM_CRED_VARIABLES', array( 'url', 'username', 'password', 'apipassword', 'odoodb', 'apisales' ) ); 31 32 add_action( 'plugins_loaded', 'fcrm_plugin_init' );33 /**34 * Load localization files35 *36 * @return void37 */38 function fcrm_plugin_init() {39 load_plugin_textdomain( 'formscrm', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );40 }41 31 42 32 add_filter( -
formscrm/trunk/includes/crm-library/class-crmlib-clientify.php
r3290078 r3310866 714 714 'required' => false, 715 715 ); 716 717 $fields[] = array( 718 'name' => 'deal|expected_closed_date_days', 719 'label' => __( 'Expected Closure Date in Days', 'formscrm' ), 720 'required' => false, 721 ); 716 722 } 717 723 … … 782 788 if ( 'deal|product_skus' === $element['name'] ) { 783 789 $deal_product_skus = $element['value']; 790 } elseif ( 'deal|expected_closed_date_days' === $element['name'] ) { 791 $deal['expected_closed_date'] = gmdate( 'Y-m-d', strtotime( '+' . (int) $element['value'] . ' days' ) ); 784 792 } else { 785 793 $custom_field = explode( '|', $element['name'] ); -
formscrm/trunk/includes/formscrm-library/class-elementor.php
r3290078 r3310866 16 16 } 17 17 18 use ElementorPro\Modules\Forms\Submissions\Database\Query; 19 18 20 /** 19 21 * Action Class … … 73 75 } 74 76 75 formscrm_debug_message( $array_path[ $crmname ] );76 77 77 if ( class_exists( $crmclassname ) ) { 78 78 $this->crmlib = new $crmclassname(); 79 } else { 80 // If the class does not exist, we throw an error. 81 formscrm_debug_message( 'Class ' . $crmclassname . ' not found in ' . $array_path[ $crmname ] ); 82 wp_send_json_error( __( 'CRM library not found', 'formscrm' ) ); 79 83 } 80 84 } … … 255 259 $raw_fields = $record->get( 'fields' ); 256 260 257 // Normalize the Form Data.258 $merge_vars = [];259 foreach ( $raw_fields as $id => $field ) {260 $merge_vars[ $id ] = [261 'name' => $id,262 'value' => $field['value'],263 ];264 }265 266 261 // Unpack hidden settings for the form. 267 262 if ( isset( $settings['formscrm_settings_hidden'] ) ) { … … 270 265 271 266 if ( isset( $settings['fc_crm_type'] ) && ! empty( $hidden_settings[ $settings['fc_crm_type'] ] ) ) { 272 $settings['fc_crm_module'] = $hidden_settings[ $settings['fc_crm_type'] ] ;267 $settings['fc_crm_module'] = $hidden_settings[ $settings['fc_crm_type'] ] ?? ''; 273 268 } 269 } 270 271 // Normalize the Form Data. 272 $merge_vars = []; 273 foreach ( $raw_fields as $id => $field ) { 274 $key = array_search( $id, $hidden_settings, true ); 275 if ( false === $key ) { 276 continue; 277 } 278 $field_id = str_replace( 'fc_crm_field-', '', $key ); 279 $merge_vars[] = [ 280 'name' => $field_id, 281 'value' => $field['value'] ?? '', 282 ]; 274 283 } 275 284 … … 277 286 $merge_vars['visitor_key'] = [ 278 287 'name' => 'visitor_key', 279 'value' => sanitize_text_field( wp_unslash( $_POST['visitor_key'] ) ) 288 'value' => sanitize_text_field( wp_unslash( $_POST['visitor_key'] ) ), 280 289 ]; 281 290 } 282 291 // Create contact in CRM. 292 $settings = formscrm_elementor_process_settings( $settings ); 283 293 $this->include_library( $settings['fc_crm_type'] ); 284 294 $response_result = $this->crmlib->create_entry( $settings, $merge_vars ); 285 295 296 $response_message = ''; 286 297 if ( 'error' === $response_result['status'] ) { 287 $url = isset( $response_result['url'] ) ? $response_result['url'] : ''; 288 $query = isset( $response_result['query'] ) ? $response_result['query'] : ''; 289 290 formscrm_debug_email_lead( $settings['fc_crm_type'], 'Error ' . $response_result['message'], $merge_vars, $url, $query ); 298 $url = isset( $response_result['url'] ) ? $response_result['url'] : ''; 299 $query = isset( $response_result['query'] ) ? $response_result['query'] : ''; 300 $message = isset( $response_result['message'] ) ? $response_result['message'] : ''; 301 302 formscrm_debug_email_lead( $settings['fc_crm_type'], 'Error ' . $message, $merge_vars, $url, $query ); 303 304 $response_message = sprintf( 305 // translators: %1$s CRM name %2$s Error message %3$s URL %4$s Query. 306 __( 'Error creating %1$s Error: %2$s URL: %3$s QUERY: %4$s', 'formscrm' ), 307 esc_html( $settings['fc_crm_type'] ), 308 $message, 309 $url, 310 $query 311 ); 312 $ajax_handler->messages['admin_error'][] = $response_message; 313 } else { 314 $response_message = sprintf( 315 // translators: %1$s CRM name %2$s ID number of entry created. 316 __( 'Success creating %1$s Entry ID: %2$s', 'formscrm' ), 317 esc_html( $settings['fc_crm_type'] ), 318 $response_result['id'] 319 ); 320 $ajax_handler->messages['success'][] = $response_message; 291 321 } 292 322 } -
formscrm/trunk/includes/formscrm-library/elementor-ajax.php
r3303369 r3310866 17 17 * @return void 18 18 */ 19 function formscrm_elementor_process_post( $post_data ) { 20 // Sanitize the post data. 21 foreach ( $post_data as $key => $value ) { 22 if ( 'fc_crm_url' === $key ) { 23 $post_data[ $key ] = isset( $value['url'] ) ? sanitize_url( $value['url'] ) : $value; 24 continue; 25 } 26 $post_data[ $key ] = sanitize_text_field( $value ); 19 function formscrm_elementor_process_settings( $post_data ) { 20 if ( isset( $post_data['fc_crm_url'] ) && is_array( $post_data['fc_crm_url'] ) ) { 21 // If the URL is an array, we assume it has a 'url' key. 22 $post_data['fc_crm_url'] = isset( $post_data['fc_crm_url']['url'] ) ? sanitize_text_field( $post_data['fc_crm_url']['url'] ) : ''; 23 } elseif ( isset( $post_data['fc_crm_url'] ) ) { 24 // If it's not an array, sanitize it directly. 25 $post_data['fc_crm_url'] = sanitize_text_field( $post_data['fc_crm_url'] ); 27 26 } 28 27 return $post_data; … … 76 75 $crmlib = new $crmclassname(); 77 76 78 $post_data = formscrm_elementor_process_ post( $_POST['crmSettings'] ?? array() );77 $post_data = formscrm_elementor_process_settings( $_POST['crmSettings'] ?? array() ); 79 78 80 79 // 2. Show modules dropdown … … 112 111 <div class="elementor-control-field-description"></div> 113 112 </div> 114 </div> <?php115 113 </div> 114 <?php 116 115 // 3. Show settings for each module 117 116 foreach ( $modules as $module ) { … … 126 125 } 127 126 128 $post_data = formscrm_elementor_process_ post( $_POST['crmSettings'] ?? array() );127 $post_data = formscrm_elementor_process_settings( $_POST['crmSettings'] ?? array() ); 129 128 $crm_fields = $crmlib->list_fields( $post_data, $value ); 130 129 … … 133 132 } ?> 134 133 135 <table class="elementor-map-table" cellspacing="0" cellpadding="0" data-module="<?php echo $value; ?>"><tbody>134 <table class="elementor-map-table" cellspacing="0" cellpadding="0" data-module="<?php echo esc_html( $value ); ?>"><tbody> 136 135 <tr class="elementor-map-row"> 137 136 <th class="elementor-map-column elementor-map-column-heading elementor-map-column-key"><?php esc_html_e( 'Field CRM', 'formscrm' ); ?></th> … … 148 147 $crm_field_name = sanitize_text_field( $crm_field['name'] ); 149 148 $crm_field_label = isset( $crm_field['label'] ) ? sanitize_text_field( $crm_field['label'] ) : ''; 150 $crm_field_req = isset( $crm_field['req'] ) ? (bool) $crm_field['req'] : false; ?> 149 $crm_field_req = isset( $crm_field['req'] ) ? (bool) $crm_field['req'] : false; 150 ?> 151 151 152 152 <tr class="elementor-map-row"> 153 153 <td class="elementor-map-column elementor-map-column-key"> 154 <label for="wpelementor-crm-field-<?php echo esc_html( $crm_field_name ); ?>"> <?php155 154 <label for="wpelementor-crm-field-<?php echo esc_html( $crm_field_name ); ?>"> 155 <?php 156 156 echo esc_html( $crm_field_label ); 157 157 … … 163 163 </td> 164 164 <td class="elementor-map-column elementor-map-column-value"> 165 <select class="wide" name="fc_crm_field-<?php e sc_html( $crm_field_name ); ?>" >166 <option value=""><?php esc_html_e( 'Select a field', 'formscrm' ); ?></option> <?php167 165 <select class="wide" name="fc_crm_field-<?php echo esc_html( $crm_field_name ); ?>" > 166 <option value=""><?php esc_html_e( 'Select a field', 'formscrm' ); ?></option> 167 <?php 168 168 foreach ( $_POST['formFields'] as $form_name => $form_label ) { 169 169 echo '<option value="' . esc_html( $form_name ) . '" '; -
formscrm/trunk/readme.txt
r3303369 r3310866 5 5 Requires at least: 5.5 6 6 Tested up to: 6.8 7 Stable tag: 4.0. 18 Version: 4.0. 17 Stable tag: 4.0.2 8 Version: 4.0.2 9 9 License: GPL2 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 54 54 [youtube https://www.youtube.com/watch?v=HHG763ikL7o] 55 55 56 **Instructions for adding Clientify cookie in the forms**57 58 Clientify cookie adds the ability to merge the contact with the Clientify cookie in the form. You will see if Clientify is added as CRM, a new hidden field in your form. You could check if is already in the form, but if you don't have it you can add it and put as css *clientify_cookie* .59 60 56 **Dynamic values in GravityForms and WPForms** 61 57 We have developed a way to get values from other fields in GravityForms and WPForms. You can use this in the field mapping in the feed. You can use: … … 65 61 We recommend to use this in the field mapping in the feed and hidden field that gets the value. 66 62 63 == Settings for Clientify == 64 **Instructions for adding Clientify cookie in the forms** 65 Clientify cookie adds the ability to merge the contact with the Clientify cookie in the form. You will see if Clientify is added as CRM, a new hidden field in your form. You could check if is already in the form, but if you don't have it you can add it and put as css *clientify_cookie* . 66 67 **Add expected closure date for Deals in Clientify** 68 You can add a new field that fits with expected closure date for Deals in Clientify. This field is optional, and you need to add a number of days to the expected closure date. The plugin will calculate the date from today and will add it to the Deal in Clientify. 69 67 70 **Autoassignment in Clientify** 68 71 We have added a new field in Clientify to apply the autoassignment to the contact. You can add a string with the list of usernames separated by comma (,) to apply the autoassignment. … … 77 80 78 81 == Changelog == 82 = 4.0.2 = 83 * Added: Expected closure date for Deals in Clientify. 84 * Fixed: Elementor Forms Fields and values not sending. 85 * Fixed: Warnings messages in load_plugin_textdomain. 86 79 87 = 4.0.1 = 80 88 * Fixed: Elementor Forms with URL Odoo not working.
Note: See TracChangeset
for help on using the changeset viewer.