Version Description
(Date: June 18, 2020) = * Brand new UI for Form Builder * Introducing Weekly Email Summary for all of your forms * See All the Entries aggregated from all the forms * Better Oxygen Page Builder Support * Advanced Form Validation (Less Spam) * Introducing Elementor widget * Added German Language File * Mobile-friendly Admin Panel * Conditional logic issues for less than and less than equal * Added priority-based country selection * Added Kosovo to the country list * Elementor and Oxygen popup issues for step forms * Option to position input labels below the fields * Added layout option to make Radio/Checkbox as Button Selection style * Passwords will be now truncated after feeds and API calls completed * Added conditional source support for Hidden Fields
Release Info
Developer | techjewel |
Plugin | Contact Form Plugin – Fastest Contact Form Builder Plugin for WordPress by Fluent Forms |
Version | 3.6.2 |
Comparing to | |
See all releases |
Code changes from version 3.6.0 to 3.6.2
- app/Hooks/Common.php +15 -6
- app/Modules/Component/Component.php +8 -2
- app/Services/FormBuilder/Components/Container.php +2 -2
- app/Services/FormBuilder/EditorShortcodeParser.php +1 -1
- app/Services/FormBuilder/FormBuilder.php +2 -1
- app/Services/FormBuilder/ShortCodeParser.php +11 -10
- fluentform.php +2 -2
- glue.json +1 -1
- readme.txt +2 -2
@@ -68,6 +68,7 @@ add_action('wp', function () use ($app) {
|
|
68 |
$elements = [
|
69 |
'select',
|
70 |
'input_checkbox',
|
|
|
71 |
'address',
|
72 |
'select_country',
|
73 |
'gdpr_agreement',
|
@@ -76,15 +77,17 @@ $elements = [
|
|
76 |
|
77 |
foreach ($elements as $element) {
|
78 |
$event = 'fluentform_response_render_' . $element;
|
79 |
-
$app->addFilter($event, function ($response, $field, $form_id) {
|
80 |
-
|
|
|
|
|
81 |
$countryList = getFluentFormCountryList();
|
82 |
-
if (isset($countryList[$response
|
83 |
-
$response
|
84 |
}
|
85 |
}
|
86 |
|
87 |
-
if ($
|
88 |
$countryList = getFluentFormCountryList();
|
89 |
if (isset($countryList[$response])) {
|
90 |
$response = $countryList[$response];
|
@@ -95,8 +98,14 @@ foreach ($elements as $element) {
|
|
95 |
$response = __('Accepted', 'fluentform');
|
96 |
}
|
97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
return \FluentForm\App\Modules\Form\FormDataParser::formatValue($response);
|
99 |
-
}, 10,
|
100 |
}
|
101 |
|
102 |
$app->addFilter('fluentform_response_render_input_file', function ($response, $field, $form_id, $isHtml = false) {
|
68 |
$elements = [
|
69 |
'select',
|
70 |
'input_checkbox',
|
71 |
+
'input_radio',
|
72 |
'address',
|
73 |
'select_country',
|
74 |
'gdpr_agreement',
|
77 |
|
78 |
foreach ($elements as $element) {
|
79 |
$event = 'fluentform_response_render_' . $element;
|
80 |
+
$app->addFilter($event, function ($response, $field, $form_id, $isLabel = false) {
|
81 |
+
$element = $field['element'];
|
82 |
+
|
83 |
+
if ($element == 'address' && isset($response['country'])) {
|
84 |
$countryList = getFluentFormCountryList();
|
85 |
+
if (isset($countryList[$response['country']])) {
|
86 |
+
$response['country'] = $countryList[$response['country']];
|
87 |
}
|
88 |
}
|
89 |
|
90 |
+
if ($element == 'select_country') {
|
91 |
$countryList = getFluentFormCountryList();
|
92 |
if (isset($countryList[$response])) {
|
93 |
$response = $countryList[$response];
|
98 |
$response = __('Accepted', 'fluentform');
|
99 |
}
|
100 |
|
101 |
+
if($response && $isLabel && in_array($element, ['select', 'input_radio'])) {
|
102 |
+
if(isset($field['options'][$response])) {
|
103 |
+
return $field['options'][$response];
|
104 |
+
}
|
105 |
+
}
|
106 |
+
|
107 |
return \FluentForm\App\Modules\Form\FormDataParser::formatValue($response);
|
108 |
+
}, 10, 4);
|
109 |
}
|
110 |
|
111 |
$app->addFilter('fluentform_response_render_input_file', function ($response, $field, $form_id, $isHtml = false) {
|
@@ -440,6 +440,13 @@ class Component
|
|
440 |
}
|
441 |
}
|
442 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
443 |
$formSettings = wpFluent()
|
444 |
->table('fluentform_form_meta')
|
445 |
->where('form_id', $form_id)
|
@@ -581,7 +588,7 @@ class Component
|
|
581 |
{
|
582 |
// Get the patterns for default values from the output HTML string.
|
583 |
// The example of a pattern would be for user ID: {user.ID}
|
584 |
-
preg_match_all('/{(
|
585 |
$patterns = array_unique($matches[0]);
|
586 |
|
587 |
$attrDefaultValues = [];
|
@@ -594,7 +601,6 @@ class Component
|
|
594 |
// Raising an event so that others can hook into it and modify the default values later.
|
595 |
$attrDefaultValues = (array)apply_filters('fluentform_parse_default_values', $attrDefaultValues);
|
596 |
|
597 |
-
|
598 |
if (isset($attrDefaultValues['{payment_total}'])) {
|
599 |
$attrDefaultValues['{payment_total}'] = '<span class="ff_order_total"></span>';
|
600 |
}
|
440 |
}
|
441 |
}
|
442 |
|
443 |
+
if(is_feed()) {
|
444 |
+
global $post;
|
445 |
+
$feedText = sprintf( __( 'The form can be filled in the actual <a href="%s">website url</a>.', 'fluentform' ), get_permalink($post));
|
446 |
+
$feedText = apply_filters('fluentform_shortcode_feed_text', $feedText, $form);
|
447 |
+
return $feedText;
|
448 |
+
}
|
449 |
+
|
450 |
$formSettings = wpFluent()
|
451 |
->table('fluentform_form_meta')
|
452 |
->where('form_id', $form_id)
|
588 |
{
|
589 |
// Get the patterns for default values from the output HTML string.
|
590 |
// The example of a pattern would be for user ID: {user.ID}
|
591 |
+
preg_match_all('/{(.*?)}/', $output, $matches);
|
592 |
$patterns = array_unique($matches[0]);
|
593 |
|
594 |
$attrDefaultValues = [];
|
601 |
// Raising an event so that others can hook into it and modify the default values later.
|
602 |
$attrDefaultValues = (array)apply_filters('fluentform_parse_default_values', $attrDefaultValues);
|
603 |
|
|
|
604 |
if (isset($attrDefaultValues['{payment_total}'])) {
|
605 |
$attrDefaultValues['{payment_total}'] = '<span class="ff_order_total"></span>';
|
606 |
}
|
@@ -51,8 +51,8 @@ class Container extends BaseComponent
|
|
51 |
$newColumnClass = $columnClass.' ff-t-column-'.($columnIndex + 1);
|
52 |
echo "<div class='{$newColumnClass}'>";
|
53 |
foreach ($column['fields'] as $item) {
|
54 |
-
$item =
|
55 |
-
|
56 |
}
|
57 |
echo "</div>";
|
58 |
}
|
51 |
$newColumnClass = $columnClass.' ff-t-column-'.($columnIndex + 1);
|
52 |
echo "<div class='{$newColumnClass}'>";
|
53 |
foreach ($column['fields'] as $item) {
|
54 |
+
$item = apply_filters('fluentform_before_render_item', $item, $form);
|
55 |
+
do_action('fluentform_render_item_'.$item['element'], $item, $form);
|
56 |
}
|
57 |
echo "</div>";
|
58 |
}
|
@@ -141,7 +141,7 @@ class EditorShortcodeParser
|
|
141 |
{
|
142 |
if (!is_array($value)) {
|
143 |
return preg_split(
|
144 |
-
'/{(
|
145 |
$value,
|
146 |
null,
|
147 |
PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
|
141 |
{
|
142 |
if (!is_array($value)) {
|
143 |
return preg_split(
|
144 |
+
'/{(.*?)}/',
|
145 |
$value,
|
146 |
null,
|
147 |
PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
|
@@ -116,7 +116,7 @@ class FormBuilder
|
|
116 |
ob_start();
|
117 |
|
118 |
$stepCounter = 1;
|
119 |
-
|
120 |
foreach ($form->fields['fields'] as $item) {
|
121 |
|
122 |
if ($hasStepWrapper && $item['element'] == 'form_step') {
|
@@ -144,6 +144,7 @@ class FormBuilder
|
|
144 |
|
145 |
$content = ob_get_clean();
|
146 |
|
|
|
147 |
if ($hasStepWrapper) {
|
148 |
$startElement = $form->fields['stepsWrapper']['stepStart'];
|
149 |
|
116 |
ob_start();
|
117 |
|
118 |
$stepCounter = 1;
|
119 |
+
|
120 |
foreach ($form->fields['fields'] as $item) {
|
121 |
|
122 |
if ($hasStepWrapper && $item['element'] == 'form_step') {
|
144 |
|
145 |
$content = ob_get_clean();
|
146 |
|
147 |
+
|
148 |
if ($hasStepWrapper) {
|
149 |
$startElement = $form->fields['stepsWrapper']['stepStart'];
|
150 |
|
@@ -131,13 +131,17 @@ class ShortCodeParser
|
|
131 |
|
132 |
protected static function getFormData($key)
|
133 |
{
|
134 |
-
if(strpos($key, '.
|
135 |
-
$key = str_replace('.
|
136 |
$value = ArrayHelper::get(static::$store['original_inputs'], $key);
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
141 |
}
|
142 |
|
143 |
if (strpos($key, '.') && !isset(static::$store['inputs'][$key])) {
|
@@ -164,10 +168,7 @@ class ShortCodeParser
|
|
164 |
|
165 |
if (!$field) return '';
|
166 |
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
return static::$store['inputs'][$key] = App::applyFilters(
|
171 |
'fluentform_response_render_' . $field['element'],
|
172 |
static::$store['inputs'][$key],
|
173 |
$field,
|
131 |
|
132 |
protected static function getFormData($key)
|
133 |
{
|
134 |
+
if(strpos($key, '.label')) {
|
135 |
+
$key = str_replace('.label', '', $key);
|
136 |
$value = ArrayHelper::get(static::$store['original_inputs'], $key);
|
137 |
+
$field = ArrayHelper::get(static::$formFields, $key, '');
|
138 |
+
return static::$store['inputs'][$key] = apply_filters(
|
139 |
+
'fluentform_response_render_' . $field['element'],
|
140 |
+
static::$store['inputs'][$key],
|
141 |
+
$field,
|
142 |
+
static::getForm()->id,
|
143 |
+
true
|
144 |
+
);
|
145 |
}
|
146 |
|
147 |
if (strpos($key, '.') && !isset(static::$store['inputs'][$key])) {
|
168 |
|
169 |
if (!$field) return '';
|
170 |
|
171 |
+
return static::$store['inputs'][$key] = apply_filters(
|
|
|
|
|
|
|
172 |
'fluentform_response_render_' . $field['element'],
|
173 |
static::$store['inputs'][$key],
|
174 |
$field,
|
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: Fluent Forms - Best Form Plugin for WordPress
|
4 |
Description: Contact Form By Fluent Forms is the advanced Contact form plugin with drag and drop, multi column supported form builder plugin
|
5 |
-
Version: 3.6.
|
6 |
Author: WP Fluent Forms
|
7 |
Author URI: https://wpmanageninja.com
|
8 |
Plugin URI: https://wpmanageninja.com/wp-fluent-form/
|
@@ -16,7 +16,7 @@ defined('ABSPATH') or die;
|
|
16 |
defined('FLUENTFORM') or define('FLUENTFORM', true);
|
17 |
define('FLUENTFORM_DIR_PATH', plugin_dir_path(__FILE__));
|
18 |
|
19 |
-
defined('FLUENTFORM_VERSION') or define('FLUENTFORM_VERSION', '3.6.
|
20 |
|
21 |
if (!defined('FLUENTFORM_HAS_NIA')) {
|
22 |
define('FLUENTFORM_HAS_NIA', true);
|
2 |
/*
|
3 |
Plugin Name: Fluent Forms - Best Form Plugin for WordPress
|
4 |
Description: Contact Form By Fluent Forms is the advanced Contact form plugin with drag and drop, multi column supported form builder plugin
|
5 |
+
Version: 3.6.2
|
6 |
Author: WP Fluent Forms
|
7 |
Author URI: https://wpmanageninja.com
|
8 |
Plugin URI: https://wpmanageninja.com/wp-fluent-form/
|
16 |
defined('FLUENTFORM') or define('FLUENTFORM', true);
|
17 |
define('FLUENTFORM_DIR_PATH', plugin_dir_path(__FILE__));
|
18 |
|
19 |
+
defined('FLUENTFORM_VERSION') or define('FLUENTFORM_VERSION', '3.6.2');
|
20 |
|
21 |
if (!defined('FLUENTFORM_HAS_NIA')) {
|
22 |
define('FLUENTFORM_HAS_NIA', true);
|
@@ -2,7 +2,7 @@
|
|
2 |
"plugin_name": "FluentForm",
|
3 |
"plugin_slug": "fluentform",
|
4 |
"plugin_text_domain": "fluentform",
|
5 |
-
"plugin_version": "3.6.
|
6 |
"plugin_description": "The most advanced drag and drop form builder plugin for WordPress",
|
7 |
"plugin_uri": "https://wpfluentforms.com",
|
8 |
"plugin_license": "GPLv2 or later",
|
2 |
"plugin_name": "FluentForm",
|
3 |
"plugin_slug": "fluentform",
|
4 |
"plugin_text_domain": "fluentform",
|
5 |
+
"plugin_version": "3.6.2",
|
6 |
"plugin_description": "The most advanced drag and drop form builder plugin for WordPress",
|
7 |
"plugin_uri": "https://wpfluentforms.com",
|
8 |
"plugin_license": "GPLv2 or later",
|
@@ -4,7 +4,7 @@ Tags: contact form, contact forms, wp forms, forms, form builder
|
|
4 |
Requires at least: 4.5
|
5 |
Tested up to: 5.4
|
6 |
Requires PHP: 5.6
|
7 |
-
Stable tag: 3.6.
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -302,7 +302,7 @@ Yes, Please check our <a href="https://trello.com/b/FaDlAD9B/public-roadmap-wp-f
|
|
302 |
|
303 |
== Changelog ==
|
304 |
|
305 |
-
= 3.6.
|
306 |
* Brand new UI for Form Builder
|
307 |
* Introducing Weekly Email Summary for all of your forms
|
308 |
* See All the Entries aggregated from all the forms
|
4 |
Requires at least: 4.5
|
5 |
Tested up to: 5.4
|
6 |
Requires PHP: 5.6
|
7 |
+
Stable tag: 3.6.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
302 |
|
303 |
== Changelog ==
|
304 |
|
305 |
+
= 3.6.2 (Date: June 18, 2020) =
|
306 |
* Brand new UI for Form Builder
|
307 |
* Introducing Weekly Email Summary for all of your forms
|
308 |
* See All the Entries aggregated from all the forms
|