Version Description
- New: Option icons are now be added dynamically when a field is selected to reduce the HTML required on load. This significantly improves performance for fields with many options.
- New: Added a new frm_before_duplicate_entry_values filter for customizing the data of a duplicated entry before it is saved.
- New: Maximum character length is now validated server side on submit.
- Fix: The duplicate option pop up was triggering incorrectly when dragging new options in Chrome.
- Fix: Prevent a "Trying to get property 'post_status' of non-object" PHP Notice that happens in some cases when updating actions.
- Fix: Imported view detail page URLs were returning 404 errors. New imported views will now update permalinks to avoid this issue.
- Fix: The disallowed list check was not being applied when no data was submitted.
- Fix: Placeholder add on pages were showing messages to upgrade for supported licenses.
- Fix: Apps were not properly loading in WordPress 5.6.
Download this release
Release Info
Developer | sswells |
Plugin | Formidable Forms – Form Builder for WordPress |
Version | 5.4.4 |
Comparing to | |
See all releases |
Code changes from version 5.4.3 to 5.4.4
- classes/controllers/FrmAppController.php +1 -0
- classes/controllers/FrmApplicationsController.php +1 -0
- classes/controllers/FrmFormsController.php +7 -0
- classes/controllers/FrmHooksController.php +1 -0
- classes/helpers/FrmAppHelper.php +1 -1
- classes/helpers/FrmEntriesHelper.php +1 -0
- classes/helpers/FrmXMLHelper.php +28 -10
- classes/models/FrmAddon.php +1 -1
- classes/models/FrmEntryMeta.php +9 -0
- classes/models/FrmEntryValidate.php +0 -3
- classes/models/FrmFormAction.php +15 -9
- classes/models/fields/FrmFieldText.php +11 -0
- classes/views/frm-fields/back-end/max.php +1 -1
- classes/views/frm-fields/back-end/settings.php +1 -1
- classes/views/frm-fields/back-end/value-format.php +1 -1
- classes/views/frm-fields/single-option.php +13 -2
- classes/views/frm-form-actions/_action_inside.php +1 -1
- classes/views/shared/upgrade_overlay.php +6 -6
- css/frm_admin.css +8 -6
- formidable.php +2 -2
- js/admin/dom.js +6 -2
- js/formidable_admin.js +205 -93
- languages/formidable.pot +115 -110
- readme.txt +406 -115
classes/controllers/FrmAppController.php
CHANGED
@@ -494,6 +494,7 @@ class FrmAppController {
|
|
494 |
'bootstrap_tooltip',
|
495 |
'bootstrap-multiselect',
|
496 |
'wp-i18n',
|
|
|
497 |
'formidable_dom',
|
498 |
'formidable_embed',
|
499 |
);
|
494 |
'bootstrap_tooltip',
|
495 |
'bootstrap-multiselect',
|
496 |
'wp-i18n',
|
497 |
+
'wp-hooks', // Required in WP versions older than 5.7
|
498 |
'formidable_dom',
|
499 |
'formidable_embed',
|
500 |
);
|
classes/controllers/FrmApplicationsController.php
CHANGED
@@ -171,6 +171,7 @@ class FrmApplicationsController {
|
|
171 |
|
172 |
$js_dependencies = array(
|
173 |
'wp-i18n',
|
|
|
174 |
'formidable_dom',
|
175 |
);
|
176 |
wp_register_script( 'formidable_applications', $plugin_url . '/js/admin/applications.js', $js_dependencies, $version, true );
|
171 |
|
172 |
$js_dependencies = array(
|
173 |
'wp-i18n',
|
174 |
+
'wp-hooks', // This prevents a console error "wp.hooks is undefined" in WP versions older than 5.7.
|
175 |
'formidable_dom',
|
176 |
);
|
177 |
wp_register_script( 'formidable_applications', $plugin_url . '/js/admin/applications.js', $js_dependencies, $version, true );
|
classes/controllers/FrmFormsController.php
CHANGED
@@ -1071,6 +1071,13 @@ class FrmFormsController {
|
|
1071 |
}
|
1072 |
}
|
1073 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1074 |
public static function maybe_update_form_builder_message( &$message ) {
|
1075 |
if ( 'form_duplicated' === FrmAppHelper::simple_get( 'message' ) ) {
|
1076 |
$message = __( 'Form was Successfully Copied', 'formidable' );
|
1071 |
}
|
1072 |
}
|
1073 |
|
1074 |
+
public static function update_form_builder_fields( $fields, $form ) {
|
1075 |
+
foreach ( $fields as $field ) {
|
1076 |
+
$field->do_not_include_icons = true;
|
1077 |
+
}
|
1078 |
+
return $fields;
|
1079 |
+
}
|
1080 |
+
|
1081 |
public static function maybe_update_form_builder_message( &$message ) {
|
1082 |
if ( 'form_duplicated' === FrmAppHelper::simple_get( 'message' ) ) {
|
1083 |
$message = __( 'Form was Successfully Copied', 'formidable' );
|
classes/controllers/FrmHooksController.php
CHANGED
@@ -95,6 +95,7 @@ class FrmHooksController {
|
|
95 |
|
96 |
// Elementor.
|
97 |
add_action( 'elementor/widgets/widgets_registered', 'FrmElementorController::register_elementor_hooks' );
|
|
|
98 |
}
|
99 |
|
100 |
public static function load_admin_hooks() {
|
95 |
|
96 |
// Elementor.
|
97 |
add_action( 'elementor/widgets/widgets_registered', 'FrmElementorController::register_elementor_hooks' );
|
98 |
+
add_filter( 'frm_fields_in_form_builder', 'FrmFormsController::update_form_builder_fields', 10, 2 );
|
99 |
}
|
100 |
|
101 |
public static function load_admin_hooks() {
|
classes/helpers/FrmAppHelper.php
CHANGED
@@ -16,7 +16,7 @@ class FrmAppHelper {
|
|
16 |
/**
|
17 |
* @since 2.0
|
18 |
*/
|
19 |
-
public static $plug_version = '5.4.
|
20 |
|
21 |
/**
|
22 |
* @since 1.07.02
|
16 |
/**
|
17 |
* @since 2.0
|
18 |
*/
|
19 |
+
public static $plug_version = '5.4.4';
|
20 |
|
21 |
/**
|
22 |
* @since 1.07.02
|
classes/helpers/FrmEntriesHelper.php
CHANGED
@@ -502,6 +502,7 @@ class FrmEntriesHelper {
|
|
502 |
* Add submitted values to a string for spam checking.
|
503 |
*
|
504 |
* @param array $values
|
|
|
505 |
*/
|
506 |
public static function entry_array_to_string( $values ) {
|
507 |
$content = '';
|
502 |
* Add submitted values to a string for spam checking.
|
503 |
*
|
504 |
* @param array $values
|
505 |
+
* @return string
|
506 |
*/
|
507 |
public static function entry_array_to_string( $values ) {
|
508 |
$content = '';
|
classes/helpers/FrmXMLHelper.php
CHANGED
@@ -844,6 +844,8 @@ class FrmXMLHelper {
|
|
844 |
|
845 |
self::maybe_update_stylesheet( $imported );
|
846 |
|
|
|
|
|
847 |
return $imported;
|
848 |
}
|
849 |
|
@@ -1104,22 +1106,38 @@ class FrmXMLHelper {
|
|
1104 |
}
|
1105 |
}
|
1106 |
|
|
|
|
|
|
|
|
|
|
|
1107 |
private static function update_postmeta( &$post, $post_id ) {
|
1108 |
foreach ( $post['postmeta'] as $k => $v ) {
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
$field_obj = FrmFieldFactory::get_field_type( 'file' );
|
1114 |
-
$v = $field_obj->get_file_id( $v );
|
1115 |
-
}
|
1116 |
|
1117 |
-
|
1118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1119 |
}
|
1120 |
|
1121 |
update_post_meta( $post_id, $k, $v );
|
1122 |
-
|
1123 |
unset( $k, $v );
|
1124 |
}
|
1125 |
}
|
844 |
|
845 |
self::maybe_update_stylesheet( $imported );
|
846 |
|
847 |
+
flush_rewrite_rules();
|
848 |
+
|
849 |
return $imported;
|
850 |
}
|
851 |
|
1106 |
}
|
1107 |
}
|
1108 |
|
1109 |
+
/**
|
1110 |
+
* @param array $post
|
1111 |
+
* @param int $post_id
|
1112 |
+
* @return void
|
1113 |
+
*/
|
1114 |
private static function update_postmeta( &$post, $post_id ) {
|
1115 |
foreach ( $post['postmeta'] as $k => $v ) {
|
1116 |
+
switch ( $k ) {
|
1117 |
+
case '_edit_last':
|
1118 |
+
$v = FrmAppHelper::get_user_id_param( $v );
|
1119 |
+
break;
|
|
|
|
|
|
|
1120 |
|
1121 |
+
case '_thumbnail_id':
|
1122 |
+
if ( FrmAppHelper::pro_is_installed() ) {
|
1123 |
+
// Change the attachment ID.
|
1124 |
+
$field_obj = FrmFieldFactory::get_field_type( 'file' );
|
1125 |
+
$v = $field_obj->get_file_id( $v );
|
1126 |
+
}
|
1127 |
+
break;
|
1128 |
+
|
1129 |
+
case 'frm_dyncontent':
|
1130 |
+
if ( is_array( $v ) ) {
|
1131 |
+
$v = json_encode( $v );
|
1132 |
+
}
|
1133 |
+
break;
|
1134 |
+
|
1135 |
+
case 'frm_param':
|
1136 |
+
add_rewrite_endpoint( $v, EP_PERMALINK | EP_PAGES );
|
1137 |
+
break;
|
1138 |
}
|
1139 |
|
1140 |
update_post_meta( $post_id, $k, $v );
|
|
|
1141 |
unset( $k, $v );
|
1142 |
}
|
1143 |
}
|
classes/models/FrmAddon.php
CHANGED
@@ -480,7 +480,7 @@ class FrmAddon {
|
|
480 |
}
|
481 |
|
482 |
$response = $this->get_license_status();
|
483 |
-
if ( 'revoked' === $response['status'] || 'blocked' === $response['status'] || 'disabled' === $response['status'] ) {
|
484 |
$this->clear_license();
|
485 |
}
|
486 |
}
|
480 |
}
|
481 |
|
482 |
$response = $this->get_license_status();
|
483 |
+
if ( 'revoked' === $response['status'] || 'blocked' === $response['status'] || 'disabled' === $response['status'] || 'missing' === $response['status'] ) {
|
484 |
$this->clear_license();
|
485 |
}
|
486 |
}
|
classes/models/FrmEntryMeta.php
CHANGED
@@ -166,6 +166,15 @@ class FrmEntryMeta {
|
|
166 |
|
167 |
public static function duplicate_entry_metas( $old_id, $new_id ) {
|
168 |
$metas = self::get_entry_meta_info( $old_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
foreach ( $metas as $meta ) {
|
170 |
self::add_entry_meta( $new_id, $meta->field_id, '', $meta->meta_value );
|
171 |
unset( $meta );
|
166 |
|
167 |
public static function duplicate_entry_metas( $old_id, $new_id ) {
|
168 |
$metas = self::get_entry_meta_info( $old_id );
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Allows changing entry duplicate values before save.
|
172 |
+
*
|
173 |
+
* @since x.x
|
174 |
+
*
|
175 |
+
* @param array $metas The list of entry meta values.
|
176 |
+
*/
|
177 |
+
$metas = apply_filters( 'frm_before_duplicate_entry_values', $metas );
|
178 |
foreach ( $metas as $meta ) {
|
179 |
self::add_entry_meta( $new_id, $meta->field_id, '', $meta->meta_value );
|
180 |
unset( $meta );
|
classes/models/FrmEntryValidate.php
CHANGED
@@ -360,9 +360,6 @@ class FrmEntryValidate {
|
|
360 |
}
|
361 |
|
362 |
$content = FrmEntriesHelper::entry_array_to_string( $values );
|
363 |
-
if ( empty( $content ) ) {
|
364 |
-
return false;
|
365 |
-
}
|
366 |
|
367 |
self::prepare_values_for_spam_check( $values );
|
368 |
$ip = FrmAppHelper::get_ip_address();
|
360 |
}
|
361 |
|
362 |
$content = FrmEntriesHelper::entry_array_to_string( $values );
|
|
|
|
|
|
|
363 |
|
364 |
self::prepare_values_for_spam_check( $values );
|
365 |
$ip = FrmAppHelper::get_ip_address();
|
classes/models/FrmFormAction.php
CHANGED
@@ -106,7 +106,7 @@ class FrmFormAction {
|
|
106 |
$action_options['color'] = 'var(--' . reset( $colors ) . ')';
|
107 |
}
|
108 |
|
109 |
-
$upgrade_class = $action_options['classes'] === 'frm_show_upgrade';
|
110 |
if ( $action_options['group'] === $id_base ) {
|
111 |
$upgrade_class = strpos( $action_options['classes'], 'frm_show_upgrade' ) !== false;
|
112 |
$action_options['classes'] = $group['icon'];
|
@@ -420,17 +420,23 @@ class FrmFormAction {
|
|
420 |
* If the status of the action has changed, update it
|
421 |
*
|
422 |
* @since 3.04
|
|
|
|
|
|
|
|
|
423 |
*/
|
424 |
protected function maybe_update_status( $new_instance, $old_instance ) {
|
425 |
-
if ( $new_instance['post_status']
|
426 |
-
|
427 |
-
wp_update_post(
|
428 |
-
array(
|
429 |
-
'ID' => $new_instance['ID'],
|
430 |
-
'post_status' => $new_instance['post_status'],
|
431 |
-
)
|
432 |
-
);
|
433 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
434 |
}
|
435 |
|
436 |
public function save_settings( $settings ) {
|
106 |
$action_options['color'] = 'var(--' . reset( $colors ) . ')';
|
107 |
}
|
108 |
|
109 |
+
$upgrade_class = isset( $action_options['classes'] ) && $action_options['classes'] === 'frm_show_upgrade';
|
110 |
if ( $action_options['group'] === $id_base ) {
|
111 |
$upgrade_class = strpos( $action_options['classes'], 'frm_show_upgrade' ) !== false;
|
112 |
$action_options['classes'] = $group['icon'];
|
420 |
* If the status of the action has changed, update it
|
421 |
*
|
422 |
* @since 3.04
|
423 |
+
*
|
424 |
+
* @param array $new_instance
|
425 |
+
* @param stdClass|array $old_instance
|
426 |
+
* @return void
|
427 |
*/
|
428 |
protected function maybe_update_status( $new_instance, $old_instance ) {
|
429 |
+
if ( ! is_object( $old_instance ) || $new_instance['post_status'] === $old_instance->post_status ) {
|
430 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
431 |
}
|
432 |
+
|
433 |
+
self::clear_cache();
|
434 |
+
wp_update_post(
|
435 |
+
array(
|
436 |
+
'ID' => $new_instance['ID'],
|
437 |
+
'post_status' => $new_instance['post_status'],
|
438 |
+
)
|
439 |
+
);
|
440 |
}
|
441 |
|
442 |
public function save_settings( $settings ) {
|
classes/models/fields/FrmFieldText.php
CHANGED
@@ -28,4 +28,15 @@ class FrmFieldText extends FrmFieldType {
|
|
28 |
'invalid' => true,
|
29 |
);
|
30 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
28 |
'invalid' => true,
|
29 |
);
|
30 |
}
|
31 |
+
|
32 |
+
public function validate( $args ) {
|
33 |
+
$errors = parent::validate( $args );
|
34 |
+
$max_length = intval( FrmField::get_option( $this->field, 'max' ) );
|
35 |
+
|
36 |
+
if ( $max_length && strlen( $args['value'] ) > $max_length ) {
|
37 |
+
$errors[ 'field' . $args['id'] ] = FrmFieldsHelper::get_error_msg( $this->field, 'invalid' );
|
38 |
+
}
|
39 |
+
|
40 |
+
return $errors;
|
41 |
+
}
|
42 |
}
|
classes/views/frm-fields/back-end/max.php
CHANGED
@@ -13,5 +13,5 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
}
|
14 |
?>
|
15 |
</label>
|
16 |
-
<input type="text" name="field_options[max_<?php echo esc_attr( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['max'] ); ?>" id="field_options_max_<?php echo esc_attr( $field['id'] ); ?>" size="5" />
|
17 |
</p>
|
13 |
}
|
14 |
?>
|
15 |
</label>
|
16 |
+
<input type="text" class="frm_max_length_opt" name="field_options[max_<?php echo esc_attr( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['max'] ); ?>" id="field_options_max_<?php echo esc_attr( $field['id'] ); ?>" size="5" data-fid="<?php echo intval( $field['id'] ); ?>" />
|
17 |
</p>
|
classes/views/frm-fields/back-end/settings.php
CHANGED
@@ -334,7 +334,7 @@ do_action( 'frm_before_field_options', $field, compact( 'field_obj', 'display',
|
|
334 |
|
335 |
<?php if ( $display['required'] || $display['invalid'] || $display['unique'] || $display['conf_field'] ) { ?>
|
336 |
<?php
|
337 |
-
$hidden_invalid = FrmField::is_field_type( $field, 'text' ) && ! FrmField::is_option_true( $field, 'format' );
|
338 |
$has_validation = ( ( $display['invalid'] && ! $hidden_invalid ) || $field['required'] || FrmField::is_option_true( $field, 'unique' ) || FrmField::is_option_true( $field, 'conf_field' ) );
|
339 |
?>
|
340 |
<div class="frm_validation_msg <?php echo esc_attr( $has_validation ? '' : 'frm_hidden' ); ?>">
|
334 |
|
335 |
<?php if ( $display['required'] || $display['invalid'] || $display['unique'] || $display['conf_field'] ) { ?>
|
336 |
<?php
|
337 |
+
$hidden_invalid = FrmField::is_field_type( $field, 'text' ) && ! FrmField::is_option_true( $field, 'format' ) && FrmField::is_option_empty( $field, 'max' );
|
338 |
$has_validation = ( ( $display['invalid'] && ! $hidden_invalid ) || $field['required'] || FrmField::is_option_true( $field, 'unique' ) || FrmField::is_option_true( $field, 'conf_field' ) );
|
339 |
?>
|
340 |
<div class="frm_validation_msg <?php echo esc_attr( $has_validation ? '' : 'frm_hidden' ); ?>">
|
classes/views/frm-fields/back-end/value-format.php
CHANGED
@@ -17,6 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
17 |
)
|
18 |
);
|
19 |
?>
|
20 |
-
<input type="text" class="frm_long_input frm_format_opt" value="<?php echo esc_attr( $field['format'] ); ?>" name="field_options[format_<?php echo absint( $field['id'] ); ?>]" id="frm_format_<?php echo absint( $field['id'] ); ?>" />
|
21 |
</span>
|
22 |
</p>
|
17 |
)
|
18 |
);
|
19 |
?>
|
20 |
+
<input type="text" class="frm_long_input frm_format_opt" value="<?php echo esc_attr( $field['format'] ); ?>" name="field_options[format_<?php echo absint( $field['id'] ); ?>]" id="frm_format_<?php echo absint( $field['id'] ); ?>" data-fid="<?php echo intval( $field['id'] ); ?>" />
|
21 |
</span>
|
22 |
</p>
|
classes/views/frm-fields/single-option.php
CHANGED
@@ -4,7 +4,14 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
4 |
}
|
5 |
?>
|
6 |
<li id="frm_delete_field_<?php echo esc_attr( $field['id'] . '-' . $opt_key ); ?>_container" data-optkey="<?php echo esc_attr( $opt_key ); ?>" class="frm_single_option <?php echo $opt_key === '000' ? 'frm_hidden frm_option_template' : ''; ?>">
|
7 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
<input type="<?php echo esc_attr( $default_type ); ?>" name="<?php echo esc_attr( $field_name ); ?>" <?php echo ( isset( $checked ) && $checked ? 'checked="checked"' : '' ); ?> value="<?php echo esc_attr( $field_val ); ?>"/>
|
9 |
|
10 |
<input type="text" name="field_options[options_<?php echo esc_attr( $field['id'] ); ?>][<?php echo esc_attr( $opt_key ); ?>][label]" value="<?php echo esc_attr( $opt ); ?>" class="field_<?php echo esc_attr( $field['id'] ); ?>_option <?php echo esc_attr( $field['separate_value'] ? 'frm_with_key' : '' ); ?>" id="<?php echo esc_attr( $html_id . '-' . $opt_key . '-label' ); ?>" data-frmchange="trim,updateOption,checkUniqueOpt" />
|
@@ -14,7 +21,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
<span class="frm_option_key frm-with-right-icon field_<?php echo esc_attr( $field['id'] ); ?>_option_key<?php echo esc_attr( $field['separate_value'] ? '' : ' frm_hidden' ); ?>">
|
15 |
<input type="<?php echo esc_attr( $default_type ); ?>" class="frm_invisible" />
|
16 |
<input type="text" name="field_options[options_<?php echo esc_attr( $field['id'] ); ?>][<?php echo esc_attr( $opt_key ); ?>][value]" id="field_key_<?php echo esc_attr( $field['id'] . '-' . $opt_key ); ?>" value="<?php echo esc_attr( $field_val ); ?>" placeholder="<?php esc_attr_e( 'Saved Value', 'formidable' ); ?>" data-frmchange="trim,updateDefault,checkUniqueOpt" />
|
17 |
-
<?php
|
|
|
|
|
|
|
|
|
18 |
</span>
|
19 |
|
20 |
<?php do_action( 'frm_admin_single_opt', compact( 'field', 'opt', 'opt_key' ) ); ?>
|
4 |
}
|
5 |
?>
|
6 |
<li id="frm_delete_field_<?php echo esc_attr( $field['id'] . '-' . $opt_key ); ?>_container" data-optkey="<?php echo esc_attr( $opt_key ); ?>" class="frm_single_option <?php echo $opt_key === '000' ? 'frm_hidden frm_option_template' : ''; ?>">
|
7 |
+
<?php
|
8 |
+
$show_icons = empty( $field['do_not_include_icons'] );
|
9 |
+
|
10 |
+
if ( $show_icons ) {
|
11 |
+
FrmAppHelper::icon_by_class( 'frmfont frm_drag_icon frm-drag' );
|
12 |
+
}
|
13 |
+
|
14 |
+
?>
|
15 |
<input type="<?php echo esc_attr( $default_type ); ?>" name="<?php echo esc_attr( $field_name ); ?>" <?php echo ( isset( $checked ) && $checked ? 'checked="checked"' : '' ); ?> value="<?php echo esc_attr( $field_val ); ?>"/>
|
16 |
|
17 |
<input type="text" name="field_options[options_<?php echo esc_attr( $field['id'] ); ?>][<?php echo esc_attr( $opt_key ); ?>][label]" value="<?php echo esc_attr( $opt ); ?>" class="field_<?php echo esc_attr( $field['id'] ); ?>_option <?php echo esc_attr( $field['separate_value'] ? 'frm_with_key' : '' ); ?>" id="<?php echo esc_attr( $html_id . '-' . $opt_key . '-label' ); ?>" data-frmchange="trim,updateOption,checkUniqueOpt" />
|
21 |
<span class="frm_option_key frm-with-right-icon field_<?php echo esc_attr( $field['id'] ); ?>_option_key<?php echo esc_attr( $field['separate_value'] ? '' : ' frm_hidden' ); ?>">
|
22 |
<input type="<?php echo esc_attr( $default_type ); ?>" class="frm_invisible" />
|
23 |
<input type="text" name="field_options[options_<?php echo esc_attr( $field['id'] ); ?>][<?php echo esc_attr( $opt_key ); ?>][value]" id="field_key_<?php echo esc_attr( $field['id'] . '-' . $opt_key ); ?>" value="<?php echo esc_attr( $field_val ); ?>" placeholder="<?php esc_attr_e( 'Saved Value', 'formidable' ); ?>" data-frmchange="trim,updateDefault,checkUniqueOpt" />
|
24 |
+
<?php
|
25 |
+
if ( $show_icons ) {
|
26 |
+
FrmAppHelper::icon_by_class( 'frmfont frm_save_icon' );
|
27 |
+
}
|
28 |
+
?>
|
29 |
</span>
|
30 |
|
31 |
<?php do_action( 'frm_admin_single_opt', compact( 'field', 'opt', 'opt_key' ) ); ?>
|
classes/views/frm-form-actions/_action_inside.php
CHANGED
@@ -68,7 +68,7 @@ if ( ! FrmAppHelper::pro_is_installed() ) {
|
|
68 |
if ( 'email' === $form_action->post_excerpt ) {
|
69 |
?>
|
70 |
<h3>
|
71 |
-
<a href="javascript:void(0)" class="frm_show_upgrade frm_noallow" data-upgrade="<?php esc_attr_e( 'Email attachments', 'formidable' ); ?>" data-medium="email-attachment">
|
72 |
<?php esc_html_e( 'Attachment', 'formidable' ); ?>
|
73 |
</a>
|
74 |
</h3>
|
68 |
if ( 'email' === $form_action->post_excerpt ) {
|
69 |
?>
|
70 |
<h3>
|
71 |
+
<a href="javascript:void(0)" class="frm_show_upgrade frm_noallow" data-upgrade="<?php esc_attr_e( 'Email attachments', 'formidable' ); ?>" data-message="<?php esc_attr_e( 'Email a CSV or a PDF of each new entry, or attach a file of your choice.', 'formidable' ); ?>" data-medium="email-attachment">
|
72 |
<?php esc_html_e( 'Attachment', 'formidable' ); ?>
|
73 |
</a>
|
74 |
</h3>
|
classes/views/shared/upgrade_overlay.php
CHANGED
@@ -25,12 +25,12 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
25 |
</h2>
|
26 |
<div class="cta-inside">
|
27 |
|
28 |
-
<p
|
29 |
<?php esc_html_e( 'That add-on is not installed. Would you like to install it now?', 'formidable' ); ?>
|
30 |
</p>
|
31 |
-
<p
|
32 |
|
33 |
-
<a class="button button-primary frm-button-primary frm_hidden
|
34 |
<?php esc_html_e( 'Install', 'formidable' ); ?>
|
35 |
</a>
|
36 |
|
@@ -44,11 +44,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
44 |
}
|
45 |
$message = sprintf( esc_html( $message ), '<span class="frm_feature_label"></span>' );
|
46 |
?>
|
47 |
-
<p
|
48 |
<?php echo FrmAppHelper::kses( $message, array( 'span' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
49 |
</p>
|
50 |
<?php if ( $is_pro ) { ?>
|
51 |
-
<a href="<?php echo esc_url( $default_link ); ?>" class="button button-primary frm-button-primary
|
52 |
<?php
|
53 |
printf(
|
54 |
/* translators: %s: Plan name */
|
@@ -58,7 +58,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
58 |
?>
|
59 |
</a>
|
60 |
<?php } else { ?>
|
61 |
-
<a href="<?php echo esc_url( $default_link ); ?>" class="button button-primary frm-button-primary" target="_blank" rel="noopener noreferrer"
|
62 |
<?php
|
63 |
printf(
|
64 |
/* translators: %s: Plan name */
|
25 |
</h2>
|
26 |
<div class="cta-inside">
|
27 |
|
28 |
+
<p class="frm-oneclick frm_hidden">
|
29 |
<?php esc_html_e( 'That add-on is not installed. Would you like to install it now?', 'formidable' ); ?>
|
30 |
</p>
|
31 |
+
<p class="frm-addon-status"></p>
|
32 |
|
33 |
+
<a class="button button-primary frm-button-primary frm_hidden frm-oneclick-button">
|
34 |
<?php esc_html_e( 'Install', 'formidable' ); ?>
|
35 |
</a>
|
36 |
|
44 |
}
|
45 |
$message = sprintf( esc_html( $message ), '<span class="frm_feature_label"></span>' );
|
46 |
?>
|
47 |
+
<p class="frm-upgrade-message" data-default="<?php echo esc_attr( $message ); ?>">
|
48 |
<?php echo FrmAppHelper::kses( $message, array( 'span' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
49 |
</p>
|
50 |
<?php if ( $is_pro ) { ?>
|
51 |
+
<a href="<?php echo esc_url( $default_link ); ?>" class="button button-primary frm-button-primary frm-upgrade-link" data-default="<?php echo esc_url( $default_link ); ?>">
|
52 |
<?php
|
53 |
printf(
|
54 |
/* translators: %s: Plan name */
|
58 |
?>
|
59 |
</a>
|
60 |
<?php } else { ?>
|
61 |
+
<a href="<?php echo esc_url( $default_link ); ?>" class="button button-primary frm-button-primary frm-upgrade-link" target="_blank" rel="noopener noreferrer" data-default="<?php echo esc_url( $default_link ); ?>">
|
62 |
<?php
|
63 |
printf(
|
64 |
/* translators: %s: Plan name */
|
css/frm_admin.css
CHANGED
@@ -1778,13 +1778,14 @@ h2.frm-h2 + .howto {
|
|
1778 |
visibility: hidden;
|
1779 |
}
|
1780 |
|
1781 |
-
|
1782 |
margin-top: 10px;
|
1783 |
font-size: 13px;
|
1784 |
}
|
1785 |
|
1786 |
-
|
1787 |
-
|
|
|
1788 |
}
|
1789 |
|
1790 |
.addon-status-label {
|
@@ -2581,6 +2582,7 @@ a.frm_pro_tip .frmsvg {
|
|
2581 |
|
2582 |
.frm-tip-info {
|
2583 |
flex: 1;
|
|
|
2584 |
}
|
2585 |
|
2586 |
.frm-tip-cta {
|
@@ -4012,8 +4014,8 @@ li.frm_field_box > ul.frm_grid_container {
|
|
4012 |
object-fit: cover;
|
4013 |
}
|
4014 |
|
4015 |
-
.frm_list_entry_page
|
4016 |
-
max-width:
|
4017 |
height: auto;
|
4018 |
}
|
4019 |
|
@@ -7337,7 +7339,7 @@ h2 .frm-sub-label {
|
|
7337 |
padding-bottom: 20px;
|
7338 |
}
|
7339 |
|
7340 |
-
|
7341 |
max-width: 100%;
|
7342 |
}
|
7343 |
|
1778 |
visibility: hidden;
|
1779 |
}
|
1780 |
|
1781 |
+
.frm-save-and-reload-options {
|
1782 |
margin-top: 10px;
|
1783 |
font-size: 13px;
|
1784 |
}
|
1785 |
|
1786 |
+
.frm-save-and-reload,
|
1787 |
+
.frm-save-and-reload + .frm-button-secondary {
|
1788 |
+
visibility: visible !important;
|
1789 |
}
|
1790 |
|
1791 |
.addon-status-label {
|
2582 |
|
2583 |
.frm-tip-info {
|
2584 |
flex: 1;
|
2585 |
+
text-align: left;
|
2586 |
}
|
2587 |
|
2588 |
.frm-tip-cta {
|
4014 |
object-fit: cover;
|
4015 |
}
|
4016 |
|
4017 |
+
.frm_list_entry_page img {
|
4018 |
+
max-width: 100%;
|
4019 |
height: auto;
|
4020 |
}
|
4021 |
|
7339 |
padding-bottom: 20px;
|
7340 |
}
|
7341 |
|
7342 |
+
.frm-upgrade-message img {
|
7343 |
max-width: 100%;
|
7344 |
}
|
7345 |
|
formidable.php
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
/*
|
3 |
Plugin Name: Formidable Forms
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
-
Version: 5.4.
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
-
Author: Strategy11
|
9 |
Text Domain: formidable
|
10 |
*/
|
11 |
|
2 |
/*
|
3 |
Plugin Name: Formidable Forms
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
+
Version: 5.4.4
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
+
Author: Strategy11 Form Builder Team
|
9 |
Text Domain: formidable
|
10 |
*/
|
11 |
|
js/admin/dom.js
CHANGED
@@ -267,7 +267,7 @@
|
|
267 |
jQuery( this ).autocomplete( 'search', this.value );
|
268 |
}
|
269 |
})
|
270 |
-
.data('ui-autocomplete')._renderItem = function( ul, item ) {
|
271 |
return jQuery( '<li>' )
|
272 |
.attr( 'aria-label', item.label )
|
273 |
.append( jQuery( '<div>' ).text( item.label ) )
|
@@ -511,9 +511,13 @@
|
|
511 |
return output;
|
512 |
}
|
513 |
|
514 |
-
function svg({ href } = {}) {
|
515 |
const namespace = 'http://www.w3.org/2000/svg';
|
516 |
const output = document.createElementNS( namespace, 'svg' );
|
|
|
|
|
|
|
|
|
517 |
if ( href ) {
|
518 |
const use = document.createElementNS( namespace, 'use' );
|
519 |
use.setAttribute( 'href', href );
|
267 |
jQuery( this ).autocomplete( 'search', this.value );
|
268 |
}
|
269 |
})
|
270 |
+
.data( 'ui-autocomplete' )._renderItem = function( ul, item ) {
|
271 |
return jQuery( '<li>' )
|
272 |
.attr( 'aria-label', item.label )
|
273 |
.append( jQuery( '<div>' ).text( item.label ) )
|
511 |
return output;
|
512 |
}
|
513 |
|
514 |
+
function svg({ href, classList } = {}) {
|
515 |
const namespace = 'http://www.w3.org/2000/svg';
|
516 |
const output = document.createElementNS( namespace, 'svg' );
|
517 |
+
if ( classList ) {
|
518 |
+
output.classList.add( ...classList );
|
519 |
+
}
|
520 |
+
|
521 |
if ( href ) {
|
522 |
const use = document.createElementNS( namespace, 'use' );
|
523 |
use.setAttribute( 'href', href );
|
js/formidable_admin.js
CHANGED
@@ -319,6 +319,10 @@ function frmAdminBuildJS() {
|
|
319 |
|
320 |
const { tag, div, span, a, svg, img } = frmDom;
|
321 |
const { doJsonFetch } = frmDom.ajax;
|
|
|
|
|
|
|
|
|
322 |
|
323 |
var $newFields = jQuery( document.getElementById( 'frm-show-fields' ) ),
|
324 |
builderForm = document.getElementById( 'new_fields' ),
|
@@ -1390,6 +1394,10 @@ function frmAdminBuildJS() {
|
|
1390 |
wrapFieldLiInPlace( currentItem );
|
1391 |
}
|
1392 |
|
|
|
|
|
|
|
|
|
1393 |
jQuery.ajax({
|
1394 |
type: 'POST', url: ajaxurl,
|
1395 |
data: {
|
@@ -2684,14 +2692,23 @@ function frmAdminBuildJS() {
|
|
2684 |
function toggleInvalidMsg() {
|
2685 |
/*jshint validthis:true */
|
2686 |
var typeDropdown, fieldType,
|
2687 |
-
fieldId = this.
|
2688 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2689 |
|
2690 |
typeDropdown = document.getElementsByName( 'field_options[type_' + fieldId + ']' )[0];
|
2691 |
fieldType = typeDropdown.options[typeDropdown.selectedIndex].value;
|
2692 |
|
2693 |
if ( fieldType === 'text' ) {
|
2694 |
-
toggleValidationBox(
|
2695 |
}
|
2696 |
}
|
2697 |
|
@@ -2919,7 +2936,9 @@ function frmAdminBuildJS() {
|
|
2919 |
newOption = newOption.replace( new RegExp( '-' + oldKey + '"', 'g' ), '-' + optKey + '"' );
|
2920 |
newOption = newOption.replace( new RegExp( '\\[' + oldKey + '\\]', 'g' ), '[' + optKey + ']' );
|
2921 |
newOption = newOption.replace( 'frm_hidden frm_option_template', '' );
|
2922 |
-
|
|
|
|
|
2923 |
resetDisplayedOpts( fieldId );
|
2924 |
}
|
2925 |
}
|
@@ -5194,16 +5213,13 @@ function frmAdminBuildJS() {
|
|
5194 |
}
|
5195 |
|
5196 |
const container = document.getElementById( 'frm_field_' + fieldId + '_opts' );
|
5197 |
-
const
|
5198 |
-
input => input !== targetInput &&
|
|
|
|
|
5199 |
);
|
5200 |
-
|
5201 |
-
|
5202 |
-
for ( let index = 0; index < length; ++index ) {
|
5203 |
-
if ( inputs[ index ].value === targetInput.value ) {
|
5204 |
-
infoModal( __( 'Duplicate option value "%s" detected', 'formidable' ).replace( '%s', targetInput.value ) );
|
5205 |
-
break;
|
5206 |
-
}
|
5207 |
}
|
5208 |
}
|
5209 |
|
@@ -5743,16 +5759,16 @@ function frmAdminBuildJS() {
|
|
5743 |
}
|
5744 |
|
5745 |
// If one click upgrade, hide other content
|
5746 |
-
|
5747 |
|
5748 |
-
modal.querySelector( '.frm_are_not_installed' ).style.display = element.dataset.image ? 'none' : 'block';
|
5749 |
modal.querySelector( '.frm_feature_label' ).textContent = upgradeLabel;
|
5750 |
modal.querySelector( 'h2' ).style.display = 'block';
|
5751 |
|
5752 |
$info.dialog( 'open' );
|
5753 |
|
5754 |
// set the utm medium
|
5755 |
-
const button = modal.querySelector( '.button-primary:not(
|
5756 |
link = button.getAttribute( 'href' ).replace( /(medium=)[a-z_-]+/ig, '$1' + element.getAttribute( 'data-medium' ) );
|
5757 |
content = element.getAttribute( 'data-content' );
|
5758 |
if ( content === null ) {
|
@@ -5788,12 +5804,6 @@ function frmAdminBuildJS() {
|
|
5788 |
|
5789 |
function populateUpgradeTab( element ) {
|
5790 |
const title = element.dataset.upgrade;
|
5791 |
-
let message = element.dataset.message;
|
5792 |
-
|
5793 |
-
if ( ! message ) {
|
5794 |
-
message = document.getElementById( 'frm-upgrade-message' ).dataset.default;
|
5795 |
-
message = message.replace( '<span class="frm_feature_label"></span>', title );
|
5796 |
-
}
|
5797 |
|
5798 |
const tab = element.getAttribute( 'href' ).replace( '#', '' );
|
5799 |
const container = document.querySelector( '.frm_' + tab ) || document.querySelector( '.' + tab );
|
@@ -5802,7 +5812,7 @@ function frmAdminBuildJS() {
|
|
5802 |
return;
|
5803 |
}
|
5804 |
|
5805 |
-
if ( container.querySelector( '.frm-
|
5806 |
// Tab has already been populated.
|
5807 |
return;
|
5808 |
}
|
@@ -5814,24 +5824,16 @@ function frmAdminBuildJS() {
|
|
5814 |
h2.textContent = __( '%s are not installed' ).replace( '%s', title );
|
5815 |
|
5816 |
container.classList.add( 'frmcenter' );
|
5817 |
-
container.appendChild(
|
5818 |
-
tag(
|
5819 |
-
'p',
|
5820 |
-
{
|
5821 |
-
className: 'frm-tab-message',
|
5822 |
-
text: message
|
5823 |
-
}
|
5824 |
-
)
|
5825 |
-
);
|
5826 |
|
5827 |
-
const
|
|
|
|
|
5828 |
|
5829 |
-
// Borrow the call to action from the Upgrade
|
|
|
5830 |
if ( upgradeModalLink ) {
|
5831 |
const upgradeButton = upgradeModalLink.cloneNode( true );
|
5832 |
-
upgradeButton.
|
5833 |
-
|
5834 |
-
const level = upgradeButton.querySelector( '.license-level' );
|
5835 |
|
5836 |
if ( level ) {
|
5837 |
level.textContent = getRequiredLicenseFromTrigger( element );
|
@@ -5839,20 +5841,24 @@ function frmAdminBuildJS() {
|
|
5839 |
|
5840 |
container.appendChild( upgradeButton );
|
5841 |
|
5842 |
-
// Maybe append the secondary "Already purchased?" link from the
|
5843 |
if ( upgradeModalLink.nextElementSibling && upgradeModalLink.nextElementSibling.querySelector( '.frm-link-secondary' ) ) {
|
5844 |
container.appendChild( upgradeModalLink.nextElementSibling.cloneNode( true ) );
|
5845 |
}
|
5846 |
|
5847 |
-
|
5848 |
-
oneClickButton.id = 'frm_one_click_' + getAutoId();
|
5849 |
-
container.appendChild( oneClickButton );
|
5850 |
-
addOneClickModal( element, oneClickButton, upgradeButton );
|
5851 |
}
|
5852 |
|
|
|
|
|
|
|
5853 |
if ( element.dataset.screenshot ) {
|
5854 |
container.appendChild( getScreenshotWrapper( element.dataset.screenshot ) );
|
5855 |
}
|
|
|
|
|
|
|
|
|
5856 |
}
|
5857 |
|
5858 |
function getScreenshotWrapper( screenshot ) {
|
@@ -5889,24 +5895,34 @@ function frmAdminBuildJS() {
|
|
5889 |
|
5890 |
/**
|
5891 |
* Allow addons to be installed from the upgrade modal.
|
|
|
|
|
|
|
|
|
5892 |
*/
|
5893 |
-
function
|
5894 |
-
|
5895 |
-
oneclick = link.getAttribute( 'data-oneclick' ),
|
5896 |
-
customLink = link.getAttribute( 'data-link' ),
|
5897 |
-
upgradeMessage = document.getElementById( 'frm-upgrade-message' ),
|
5898 |
-
newMessage = link.getAttribute( 'data-message' ),
|
5899 |
-
showIt = 'block',
|
5900 |
-
showMsg = 'block',
|
5901 |
-
hideIt = 'none';
|
5902 |
|
5903 |
-
if (
|
5904 |
-
|
5905 |
-
}
|
5906 |
-
|
5907 |
-
|
|
|
5908 |
}
|
5909 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5910 |
// If one click upgrade, hide other content.
|
5911 |
if ( oneclickMessage !== null && typeof oneclick !== 'undefined' && oneclick ) {
|
5912 |
if ( newMessage === null ) {
|
@@ -5916,30 +5932,40 @@ function frmAdminBuildJS() {
|
|
5916 |
hideIt = 'block';
|
5917 |
oneclick = JSON.parse( oneclick );
|
5918 |
|
5919 |
-
button.className
|
5920 |
-
button.className
|
|
|
5921 |
button.rel = oneclick.url;
|
5922 |
}
|
5923 |
|
5924 |
-
|
5925 |
-
if ( newMessage === null || typeof newMessage === 'undefined' || newMessage === '' ) {
|
5926 |
newMessage = upgradeMessage.getAttribute( 'data-default' );
|
5927 |
}
|
|
|
|
|
|
|
|
|
5928 |
upgradeMessage.innerHTML = newMessage;
|
5929 |
|
5930 |
// Either set the link or use the default.
|
5931 |
-
|
5932 |
-
|
5933 |
-
|
5934 |
-
showLink.href = customLink;
|
5935 |
|
5936 |
-
document.getElementById( 'frm-addon-status' ).style.display = 'none';
|
5937 |
oneclickMessage.style.display = hideIt;
|
5938 |
button.style.display = hideIt === 'block' ? 'inline-block' : hideIt;
|
5939 |
upgradeMessage.style.display = showMsg;
|
5940 |
showLink.style.display = showIt === 'block' ? 'inline-block' : showIt;
|
5941 |
}
|
5942 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5943 |
/* Form settings */
|
5944 |
|
5945 |
function showInputIcon( parentClass ) {
|
@@ -7912,13 +7938,13 @@ function frmAdminBuildJS() {
|
|
7912 |
}
|
7913 |
|
7914 |
function installOrActivate( clicked, action ) {
|
7915 |
-
|
7916 |
|
7917 |
// Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
|
7918 |
jQuery( '.frm-addon-error' ).remove();
|
7919 |
-
button
|
7920 |
-
plugin
|
7921 |
-
el
|
7922 |
message = el.parent().find( '.addon-status-label' );
|
7923 |
|
7924 |
button.addClass( 'frm_loading_button' );
|
@@ -7936,7 +7962,7 @@ function frmAdminBuildJS() {
|
|
7936 |
plugin: plugin
|
7937 |
},
|
7938 |
success: function( response ) {
|
7939 |
-
|
7940 |
|
7941 |
if ( 'string' !== typeof response && 'string' === typeof response.message ) {
|
7942 |
if ( 'undefined' !== typeof response.saveAndReload ) {
|
@@ -7945,8 +7971,7 @@ function frmAdminBuildJS() {
|
|
7945 |
response = response.message;
|
7946 |
}
|
7947 |
|
7948 |
-
error = extractErrorFromAddOnResponse( response );
|
7949 |
-
|
7950 |
if ( error ) {
|
7951 |
addonError( error, el, button );
|
7952 |
return;
|
@@ -7965,9 +7990,9 @@ function frmAdminBuildJS() {
|
|
7965 |
e.preventDefault();
|
7966 |
|
7967 |
// Now let's make another Ajax request once the user has submitted their credentials.
|
7968 |
-
|
7969 |
-
|
7970 |
-
|
7971 |
|
7972 |
proceed.addClass( 'frm_loading_button' );
|
7973 |
|
@@ -7986,8 +8011,7 @@ function frmAdminBuildJS() {
|
|
7986 |
password: el.find( '#password' ).val()
|
7987 |
},
|
7988 |
success: function( response ) {
|
7989 |
-
|
7990 |
-
|
7991 |
if ( error ) {
|
7992 |
addonError( error, el, proceed );
|
7993 |
return;
|
@@ -8001,15 +8025,28 @@ function frmAdminBuildJS() {
|
|
8001 |
});
|
8002 |
}
|
8003 |
|
|
|
|
|
|
|
8004 |
function afterAddonInstall( response, button, message, el, saveAndReload ) {
|
8005 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
8006 |
|
8007 |
-
$addonStatus = jQuery( document.getElementById( 'frm-addon-status' ) );
|
8008 |
// The Ajax request was successful, so let's update the output.
|
8009 |
button.css({ opacity: '0' });
|
8010 |
message.text( frm_admin_js.active );
|
8011 |
-
|
8012 |
-
|
|
|
|
|
|
|
|
|
|
|
8013 |
jQuery( '#frm_upgrade_modal h2' ).hide();
|
8014 |
jQuery( '#frm_upgrade_modal .frm_lock_icon' ).addClass( 'frm_lock_open_icon' );
|
8015 |
jQuery( '#frm_upgrade_modal .frm_lock_icon use' ).attr( 'xlink:href', '#frm_lock_open_icon' );
|
@@ -8019,25 +8056,34 @@ function frmAdminBuildJS() {
|
|
8019 |
button.removeClass( 'frm_loading_button' );
|
8020 |
|
8021 |
// Maybe refresh import and SMTP pages
|
8022 |
-
refreshPage = document.querySelectorAll( '.frm-admin-page-import, #frm-admin-smtp, #frm-welcome' );
|
8023 |
if ( refreshPage.length > 0 ) {
|
8024 |
window.location.reload();
|
8025 |
-
|
8026 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8027 |
}
|
8028 |
}
|
8029 |
|
8030 |
-
function getSaveAndReloadSettingsOptions( saveAndReload ) {
|
8031 |
-
|
8032 |
-
|
8033 |
-
|
8034 |
-
|
|
|
|
|
8035 |
}
|
8036 |
|
8037 |
function saveAndReloadSettingsButton( saveAndReload ) {
|
8038 |
var button = document.createElement( 'button' );
|
8039 |
-
button.
|
8040 |
-
button.classList.add( 'button', 'button-primary', 'frm-button-primary' );
|
8041 |
button.textContent = __( 'Save and Reload', 'formidable' );
|
8042 |
button.addEventListener( 'click', () => {
|
8043 |
if ( saveAndReload === 'form_builder' ) {
|
@@ -9094,6 +9140,65 @@ function frmAdminBuildJS() {
|
|
9094 |
return frmDom.util.debounce( func, wait );
|
9095 |
}
|
9096 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9097 |
/**
|
9098 |
* Does the same as jQuery( document ).on( 'event', 'selector', handler ).
|
9099 |
*
|
@@ -9285,6 +9390,13 @@ function frmAdminBuildJS() {
|
|
9285 |
return [ formId, formKey ];
|
9286 |
}
|
9287 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9288 |
},
|
9289 |
|
9290 |
buildInit: function() {
|
@@ -9339,7 +9451,7 @@ function frmAdminBuildJS() {
|
|
9339 |
jQuery( document.getElementById( 'frm-insert-fields' ) ).on( 'click', '.frm_add_field', addFieldClick );
|
9340 |
$newFields.on( 'click', '.frm_clone_field', duplicateField );
|
9341 |
$builderForm.on( 'blur', 'input[id^="frm_calc"]', checkCalculationCreatedByUser );
|
9342 |
-
$builderForm.on( 'change', 'input.frm_format_opt', toggleInvalidMsg );
|
9343 |
$builderForm.on( 'change click', '[data-changeme]', liveChanges );
|
9344 |
$builderForm.on( 'click', 'input.frm_req_field', markRequired );
|
9345 |
$builderForm.on( 'click', '.frm_mark_unique', markUnique );
|
@@ -9450,7 +9562,7 @@ function frmAdminBuildJS() {
|
|
9450 |
$formActions.on( 'click', '.frm_add_posttax_row', addPosttaxRow );
|
9451 |
$formActions.on( 'click', '.frm_toggle_cf_opts', toggleCfOpts );
|
9452 |
$formActions.on( 'click', '.frm_duplicate_form_action', copyFormAction );
|
9453 |
-
jQuery( 'select[data-toggleclass], input[data-toggleclass]'
|
9454 |
jQuery( '.frm_actions_list' ).on( 'click', '.frm_active_action', addFormAction );
|
9455 |
jQuery( '#frm-show-groups, #frm-hide-groups' ).on( 'click', toggleActionGroups );
|
9456 |
initiateMultiselect();
|
319 |
|
320 |
const { tag, div, span, a, svg, img } = frmDom;
|
321 |
const { doJsonFetch } = frmDom.ajax;
|
322 |
+
const icons = {
|
323 |
+
save: svg({ href: '#frm_save_icon' }),
|
324 |
+
drag: svg({ href: '#frm_drag_icon', classList: [ 'frm_drag_icon', 'frm-drag' ] })
|
325 |
+
};
|
326 |
|
327 |
var $newFields = jQuery( document.getElementById( 'frm-show-fields' ) ),
|
328 |
builderForm = document.getElementById( 'new_fields' ),
|
1394 |
wrapFieldLiInPlace( currentItem );
|
1395 |
}
|
1396 |
|
1397 |
+
currentItem[0].addEventListener( 'click', function() {
|
1398 |
+
maybeAddSaveAndDragIcons( this.dataset.fid );
|
1399 |
+
});
|
1400 |
+
|
1401 |
jQuery.ajax({
|
1402 |
type: 'POST', url: ajaxurl,
|
1403 |
data: {
|
2692 |
function toggleInvalidMsg() {
|
2693 |
/*jshint validthis:true */
|
2694 |
var typeDropdown, fieldType,
|
2695 |
+
fieldId = this.getAttribute( 'data-fid' ),
|
2696 |
+
value = '';
|
2697 |
+
|
2698 |
+
[ 'field_options_max_', 'frm_format_' ].forEach( function( id ) {
|
2699 |
+
var input = document.getElementById( id + fieldId );
|
2700 |
+
if ( ! input ) {
|
2701 |
+
return;
|
2702 |
+
}
|
2703 |
+
|
2704 |
+
value += input.value;
|
2705 |
+
});
|
2706 |
|
2707 |
typeDropdown = document.getElementsByName( 'field_options[type_' + fieldId + ']' )[0];
|
2708 |
fieldType = typeDropdown.options[typeDropdown.selectedIndex].value;
|
2709 |
|
2710 |
if ( fieldType === 'text' ) {
|
2711 |
+
toggleValidationBox( '' !== value, '.frm_invalid_msg' + fieldId );
|
2712 |
}
|
2713 |
}
|
2714 |
|
2936 |
newOption = newOption.replace( new RegExp( '-' + oldKey + '"', 'g' ), '-' + optKey + '"' );
|
2937 |
newOption = newOption.replace( new RegExp( '\\[' + oldKey + '\\]', 'g' ), '[' + optKey + ']' );
|
2938 |
newOption = newOption.replace( 'frm_hidden frm_option_template', '' );
|
2939 |
+
newOption = { newOption };
|
2940 |
+
addSaveAndDragIconsToOption( fieldId, newOption );
|
2941 |
+
jQuery( document.getElementById( 'frm_field_' + fieldId + '_opts' ) ).append( newOption.newOption );
|
2942 |
resetDisplayedOpts( fieldId );
|
2943 |
}
|
2944 |
}
|
5213 |
}
|
5214 |
|
5215 |
const container = document.getElementById( 'frm_field_' + fieldId + '_opts' );
|
5216 |
+
const conflicts = Array.from( container.querySelectorAll( 'input[type="text"]' ) ).filter(
|
5217 |
+
input => input.id !== targetInput.id &&
|
5218 |
+
areValuesSeparate === input.name.endsWith( '[value]' ) &&
|
5219 |
+
input.value === targetInput.value
|
5220 |
);
|
5221 |
+
if ( conflicts.length ) {
|
5222 |
+
infoModal( __( 'Duplicate option value "%s" detected', 'formidable' ).replace( '%s', targetInput.value ) );
|
|
|
|
|
|
|
|
|
|
|
5223 |
}
|
5224 |
}
|
5225 |
|
5759 |
}
|
5760 |
|
5761 |
// If one click upgrade, hide other content
|
5762 |
+
addOneClick( element, 'modal', upgradeLabel );
|
5763 |
|
5764 |
+
modal.querySelector( '.frm_are_not_installed' ).style.display = element.dataset.image ? 'none' : 'inline-block';
|
5765 |
modal.querySelector( '.frm_feature_label' ).textContent = upgradeLabel;
|
5766 |
modal.querySelector( 'h2' ).style.display = 'block';
|
5767 |
|
5768 |
$info.dialog( 'open' );
|
5769 |
|
5770 |
// set the utm medium
|
5771 |
+
const button = modal.querySelector( '.button-primary:not(.frm-oneclick-button)' );
|
5772 |
link = button.getAttribute( 'href' ).replace( /(medium=)[a-z_-]+/ig, '$1' + element.getAttribute( 'data-medium' ) );
|
5773 |
content = element.getAttribute( 'data-content' );
|
5774 |
if ( content === null ) {
|
5804 |
|
5805 |
function populateUpgradeTab( element ) {
|
5806 |
const title = element.dataset.upgrade;
|
|
|
|
|
|
|
|
|
|
|
|
|
5807 |
|
5808 |
const tab = element.getAttribute( 'href' ).replace( '#', '' );
|
5809 |
const container = document.querySelector( '.frm_' + tab ) || document.querySelector( '.' + tab );
|
5812 |
return;
|
5813 |
}
|
5814 |
|
5815 |
+
if ( container.querySelector( '.frm-upgrade-message' ) ) {
|
5816 |
// Tab has already been populated.
|
5817 |
return;
|
5818 |
}
|
5824 |
h2.textContent = __( '%s are not installed' ).replace( '%s', title );
|
5825 |
|
5826 |
container.classList.add( 'frmcenter' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5827 |
|
5828 |
+
const upgradeModal = document.getElementById( 'frm_upgrade_modal' );
|
5829 |
+
appendClonedModalElementToContainer( 'frm-oneclick' );
|
5830 |
+
appendClonedModalElementToContainer( 'frm-addon-status' );
|
5831 |
|
5832 |
+
// Borrow the call to action from the Upgrade upgradeModal which should exist on the settings page (it is still used for other upgrades including Actions).
|
5833 |
+
const upgradeModalLink = upgradeModal.querySelector( '.frm-upgrade-link' );
|
5834 |
if ( upgradeModalLink ) {
|
5835 |
const upgradeButton = upgradeModalLink.cloneNode( true );
|
5836 |
+
const level = upgradeButton.querySelector( '.license-level' );
|
|
|
|
|
5837 |
|
5838 |
if ( level ) {
|
5839 |
level.textContent = getRequiredLicenseFromTrigger( element );
|
5841 |
|
5842 |
container.appendChild( upgradeButton );
|
5843 |
|
5844 |
+
// Maybe append the secondary "Already purchased?" link from the upgradeModal as well.
|
5845 |
if ( upgradeModalLink.nextElementSibling && upgradeModalLink.nextElementSibling.querySelector( '.frm-link-secondary' ) ) {
|
5846 |
container.appendChild( upgradeModalLink.nextElementSibling.cloneNode( true ) );
|
5847 |
}
|
5848 |
|
5849 |
+
appendClonedModalElementToContainer( 'frm-oneclick-button' );
|
|
|
|
|
|
|
5850 |
}
|
5851 |
|
5852 |
+
appendClonedModalElementToContainer( 'frm-upgrade-message' );
|
5853 |
+
addOneClick( element, 'tab', element.dataset.message );
|
5854 |
+
|
5855 |
if ( element.dataset.screenshot ) {
|
5856 |
container.appendChild( getScreenshotWrapper( element.dataset.screenshot ) );
|
5857 |
}
|
5858 |
+
|
5859 |
+
function appendClonedModalElementToContainer( className ) {
|
5860 |
+
container.appendChild( upgradeModal.querySelector( '.' + className ).cloneNode( true ) );
|
5861 |
+
}
|
5862 |
}
|
5863 |
|
5864 |
function getScreenshotWrapper( screenshot ) {
|
5895 |
|
5896 |
/**
|
5897 |
* Allow addons to be installed from the upgrade modal.
|
5898 |
+
*
|
5899 |
+
* @param {Element} link
|
5900 |
+
* @param {String} context Either 'modal' or 'tab'.
|
5901 |
+
* @param {String|undefined} upgradeLabel
|
5902 |
*/
|
5903 |
+
function addOneClick( link, context, upgradeLabel ) {
|
5904 |
+
let container;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5905 |
|
5906 |
+
if ( 'modal' === context ) {
|
5907 |
+
container = document.getElementById( 'frm_upgrade_modal' );
|
5908 |
+
} else if ( 'tab' === context ) {
|
5909 |
+
container = document.getElementById( link.getAttribute( 'href' ).substr( 1 ) );
|
5910 |
+
} else {
|
5911 |
+
return;
|
5912 |
}
|
5913 |
|
5914 |
+
const oneclickMessage = container.querySelector( '.frm-oneclick' );
|
5915 |
+
const upgradeMessage = container.querySelector( '.frm-upgrade-message' );
|
5916 |
+
const showLink = container.querySelector( '.frm-upgrade-link' );
|
5917 |
+
const button = container.querySelector( '.frm-oneclick-button' );
|
5918 |
+
const addonStatus = container.querySelector( '.frm-addon-status' );
|
5919 |
+
|
5920 |
+
let oneclick = link.getAttribute( 'data-oneclick' );
|
5921 |
+
let newMessage = link.getAttribute( 'data-message' );
|
5922 |
+
let showIt = 'block';
|
5923 |
+
let showMsg = 'block';
|
5924 |
+
let hideIt = 'none';
|
5925 |
+
|
5926 |
// If one click upgrade, hide other content.
|
5927 |
if ( oneclickMessage !== null && typeof oneclick !== 'undefined' && oneclick ) {
|
5928 |
if ( newMessage === null ) {
|
5932 |
hideIt = 'block';
|
5933 |
oneclick = JSON.parse( oneclick );
|
5934 |
|
5935 |
+
button.className = button.className.replace( ' frm-install-addon', '' ).replace( ' frm-activate-addon', '' );
|
5936 |
+
button.className = button.className + ' ' + oneclick.class;
|
5937 |
+
button.textContent = __( 'Activate', 'formidable' );
|
5938 |
button.rel = oneclick.url;
|
5939 |
}
|
5940 |
|
5941 |
+
if ( ! newMessage ) {
|
|
|
5942 |
newMessage = upgradeMessage.getAttribute( 'data-default' );
|
5943 |
}
|
5944 |
+
if ( undefined !== upgradeLabel ) {
|
5945 |
+
newMessage = newMessage.replace( '<span class="frm_feature_label"></span>', upgradeLabel );
|
5946 |
+
}
|
5947 |
+
|
5948 |
upgradeMessage.innerHTML = newMessage;
|
5949 |
|
5950 |
// Either set the link or use the default.
|
5951 |
+
showLink.href = getShowLinkHrefValue( link, showLink );
|
5952 |
+
|
5953 |
+
addonStatus.style.display = 'none';
|
|
|
5954 |
|
|
|
5955 |
oneclickMessage.style.display = hideIt;
|
5956 |
button.style.display = hideIt === 'block' ? 'inline-block' : hideIt;
|
5957 |
upgradeMessage.style.display = showMsg;
|
5958 |
showLink.style.display = showIt === 'block' ? 'inline-block' : showIt;
|
5959 |
}
|
5960 |
|
5961 |
+
function getShowLinkHrefValue( link, showLink ) {
|
5962 |
+
let customLink = link.getAttribute( 'data-link' );
|
5963 |
+
if ( customLink === null || typeof customLink === 'undefined' || customLink === '' ) {
|
5964 |
+
customLink = showLink.getAttribute( 'data-default' );
|
5965 |
+
}
|
5966 |
+
return customLink;
|
5967 |
+
}
|
5968 |
+
|
5969 |
/* Form settings */
|
5970 |
|
5971 |
function showInputIcon( parentClass ) {
|
7938 |
}
|
7939 |
|
7940 |
function installOrActivate( clicked, action ) {
|
7941 |
+
let button, plugin, el, message;
|
7942 |
|
7943 |
// Remove any leftover error messages, output an icon and get the plugin basename that needs to be activated.
|
7944 |
jQuery( '.frm-addon-error' ).remove();
|
7945 |
+
button = jQuery( clicked );
|
7946 |
+
plugin = button.attr( 'rel' );
|
7947 |
+
el = button.parent();
|
7948 |
message = el.parent().find( '.addon-status-label' );
|
7949 |
|
7950 |
button.addClass( 'frm_loading_button' );
|
7962 |
plugin: plugin
|
7963 |
},
|
7964 |
success: function( response ) {
|
7965 |
+
let saveAndReload;
|
7966 |
|
7967 |
if ( 'string' !== typeof response && 'string' === typeof response.message ) {
|
7968 |
if ( 'undefined' !== typeof response.saveAndReload ) {
|
7971 |
response = response.message;
|
7972 |
}
|
7973 |
|
7974 |
+
const error = extractErrorFromAddOnResponse( response );
|
|
|
7975 |
if ( error ) {
|
7976 |
addonError( error, el, button );
|
7977 |
return;
|
7990 |
e.preventDefault();
|
7991 |
|
7992 |
// Now let's make another Ajax request once the user has submitted their credentials.
|
7993 |
+
const proceed = jQuery( this );
|
7994 |
+
const el = proceed.parent().parent();
|
7995 |
+
const plugin = proceed.attr( 'rel' );
|
7996 |
|
7997 |
proceed.addClass( 'frm_loading_button' );
|
7998 |
|
8011 |
password: el.find( '#password' ).val()
|
8012 |
},
|
8013 |
success: function( response ) {
|
8014 |
+
const error = extractErrorFromAddOnResponse( response );
|
|
|
8015 |
if ( error ) {
|
8016 |
addonError( error, el, proceed );
|
8017 |
return;
|
8025 |
});
|
8026 |
}
|
8027 |
|
8028 |
+
/**
|
8029 |
+
* TODO stop addressing oneclick stuff by ID as this may happen in a tab as well.
|
8030 |
+
*/
|
8031 |
function afterAddonInstall( response, button, message, el, saveAndReload ) {
|
8032 |
+
const addonStatuses = document.querySelectorAll( '.frm-addon-status' );
|
8033 |
+
addonStatuses.forEach(
|
8034 |
+
addonStatus => {
|
8035 |
+
addonStatus.textContent = response;
|
8036 |
+
addonStatus.style.display = 'block';
|
8037 |
+
}
|
8038 |
+
);
|
8039 |
|
|
|
8040 |
// The Ajax request was successful, so let's update the output.
|
8041 |
button.css({ opacity: '0' });
|
8042 |
message.text( frm_admin_js.active );
|
8043 |
+
|
8044 |
+
document.querySelectorAll( '.frm-oneclick' ).forEach(
|
8045 |
+
oneClick => {
|
8046 |
+
oneClick.style.display = 'none';
|
8047 |
+
}
|
8048 |
+
);
|
8049 |
+
|
8050 |
jQuery( '#frm_upgrade_modal h2' ).hide();
|
8051 |
jQuery( '#frm_upgrade_modal .frm_lock_icon' ).addClass( 'frm_lock_open_icon' );
|
8052 |
jQuery( '#frm_upgrade_modal .frm_lock_icon use' ).attr( 'xlink:href', '#frm_lock_open_icon' );
|
8056 |
button.removeClass( 'frm_loading_button' );
|
8057 |
|
8058 |
// Maybe refresh import and SMTP pages
|
8059 |
+
const refreshPage = document.querySelectorAll( '.frm-admin-page-import, #frm-admin-smtp, #frm-welcome' );
|
8060 |
if ( refreshPage.length > 0 ) {
|
8061 |
window.location.reload();
|
8062 |
+
return;
|
8063 |
+
}
|
8064 |
+
|
8065 |
+
if ([ 'settings', 'form_builder' ].includes( saveAndReload ) ) {
|
8066 |
+
addonStatuses.forEach(
|
8067 |
+
addonStatus => {
|
8068 |
+
const inModal = null !== addonStatus.closest( '#frm_upgrade_modal' );
|
8069 |
+
addonStatus.appendChild( getSaveAndReloadSettingsOptions( saveAndReload, inModal ) );
|
8070 |
+
}
|
8071 |
+
);
|
8072 |
}
|
8073 |
}
|
8074 |
|
8075 |
+
function getSaveAndReloadSettingsOptions( saveAndReload, inModal ) {
|
8076 |
+
const className = 'frm-save-and-reload-options';
|
8077 |
+
const children = [ saveAndReloadSettingsButton( saveAndReload ) ];
|
8078 |
+
if ( inModal ) {
|
8079 |
+
children.push( closePopupButton() );
|
8080 |
+
}
|
8081 |
+
return div({ className, children });
|
8082 |
}
|
8083 |
|
8084 |
function saveAndReloadSettingsButton( saveAndReload ) {
|
8085 |
var button = document.createElement( 'button' );
|
8086 |
+
button.classList.add( 'frm-save-and-reload', 'button', 'button-primary', 'frm-button-primary' );
|
|
|
8087 |
button.textContent = __( 'Save and Reload', 'formidable' );
|
8088 |
button.addEventListener( 'click', () => {
|
8089 |
if ( saveAndReload === 'form_builder' ) {
|
9140 |
return frmDom.util.debounce( func, wait );
|
9141 |
}
|
9142 |
|
9143 |
+
function addSaveAndDragIconsToOption( fieldId, liObject ) {
|
9144 |
+
let li, useTag, useTagHref;
|
9145 |
+
let hasDragIcon = false;
|
9146 |
+
let hasSaveIcon = false;
|
9147 |
+
|
9148 |
+
if ( liObject.newOption ) {
|
9149 |
+
const parser = new DOMParser();
|
9150 |
+
li = parser.parseFromString( liObject.newOption, 'text/html' ).body.childNodes[0];
|
9151 |
+
} else {
|
9152 |
+
li = liObject;
|
9153 |
+
}
|
9154 |
+
|
9155 |
+
const liIcons = li.querySelectorAll( 'svg' );
|
9156 |
+
|
9157 |
+
liIcons.forEach( ( svg, key ) => {
|
9158 |
+
useTag = svg.getElementsByTagNameNS( 'http://www.w3.org/2000/svg', 'use' )[0];
|
9159 |
+
if ( ! useTag ) {
|
9160 |
+
return;
|
9161 |
+
}
|
9162 |
+
useTagHref = useTag.getAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ) || useTag.getAttribute( 'href' );
|
9163 |
+
|
9164 |
+
if ( useTagHref === '#frm_drag_icon' ) {
|
9165 |
+
hasDragIcon = true;
|
9166 |
+
}
|
9167 |
+
|
9168 |
+
if ( useTagHref === '#frm_save_icon' ) {
|
9169 |
+
hasSaveIcon = true;
|
9170 |
+
}
|
9171 |
+
});
|
9172 |
+
|
9173 |
+
if ( ! hasDragIcon ) {
|
9174 |
+
li.prepend( icons.drag.cloneNode( true ) );
|
9175 |
+
}
|
9176 |
+
|
9177 |
+
if ( li.querySelector( `[id^=field_key_${fieldId}-]` ) && ! hasSaveIcon ) {
|
9178 |
+
li.querySelector( `[id^=field_key_${fieldId}-]` ).after( icons.save.cloneNode( true ) );
|
9179 |
+
}
|
9180 |
+
|
9181 |
+
if ( liObject.newOption ) {
|
9182 |
+
liObject.newOption = li;
|
9183 |
+
}
|
9184 |
+
}
|
9185 |
+
|
9186 |
+
function maybeAddSaveAndDragIcons( fieldId ) {
|
9187 |
+
fieldOptions = document.querySelectorAll( `[id^=frm_delete_field_${fieldId}-]` );
|
9188 |
+
// return if there are no options.
|
9189 |
+
if ( fieldOptions.length < 2 ) {
|
9190 |
+
return;
|
9191 |
+
}
|
9192 |
+
|
9193 |
+
let options = [ ...fieldOptions ].slice( 1 );
|
9194 |
+
options.forEach( ( li, _key ) => {
|
9195 |
+
if ( li.classList.contains( 'frm_other_option' ) ) {
|
9196 |
+
return;
|
9197 |
+
}
|
9198 |
+
addSaveAndDragIconsToOption( fieldId, li );
|
9199 |
+
});
|
9200 |
+
}
|
9201 |
+
|
9202 |
/**
|
9203 |
* Does the same as jQuery( document ).on( 'event', 'selector', handler ).
|
9204 |
*
|
9390 |
return [ formId, formKey ];
|
9391 |
}
|
9392 |
);
|
9393 |
+
|
9394 |
+
document.querySelectorAll( '#frm-show-fields > li, .frm_grid_container li' ).forEach( ( el, _key ) => {
|
9395 |
+
el.addEventListener( 'click', function() {
|
9396 |
+
let fieldId = this.querySelector( 'li' )?.dataset.fid || this.dataset.fid;
|
9397 |
+
maybeAddSaveAndDragIcons( fieldId );
|
9398 |
+
});
|
9399 |
+
});
|
9400 |
},
|
9401 |
|
9402 |
buildInit: function() {
|
9451 |
jQuery( document.getElementById( 'frm-insert-fields' ) ).on( 'click', '.frm_add_field', addFieldClick );
|
9452 |
$newFields.on( 'click', '.frm_clone_field', duplicateField );
|
9453 |
$builderForm.on( 'blur', 'input[id^="frm_calc"]', checkCalculationCreatedByUser );
|
9454 |
+
$builderForm.on( 'change', 'input.frm_format_opt, input.frm_max_length_opt', toggleInvalidMsg );
|
9455 |
$builderForm.on( 'change click', '[data-changeme]', liveChanges );
|
9456 |
$builderForm.on( 'click', 'input.frm_req_field', markRequired );
|
9457 |
$builderForm.on( 'click', '.frm_mark_unique', markUnique );
|
9562 |
$formActions.on( 'click', '.frm_add_posttax_row', addPosttaxRow );
|
9563 |
$formActions.on( 'click', '.frm_toggle_cf_opts', toggleCfOpts );
|
9564 |
$formActions.on( 'click', '.frm_duplicate_form_action', copyFormAction );
|
9565 |
+
jQuery( document ).on( 'change', 'select[data-toggleclass], input[data-toggleclass]', toggleFormOpts );
|
9566 |
jQuery( '.frm_actions_list' ).on( 'click', '.frm_active_action', addFormAction );
|
9567 |
jQuery( '#frm-show-groups, #frm-hide-groups' ).on( 'click', toggleActionGroups );
|
9568 |
initiateMultiselect();
|
languages/formidable.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Formidable Forms 5.4.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-08-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: formidable\n"
|
@@ -229,7 +229,7 @@ msgid "Applications"
|
|
229 |
msgstr ""
|
230 |
|
231 |
#: classes/controllers/FrmEntriesController.php:79
|
232 |
-
#: classes/controllers/FrmFormsController.php:
|
233 |
#: classes/views/frm-entries/form.php:63
|
234 |
#: classes/views/frm-entries/sidebar-shared.php:57
|
235 |
msgid "Entry Key"
|
@@ -471,178 +471,178 @@ msgstr ""
|
|
471 |
msgid "Template was successfully updated."
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: classes/controllers/FrmFormsController.php:
|
475 |
msgid "Form was Successfully Copied"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: classes/controllers/FrmFormsController.php:
|
479 |
#: classes/controllers/FrmStylesController.php:400
|
480 |
msgid "General"
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: classes/controllers/FrmFormsController.php:
|
484 |
msgid "General Form Settings"
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: classes/controllers/FrmFormsController.php:
|
488 |
msgid "Actions & Notifications"
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: classes/controllers/FrmFormsController.php:
|
492 |
-
#: classes/controllers/FrmFormsController.php:
|
493 |
msgid "Form Permissions"
|
494 |
msgstr ""
|
495 |
|
496 |
-
#: classes/controllers/FrmFormsController.php:
|
497 |
msgid "Allow editing, protect forms and files, limit entries, and save drafts. Upgrade to get form and entry permissions."
|
498 |
msgstr ""
|
499 |
|
500 |
-
#: classes/controllers/FrmFormsController.php:
|
501 |
msgid "Form Scheduling"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: classes/controllers/FrmFormsController.php:
|
505 |
msgid "Form scheduling settings"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: classes/controllers/FrmFormsController.php:
|
509 |
msgid "Styling & Buttons"
|
510 |
msgstr ""
|
511 |
|
512 |
-
#: classes/controllers/FrmFormsController.php:
|
513 |
msgid "Form Landing Page"
|
514 |
msgstr ""
|
515 |
|
516 |
-
#: classes/controllers/FrmFormsController.php:
|
517 |
-
#: classes/controllers/FrmFormsController.php:
|
518 |
msgid "Conversational Forms"
|
519 |
msgstr ""
|
520 |
|
521 |
-
#: classes/controllers/FrmFormsController.php:
|
522 |
msgid "Ask one question at a time for automated conversations."
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: classes/controllers/FrmFormsController.php:
|
526 |
msgid "Customize HTML"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: classes/controllers/FrmFormsController.php:
|
530 |
msgid "Customize field values with the following parameters."
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: classes/controllers/FrmFormsController.php:
|
534 |
msgid "Separator"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: classes/controllers/FrmFormsController.php:
|
538 |
msgid "Use a different separator for checkbox fields"
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: classes/controllers/FrmFormsController.php:
|
542 |
msgid "Date Format"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: classes/controllers/FrmFormsController.php:
|
546 |
#: classes/views/frm-fields/back-end/settings.php:27
|
547 |
msgid "Field Label"
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: classes/controllers/FrmFormsController.php:
|
551 |
msgid "No Auto P"
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: classes/controllers/FrmFormsController.php:
|
555 |
msgid "Do not automatically add any paragraphs or line breaks"
|
556 |
msgstr ""
|
557 |
|
558 |
-
#: classes/controllers/FrmFormsController.php:
|
559 |
#: classes/models/FrmField.php:62
|
560 |
msgid "User ID"
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: classes/controllers/FrmFormsController.php:
|
564 |
msgid "First Name"
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: classes/controllers/FrmFormsController.php:
|
568 |
msgid "Last Name"
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: classes/controllers/FrmFormsController.php:
|
572 |
msgid "Display Name"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: classes/controllers/FrmFormsController.php:
|
576 |
msgid "User Login"
|
577 |
msgstr ""
|
578 |
|
579 |
-
#: classes/controllers/FrmFormsController.php:
|
580 |
#: classes/models/FrmField.php:34
|
581 |
msgid "Email"
|
582 |
msgstr ""
|
583 |
|
584 |
-
#: classes/controllers/FrmFormsController.php:
|
585 |
msgid "Avatar"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: classes/controllers/FrmFormsController.php:
|
589 |
msgid "Author Link"
|
590 |
msgstr ""
|
591 |
|
592 |
-
#: classes/controllers/FrmFormsController.php:
|
593 |
#: classes/views/frm-entries/sidebar-shared.php:51
|
594 |
msgid "Entry ID"
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: classes/controllers/FrmFormsController.php:
|
598 |
msgid "Post ID"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: classes/controllers/FrmFormsController.php:
|
602 |
msgid "User IP"
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: classes/controllers/FrmFormsController.php:
|
606 |
msgid "Entry created"
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: classes/controllers/FrmFormsController.php:
|
610 |
msgid "Entry updated"
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: classes/controllers/FrmFormsController.php:
|
614 |
msgid "Site URL"
|
615 |
msgstr ""
|
616 |
|
617 |
-
#: classes/controllers/FrmFormsController.php:
|
618 |
msgid "Site Name"
|
619 |
msgstr ""
|
620 |
|
621 |
-
#: classes/controllers/FrmFormsController.php:
|
622 |
msgid "Default Msg"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: classes/controllers/FrmFormsController.php:
|
626 |
msgid "Default HTML"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: classes/controllers/FrmFormsController.php:
|
630 |
msgid "Default Plain"
|
631 |
msgstr ""
|
632 |
|
633 |
-
#: classes/controllers/FrmFormsController.php:
|
634 |
msgid "No forms were specified"
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: classes/controllers/FrmFormsController.php:
|
638 |
msgid "There was a problem duplicating the form"
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: classes/controllers/FrmFormsController.php:
|
642 |
msgid "Abnormal HTML characters prevented your form from saving correctly"
|
643 |
msgstr ""
|
644 |
|
645 |
-
#: classes/controllers/FrmFormsController.php:
|
646 |
#: classes/helpers/FrmFormsHelper.php:57
|
647 |
#: classes/helpers/FrmFormsHelper.php:112
|
648 |
#: classes/helpers/FrmFormsHelper.php:166
|
@@ -655,21 +655,21 @@ msgstr ""
|
|
655 |
msgid "(no title)"
|
656 |
msgstr ""
|
657 |
|
658 |
-
#: classes/controllers/FrmFormsController.php:
|
659 |
-
#: classes/controllers/FrmFormsController.php:
|
660 |
msgid "Please select a valid form"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: classes/controllers/FrmFormsController.php:
|
664 |
msgid "Please wait while you are redirected."
|
665 |
msgstr ""
|
666 |
|
667 |
#. translators: %1$s: Start link HTML, %2$s: End link HTML
|
668 |
-
#: classes/controllers/FrmFormsController.php:
|
669 |
msgid "%1$sClick here%2$s if you are not automatically redirected."
|
670 |
msgstr ""
|
671 |
|
672 |
-
#: classes/controllers/FrmFormsController.php:
|
673 |
#: classes/helpers/FrmAppHelper.php:1395
|
674 |
#: classes/views/frm-forms/settings-advanced.php:93
|
675 |
msgid "Select a Page"
|
@@ -886,6 +886,7 @@ msgstr ""
|
|
886 |
#: classes/controllers/FrmSMTPController.php:322
|
887 |
#: classes/models/FrmPluginSearch.php:307
|
888 |
#: classes/views/addons/settings.php:31
|
|
|
889 |
msgid "Activate"
|
890 |
msgstr ""
|
891 |
|
@@ -1233,7 +1234,7 @@ msgstr ""
|
|
1233 |
#: classes/views/frm-forms/new-form-overlay.php:132
|
1234 |
#: classes/views/shared/admin-header.php:56
|
1235 |
#: classes/views/shared/confirm-overlay.php:19
|
1236 |
-
#: js/formidable_admin.js:
|
1237 |
msgid "Cancel"
|
1238 |
msgstr ""
|
1239 |
|
@@ -1260,7 +1261,7 @@ msgstr ""
|
|
1260 |
|
1261 |
#: classes/helpers/FrmAppHelper.php:2822
|
1262 |
#: classes/helpers/FrmListHelper.php:412
|
1263 |
-
#: js/formidable_admin.js:
|
1264 |
msgid "Heads up"
|
1265 |
msgstr ""
|
1266 |
|
@@ -1696,42 +1697,42 @@ msgstr ""
|
|
1696 |
msgid "Parent ID"
|
1697 |
msgstr ""
|
1698 |
|
1699 |
-
#: classes/helpers/FrmEntriesHelper.php:534
|
1700 |
#: classes/helpers/FrmEntriesHelper.php:535
|
|
|
1701 |
msgid "Unknown"
|
1702 |
msgstr ""
|
1703 |
|
1704 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1705 |
#: classes/views/frm-entries/show.php:12
|
1706 |
msgid "View Entry"
|
1707 |
msgstr ""
|
1708 |
|
1709 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1710 |
msgid "Delete Entry"
|
1711 |
msgstr ""
|
1712 |
|
1713 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1714 |
msgid "Delete this form entry?"
|
1715 |
msgstr ""
|
1716 |
|
1717 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1718 |
msgid "Print Entry"
|
1719 |
msgstr ""
|
1720 |
|
1721 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1722 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1723 |
msgid "Resend Emails"
|
1724 |
msgstr ""
|
1725 |
|
1726 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1727 |
msgid "Edit Entry"
|
1728 |
msgstr ""
|
1729 |
|
1730 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1731 |
msgid "Entry edits"
|
1732 |
msgstr ""
|
1733 |
|
1734 |
-
#: classes/helpers/FrmEntriesHelper.php:
|
1735 |
msgid "reCAPTCHA Score"
|
1736 |
msgstr ""
|
1737 |
|
@@ -1777,7 +1778,7 @@ msgstr ""
|
|
1777 |
#: classes/helpers/FrmFormsHelper.php:1188
|
1778 |
#: classes/helpers/FrmFormsListHelper.php:133
|
1779 |
#: classes/views/frm-form-actions/form_action.php:25
|
1780 |
-
#: js/formidable_admin.js:
|
1781 |
msgid "Delete"
|
1782 |
msgstr ""
|
1783 |
|
@@ -1789,7 +1790,7 @@ msgstr ""
|
|
1789 |
#. translators: %s: The field name.
|
1790 |
#: classes/helpers/FrmFieldsHelper.php:167
|
1791 |
#: classes/helpers/FrmFieldsHelper.php:294
|
1792 |
-
#: classes/helpers/FrmXMLHelper.php:
|
1793 |
#: classes/models/fields/FrmFieldType.php:583
|
1794 |
msgid "%s is invalid"
|
1795 |
msgstr ""
|
@@ -3656,21 +3657,21 @@ msgstr ""
|
|
3656 |
msgid "Your server is missing the simplexml_import_dom function"
|
3657 |
msgstr ""
|
3658 |
|
3659 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3660 |
#: classes/views/solutions/_import.php:51
|
3661 |
msgid "Imported"
|
3662 |
msgstr ""
|
3663 |
|
3664 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3665 |
msgid "Updated"
|
3666 |
msgstr ""
|
3667 |
|
3668 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3669 |
msgid "Nothing was imported or updated"
|
3670 |
msgstr ""
|
3671 |
|
3672 |
#. translators: %1$s: Number of items
|
3673 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3674 |
msgid "%1$s Form"
|
3675 |
msgid_plural "%1$s Forms"
|
3676 |
msgstr[0] ""
|
@@ -3678,7 +3679,7 @@ msgstr[1] ""
|
|
3678 |
|
3679 |
#. translators: %1$s: Number of items
|
3680 |
#. translators: %1$s - field type
|
3681 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3682 |
#: classes/models/FrmFormMigrator.php:584
|
3683 |
msgid "%1$s Field"
|
3684 |
msgid_plural "%1$s Fields"
|
@@ -3686,56 +3687,56 @@ msgstr[0] ""
|
|
3686 |
msgstr[1] ""
|
3687 |
|
3688 |
#. translators: %1$s: Number of items
|
3689 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3690 |
msgid "%1$s Entry"
|
3691 |
msgid_plural "%1$s Entries"
|
3692 |
msgstr[0] ""
|
3693 |
msgstr[1] ""
|
3694 |
|
3695 |
#. translators: %1$s: Number of items
|
3696 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3697 |
msgid "%1$s View"
|
3698 |
msgid_plural "%1$s Views"
|
3699 |
msgstr[0] ""
|
3700 |
msgstr[1] ""
|
3701 |
|
3702 |
#. translators: %1$s: Number of items
|
3703 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3704 |
msgid "%1$s Page/Post"
|
3705 |
msgid_plural "%1$s Pages/Posts"
|
3706 |
msgstr[0] ""
|
3707 |
msgstr[1] ""
|
3708 |
|
3709 |
#. translators: %1$s: Number of items
|
3710 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3711 |
msgid "%1$s Style"
|
3712 |
msgid_plural "%1$s Styles"
|
3713 |
msgstr[0] ""
|
3714 |
msgstr[1] ""
|
3715 |
|
3716 |
#. translators: %1$s: Number of items
|
3717 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3718 |
msgid "%1$s Term"
|
3719 |
msgid_plural "%1$s Terms"
|
3720 |
msgstr[0] ""
|
3721 |
msgstr[1] ""
|
3722 |
|
3723 |
#. translators: %1$s: Number of items
|
3724 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3725 |
msgid "%1$s Form Action"
|
3726 |
msgid_plural "%1$s Form Actions"
|
3727 |
msgstr[0] ""
|
3728 |
msgstr[1] ""
|
3729 |
|
3730 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3731 |
msgid "Go to imported form"
|
3732 |
msgstr ""
|
3733 |
|
3734 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3735 |
msgid "Create Posts"
|
3736 |
msgstr ""
|
3737 |
|
3738 |
-
#: classes/helpers/FrmXMLHelper.php:
|
3739 |
msgid "Email Notification"
|
3740 |
msgstr ""
|
3741 |
|
@@ -4100,31 +4101,31 @@ msgstr ""
|
|
4100 |
msgid "There are no options for this action."
|
4101 |
msgstr ""
|
4102 |
|
4103 |
-
#: classes/models/FrmFormAction.php:
|
4104 |
msgid "Draft is saved"
|
4105 |
msgstr ""
|
4106 |
|
4107 |
-
#: classes/models/FrmFormAction.php:
|
4108 |
msgid "Entry is created"
|
4109 |
msgstr ""
|
4110 |
|
4111 |
-
#: classes/models/FrmFormAction.php:
|
4112 |
msgid "Entry is updated"
|
4113 |
msgstr ""
|
4114 |
|
4115 |
-
#: classes/models/FrmFormAction.php:
|
4116 |
msgid "Entry is deleted"
|
4117 |
msgstr ""
|
4118 |
|
4119 |
-
#: classes/models/FrmFormAction.php:
|
4120 |
msgid "Entry is imported"
|
4121 |
msgstr ""
|
4122 |
|
4123 |
-
#: classes/models/FrmFormAction.php:
|
4124 |
msgid "Use Conditional Logic"
|
4125 |
msgstr ""
|
4126 |
|
4127 |
-
#: classes/models/FrmFormAction.php:
|
4128 |
msgid "Conditional form actions"
|
4129 |
msgstr ""
|
4130 |
|
@@ -4518,7 +4519,7 @@ msgstr ""
|
|
4518 |
#: classes/views/frm-fields/back-end/inline-modal.php:7
|
4519 |
#: classes/views/frm-fields/back-end/inline-modal.php:8
|
4520 |
#: classes/views/shared/admin-header.php:11
|
4521 |
-
#: js/formidable_admin.js:
|
4522 |
msgid "Close"
|
4523 |
msgstr ""
|
4524 |
|
@@ -4773,7 +4774,7 @@ msgstr ""
|
|
4773 |
msgid "Format"
|
4774 |
msgstr ""
|
4775 |
|
4776 |
-
#: classes/views/frm-fields/single-option.php:
|
4777 |
msgid "Saved Value"
|
4778 |
msgstr ""
|
4779 |
|
@@ -4811,7 +4812,7 @@ msgstr ""
|
|
4811 |
|
4812 |
#: classes/views/frm-form-actions/form_action.php:21
|
4813 |
#: classes/views/styles/_upsell-multiple-styles.php:15
|
4814 |
-
#: js/formidable_admin.js:
|
4815 |
msgid "Duplicate"
|
4816 |
msgstr ""
|
4817 |
|
@@ -4851,6 +4852,10 @@ msgstr ""
|
|
4851 |
msgid "Email attachments"
|
4852 |
msgstr ""
|
4853 |
|
|
|
|
|
|
|
|
|
4854 |
#: classes/views/frm-form-actions/_action_inside.php:72
|
4855 |
msgid "Attachment"
|
4856 |
msgstr ""
|
@@ -4936,9 +4941,9 @@ msgid "Move Field"
|
|
4936 |
msgstr ""
|
4937 |
|
4938 |
#: classes/views/frm-forms/add_field.php:29
|
4939 |
-
#: js/formidable_admin.js:
|
4940 |
-
#: js/formidable_admin.js:
|
4941 |
-
#: js/formidable_admin.js:
|
4942 |
msgid "More Options"
|
4943 |
msgstr ""
|
4944 |
|
@@ -6475,71 +6480,71 @@ msgstr ""
|
|
6475 |
msgid "Successfully copied embed example"
|
6476 |
msgstr ""
|
6477 |
|
6478 |
-
#: js/formidable_admin.js:
|
6479 |
msgid "Set Row Layout"
|
6480 |
msgstr ""
|
6481 |
|
6482 |
-
#: js/formidable_admin.js:
|
6483 |
msgid "Move Field Group"
|
6484 |
msgstr ""
|
6485 |
|
6486 |
-
#: js/formidable_admin.js:
|
6487 |
msgid "Field settings"
|
6488 |
msgstr ""
|
6489 |
|
6490 |
-
#: js/formidable_admin.js:
|
6491 |
msgid "Delete Group"
|
6492 |
msgstr ""
|
6493 |
|
6494 |
-
#: js/formidable_admin.js:
|
6495 |
msgid "Duplicate Group"
|
6496 |
msgstr ""
|
6497 |
|
6498 |
-
#: js/formidable_admin.js:
|
6499 |
msgid "Custom layout"
|
6500 |
msgstr ""
|
6501 |
|
6502 |
-
#: js/formidable_admin.js:
|
6503 |
msgid "Break into rows"
|
6504 |
msgstr ""
|
6505 |
|
6506 |
-
#: js/formidable_admin.js:
|
6507 |
msgid "Row Layout"
|
6508 |
msgstr ""
|
6509 |
|
6510 |
-
#: js/formidable_admin.js:
|
6511 |
msgid "Enter number of columns for each field"
|
6512 |
msgstr ""
|
6513 |
|
6514 |
-
#: js/formidable_admin.js:
|
6515 |
msgid "Layouts are based on a 12-column grid system"
|
6516 |
msgstr ""
|
6517 |
|
6518 |
-
#: js/formidable_admin.js:
|
6519 |
msgid "Save"
|
6520 |
msgstr ""
|
6521 |
|
6522 |
-
#: js/formidable_admin.js:
|
6523 |
msgid "Merge into row"
|
6524 |
msgstr ""
|
6525 |
|
6526 |
#. translators: %1$s: Number of fields that are selected to be deleted.
|
6527 |
-
#: js/formidable_admin.js:
|
6528 |
msgid "Are you sure you want to delete these %1$s selected fields?"
|
6529 |
msgstr ""
|
6530 |
|
6531 |
-
#: js/formidable_admin.js:
|
6532 |
msgid "Duplicate option value \"%s\" detected"
|
6533 |
msgstr ""
|
6534 |
|
6535 |
-
#: js/formidable_admin.js:
|
6536 |
msgid "Ready Made Solution"
|
6537 |
msgstr ""
|
6538 |
|
6539 |
-
#: js/formidable_admin.js:
|
6540 |
msgid "Check all applications"
|
6541 |
msgstr ""
|
6542 |
|
6543 |
-
#: js/formidable_admin.js:
|
6544 |
msgid "Save and Reload"
|
6545 |
msgstr ""
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Formidable Forms 5.4.4\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-08-17T18:16:35+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: formidable\n"
|
229 |
msgstr ""
|
230 |
|
231 |
#: classes/controllers/FrmEntriesController.php:79
|
232 |
+
#: classes/controllers/FrmFormsController.php:1427
|
233 |
#: classes/views/frm-entries/form.php:63
|
234 |
#: classes/views/frm-entries/sidebar-shared.php:57
|
235 |
msgid "Entry Key"
|
471 |
msgid "Template was successfully updated."
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: classes/controllers/FrmFormsController.php:1083
|
475 |
msgid "Form was Successfully Copied"
|
476 |
msgstr ""
|
477 |
|
478 |
+
#: classes/controllers/FrmFormsController.php:1148
|
479 |
#: classes/controllers/FrmStylesController.php:400
|
480 |
msgid "General"
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: classes/controllers/FrmFormsController.php:1149
|
484 |
msgid "General Form Settings"
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: classes/controllers/FrmFormsController.php:1154
|
488 |
msgid "Actions & Notifications"
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: classes/controllers/FrmFormsController.php:1160
|
492 |
+
#: classes/controllers/FrmFormsController.php:1165
|
493 |
msgid "Form Permissions"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: classes/controllers/FrmFormsController.php:1166
|
497 |
msgid "Allow editing, protect forms and files, limit entries, and save drafts. Upgrade to get form and entry permissions."
|
498 |
msgstr ""
|
499 |
|
500 |
+
#: classes/controllers/FrmFormsController.php:1171
|
501 |
msgid "Form Scheduling"
|
502 |
msgstr ""
|
503 |
|
504 |
+
#: classes/controllers/FrmFormsController.php:1176
|
505 |
msgid "Form scheduling settings"
|
506 |
msgstr ""
|
507 |
|
508 |
+
#: classes/controllers/FrmFormsController.php:1181
|
509 |
msgid "Styling & Buttons"
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: classes/controllers/FrmFormsController.php:1187
|
513 |
msgid "Form Landing Page"
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: classes/controllers/FrmFormsController.php:1193
|
517 |
+
#: classes/controllers/FrmFormsController.php:1199
|
518 |
msgid "Conversational Forms"
|
519 |
msgstr ""
|
520 |
|
521 |
+
#: classes/controllers/FrmFormsController.php:1200
|
522 |
msgid "Ask one question at a time for automated conversations."
|
523 |
msgstr ""
|
524 |
|
525 |
+
#: classes/controllers/FrmFormsController.php:1206
|
526 |
msgid "Customize HTML"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: classes/controllers/FrmFormsController.php:1342
|
530 |
msgid "Customize field values with the following parameters."
|
531 |
msgstr ""
|
532 |
|
533 |
+
#: classes/controllers/FrmFormsController.php:1380
|
534 |
msgid "Separator"
|
535 |
msgstr ""
|
536 |
|
537 |
+
#: classes/controllers/FrmFormsController.php:1381
|
538 |
msgid "Use a different separator for checkbox fields"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: classes/controllers/FrmFormsController.php:1384
|
542 |
msgid "Date Format"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: classes/controllers/FrmFormsController.php:1387
|
546 |
#: classes/views/frm-fields/back-end/settings.php:27
|
547 |
msgid "Field Label"
|
548 |
msgstr ""
|
549 |
|
550 |
+
#: classes/controllers/FrmFormsController.php:1390
|
551 |
msgid "No Auto P"
|
552 |
msgstr ""
|
553 |
|
554 |
+
#: classes/controllers/FrmFormsController.php:1391
|
555 |
msgid "Do not automatically add any paragraphs or line breaks"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: classes/controllers/FrmFormsController.php:1406
|
559 |
#: classes/models/FrmField.php:62
|
560 |
msgid "User ID"
|
561 |
msgstr ""
|
562 |
|
563 |
+
#: classes/controllers/FrmFormsController.php:1407
|
564 |
msgid "First Name"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: classes/controllers/FrmFormsController.php:1408
|
568 |
msgid "Last Name"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: classes/controllers/FrmFormsController.php:1409
|
572 |
msgid "Display Name"
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: classes/controllers/FrmFormsController.php:1410
|
576 |
msgid "User Login"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: classes/controllers/FrmFormsController.php:1411
|
580 |
#: classes/models/FrmField.php:34
|
581 |
msgid "Email"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: classes/controllers/FrmFormsController.php:1412
|
585 |
msgid "Avatar"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: classes/controllers/FrmFormsController.php:1413
|
589 |
msgid "Author Link"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: classes/controllers/FrmFormsController.php:1426
|
593 |
#: classes/views/frm-entries/sidebar-shared.php:51
|
594 |
msgid "Entry ID"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: classes/controllers/FrmFormsController.php:1428
|
598 |
msgid "Post ID"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: classes/controllers/FrmFormsController.php:1429
|
602 |
msgid "User IP"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: classes/controllers/FrmFormsController.php:1430
|
606 |
msgid "Entry created"
|
607 |
msgstr ""
|
608 |
|
609 |
+
#: classes/controllers/FrmFormsController.php:1431
|
610 |
msgid "Entry updated"
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: classes/controllers/FrmFormsController.php:1433
|
614 |
msgid "Site URL"
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: classes/controllers/FrmFormsController.php:1434
|
618 |
msgid "Site Name"
|
619 |
msgstr ""
|
620 |
|
621 |
+
#: classes/controllers/FrmFormsController.php:1442
|
622 |
msgid "Default Msg"
|
623 |
msgstr ""
|
624 |
|
625 |
+
#: classes/controllers/FrmFormsController.php:1443
|
626 |
msgid "Default HTML"
|
627 |
msgstr ""
|
628 |
|
629 |
+
#: classes/controllers/FrmFormsController.php:1444
|
630 |
msgid "Default Plain"
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: classes/controllers/FrmFormsController.php:1547
|
634 |
msgid "No forms were specified"
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: classes/controllers/FrmFormsController.php:1656
|
638 |
msgid "There was a problem duplicating the form"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: classes/controllers/FrmFormsController.php:1667
|
642 |
msgid "Abnormal HTML characters prevented your form from saving correctly"
|
643 |
msgstr ""
|
644 |
|
645 |
+
#: classes/controllers/FrmFormsController.php:1782
|
646 |
#: classes/helpers/FrmFormsHelper.php:57
|
647 |
#: classes/helpers/FrmFormsHelper.php:112
|
648 |
#: classes/helpers/FrmFormsHelper.php:166
|
655 |
msgid "(no title)"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: classes/controllers/FrmFormsController.php:1848
|
659 |
+
#: classes/controllers/FrmFormsController.php:1870
|
660 |
msgid "Please select a valid form"
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: classes/controllers/FrmFormsController.php:2104
|
664 |
msgid "Please wait while you are redirected."
|
665 |
msgstr ""
|
666 |
|
667 |
#. translators: %1$s: Start link HTML, %2$s: End link HTML
|
668 |
+
#: classes/controllers/FrmFormsController.php:2139
|
669 |
msgid "%1$sClick here%2$s if you are not automatically redirected."
|
670 |
msgstr ""
|
671 |
|
672 |
+
#: classes/controllers/FrmFormsController.php:2499
|
673 |
#: classes/helpers/FrmAppHelper.php:1395
|
674 |
#: classes/views/frm-forms/settings-advanced.php:93
|
675 |
msgid "Select a Page"
|
886 |
#: classes/controllers/FrmSMTPController.php:322
|
887 |
#: classes/models/FrmPluginSearch.php:307
|
888 |
#: classes/views/addons/settings.php:31
|
889 |
+
#: js/formidable_admin.js:5937
|
890 |
msgid "Activate"
|
891 |
msgstr ""
|
892 |
|
1234 |
#: classes/views/frm-forms/new-form-overlay.php:132
|
1235 |
#: classes/views/shared/admin-header.php:56
|
1236 |
#: classes/views/shared/confirm-overlay.php:19
|
1237 |
+
#: js/formidable_admin.js:3701
|
1238 |
msgid "Cancel"
|
1239 |
msgstr ""
|
1240 |
|
1261 |
|
1262 |
#: classes/helpers/FrmAppHelper.php:2822
|
1263 |
#: classes/helpers/FrmListHelper.php:412
|
1264 |
+
#: js/formidable_admin.js:4093
|
1265 |
msgid "Heads up"
|
1266 |
msgstr ""
|
1267 |
|
1697 |
msgid "Parent ID"
|
1698 |
msgstr ""
|
1699 |
|
|
|
1700 |
#: classes/helpers/FrmEntriesHelper.php:535
|
1701 |
+
#: classes/helpers/FrmEntriesHelper.php:536
|
1702 |
msgid "Unknown"
|
1703 |
msgstr ""
|
1704 |
|
1705 |
+
#: classes/helpers/FrmEntriesHelper.php:645
|
1706 |
#: classes/views/frm-entries/show.php:12
|
1707 |
msgid "View Entry"
|
1708 |
msgstr ""
|
1709 |
|
1710 |
+
#: classes/helpers/FrmEntriesHelper.php:653
|
1711 |
msgid "Delete Entry"
|
1712 |
msgstr ""
|
1713 |
|
1714 |
+
#: classes/helpers/FrmEntriesHelper.php:656
|
1715 |
msgid "Delete this form entry?"
|
1716 |
msgstr ""
|
1717 |
|
1718 |
+
#: classes/helpers/FrmEntriesHelper.php:664
|
1719 |
msgid "Print Entry"
|
1720 |
msgstr ""
|
1721 |
|
1722 |
+
#: classes/helpers/FrmEntriesHelper.php:674
|
1723 |
+
#: classes/helpers/FrmEntriesHelper.php:677
|
1724 |
msgid "Resend Emails"
|
1725 |
msgstr ""
|
1726 |
|
1727 |
+
#: classes/helpers/FrmEntriesHelper.php:686
|
1728 |
msgid "Edit Entry"
|
1729 |
msgstr ""
|
1730 |
|
1731 |
+
#: classes/helpers/FrmEntriesHelper.php:689
|
1732 |
msgid "Entry edits"
|
1733 |
msgstr ""
|
1734 |
|
1735 |
+
#: classes/helpers/FrmEntriesHelper.php:715
|
1736 |
msgid "reCAPTCHA Score"
|
1737 |
msgstr ""
|
1738 |
|
1778 |
#: classes/helpers/FrmFormsHelper.php:1188
|
1779 |
#: classes/helpers/FrmFormsListHelper.php:133
|
1780 |
#: classes/views/frm-form-actions/form_action.php:25
|
1781 |
+
#: js/formidable_admin.js:2070
|
1782 |
msgid "Delete"
|
1783 |
msgstr ""
|
1784 |
|
1790 |
#. translators: %s: The field name.
|
1791 |
#: classes/helpers/FrmFieldsHelper.php:167
|
1792 |
#: classes/helpers/FrmFieldsHelper.php:294
|
1793 |
+
#: classes/helpers/FrmXMLHelper.php:1394
|
1794 |
#: classes/models/fields/FrmFieldType.php:583
|
1795 |
msgid "%s is invalid"
|
1796 |
msgstr ""
|
3657 |
msgid "Your server is missing the simplexml_import_dom function"
|
3658 |
msgstr ""
|
3659 |
|
3660 |
+
#: classes/helpers/FrmXMLHelper.php:1207
|
3661 |
#: classes/views/solutions/_import.php:51
|
3662 |
msgid "Imported"
|
3663 |
msgstr ""
|
3664 |
|
3665 |
+
#: classes/helpers/FrmXMLHelper.php:1208
|
3666 |
msgid "Updated"
|
3667 |
msgstr ""
|
3668 |
|
3669 |
+
#: classes/helpers/FrmXMLHelper.php:1233
|
3670 |
msgid "Nothing was imported or updated"
|
3671 |
msgstr ""
|
3672 |
|
3673 |
#. translators: %1$s: Number of items
|
3674 |
+
#: classes/helpers/FrmXMLHelper.php:1260
|
3675 |
msgid "%1$s Form"
|
3676 |
msgid_plural "%1$s Forms"
|
3677 |
msgstr[0] ""
|
3679 |
|
3680 |
#. translators: %1$s: Number of items
|
3681 |
#. translators: %1$s - field type
|
3682 |
+
#: classes/helpers/FrmXMLHelper.php:1262
|
3683 |
#: classes/models/FrmFormMigrator.php:584
|
3684 |
msgid "%1$s Field"
|
3685 |
msgid_plural "%1$s Fields"
|
3687 |
msgstr[1] ""
|
3688 |
|
3689 |
#. translators: %1$s: Number of items
|
3690 |
+
#: classes/helpers/FrmXMLHelper.php:1264
|
3691 |
msgid "%1$s Entry"
|
3692 |
msgid_plural "%1$s Entries"
|
3693 |
msgstr[0] ""
|
3694 |
msgstr[1] ""
|
3695 |
|
3696 |
#. translators: %1$s: Number of items
|
3697 |
+
#: classes/helpers/FrmXMLHelper.php:1266
|
3698 |
msgid "%1$s View"
|
3699 |
msgid_plural "%1$s Views"
|
3700 |
msgstr[0] ""
|
3701 |
msgstr[1] ""
|
3702 |
|
3703 |
#. translators: %1$s: Number of items
|
3704 |
+
#: classes/helpers/FrmXMLHelper.php:1268
|
3705 |
msgid "%1$s Page/Post"
|
3706 |
msgid_plural "%1$s Pages/Posts"
|
3707 |
msgstr[0] ""
|
3708 |
msgstr[1] ""
|
3709 |
|
3710 |
#. translators: %1$s: Number of items
|
3711 |
+
#: classes/helpers/FrmXMLHelper.php:1270
|
3712 |
msgid "%1$s Style"
|
3713 |
msgid_plural "%1$s Styles"
|
3714 |
msgstr[0] ""
|
3715 |
msgstr[1] ""
|
3716 |
|
3717 |
#. translators: %1$s: Number of items
|
3718 |
+
#: classes/helpers/FrmXMLHelper.php:1272
|
3719 |
msgid "%1$s Term"
|
3720 |
msgid_plural "%1$s Terms"
|
3721 |
msgstr[0] ""
|
3722 |
msgstr[1] ""
|
3723 |
|
3724 |
#. translators: %1$s: Number of items
|
3725 |
+
#: classes/helpers/FrmXMLHelper.php:1274
|
3726 |
msgid "%1$s Form Action"
|
3727 |
msgid_plural "%1$s Form Actions"
|
3728 |
msgstr[0] ""
|
3729 |
msgstr[1] ""
|
3730 |
|
3731 |
+
#: classes/helpers/FrmXMLHelper.php:1312
|
3732 |
msgid "Go to imported form"
|
3733 |
msgstr ""
|
3734 |
|
3735 |
+
#: classes/helpers/FrmXMLHelper.php:1513
|
3736 |
msgid "Create Posts"
|
3737 |
msgstr ""
|
3738 |
|
3739 |
+
#: classes/helpers/FrmXMLHelper.php:1642
|
3740 |
msgid "Email Notification"
|
3741 |
msgstr ""
|
3742 |
|
4101 |
msgid "There are no options for this action."
|
4102 |
msgstr ""
|
4103 |
|
4104 |
+
#: classes/models/FrmFormAction.php:852
|
4105 |
msgid "Draft is saved"
|
4106 |
msgstr ""
|
4107 |
|
4108 |
+
#: classes/models/FrmFormAction.php:853
|
4109 |
msgid "Entry is created"
|
4110 |
msgstr ""
|
4111 |
|
4112 |
+
#: classes/models/FrmFormAction.php:854
|
4113 |
msgid "Entry is updated"
|
4114 |
msgstr ""
|
4115 |
|
4116 |
+
#: classes/models/FrmFormAction.php:855
|
4117 |
msgid "Entry is deleted"
|
4118 |
msgstr ""
|
4119 |
|
4120 |
+
#: classes/models/FrmFormAction.php:856
|
4121 |
msgid "Entry is imported"
|
4122 |
msgstr ""
|
4123 |
|
4124 |
+
#: classes/models/FrmFormAction.php:866
|
4125 |
msgid "Use Conditional Logic"
|
4126 |
msgstr ""
|
4127 |
|
4128 |
+
#: classes/models/FrmFormAction.php:873
|
4129 |
msgid "Conditional form actions"
|
4130 |
msgstr ""
|
4131 |
|
4519 |
#: classes/views/frm-fields/back-end/inline-modal.php:7
|
4520 |
#: classes/views/frm-fields/back-end/inline-modal.php:8
|
4521 |
#: classes/views/shared/admin-header.php:11
|
4522 |
+
#: js/formidable_admin.js:8102
|
4523 |
msgid "Close"
|
4524 |
msgstr ""
|
4525 |
|
4774 |
msgid "Format"
|
4775 |
msgstr ""
|
4776 |
|
4777 |
+
#: classes/views/frm-fields/single-option.php:23
|
4778 |
msgid "Saved Value"
|
4779 |
msgstr ""
|
4780 |
|
4812 |
|
4813 |
#: classes/views/frm-form-actions/form_action.php:21
|
4814 |
#: classes/views/styles/_upsell-multiple-styles.php:15
|
4815 |
+
#: js/formidable_admin.js:2076
|
4816 |
msgid "Duplicate"
|
4817 |
msgstr ""
|
4818 |
|
4852 |
msgid "Email attachments"
|
4853 |
msgstr ""
|
4854 |
|
4855 |
+
#: classes/views/frm-form-actions/_action_inside.php:71
|
4856 |
+
msgid "Email a CSV or a PDF of each new entry, or attach a file of your choice."
|
4857 |
+
msgstr ""
|
4858 |
+
|
4859 |
#: classes/views/frm-form-actions/_action_inside.php:72
|
4860 |
msgid "Attachment"
|
4861 |
msgstr ""
|
4941 |
msgstr ""
|
4942 |
|
4943 |
#: classes/views/frm-forms/add_field.php:29
|
4944 |
+
#: js/formidable_admin.js:1246
|
4945 |
+
#: js/formidable_admin.js:1249
|
4946 |
+
#: js/formidable_admin.js:2014
|
4947 |
msgid "More Options"
|
4948 |
msgstr ""
|
4949 |
|
6480 |
msgid "Successfully copied embed example"
|
6481 |
msgstr ""
|
6482 |
|
6483 |
+
#: js/formidable_admin.js:1207
|
6484 |
msgid "Set Row Layout"
|
6485 |
msgstr ""
|
6486 |
|
6487 |
+
#: js/formidable_admin.js:1214
|
6488 |
msgid "Move Field Group"
|
6489 |
msgstr ""
|
6490 |
|
6491 |
+
#: js/formidable_admin.js:2042
|
6492 |
msgid "Field settings"
|
6493 |
msgstr ""
|
6494 |
|
6495 |
+
#: js/formidable_admin.js:2070
|
6496 |
msgid "Delete Group"
|
6497 |
msgstr ""
|
6498 |
|
6499 |
+
#: js/formidable_admin.js:2076
|
6500 |
msgid "Duplicate Group"
|
6501 |
msgstr ""
|
6502 |
|
6503 |
+
#: js/formidable_admin.js:3408
|
6504 |
msgid "Custom layout"
|
6505 |
msgstr ""
|
6506 |
|
6507 |
+
#: js/formidable_admin.js:3431
|
6508 |
msgid "Break into rows"
|
6509 |
msgstr ""
|
6510 |
|
6511 |
+
#: js/formidable_admin.js:3441
|
6512 |
msgid "Row Layout"
|
6513 |
msgstr ""
|
6514 |
|
6515 |
+
#: js/formidable_admin.js:3686
|
6516 |
msgid "Enter number of columns for each field"
|
6517 |
msgstr ""
|
6518 |
|
6519 |
+
#: js/formidable_admin.js:3690
|
6520 |
msgid "Layouts are based on a 12-column grid system"
|
6521 |
msgstr ""
|
6522 |
|
6523 |
+
#: js/formidable_admin.js:3706
|
6524 |
msgid "Save"
|
6525 |
msgstr ""
|
6526 |
|
6527 |
+
#: js/formidable_admin.js:4007
|
6528 |
msgid "Merge into row"
|
6529 |
msgstr ""
|
6530 |
|
6531 |
#. translators: %1$s: Number of fields that are selected to be deleted.
|
6532 |
+
#: js/formidable_admin.js:4095
|
6533 |
msgid "Are you sure you want to delete these %1$s selected fields?"
|
6534 |
msgstr ""
|
6535 |
|
6536 |
+
#: js/formidable_admin.js:5222
|
6537 |
msgid "Duplicate option value \"%s\" detected"
|
6538 |
msgstr ""
|
6539 |
|
6540 |
+
#: js/formidable_admin.js:7366
|
6541 |
msgid "Ready Made Solution"
|
6542 |
msgstr ""
|
6543 |
|
6544 |
+
#: js/formidable_admin.js:7369
|
6545 |
msgid "Check all applications"
|
6546 |
msgstr ""
|
6547 |
|
6548 |
+
#: js/formidable_admin.js:8087
|
6549 |
msgid "Save and Reload"
|
6550 |
msgstr ""
|
readme.txt
CHANGED
@@ -1,39 +1,47 @@
|
|
1 |
-
=== Formidable
|
2 |
-
Plugin Name: Formidable Forms - Contact Form, Survey & Quiz
|
3 |
Contributors: formidableforms, sswells, srwells
|
4 |
-
Tags: forms, contact form, form builder, survey, free, form maker, form creator, paypal form, paypal, stripe, stripe form, aweber, aweber form, getresponse,
|
5 |
Requires at least: 5.2
|
6 |
Tested up to: 6.0.1
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 5.4.
|
9 |
|
10 |
The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
== The Most Powerful WordPress form builder plugin on the market ==
|
15 |
-
We built <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Formidable Forms</a> to offer the "first-ever" solutions-focused WordPress form plugin on the market. You can use our drag & drop WordPress
|
16 |
|
17 |
-
At Formidable, creating the most extendable online
|
18 |
|
19 |
-
Before we explore the features of the powerful Formidable
|
20 |
|
21 |
-
|
22 |
|
23 |
-
> <strong>Formidable
|
24 |
-
> This form builder plugin is the free version of Formidable that comes with all the features you will ever need. Build an advanced email subscription form, multi-page form, file upload form, quiz, or a smart form with conditional logic. Stack on repeater fields, payment integrations, form templates, relationships, cascading dropdown fields. Don't forget the calculated fields, front-end form editing, and powerful WordPress Views to display data in web
|
25 |
-
> With Formidable, you get far more than just a contact form.
|
26 |
-
> <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Click here to purchase the most advanced premium WordPress
|
27 |
|
28 |
You can start with our pre-built templates or create totally custom forms from scratch. All with an easy-to-use drag & drop form maker interface.
|
29 |
|
30 |
https://youtu.be/7X2BqhRsXcg
|
31 |
|
32 |
-
Let’s take a look at all the powerful features for making an amazing lead form, survey
|
33 |
|
34 |
-
|
35 |
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
Our form maker comes with all the powerful fields that you need to create a solution-focused form, fast!
|
39 |
|
@@ -43,15 +51,15 @@ Formidable allows you to view all your quiz and survey entries right from your W
|
|
43 |
|
44 |
It's a **100% GDPR-friendly** form generator. You can turn off IP tracking or stop saving submissions entirely. Or add a GDPR checkbox field to your lead forms and payment forms to collect consent.
|
45 |
|
46 |
-
Need to import your leads to an external service like MailChimp? No problem. **Export leads to a CSV**, open it in Excel, or import anywhere.
|
47 |
|
48 |
You can also configure unlimited email notifications and autoresponders triggered by submissions.
|
49 |
|
50 |
-
On top of that, you can easily customize the success message after a
|
51 |
|
52 |
== The Only Form Maker Plugin with an Advanced Styler ==
|
53 |
|
54 |
-
With our built-in styler, you can instantly customize the look and feel of your
|
55 |
|
56 |
By default, a single styling template is created. If you want a custom form style for each footer and sidebar form, check out the premium version of Formidable.
|
57 |
|
@@ -59,7 +67,7 @@ By default, a single styling template is created. If you want a custom form styl
|
|
59 |
|
60 |
Formidable comes with a built-in survey feature (like Survey Monkey, but without the high costs), so you can quickly create powerful surveys with Net Promoter Scores (NPS), Likert fields, star ratings, image radio buttons, and more.
|
61 |
|
62 |
-
Beautiful reports will be waiting, or create your own customized graphs. Our graphs and reports will help you analyze and showcase data. We believe that data alone does no good if you can't analyze it. That’s why we make it easy to analyze data from a survey, quiz, or
|
63 |
|
64 |
You can even showcase data on the front-end of your website. Just embed graphs in your WordPress posts or pages.
|
65 |
|
@@ -67,23 +75,23 @@ The best part is that you can do this all without any third-party tools.
|
|
67 |
|
68 |
== Quickly Create an Advanced WordPress Registration Form for Any Use Case ==
|
69 |
|
70 |
-
Whether you need to create a youth sports team, event, or church retreat registration, Formidable has you covered. Unlike other form plugins, Formidable comes with a repeater field that allows you to create the best registration forms.
|
71 |
|
72 |
Then, our marketing integrations and APIs can send the data anywhere you want.
|
73 |
|
74 |
== Accept Credit Cards and Easily Collect Payments ==
|
75 |
|
76 |
-
By now, you probably already realize the theme that Formidable is more than just a WordPress contact form plugin. You can use it to create a payment form
|
77 |
|
78 |
-
We offer seamless integration with PayPal, Stripe, and Authorize.net, so you can create an order form, donation
|
79 |
|
80 |
-
You can even
|
81 |
|
82 |
== Make Data-Driven Web Applications with a Formidable View ==
|
83 |
|
84 |
-
Formidable Views are by far the most powerful feature that makes Formidable far more than just a contact form
|
85 |
|
86 |
-
Our customers use Formidable Views to create data-driven web
|
87 |
|
88 |
As you can see, Formidable is not your average contact form plugin. It's a true all-in-one WordPress form solution.
|
89 |
|
@@ -93,7 +101,7 @@ Formidable is the only WordPress form builder plugin that offers extensive integ
|
|
93 |
|
94 |
Our goal is to empower you to build powerful WooCommerce product order forms, so you can increase your store sales.
|
95 |
|
96 |
-
You can
|
97 |
|
98 |
== Make Powerful Quiz Forms & Calculators ==
|
99 |
|
@@ -110,13 +118,13 @@ More on quizzes later, but here are some example online calculators that you can
|
|
110 |
* Online Quote Calculator
|
111 |
* Finance Calculator
|
112 |
* Booking Cost Calculator
|
113 |
-
* Price Calculator
|
114 |
|
115 |
... and our powerful calculated fields allow you to build just about anything.
|
116 |
|
117 |
You can also create a poll, or survey on your WordPress site and display the results. This is great for membership sites, LMS, or just for viral quizzes to grow your email list.
|
118 |
|
119 |
-
Now you can
|
120 |
|
121 |
== Create a WordPress User Registration Form, Profile Form, and More ==
|
122 |
|
@@ -126,31 +134,32 @@ With our front-end editing, you can build a custom profile form for users to kee
|
|
126 |
|
127 |
You will not find any other WordPress form plugin offering a front-end editing solution with the same level of extendability.
|
128 |
|
129 |
-
== All the Advanced Fields
|
130 |
|
131 |
-
Formidable goes far above and beyond with features like multi-page forms, save and continue, cascading form fields, powerful conditional logic. Then add partial submissions, invisible spam protection, front-end user post submission, calculated fields, user-tracking, quizzes, and so much more. Additionally, our Payment fields will help you create
|
132 |
|
133 |
-
We're on a mission to offer
|
134 |
|
135 |
-
== Extend
|
136 |
|
137 |
-
Formidable is the
|
138 |
|
139 |
-
Our goal is to help you build complex websites with low overhead. That's why we made Formidable the most extendable WordPress form
|
140 |
|
141 |
-
A Formidable View allows you to display data anywhere, so you can quickly create data-driven web
|
142 |
|
143 |
On top of that, our hooks and filters allow you to extend Formidable to meet your most advanced needs. We even include hundreds of code examples in our docs to give you the confidence to get started.
|
144 |
|
145 |
== Full Feature List ==
|
146 |
|
147 |
-
Since Formidable is not your average
|
148 |
|
149 |
-
* <a href="https://formidableforms.com/features/drag-drop-form-builder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Online drag and drop form
|
150 |
-
* <a href="https://formidableforms.com/features/display-form-data-views/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Display data with Views</a>. Other WordPress form
|
151 |
-
* <a href="https://formidableforms.com/features/dynamically-add-form-fields/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Repeating field groups (repeaters)</a>. This is great for a registration form
|
152 |
* <a href="https://formidableforms.com/features/wordpress-multiple-file-upload-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Drag and drop multiple file upload forms</a>. Easily upload documents, files, photos, and music, with any number of files. This is great for a job application form (resumes), WordPress User Profile Form (avatars), or get a quote form.
|
153 |
-
* <a href="https://formidableforms.com/features/wordpress-multi-step-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Multi-step forms with progress bars</a>. Want to increase conversion rates and collect more leads? Create beautiful paged
|
|
|
154 |
* <a href="https://formidableforms.com/features/cascading-dropdown-lookup-field/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Cascading lookup fields</a>. Autofill values in other fields or drill down through options to reveal a final value. Designed for year/make/model chained fields in auto forms and country/state/city fields. Lookup fields can even get a price from another product form.
|
155 |
* Datepicker fields with advanced datepicker options including blackout dates, dynamic minimum and maximum dates, and inline calendars. Datepickers are great for email forms, basic online booking, and event registration.
|
156 |
* Dynamic field relationships. Populate fields and link data between multiple fields. This helpful in to link employment applications to a job, quizzes to a class, an event registration to an event, or a sports registration to a team.
|
@@ -159,12 +168,12 @@ Since Formidable is not your average WordPress form plugin, this feature list is
|
|
159 |
* Confirmation fields. Double check email addresses or passwords and prevent typos from causing lost leads.
|
160 |
* <a href="https://formidableforms.com/features/conditional-logic-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Conditional logic for smart forms</a>. Show or hide fields based on user selections or user roles, simplify, and increase conversion rates.
|
161 |
* <a href="https://formidableforms.com/features/email-autoresponders-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Send email notifications & autoresponders</a>. Let clients know you received their message. Then create customized email notifications for multiple recipients and get info from an email form to those who need it.
|
162 |
-
* Email routing. Conditionally send multiple autoresponder emails and notifications based on values in email
|
163 |
-
* Pricing fields for easy eCommerce forms with automatic price calculations. Drop in a product field, quantity, and total and you're good to go.
|
164 |
* <a href="https://formidableforms.com/wordpress-calculator-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Calculator forms</a>. Create complex calculations and combine text from multiple fields. This is great for a mortgage calculator, auto loan calculator, and more. Price calculations give site visitors easy quotes and price estimates. We recommend range sliders too, for calculator forms your clients will love.
|
165 |
-
* <a href="https://formidableforms.com/features/wordpress-visual-form-styler/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Visual style creator</a>. Our form creator allows you to custom brand calculator forms, email forms, quiz forms, and other WP forms to match your site. Change colors, borders, font sizes, and more without any code.
|
166 |
* Flexible layout design. Build mobile responsive forms and advanced layouts with multiple fields in a row with our CSS layout classes.
|
167 |
-
* Mobile-friendly, responsive forms. All of our WP forms are sized for any screen size. Ensure that everyone can use your
|
168 |
* <a href="https://formidableforms.com/features/user-submitted-posts-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">User submitted front-end posts and pages</a>. Create and edit WordPress posts, pages, and custom post types from front-end online forms. Send user-generated content quickly from a post creation form to a page.
|
169 |
* <a href="https://formidableforms.com/features/form-entry-management-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Simple entry management</a>. Flexibly display, edit, and delete entries. Let logged-in users can manage their personal journal entries, weight tracking, guest blog posts, RSVP status, and more.
|
170 |
* WordPress front-end editing. Allow users to edit their entries and posts from the front-end of your site. Create an online journaling platform, member directory, classified ads, community recipes, and more.
|
@@ -172,102 +181,103 @@ Since Formidable is not your average WordPress form plugin, this feature list is
|
|
172 |
* <a href="https://formidableforms.com/features/create-a-graph-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Graphs and charts for data visualization</a>. Display statistics from a survey, poll, and questionnaire. Or graph data in a variety of ways. Whatever you choose, it will update as new data is submitted (great for weight tracking over time).
|
173 |
* Permissions. Lock visibility and access based on user role.
|
174 |
* Entry limits. Limit surveys, registration forms, bookings, quizzes, or directory submissions to only allow one entry per user, IP, or cookie.
|
175 |
-
* Form scheduling. Open and close event registration and signup forms on a specific date. Or close
|
176 |
-
* Conditionally redirect after a custom search form,
|
177 |
-
* We give you access to <a href="https://formidableforms.com/features/customize-form-html-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">customize the HTML</a> (like Contact Form 7). But you keep the ease and speed of
|
178 |
* <a href="https://formidableforms.com/features/importing-exporting-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Import and export submissions, styles, and views</a>. Quickly move your work and entries to another site. Need to export leads to another service? Done.
|
179 |
-
* Form templates for instant form building. Get started quickly with the most advanced form creator that includes form templates and style templates. Our WordPress form generator makes it FAST to build job application forms
|
180 |
-
* Import our <a href="https://formidableforms.com/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">pre-built form templates</a> as a shortcut to a final product. Our growing form template library includes payment forms, a WooCommerce product creator, and more.
|
181 |
-
*
|
|
|
|
|
182 |
* <a href="https://formidableforms.com/features/invisible-spam-protection/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Invisible SPAM protection</a>. Don't waste time sorting through SPAM. Get instant and powerful anti-spam features from honeypot, invisible Google reCAPTCHA, Akismet, and the WordPress comment blacklist.
|
183 |
* <a href="https://formidableforms.com/features/fill-out-forms-automatically/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Fill fields automatically</a> with values from the user profile or posts (i.e. custom fields). When a user is logged in, fill known values like name and email address.
|
184 |
* <a href="https://formidableforms.com/features/white-label-form-builder-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">White label</a>. Replace our branding with your own in the admin area. Plus, we never show "powered by" links in your free online form.
|
185 |
* <a href="https://formidableforms.com/features/wordpress-user-registration/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WordPress user registration forms</a>. Register WordPress users, edit profiles, reset passwords, and add a login form. You can even allow users to create new subdomains with WordPress multisite forms.
|
186 |
-
* <a href="https://formidableforms.com/features/digital-form-signatures/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Digital signature forms</a>. Eliminate paper forms with a digital signature field
|
187 |
* <a href="https://formidableforms.com/features/form-action-automation-scheduling/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Form action automation</a>. Schedule email notifications, SMS messages, and webhooks to trigger later. You can automatically delete guest posts after 30 days, send weekly digests, or trigger happy birthday text messages from a lead form.
|
188 |
* <a href="https://formidableforms.com/features/wordpress-form-api/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Forms API</a>. Send submissions to other REST APIs and add a set of webhooks. This includes the option to send submissions from one site to another.
|
189 |
* <a href="https://formidableforms.com/features/quiz-maker-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Quiz maker forms</a>. Write your quiz form questions, submit an entry as the quiz key, and publish the quiz on a page. Then all the quiz grading is automatically done for you with our quiz plugin.
|
190 |
-
* <a href="https://formidableforms.com/knowledgebase/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">World class support</a>. Have questions on how to use our form maker
|
191 |
|
192 |
== Payment Forms, APIs, and Marketing Integrations ==
|
193 |
-
In addition to all the features listed above, power
|
194 |
|
195 |
-
* <a href="https://formidableforms.com/features/paypal-wordpress-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">PayPal
|
196 |
-
* <a href="https://formidableforms.com/features/stripe-payments-for-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Stripe
|
197 |
-
* <a href="https://formidableforms.com/features/authorize-net-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Authorize.net AIM
|
198 |
* <a href="https://formidableforms.com/features/customizable-woocommerce-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WooCommerce product configurator</a>. Add custom fields to a WooCommerce product order form and collect extra data when a product is added to the cart. Use calculations in your WooCommerce form for variable pricing and upload files with orders.
|
199 |
-
* <a href="https://formidableforms.com/features/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailChimp Forms</a>. Add and update leads in a MailChimp email marketing list from a lead form, online order, or email form.
|
200 |
-
* Constant Contact. Create leads automatically
|
201 |
-
*
|
202 |
-
* AWeber Forms. Subscribe users to an AWeber mailing list when a newsletter signup form is submitted.
|
203 |
* <a href="https://formidableforms.com/features/mailpoet-newsletters-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailPoet Newsletters</a>. Fill your email marketing lists from newsletter signup forms. Then send WordPress newsletters from your own site using MailPoet.
|
204 |
-
* Highrise. Add leads to your Highrise CRM account any time a WordPress form is submitted.
|
205 |
* Salesforce Forms. Create leads and any other Salesforce objects automatically.
|
206 |
* ActiveCampaign. Pull double duty with the ActiveCampaign integration. Save leads from a donation form, post creation form, user registration form, or email form.
|
207 |
* <a href="https://formidableforms.com/features/form-entries-to-hubspot/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">HubSpot Forms</a>. Route lead data to HubSpot CRM.
|
208 |
-
*
|
209 |
-
*
|
|
|
|
|
210 |
* Polylang. Get the form creator with Polylang bilingual or multilingual contact forms.
|
211 |
-
* <a href="https://formidableforms.com/features/form-entry-routing-with-zapier/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Zapier</a>. Connect with thousands of
|
212 |
-
* <a href="https://formidableforms.com/features/bootstrap-form-styling/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Form Styles</a>. Instantly add Bootstrap form styling to a survey form and
|
213 |
* <a href="https://formidableforms.com/features/bootstrap-modal-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Modal Form</a>. Open login forms, Views, shortcodes, and other content in a Bootstrap modal popup.
|
214 |
|
215 |
After reading this feature list, you can probably imagine why Formidable is the most advanced WordPress form plugin on the market.
|
216 |
|
217 |
-
Give Formidable
|
218 |
|
219 |
-
Want to unlock the full power? <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Upgrade to Pro</a> to get all the features for smart forms and full web
|
220 |
|
221 |
== Credits ==
|
222 |
-
This online form builder plugin is created by Steve and Steph Wells and the amazing Strategy11 Team.
|
223 |
|
224 |
Formidable is part of the <a href="https://www.wpbeginner.com/">WPBeginner</a> fund with <a href="https://syedbalkhi.com/">Syed Balkhi</a> as an Advisor to our company.
|
225 |
|
226 |
== Installation ==
|
227 |
1. Go to the Plugins -> 'Add New' page in your WP admin area
|
228 |
2. Search for 'Formidable'
|
229 |
-
3. Click the 'Install Now' button
|
230 |
-
4.
|
231 |
-
5.
|
232 |
-
6.
|
233 |
-
7. Insert your newly created user registration form, quiz, or survey form on a page or post using the Embed Form pop up. Or insert it manually or into a widget using a shortcode [formidable id=x]. Alternatively use `<?php echo FrmFormsController::show_form(2); ?>` to add it in a page template.
|
234 |
|
235 |
== Screenshots ==
|
236 |
-
1. Build professional WP
|
237 |
-
2.
|
238 |
3. Field Options and CSS Layout Classes
|
239 |
4. Field Options for checkbox fields in the form maker
|
240 |
-
5. View, create, edit, and delete entries on the back end from a to do list, employment application, and more.
|
241 |
-
6. Add a
|
242 |
|
243 |
== Frequently Asked Questions ==
|
244 |
-
= How do I get started with the best
|
245 |
-
The fastest way to build a form is to use the
|
246 |
|
247 |
Go to the Formidable page and click "add new". Choose the Contact Us form template or another free template and click "Create".
|
248 |
|
249 |
Next, edit or create a WordPress contact page. Click the "Formidable" button to open the shortcode generator. Choose your new Stripe form, quiz, or web form and insert it into the WordPress page. Save the page for a beautiful WP contact form, ready to collect and store your leads. The contact form template will get you up and running fast.
|
250 |
|
251 |
= Why isn't WordPress sending emails? =
|
252 |
-
When you do not receive emails, try the following steps:
|
253 |
|
254 |
1. Double check the email address in your Email action on the settings page. The [admin_email] shortcode uses the email address from your WordPress Settings -> General page.
|
255 |
-
2. Are receiving other emails from your site (ie comment notifications, forgot password...)? If not, notification emails will not work either.
|
256 |
3. Check your SPAM box.
|
257 |
4. Try a different email address in your settings.
|
258 |
-
5. Install WP Mail SMPT or another similar emailing
|
259 |
6. If these steps don't fix the problem and other WP emails are not going out, please reach out to your web host.
|
260 |
|
261 |
<a href="https://formidableforms.com/wordpress-not-sending-emails-smtp/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Read more about WordPress emails not sending</a> in our blog.
|
262 |
|
263 |
= What types of WordPress forms can I build? =
|
264 |
-
|
265 |
|
266 |
* Custom Contact Form
|
267 |
* Multi-Page Form with progress bar
|
268 |
* Dynamic Form (where fields change based on user’s answers)
|
269 |
* Request a Quote Form
|
270 |
-
* Job
|
271 |
* Feedback Surveys
|
272 |
* Make a Suggestion
|
273 |
* Testimonials
|
@@ -279,12 +289,12 @@ The Formidable drag & drop form builder combined with our add-ons is the most po
|
|
279 |
* WordPress Login Form
|
280 |
* Custom WordPress User Profile
|
281 |
* WordPress Post Submission (Great for guest posts)
|
282 |
-
*
|
|
|
283 |
* Make a Donation Form
|
284 |
* T-Shirt Order Form
|
285 |
* Product Purchase Form
|
286 |
* Lead Capture
|
287 |
-
* Newsletter Signup Form
|
288 |
* Auto Form with Car Make and Model
|
289 |
* Video Release
|
290 |
* Partnership Agreements
|
@@ -292,24 +302,15 @@ The Formidable drag & drop form builder combined with our add-ons is the most po
|
|
292 |
* Online Petitions
|
293 |
* Signature Form
|
294 |
* Maintenance Request
|
295 |
-
* Scholarship
|
296 |
* File Download Form
|
297 |
* Employment Verification
|
298 |
* Make a Referral
|
299 |
-
* Volunteer Registration
|
300 |
-
*
|
301 |
-
* Event Registration
|
302 |
-
* Vendor Registration
|
303 |
-
* School Class Registration
|
304 |
-
* Course Registration
|
305 |
-
* Customer Registration
|
306 |
-
* Conference Registration
|
307 |
-
* Sports Registration
|
308 |
-
* Camp Registration
|
309 |
* Custom Survey
|
310 |
* Polls
|
311 |
* Quizzes
|
312 |
-
* Members Only Contact Form
|
313 |
* Mortgage Calculator
|
314 |
* Car Payment Calculator
|
315 |
* BMI Calculator
|
@@ -325,12 +326,12 @@ The Formidable drag & drop form builder combined with our add-ons is the most po
|
|
325 |
* Cosmos Style Quiz
|
326 |
* Create Your Own Adventure Quiz
|
327 |
|
328 |
-
To see more, visit our <a href="https://formidableforms.com/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=
|
329 |
|
330 |
= How can I get access to all advanced features? =
|
331 |
To get access to more features, integrations, and support, <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">upgrade to Formidable Pro</a>. A Pro license gives you access to the full version of Formidable for more advanced options, Formidable Views, graphs and stats, priority support, and Formidable Add-ons!
|
332 |
|
333 |
-
= Can I create a
|
334 |
|
335 |
Yes! You can create payment and donation forms. We make it easy to accept payments using Stripe, PayPal, and Authorize.net.
|
336 |
|
@@ -364,7 +365,7 @@ Here is a list of our advanced premium fields that will come in handy:
|
|
364 |
* Range Slider
|
365 |
* Toggle
|
366 |
* Dynamic - Great for creating relationships between entries.
|
367 |
-
* Repeater - Great for registering multiple kids, job history
|
368 |
* Tags
|
369 |
* Summary - Great to review responses before submit.
|
370 |
* Lookup - Great for cascading lookups like country, city, state.
|
@@ -372,21 +373,20 @@ Here is a list of our advanced premium fields that will come in handy:
|
|
372 |
* Page Break
|
373 |
* Embed Form - Great for reusing the same set of fields in multiple places.
|
374 |
* Password Field - Great for user registration forms.
|
375 |
-
* Address Field
|
376 |
* Signature - Great for contracts and booking.
|
377 |
-
* Quiz Score
|
378 |
|
379 |
-
Additionally, our Payment fields will help you create an order form, donation form,
|
380 |
|
381 |
* Single Item
|
382 |
* Multiple Items
|
383 |
* Checkbox Items
|
384 |
* Dropdown Items
|
385 |
* Product Quantity
|
386 |
-
* Total
|
387 |
-
* Credit Card (Stripe
|
388 |
|
389 |
-
= Can I import and export? =
|
390 |
|
391 |
Yes, it's easy to import and export. This is incredibly useful for developers and agencies who are building websites for clients. You can also create custom form templates to use on client websites.
|
392 |
|
@@ -394,7 +394,7 @@ You can also import from other WordPress contact form plugins such as <a href="h
|
|
394 |
|
395 |
= Can I integrate with my CRM or email marketing service? =
|
396 |
|
397 |
-
Yes! We know that marketing is the key to
|
398 |
|
399 |
Here is a list of our popular marketing integrations:
|
400 |
|
@@ -408,7 +408,7 @@ Here is a list of our popular marketing integrations:
|
|
408 |
* HubSpot CRM
|
409 |
* Campaign Monitor
|
410 |
|
411 |
-
Using our Zapier integration, you can easily connect
|
412 |
|
413 |
* Google Sheets
|
414 |
* SendInBlue
|
@@ -438,26 +438,317 @@ Using our Zapier integration, you can easily connect Formidable with over 1000+
|
|
438 |
See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
|
439 |
|
440 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
441 |
= 5.4.3 =
|
442 |
* New: A pop up will trigger when a duplicate option value is added to the list of options to help avoid issues with accidental duplicate option values getting added to a field.
|
443 |
-
* Fix: Prevent a null JavaScript error
|
444 |
* Updated pop up styling for a more consistent design.
|
445 |
|
446 |
= 5.4.2 =
|
447 |
* New: Autocomplete dropdowns in the back end will now include an aria-label on the options to avoid accessibility issues with screen readers only reading ID values.
|
448 |
-
* New: A redirect will now happen after
|
449 |
* New: Added additional styling for repeaters in tables shown in email actions to show indentation for the repeated data.
|
450 |
-
* New: Added a Save and Reload button that appears after installing a required add on when clicking a field with missing requirements
|
451 |
* Fix: The aria-describedby attribute will now be ordered intentionally so errors get first priority by default. Checks have been added to avoid duplicate ids appearing in aria-describedby attributes as well.
|
452 |
* Fix: A few issues with label position settings were introduced with last update that are now fixed. Labels were appearing when the "none" label position setting was set.
|
453 |
-
* Fix: Automation settings were appearing for action types that don't support automation when the
|
454 |
* Fix: Fixed a caching conflict that would cause back end pages to break on some servers with an frmDom is not defined console error.
|
455 |
* Fix: Labels were appearing overlapped over input fields when previewed from the style manager for styles with the inline label position setting.
|
456 |
* Updated the icon for Zapier.
|
457 |
|
458 |
= 5.4.1 =
|
459 |
* New: Fields using the "Placeholder inside the field" Label Position setting will now use an animated label that moves to the top of the field when focused.
|
460 |
-
* New: Added a new frm_after_destroy_entry filter that can be used to update caching after
|
461 |
-
* Fix: An unexpected empty broken
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
462 |
|
463 |
<a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
|
1 |
+
=== Formidable Forms - Contact Form, Survey, Quiz, Calculator & Custom Form Builder ===
|
2 |
+
Plugin Name: Formidable Forms - Contact Form, Survey & Quiz Form Builder for WordPress
|
3 |
Contributors: formidableforms, sswells, srwells
|
4 |
+
Tags: forms, contact form, form builder, survey, free, form maker, form creator, paypal form, paypal, stripe, stripe form, aweber, aweber form, getresponse, calculator, quote form, contact button, form manager, Akismet, payment form, survey form, donation form, email subscription, user registration form, wordpress registration, wordpress login form, constant contact, mailpoet, active campaign, salesforce, hubspot, campaign monitor, quiz builder, quiz, feedback form, mailchimp form
|
5 |
Requires at least: 5.2
|
6 |
Tested up to: 6.0.1
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 5.4.4
|
9 |
|
10 |
The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
|
11 |
|
12 |
== Description ==
|
13 |
|
14 |
== The Most Powerful WordPress form builder plugin on the market ==
|
15 |
+
We built <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Formidable Forms</a> to offer the "first-ever" solutions-focused WordPress form plugin on the market. You can use our drag & drop WordPress forms plugin to create a contact form, survey, quiz, registration form, payment form, lead form, or calculator form. Build just about anything you can imagine.
|
16 |
|
17 |
+
At Formidable, creating the most extendable online forms is our #1 priority. Unlike other WordPress form maker plugins, we believe in pushing the limits. We want to give you the tools to save time and create complex custom forms quickly!
|
18 |
|
19 |
+
Before we explore the features of the powerful Formidable plugin, you should know that Formidable is 100% mobile responsive. Your WordPress forms will always look great on all devices (desktop, laptop, tablets, and smartphones).
|
20 |
|
21 |
+
Speaking of quick, we’ve optimized for speed and maximum server performance. We can confidently say that this is one of the FASTEST WordPress form builders on the market.
|
22 |
|
23 |
+
> <strong>Formidable Pro</strong><br />
|
24 |
+
> This form builder plugin is the free version of Formidable that comes with all the features you will ever need. Build an advanced email subscription form, multi-page form, file upload form, quiz, or a smart form with conditional logic. Stack on repeater fields, payment integrations, form templates, relationships, cascading dropdown fields. Don't forget the calculated fields, front-end form editing, and powerful WordPress Views to display data in web apps.
|
25 |
+
> With Formidable, you get far more than just a contact form plugin.
|
26 |
+
> <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">Click here to purchase the most advanced premium WordPress forms plugin now!</a>
|
27 |
|
28 |
You can start with our pre-built templates or create totally custom forms from scratch. All with an easy-to-use drag & drop form maker interface.
|
29 |
|
30 |
https://youtu.be/7X2BqhRsXcg
|
31 |
|
32 |
+
Let’s take a look at all the powerful features for making an amazing lead form, survey or poll, subscription form, request a quote form, payment form, user registration form, or anything else. With Formidable, there’s no limit to what you can achieve! The possibilities are endless.
|
33 |
|
34 |
+
Formidable adapts to YOUR needs.
|
35 |
|
36 |
+
Want to run quizzes on your site? Formidable is your quiz maker with all the features you need to create and run both educational quizzes and the beloved (and addictive) BuzzFeed style quizzes.
|
37 |
+
|
38 |
+
Our team has worked hard to create the Swiss Army Knife for WordPress. Plus, we’ve made integrations that fit into your tech stack.
|
39 |
+
|
40 |
+
Check out some of our main features below:
|
41 |
+
|
42 |
+
== Drag & Drop Form Maker ==
|
43 |
+
|
44 |
+
Formidable drag & drop forms allow you to quickly build unlimited surveys, quizzes, price calculators, and whatever else you need.
|
45 |
|
46 |
Our form maker comes with all the powerful fields that you need to create a solution-focused form, fast!
|
47 |
|
51 |
|
52 |
It's a **100% GDPR-friendly** form generator. You can turn off IP tracking or stop saving submissions entirely. Or add a GDPR checkbox field to your lead forms and payment forms to collect consent.
|
53 |
|
54 |
+
Need to import your leads to an external service like MailChimp? No problem. **Export leads to a CSV**, open it in Excel, or import it anywhere.
|
55 |
|
56 |
You can also configure unlimited email notifications and autoresponders triggered by submissions.
|
57 |
|
58 |
+
On top of that, you can easily customize the success message after a form is submitted, or redirect visitors to another page.
|
59 |
|
60 |
== The Only Form Maker Plugin with an Advanced Styler ==
|
61 |
|
62 |
+
With our built-in styler, you can instantly customize the look and feel of your website form. With just a few clicks, your email form can be transformed to match your website design.
|
63 |
|
64 |
By default, a single styling template is created. If you want a custom form style for each footer and sidebar form, check out the premium version of Formidable.
|
65 |
|
67 |
|
68 |
Formidable comes with a built-in survey feature (like Survey Monkey, but without the high costs), so you can quickly create powerful surveys with Net Promoter Scores (NPS), Likert fields, star ratings, image radio buttons, and more.
|
69 |
|
70 |
+
Beautiful reports will be waiting, or create your own customized graphs. Our graphs and reports will help you analyze and showcase data. We believe that data alone does no good if you can't analyze it. That’s why we make it easy to analyze data from a survey, quiz, or calculator.
|
71 |
|
72 |
You can even showcase data on the front-end of your website. Just embed graphs in your WordPress posts or pages.
|
73 |
|
75 |
|
76 |
== Quickly Create an Advanced WordPress Registration Form for Any Use Case ==
|
77 |
|
78 |
+
Whether you need to create a youth sports team, event, or church retreat registration, Formidable has you covered. Unlike other contact form plugins, Formidable comes with a repeater field that allows you to create the best registration forms.
|
79 |
|
80 |
Then, our marketing integrations and APIs can send the data anywhere you want.
|
81 |
|
82 |
== Accept Credit Cards and Easily Collect Payments ==
|
83 |
|
84 |
+
By now, you probably already realize the theme that Formidable is more than just a WordPress contact form plugin. You can use it to create a payment form and accept credit card payments right from your website.
|
85 |
|
86 |
+
We offer seamless integration with PayPal, Stripe, and Authorize.net, so you can create an order form, donation or purchase form.
|
87 |
|
88 |
+
You can even create a WooCommerce form with custom fields.
|
89 |
|
90 |
== Make Data-Driven Web Applications with a Formidable View ==
|
91 |
|
92 |
+
Formidable Views are by far the most powerful feature that makes Formidable far more than just a contact form plugin. Views allow you to flexibly display any submitted data on the front-end of your website.
|
93 |
|
94 |
+
Our customers use Formidable Views to create data-driven web apps. We see real estate listings, employment listings, event calendars, business or member directories, job boards, and other searchable databases.
|
95 |
|
96 |
As you can see, Formidable is not your average contact form plugin. It's a true all-in-one WordPress form solution.
|
97 |
|
101 |
|
102 |
Our goal is to empower you to build powerful WooCommerce product order forms, so you can increase your store sales.
|
103 |
|
104 |
+
You can create a WooCommerce form to use as a WooCommerce product configurator with custom calculation fields. Then automatically send the order form info to the WooCommerce cart with variable pricing options.
|
105 |
|
106 |
== Make Powerful Quiz Forms & Calculators ==
|
107 |
|
118 |
* Online Quote Calculator
|
119 |
* Finance Calculator
|
120 |
* Booking Cost Calculator
|
121 |
+
* Product Price Calculator
|
122 |
|
123 |
... and our powerful calculated fields allow you to build just about anything.
|
124 |
|
125 |
You can also create a poll, or survey on your WordPress site and display the results. This is great for membership sites, LMS, or just for viral quizzes to grow your email list.
|
126 |
|
127 |
+
Now you can create custom form-based solutions without any code.
|
128 |
|
129 |
== Create a WordPress User Registration Form, Profile Form, and More ==
|
130 |
|
134 |
|
135 |
You will not find any other WordPress form plugin offering a front-end editing solution with the same level of extendability.
|
136 |
|
137 |
+
== All the Advanced Fields & Features You Need to Grow Your Business ==
|
138 |
|
139 |
+
Formidable goes far above and beyond with features like multi-page forms, save and continue, cascading form fields, and powerful conditional logic. Then add partial submissions, invisible spam protection, front-end user post submission, calculated fields, user-tracking, quizzes, and so much more. Additionally, our Payment fields will help you create a donation form, booking form, credit card form, or other payment form.
|
140 |
|
141 |
+
We're on a mission to offer all-in-one solution-focused forms. This way you don't have to install 5 plugins alongside your form maker to do everything you want.
|
142 |
|
143 |
+
== Extend & Customize - A Developer's Dream Come True ==
|
144 |
|
145 |
+
Formidable is the solution of choice for smart developers, freelancers, and agencies. It helps you build complex solutions and simple forms quickly to defy the limits imposed by time and knowledge.
|
146 |
|
147 |
+
Our goal is to help you build complex websites with low overhead. That's why we made Formidable the most extendable WordPress form plugin on the market. We want to make it possible for anyone to defy gravity and build anything.
|
148 |
|
149 |
+
A Formidable View allows you to display data anywhere, so you can quickly create data-driven web apps.
|
150 |
|
151 |
On top of that, our hooks and filters allow you to extend Formidable to meet your most advanced needs. We even include hundreds of code examples in our docs to give you the confidence to get started.
|
152 |
|
153 |
== Full Feature List ==
|
154 |
|
155 |
+
Since Formidable is not your average form plugin, this feature list is going to be very long. Read through it, or just install our powerful form maker and try it for yourself! Your choice :)
|
156 |
|
157 |
+
* <a href="https://formidableforms.com/features/drag-drop-form-builder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Online drag and drop form and quiz maker</a>. Build everything from an email form to a complex online form. Make an awesome quiz form and online form the easy way with simple WordPress drag and drop form maker. You don't have to be a code ninja to get fields in a row.
|
158 |
+
* <a href="https://formidableforms.com/features/display-form-data-views/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Display data with Views</a>. Other WordPress form plugins only let you collect data. Formidable lets you format, filter, and display submissions in Formidable Views to create solutions. Think job boards, event calendars, business directories, ratings systems, management solutions, and pretty much anything else you can come up with.
|
159 |
+
* <a href="https://formidableforms.com/features/dynamically-add-form-fields/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Repeating field groups (repeaters)</a>. This is great for a registration form or email form.
|
160 |
* <a href="https://formidableforms.com/features/wordpress-multiple-file-upload-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Drag and drop multiple file upload forms</a>. Easily upload documents, files, photos, and music, with any number of files. This is great for a job application form (resumes), WordPress User Profile Form (avatars), or get a quote form.
|
161 |
+
* <a href="https://formidableforms.com/features/wordpress-multi-step-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Multi-step forms with progress bars</a>. Want to increase conversion rates and collect more leads? Create a beautiful paged form with a rootline and progress indicator. Add conditional pages for a smart branching form.
|
162 |
+
* <a href="https://formidableforms.com/features/form-to-pdf-wordpress-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Create a PDF</a> from entries and send them along in an email.
|
163 |
* <a href="https://formidableforms.com/features/cascading-dropdown-lookup-field/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Cascading lookup fields</a>. Autofill values in other fields or drill down through options to reveal a final value. Designed for year/make/model chained fields in auto forms and country/state/city fields. Lookup fields can even get a price from another product form.
|
164 |
* Datepicker fields with advanced datepicker options including blackout dates, dynamic minimum and maximum dates, and inline calendars. Datepickers are great for email forms, basic online booking, and event registration.
|
165 |
* Dynamic field relationships. Populate fields and link data between multiple fields. This helpful in to link employment applications to a job, quizzes to a class, an event registration to an event, or a sports registration to a team.
|
168 |
* Confirmation fields. Double check email addresses or passwords and prevent typos from causing lost leads.
|
169 |
* <a href="https://formidableforms.com/features/conditional-logic-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Conditional logic for smart forms</a>. Show or hide fields based on user selections or user roles, simplify, and increase conversion rates.
|
170 |
* <a href="https://formidableforms.com/features/email-autoresponders-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Send email notifications & autoresponders</a>. Let clients know you received their message. Then create customized email notifications for multiple recipients and get info from an email form to those who need it.
|
171 |
+
* Email routing. Conditionally send multiple autoresponder emails and notifications based on values in an email form, user registration form, and payment form.
|
172 |
+
* Pricing fields for easy eCommerce forms with automatic product price calculations. Drop in a product field, quantity, and total and you're good to go.
|
173 |
* <a href="https://formidableforms.com/wordpress-calculator-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Calculator forms</a>. Create complex calculations and combine text from multiple fields. This is great for a mortgage calculator, auto loan calculator, and more. Price calculations give site visitors easy quotes and price estimates. We recommend range sliders too, for calculator forms your clients will love.
|
174 |
+
* <a href="https://formidableforms.com/features/wordpress-visual-form-styler/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Visual style creator</a>. Our form creator allows you to custom brand calculator forms, email forms, lead forms, quiz forms, and other WP forms to match your site. Change colors, borders, font sizes, and more without any code.
|
175 |
* Flexible layout design. Build mobile responsive forms and advanced layouts with multiple fields in a row with our CSS layout classes.
|
176 |
+
* Mobile-friendly, responsive forms. All of our WP forms are sized for any screen size. Ensure that everyone can use your intake form, consent form, and Stripe form on any device.
|
177 |
* <a href="https://formidableforms.com/features/user-submitted-posts-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">User submitted front-end posts and pages</a>. Create and edit WordPress posts, pages, and custom post types from front-end online forms. Send user-generated content quickly from a post creation form to a page.
|
178 |
* <a href="https://formidableforms.com/features/form-entry-management-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Simple entry management</a>. Flexibly display, edit, and delete entries. Let logged-in users can manage their personal journal entries, weight tracking, guest blog posts, RSVP status, and more.
|
179 |
* WordPress front-end editing. Allow users to edit their entries and posts from the front-end of your site. Create an online journaling platform, member directory, classified ads, community recipes, and more.
|
181 |
* <a href="https://formidableforms.com/features/create-a-graph-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Graphs and charts for data visualization</a>. Display statistics from a survey, poll, and questionnaire. Or graph data in a variety of ways. Whatever you choose, it will update as new data is submitted (great for weight tracking over time).
|
182 |
* Permissions. Lock visibility and access based on user role.
|
183 |
* Entry limits. Limit surveys, registration forms, bookings, quizzes, or directory submissions to only allow one entry per user, IP, or cookie.
|
184 |
+
* Form scheduling. Open and close event registration and signup forms on a specific date. Or close forms when the seat limit has been reached.
|
185 |
+
* Conditionally redirect after a custom search form, feedback form, support ticket form, quiz, or intake form is submitted. Help clients find the answers they need and show a tailored result based on their selections or calculated fields.
|
186 |
+
* We give you access to <a href="https://formidableforms.com/features/customize-form-html-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">customize the HTML</a> (like Contact Form 7). But you keep the ease and speed of drag & drop forms. Our team labors for simplicity without sacrificing flexibility.
|
187 |
* <a href="https://formidableforms.com/features/importing-exporting-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Import and export submissions, styles, and views</a>. Quickly move your work and entries to another site. Need to export leads to another service? Done.
|
188 |
+
* Form templates for instant form building. Get started quickly with the most advanced form creator that includes form templates and style templates. Our WordPress form generator makes it FAST to build job application forms and other types of online forms.
|
189 |
+
* Import our <a href="https://formidableforms.com/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">pre-built form templates</a> as a shortcut to a final product. Our growing form template library includes payment forms (for Stripe and PayPal forms), a WooCommerce product creator, and more.
|
190 |
+
* <a href="https://formidableforms.com/conversational-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Conversational forms</a>. Show one question at a time, and automatically advance when questions are answered.
|
191 |
+
* <a href="https://formidableforms.com/landing-page-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Landing pages</a>. Get rid of all the distractions and show visitors only what they need.
|
192 |
+
* WCAG accessible forms with A11Y and ADA compliance. Ensure your survey, lead capture form, consent form, and quizzes are compliant and available to everyone. Allow those using screenreaders to successfully use your WordPress site.
|
193 |
* <a href="https://formidableforms.com/features/invisible-spam-protection/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Invisible SPAM protection</a>. Don't waste time sorting through SPAM. Get instant and powerful anti-spam features from honeypot, invisible Google reCAPTCHA, Akismet, and the WordPress comment blacklist.
|
194 |
* <a href="https://formidableforms.com/features/fill-out-forms-automatically/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Fill fields automatically</a> with values from the user profile or posts (i.e. custom fields). When a user is logged in, fill known values like name and email address.
|
195 |
* <a href="https://formidableforms.com/features/white-label-form-builder-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">White label</a>. Replace our branding with your own in the admin area. Plus, we never show "powered by" links in your free online form.
|
196 |
* <a href="https://formidableforms.com/features/wordpress-user-registration/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WordPress user registration forms</a>. Register WordPress users, edit profiles, reset passwords, and add a login form. You can even allow users to create new subdomains with WordPress multisite forms.
|
197 |
+
* <a href="https://formidableforms.com/features/digital-form-signatures/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Digital signature forms</a>. Eliminate paper forms with a digital signature field for a contract, application form and more.
|
198 |
* <a href="https://formidableforms.com/features/form-action-automation-scheduling/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Form action automation</a>. Schedule email notifications, SMS messages, and webhooks to trigger later. You can automatically delete guest posts after 30 days, send weekly digests, or trigger happy birthday text messages from a lead form.
|
199 |
* <a href="https://formidableforms.com/features/wordpress-form-api/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Forms API</a>. Send submissions to other REST APIs and add a set of webhooks. This includes the option to send submissions from one site to another.
|
200 |
* <a href="https://formidableforms.com/features/quiz-maker-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Quiz maker forms</a>. Write your quiz form questions, submit an entry as the quiz key, and publish the quiz on a page. Then all the quiz grading is automatically done for you with our quiz plugin.
|
201 |
+
* <a href="https://formidableforms.com/knowledgebase/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">World class support</a>. Have questions on how to use our form maker? We are happy to help. Our passion is to help you <strong>defy the limits</strong> to take on bigger projects, earn more clients, and grow your business.
|
202 |
|
203 |
== Payment Forms, APIs, and Marketing Integrations ==
|
204 |
+
In addition to all the features listed above, add power ups with these integrations.
|
205 |
|
206 |
+
* <a href="https://formidableforms.com/features/paypal-wordpress-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">PayPal Forms</a>. Automate your business by collecting instant payments and recurring payments from clients. Collect information and calculate a total in a PayPal form or donation form.
|
207 |
+
* <a href="https://formidableforms.com/features/stripe-payments-for-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Stripe Forms</a>. Keep users on your site while collecting Stripe payments from a credit card form. Select from one time and recurring charges in donation and order forms. Stripe processes payments with simple PCI compliance.
|
208 |
+
* <a href="https://formidableforms.com/features/authorize-net-payments/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Authorize.net AIM</a>. Process one-time payments in order forms and price calculators with Authorize.net AIM. For recurring payments or easier security compliance, we recommend Stripe.
|
209 |
* <a href="https://formidableforms.com/features/customizable-woocommerce-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WooCommerce product configurator</a>. Add custom fields to a WooCommerce product order form and collect extra data when a product is added to the cart. Use calculations in your WooCommerce form for variable pricing and upload files with orders.
|
210 |
+
* <a href="https://formidableforms.com/features/mailchimp-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailChimp Contact Forms</a>. Add and update leads in a MailChimp email marketing list from a lead form, online order, or email form.
|
211 |
+
* Constant Contact. Create leads automatically with a newsletter signup form.
|
212 |
+
* AWeber Forms. Subscribe users to an AWeber mailing list when a signup form is submitted.
|
|
|
213 |
* <a href="https://formidableforms.com/features/mailpoet-newsletters-addon/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailPoet Newsletters</a>. Fill your email marketing lists from newsletter signup forms. Then send WordPress newsletters from your own site using MailPoet.
|
|
|
214 |
* Salesforce Forms. Create leads and any other Salesforce objects automatically.
|
215 |
* ActiveCampaign. Pull double duty with the ActiveCampaign integration. Save leads from a donation form, post creation form, user registration form, or email form.
|
216 |
* <a href="https://formidableforms.com/features/form-entries-to-hubspot/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">HubSpot Forms</a>. Route lead data to HubSpot CRM.
|
217 |
+
* <a href="https://formidableforms.com/features/form-entries-to-getresponse/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">GetResponse Forms</a>. Collect leads and add them to GetResponse and trigger marketing automations.
|
218 |
+
* Highrise. Add leads to your Highrise CRM account.
|
219 |
+
* Twilio for SMS Forms. Collect feedback, votes and poll responses via SMS text or send SMS notifications when entries are submitted. Get notified instantly when a payment or order form is completed, or let your leads know you received their message.
|
220 |
+
* WPML Multilingual Forms. Translate your WP forms into multiple languages using our integrated multilingual forms.
|
221 |
* Polylang. Get the form creator with Polylang bilingual or multilingual contact forms.
|
222 |
+
* <a href="https://formidableforms.com/features/form-entry-routing-with-zapier/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Zapier</a>. Connect with thousands of services through Zapier from a lead form, quote form, and other web forms. Insert a new row in a Google docs spreadsheet, post on Twitter, or upload a Dropbox file from a feedback form.
|
223 |
+
* <a href="https://formidableforms.com/features/bootstrap-form-styling/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Form Styles</a>. Instantly add Bootstrap form styling to a survey form and payment form.
|
224 |
* <a href="https://formidableforms.com/features/bootstrap-modal-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Modal Form</a>. Open login forms, Views, shortcodes, and other content in a Bootstrap modal popup.
|
225 |
|
226 |
After reading this feature list, you can probably imagine why Formidable is the most advanced WordPress form plugin on the market.
|
227 |
|
228 |
+
Give Formidable a try.
|
229 |
|
230 |
+
Want to unlock the full power? <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Upgrade to Pro</a> to get all the features for smart forms and full web apps.
|
231 |
|
232 |
== Credits ==
|
233 |
+
This online form and quiz builder plugin is created by Steve and Steph Wells and the amazing Strategy11 Team.
|
234 |
|
235 |
Formidable is part of the <a href="https://www.wpbeginner.com/">WPBeginner</a> fund with <a href="https://syedbalkhi.com/">Syed Balkhi</a> as an Advisor to our company.
|
236 |
|
237 |
== Installation ==
|
238 |
1. Go to the Plugins -> 'Add New' page in your WP admin area
|
239 |
2. Search for 'Formidable'
|
240 |
+
3. Click the 'Install Now' button, then 'Activate'
|
241 |
+
4. Go to the newly added 'Formidable' menu
|
242 |
+
5. Click the 'Add New' button to go to the form generator page and create a new email form
|
243 |
+
6. Insert your newly created user registration form, lead form, quiz form, or survey form on a page or post using the Embed Form pop up. Or insert it manually or into a widget using a shortcode [formidable id=x]. Alternatively use `<?php echo FrmFormsController::show_form(2); ?>` to add it in a theme file.
|
|
|
244 |
|
245 |
== Screenshots ==
|
246 |
+
1. Build a professional WP form without any code.
|
247 |
+
2. Page for creating a quote form, Stripe payment form, quiz form, and many more.
|
248 |
3. Field Options and CSS Layout Classes
|
249 |
4. Field Options for checkbox fields in the form maker
|
250 |
+
5. View, create, edit, and delete entries on the back end from a to do list, employment application form, and more.
|
251 |
+
6. Add a form widget into a sidebar
|
252 |
|
253 |
== Frequently Asked Questions ==
|
254 |
+
= How do I get started with the best forms for WordPress? =
|
255 |
+
The fastest way to build a form is to use the contact form example we built for you. After you activate Formidable, insert [formidable id=contact-form] on the WordPress page of your choice.
|
256 |
|
257 |
Go to the Formidable page and click "add new". Choose the Contact Us form template or another free template and click "Create".
|
258 |
|
259 |
Next, edit or create a WordPress contact page. Click the "Formidable" button to open the shortcode generator. Choose your new Stripe form, quiz, or web form and insert it into the WordPress page. Save the page for a beautiful WP contact form, ready to collect and store your leads. The contact form template will get you up and running fast.
|
260 |
|
261 |
= Why isn't WordPress sending emails? =
|
262 |
+
When you do not receive emails from your email form, try the following steps:
|
263 |
|
264 |
1. Double check the email address in your Email action on the settings page. The [admin_email] shortcode uses the email address from your WordPress Settings -> General page.
|
265 |
+
2. Are you receiving other emails from your site (ie comment notifications, forgot password...)? If not, notification emails will not work either.
|
266 |
3. Check your SPAM box.
|
267 |
4. Try a different email address in your settings.
|
268 |
+
5. Install WP Mail SMPT or another similar emailing alternative and configure the SMTP settings.
|
269 |
6. If these steps don't fix the problem and other WP emails are not going out, please reach out to your web host.
|
270 |
|
271 |
<a href="https://formidableforms.com/wordpress-not-sending-emails-smtp/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Read more about WordPress emails not sending</a> in our blog.
|
272 |
|
273 |
= What types of WordPress forms can I build? =
|
274 |
+
Combined with our add-ons, Formidable is the most powerful form maker on the market. Here are some types of web forms you can create:
|
275 |
|
276 |
* Custom Contact Form
|
277 |
* Multi-Page Form with progress bar
|
278 |
* Dynamic Form (where fields change based on user’s answers)
|
279 |
* Request a Quote Form
|
280 |
+
* Job Application Form
|
281 |
* Feedback Surveys
|
282 |
* Make a Suggestion
|
283 |
* Testimonials
|
289 |
* WordPress Login Form
|
290 |
* Custom WordPress User Profile
|
291 |
* WordPress Post Submission (Great for guest posts)
|
292 |
+
* WooCommerce Form for Products
|
293 |
+
* Credit Card Form
|
294 |
* Make a Donation Form
|
295 |
* T-Shirt Order Form
|
296 |
* Product Purchase Form
|
297 |
* Lead Capture
|
|
|
298 |
* Auto Form with Car Make and Model
|
299 |
* Video Release
|
300 |
* Partnership Agreements
|
302 |
* Online Petitions
|
303 |
* Signature Form
|
304 |
* Maintenance Request
|
305 |
+
* Scholarship Application Form
|
306 |
* File Download Form
|
307 |
* Employment Verification
|
308 |
* Make a Referral
|
309 |
+
* Membership, Customer, Vendor, Conference, and Volunteer Registration
|
310 |
+
* Camp, Course, School Class, and other Event Registration
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
* Custom Survey
|
312 |
* Polls
|
313 |
* Quizzes
|
|
|
314 |
* Mortgage Calculator
|
315 |
* Car Payment Calculator
|
316 |
* BMI Calculator
|
326 |
* Cosmos Style Quiz
|
327 |
* Create Your Own Adventure Quiz
|
328 |
|
329 |
+
To see more, visit our <a href="https://formidableforms.com/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Form Template Gallery</a> which has over 175 pre-made templates.
|
330 |
|
331 |
= How can I get access to all advanced features? =
|
332 |
To get access to more features, integrations, and support, <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">upgrade to Formidable Pro</a>. A Pro license gives you access to the full version of Formidable for more advanced options, Formidable Views, graphs and stats, priority support, and Formidable Add-ons!
|
333 |
|
334 |
+
= Can I create a payment form? =
|
335 |
|
336 |
Yes! You can create payment and donation forms. We make it easy to accept payments using Stripe, PayPal, and Authorize.net.
|
337 |
|
365 |
* Range Slider
|
366 |
* Toggle
|
367 |
* Dynamic - Great for creating relationships between entries.
|
368 |
+
* Repeater - Great for registering multiple kids, job history, and much more.
|
369 |
* Tags
|
370 |
* Summary - Great to review responses before submit.
|
371 |
* Lookup - Great for cascading lookups like country, city, state.
|
373 |
* Page Break
|
374 |
* Embed Form - Great for reusing the same set of fields in multiple places.
|
375 |
* Password Field - Great for user registration forms.
|
376 |
+
* Address Field - Power it up with Google address autofill and geolocation.
|
377 |
* Signature - Great for contracts and booking.
|
|
|
378 |
|
379 |
+
Additionally, our Payment fields will help you create an order form, donation form, or booking form.
|
380 |
|
381 |
* Single Item
|
382 |
* Multiple Items
|
383 |
* Checkbox Items
|
384 |
* Dropdown Items
|
385 |
* Product Quantity
|
386 |
+
* Total
|
387 |
+
* Credit Card (Stripe or Authorize.net)
|
388 |
|
389 |
+
= Can I import and export submissions? =
|
390 |
|
391 |
Yes, it's easy to import and export. This is incredibly useful for developers and agencies who are building websites for clients. You can also create custom form templates to use on client websites.
|
392 |
|
394 |
|
395 |
= Can I integrate with my CRM or email marketing service? =
|
396 |
|
397 |
+
Yes! We know that marketing is the key to growing your business. That's why Formidable allows you to connect your WP form (email form, payment form, etc.) with the marketing platform of your choice. You can easily send data from WordPress to your favorite CRM, email newsletter, and other marketing platforms.
|
398 |
|
399 |
Here is a list of our popular marketing integrations:
|
400 |
|
408 |
* HubSpot CRM
|
409 |
* Campaign Monitor
|
410 |
|
411 |
+
Using our Zapier integration, you can easily connect your website with over 1000+ marketing apps including:
|
412 |
|
413 |
* Google Sheets
|
414 |
* SendInBlue
|
438 |
See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
|
439 |
|
440 |
== Changelog ==
|
441 |
+
= 5.4.4 =
|
442 |
+
* New: Option icons are now be added dynamically when a field is selected to reduce the HTML required on load. This significantly improves performance for fields with many options.
|
443 |
+
* New: Added a new frm_before_duplicate_entry_values filter for customizing the data of a duplicated entry before it is saved.
|
444 |
+
* New: Maximum character length is now validated server side on submit.
|
445 |
+
* Fix: The duplicate option pop up was triggering incorrectly when dragging new options in Chrome.
|
446 |
+
* Fix: Prevent a "Trying to get property 'post_status' of non-object" PHP Notice that happens in some cases when updating actions.
|
447 |
+
* Fix: Imported view detail page URLs were returning 404 errors. New imported views will now update permalinks to avoid this issue.
|
448 |
+
* Fix: The disallowed list check was not being applied when no data was submitted.
|
449 |
+
* Fix: Placeholder add on pages were showing messages to upgrade for supported licenses.
|
450 |
+
* Fix: Apps were not properly loading in WordPress 5.6.
|
451 |
+
|
452 |
= 5.4.3 =
|
453 |
* New: A pop up will trigger when a duplicate option value is added to the list of options to help avoid issues with accidental duplicate option values getting added to a field.
|
454 |
+
* Fix: Prevent a null JavaScript error in some cases related to floating labels.
|
455 |
* Updated pop up styling for a more consistent design.
|
456 |
|
457 |
= 5.4.2 =
|
458 |
* New: Autocomplete dropdowns in the back end will now include an aria-label on the options to avoid accessibility issues with screen readers only reading ID values.
|
459 |
+
* New: A redirect will now happen after duplication to avoid issues with multiple duplicate actions on page refresh.
|
460 |
* New: Added additional styling for repeaters in tables shown in email actions to show indentation for the repeated data.
|
461 |
+
* New: Added a Save and Reload button that appears after installing a required add on when clicking a field with missing requirements.
|
462 |
* Fix: The aria-describedby attribute will now be ordered intentionally so errors get first priority by default. Checks have been added to avoid duplicate ids appearing in aria-describedby attributes as well.
|
463 |
* Fix: A few issues with label position settings were introduced with last update that are now fixed. Labels were appearing when the "none" label position setting was set.
|
464 |
+
* Fix: Automation settings were appearing for action types that don't support automation when the Action Automation add on wasn't active.
|
465 |
* Fix: Fixed a caching conflict that would cause back end pages to break on some servers with an frmDom is not defined console error.
|
466 |
* Fix: Labels were appearing overlapped over input fields when previewed from the style manager for styles with the inline label position setting.
|
467 |
* Updated the icon for Zapier.
|
468 |
|
469 |
= 5.4.1 =
|
470 |
* New: Fields using the "Placeholder inside the field" Label Position setting will now use an animated label that moves to the top of the field when focused.
|
471 |
+
* New: Added a new frm_after_destroy_entry filter that can be used to update caching after an entry is deleted.
|
472 |
+
* Fix: An unexpected empty broken app shortcut was appearing for expired licenses.
|
473 |
+
|
474 |
+
= 5.4 =
|
475 |
+
* New: Added a new frm_new_form_values filter for customizing default values.
|
476 |
+
* New: Added a new frm_ajax_loaded_field event for listening for loaded fields loaded via AJAX on a long form in the back-end.
|
477 |
+
* Fix: Aria-describedby attribute values in HTML were not properly merging with the aria-describedby values added by field descriptions and errors.
|
478 |
+
* Fix: Imported field data would occasionally break if the new field ids had a different number of digits than the previously imported values.
|
479 |
+
* Fix: Placeholder text was appearing more transparent in Firefox than in other browsers and has been updated for consistency.
|
480 |
+
* Fix: Prevent a conflict that was causing the new Form modal to appear on some websites as a blank box without any content.
|
481 |
+
|
482 |
+
= 5.3.2 =
|
483 |
+
* New: RGB and RGBA color values will now be fixed automatically on save if incomplete to avoid broken CSS.
|
484 |
+
|
485 |
+
= 5.3.1 =
|
486 |
+
* New: Unlocked apps now appear at the top of the list.
|
487 |
+
* New: Improved the responsiveness of the cards on the App dashboard page.
|
488 |
+
* Fix: Prevent a conflict with All in One SEO that was preventing CSS from loading at all when the only on applicable pages setting is selected.
|
489 |
+
* Fix: An unexpected add new button was appearing on a few pages and has been removed.
|
490 |
+
* Fix: Prevent a fatal error in PHP8 that happens on sites with an unexpected empty string gmt_offset option set.
|
491 |
+
|
492 |
+
= 5.3 =
|
493 |
+
* New: Added a new page for displaying apps.
|
494 |
+
* New: Imported views and pages with [formidable] and [display-frm-data] shortcodes will now replace old ids with the new imported ids.
|
495 |
+
* New: Importing will now replace the old field ids with new field ids when the id is used in a field_id shortcode option.
|
496 |
+
* Fix: Field id values were not always properly updating when after duplication depending on the order of the fields.
|
497 |
+
|
498 |
+
= 5.2.07 =
|
499 |
+
* Fix: Step value validation was occasionally breaking in some cases due to rounding precision issues.
|
500 |
+
|
501 |
+
= 5.2.06 =
|
502 |
+
* New: The step value for number fields is now validated server side on submission.
|
503 |
+
|
504 |
+
= 5.2.05 =
|
505 |
+
* New: Added a new frm_focus_first_error filter to toggle of the behavior of the auto-focus that gets triggered on the first field with an error.
|
506 |
+
* New: Added a new frm_include_alert_role_on_field_errors filter to toggle the alert role that gets added to field errors.
|
507 |
+
|
508 |
+
= 5.2.04 =
|
509 |
+
* New: Defined field option data will no longer be sent to Akismet, to help improve accuracy with Akismet API.
|
510 |
+
* Fix: Updated Elementor widget so it no longer uses the deprecated _register_controls method.
|
511 |
+
|
512 |
+
= 5.2.03 =
|
513 |
+
* New: Updated how unique keys are generated for shorter unique keys.
|
514 |
+
* New: Added a new frm_unique_field_key_separator filter for unique field keys.
|
515 |
+
* New: Added a new frm_saved_errors filter for extending validation.
|
516 |
+
* Fix: Fixed a conflict with All in One SEO that was causing multiselect dropdowns to appear larger than expected.
|
517 |
+
|
518 |
+
= 5.2.02.01 =
|
519 |
+
* Fix: Fixed a conflict with Duplicator Pro that was causing dropdowns to break after updating to Bootstrap 4.
|
520 |
+
* Fix: Importing multiple forms was importing the wrong name.
|
521 |
+
* Fix: Clicking to install a template was copying the NEW html into the name input.
|
522 |
+
|
523 |
+
= 5.2.02 =
|
524 |
+
* Updated Bootstrap to version 4.6.1.
|
525 |
+
* New: Name fields will be automatically used to define entry names if available.
|
526 |
+
* New: Added setting to update privileged access message.
|
527 |
+
* Fix: Section icon dropdown toggles were not displaying updated changes.
|
528 |
+
* Fix: Prevent a PHP 8.1 deprecation message where null was being passed to substr.
|
529 |
+
* Fix: Name fields with no descriptions were still displaying bottom margins.
|
530 |
+
|
531 |
+
= 5.2.01 =
|
532 |
+
* New: Added new checkboxes to toggle title and description visibility. The preview page will no longer always show title and description by default, and will use these checkboxes instead.
|
533 |
+
* Fix: In-Theme Previews trigger a fatal error in WordPress 5.9.1.
|
534 |
+
* Fix: Checkbox fields were appearing as broken vertical lines when using the Enfold theme.
|
535 |
+
* Fix: A deprecation message was occasionally logged in PHP8 when trying to decode null values.
|
536 |
+
|
537 |
+
= 5.2 =
|
538 |
+
* Increased WP version requirement to 5.2.
|
539 |
+
* New: Added a new Embed Form modal and a new Embed button that appears in the settings pages beside Preview and Update. Now it can be embedded into a new page or an existing page with just a few clicks.
|
540 |
+
* Fix: A Notice was being logged that wp_enqueue_script() was called incorrectly when loading the new Widgets editor since WordPress 5.8.
|
541 |
+
* Fix: An unexpected array value in submitted data would cause some text fields to break in PHP8.
|
542 |
+
* Fix: Some AJAX calls for an API loaded form was occasionally targeting the wrong site, causing unwanted redirects.
|
543 |
+
* Fix: Dropdown field options were including redundant class="" HTML that has been removed.
|
544 |
+
|
545 |
+
= 5.1 =
|
546 |
+
* Updated Bootstrap Multiselect to version 1.1.1, fixing issues with the accessibility of backend multiselect dropdowns for blind users.
|
547 |
+
* New: Inputs with errors will now add the aria-describedby attribute during JavaScript validation for more accessible errors.
|
548 |
+
* New: Error messages will now always include the role="alert" attribute for more accessible errors. New fields will now also include role="alert" in field HTML.
|
549 |
+
* New: Added a new frm_entries_column_value filter hook.
|
550 |
+
|
551 |
+
= 5.0.17 =
|
552 |
+
* The embedded CodeMirror code for compatibility with versions of WordPress before 4.9 has been removed.
|
553 |
+
* New: The ctype PHP extension is no longer a requirement.
|
554 |
+
* Fix: The CSS page would appear without any textarea on some configurations where CodeMirror may be disabled.
|
555 |
+
* Fix: Removed padding styles from radio buttons because of a conflict with the Sensational theme.
|
556 |
+
|
557 |
+
= 5.0.16 =
|
558 |
+
* New: Field shortcodes now support sanitize_url=1 and sanitize=1 options which were previously only processed in Pro.
|
559 |
+
* New: The sanitize_url=1 option will now be inserted automatically when inserting most field shortcodes to a redirect url. This is to avoid issues with redirects stripping characters like ' and @ which may cause a redirect to fail in some cases.
|
560 |
+
* New: Updated styling for radio buttons and checkboxes, with improvements to appearance on mobile devices as well.
|
561 |
+
* New: Extended the FrmCSVExportHelper::generate_csv function so it has the option to generate a CSV file in a temporary directory, and pass along an array of meta information to most CSV filter hooks.
|
562 |
+
* New: A new action_id variable has been added to the arguments passed to the frm_notification_attachment filter to make it easier to filter attachments by email action ID.
|
563 |
+
* New: Added new frm_entry_formatter_class, frm_prepend_and_or_where, frm_entry_formatter_format, frm_formatted_entry_values_content, and frm_entries_show_args filter hooks.
|
564 |
+
* New: Allow more colors in the styler to be transparent including background colors and border colors for active, hovered, and disabled inputs.
|
565 |
+
* Fix: Selected radio buttons were appearing incorrectly when using the Twenty Twenty One theme in Chrome or Safari.
|
566 |
+
* Fix: Radio buttons and checkboxes were appearing overlapped with labels when using the H-Code theme.
|
567 |
+
* Fix: Field pop ups were displaying upgrade messages even for licenses that had access to the add on.
|
568 |
+
|
569 |
+
= 5.0.10 =
|
570 |
+
* Security: Improved how data is sanitized when previewing in the style manager.
|
571 |
+
* Fix: Prevent a warning when trying to get inbox messages from the API when no messages are being returned.
|
572 |
+
* Fix: The frm_alignright class was being stripped, preventing the right alignment from appearing in the back end.
|
573 |
+
* Fix: The frm_alignright class was causing fields to shift to the wrong row. The style definition has been updated so it will stay in the same row as other fields.
|
574 |
+
* Fix: Required messages were not properly appearing for empty radio buttons when an other option was selected but left empty and JavaScript validation was on.
|
575 |
+
|
576 |
+
= 5.0.09 =
|
577 |
+
* The option to check entries for spam using JavaScript is now on by default. We recommend turning this on for older forms that may be receiving spam entries, especially those that include file uploads. After turning this feature on, make sure to also clear any caching to avoid issues with cached pages with missing tokens.
|
578 |
+
* New: Pre-determined option data will no longer be sent to Akismet to help reduce the number of false positive results.
|
579 |
+
* Fix: Significantly reduced the amount of memory required to load settings for websites with fewer than 50 pages with a lot of data.
|
580 |
+
* Fix: Author email, url, or name are no longer included in comment info when sending data to Akismet so that duplicate information is not sent.
|
581 |
+
* Fix: Field groups could not be moved because of a missing class on the drag handle.
|
582 |
+
|
583 |
+
= 5.0.08 =
|
584 |
+
* Deprecated: Calls to FrmFormsController::preview will no longer try to load WordPress if it is not already initialized. This could cause issues for users that still use old preview links (see https://formidableforms.com/knowledgebase/php-examples/#kb-use-the-old-preview-links for an example).
|
585 |
+
* Security: Unsafe HTML will now be stripped from global message defaults, whitelabel settings, and when importing with XML if the user saving HTML does not have the unfiltered_html permission or if the DISALLOW_UNFILTERED_HTML constant is set.
|
586 |
+
* Updated Bootstrap used in back end to version 3.4.1.
|
587 |
+
* A few images that were being loaded from S3 and CDN urls are now included instead.
|
588 |
+
|
589 |
+
= 5.0.07 =
|
590 |
+
* Security: Unsafe HTML will now be stripped from field labels, descriptions, and custom HTML, as well as titles, descriptions, custom submit text, custom submit HTML, before HTML, after HTML, and success message if the user saving HTML does not have the unfiltered_html permission or if the DISALLOW_UNFILTERED_HTML constant is set.
|
591 |
+
* New: Added new frm_akismet_values filter to help improve Akismet integration.
|
592 |
+
* Fix: The Akismet API was getting called if Akismet was set up even if Akismet was turned off.
|
593 |
+
* Fix: Updated the styling when a field option is being dragged and dropped.
|
594 |
+
|
595 |
+
= 5.0.06 =
|
596 |
+
* New: Added new frm_export_csv_headings filter to make it easier to add and remove exported CSV headings.
|
597 |
+
* New: When clicking an inactive action that requires pro, the required pro license will be properly shown in the popup.
|
598 |
+
* New: Added new frm_fields_to_validate, frm_submit_button_html, and frm_fields_for_csv_export filters.
|
599 |
+
* Fix: Improved the accessibility of field group dropdowns and field group row layout pop ups.
|
600 |
+
* Fix: The caret icon on the dropdown was not positioned properly for the Gutenberg block.
|
601 |
+
* Fix: When clicking the media button in Elementor, the pop up was appearing as empty with no content.
|
602 |
+
* Fix: Required radio, checkbox, and name fields were not including the aria-required="true" attribute or the aria-invalid attribute when JavaScript validation was enabled.
|
603 |
+
* Fix: Required name fields were not showing error messages when JavaScript validation was enabled.
|
604 |
+
|
605 |
+
= 5.0.05 =
|
606 |
+
* Deprecated the option to disable CSS Grids.
|
607 |
+
* Fix: JavaScript validation was failing to validate for many fields with custom patterns because extra conflicting HTML was sometimes being added to the check.
|
608 |
+
* Fix: Field dropdowns are now more accessible and it should be easier to delete and duplicate fields with a screen reader.
|
609 |
+
* Fix: Updated padding on admin page so styles with custom padding don't appear small in the back end.
|
610 |
+
|
611 |
+
= 5.0.04 =
|
612 |
+
* New: Custom HTML for errors is now also applied when validating with JavaScript.
|
613 |
+
* New: Added a button to quickly save and reload after activating a new add-on from the settings page.
|
614 |
+
* New: Added several new filters required to support the new surveys add on.
|
615 |
+
|
616 |
+
= 5.0.03 =
|
617 |
+
* New: Added an Elementor widget.
|
618 |
+
* New: When duplicating fields, most unsaved changes will now duplicate as well.
|
619 |
+
* New: Next button label and slider field label previews will now update as soon as the setting is changed.
|
620 |
+
* New: Slider field previews will now update when the min and max values are updated.
|
621 |
+
* Fix: The search dropdown was getting cut off on pages with no search results.
|
622 |
+
* Fix: When legacy views or visual views are active, both versions were appearing active on the add ons page.
|
623 |
+
|
624 |
+
= 5.0.02 =
|
625 |
+
* New: Field groups can now be duplicated and deleted.
|
626 |
+
|
627 |
+
= 5.0.01 =
|
628 |
+
* New: Updated styling and icons in the back end.
|
629 |
+
* New: Added search when adding fields to make finding a specific field easier.
|
630 |
+
* Fix: Added truncation to long keys during duplication to avoid issues with duplicating when the generated key was too long.
|
631 |
+
|
632 |
+
= 5.0 =
|
633 |
+
* Increased WP version requirement to 5.0.
|
634 |
+
* New: Fields can now be dragged beside each other and grid layouts will be automatically applied.
|
635 |
+
* New: Added the option to quickly set layouts for a full row of fields at once.
|
636 |
+
* New: Fields can now be multiselected using the command, control, and shift keys. Selected field groups can be merged into rows and deleted in batches.
|
637 |
+
* New: Permissions are now updated right away when a license is activated to avoid issues with certain pro features not being available right away.
|
638 |
+
* Fix: Updated styling for new fields that are about to be dropped.
|
639 |
+
|
640 |
+
= 4.11.05 =
|
641 |
+
* New: Improved support for importing grid and table view content.
|
642 |
+
* Fix: The update and preview buttons would wrap to two lines for some longer translations including German and Dutch.
|
643 |
+
|
644 |
+
= 4.11.04 =
|
645 |
+
* New: The first field with an error will now automatically get focus when an entry is submitted for better accessibility and improved user experience.
|
646 |
+
* Fix: The reply to value of an email would default to the admin email instead of the from email when a shortcode with an empty result was used.
|
647 |
+
* Fix: When switching between the dropdown and text lookup types, the watch lookup option did not properly toggle back on.
|
648 |
+
* Fix: The autocomplete page dropdown was not consistent with other styles.
|
649 |
+
|
650 |
+
= 4.11.03 =
|
651 |
+
* New: Name fields now work in the To and From settings for email actions.
|
652 |
+
* Fix: Images were not properly loading when styles were loading via an AJAX request.
|
653 |
+
* Fix: Zeros were not appearing in the entries list for repeaters.
|
654 |
+
|
655 |
+
= 4.11.02 =
|
656 |
+
* New: The padding for descriptions can now be customized when editing styles.
|
657 |
+
|
658 |
+
= 4.11.01 =
|
659 |
+
* New: Added a new frm_duplicate_check_val filter for customizing the duplicate entry check. This can be used to remove IP to help prevent duplicate entries for longer periods of time when using frm_time_to_check_duplicates filter.
|
660 |
+
* New: Added visibility option to the Name field.
|
661 |
+
* Fix: The honeypot setting would still appear as on after it was turned off.
|
662 |
+
|
663 |
+
= 4.11 =
|
664 |
+
* New: Added a quick and easy Name field with options for First, Middle, and Last names.
|
665 |
+
* New: Added a more powerful spam protection using JavaScript. This can be turned on in the settings.
|
666 |
+
* New: Added Honeypot options to settings and changed the default Honeypot behavior to avoid the false positives some people are seeing on mobile devices.
|
667 |
+
* New: Added a frm_process_honeypot filter for gracefully handling honeypot spam.
|
668 |
+
* Fix: A warning was getting logged when exporting as XML.
|
669 |
+
|
670 |
+
= 4.10.03 =
|
671 |
+
* New: Improved the performance of the style editor preview.
|
672 |
+
* New: You can now sign up for free templates directly from your inbox.
|
673 |
+
* Fix: Date fields were not properly detecting duplicate entries.
|
674 |
+
* Fix: Conditionals were not properly fading in when the block was added to a page.
|
675 |
+
* Fix: Actions would occasionally conflict if multiple were added too quickly.
|
676 |
+
|
677 |
+
= 4.09.08 =
|
678 |
+
* New: If you add or remove an action and try to leave the page without saving, there will be a warning.
|
679 |
+
* Fix: The style editor save button was hidden in WordPress 5.7.
|
680 |
+
* Fix: There were a couple of words misspelled on the welcome page.
|
681 |
+
|
682 |
+
= 4.09.07 =
|
683 |
+
* Fix: Duplicated fields would occasionally generate long field keys that were preventing fields from being created.
|
684 |
+
* Fix: Fields for controlling radio options in the back-end were not using unique id attribute values.
|
685 |
+
|
686 |
+
= 4.09.06 =
|
687 |
+
* New: Added a new welcome screen to introduce new users.
|
688 |
+
* Fix: Make sure that Site Health exists when upgrading.
|
689 |
+
* Fix: Invalid message data was occasionally appearing in the Inbox.
|
690 |
+
* Fix: Excluded checkbox options were not properly toggling for Action Taxonomies.
|
691 |
+
* Fix: Some pop ups were occasionally including outdated text.
|
692 |
+
|
693 |
+
= 4.09.05 =
|
694 |
+
* Fix: Autofill was flagging submissions as spam with Honeypot in some browsers.
|
695 |
+
* Fix: Important security update that adds better escaping when text is used from attribute data.
|
696 |
+
|
697 |
+
= 4.09.04 =
|
698 |
+
* Fix: The back-end page wasn't always loading all fields correctly when loaded with ajax.
|
699 |
+
* New: frm_global_switch_fields and frm_maybe_switch_field_ids hooks for changing field ids in an action when a form is duplicated.
|
700 |
+
|
701 |
+
= 4.09.03 =
|
702 |
+
* New: Added frm_run_honeypot hook to turn off honeypot. Return false to disable or 'limit' to hide from screenreader.
|
703 |
+
* Moved honeypot back to the top to catch more spam.
|
704 |
+
* Fix: Dropdown fields were cut off in the admin area in WordPress 5.6.
|
705 |
+
* Fix: Update a few deprecated jQuery functions.
|
706 |
+
* Fix: Prevent some duplicate database queries on the back end.
|
707 |
+
|
708 |
+
= 4.09.02 =
|
709 |
+
* Show a warning when leaving the settings page with unsaved changes.
|
710 |
+
* Make the process for using free templates more clear.
|
711 |
+
|
712 |
+
= 4.08 =
|
713 |
+
* New: Added confirmation before deleting in bulk.
|
714 |
+
* Allow a value to pass validation if the entered value matches the placeholder setting.
|
715 |
+
* Fix: Email addresses were not being sent to Akismet for logged out users, and resulting in some false positive spam.
|
716 |
+
* Fix: Some sites have been getting duplicate entries days apart. This issue should be fixed.
|
717 |
+
* Fix: Searching when switching between forms no longer triggers the confirmation message when leaving the page.
|
718 |
+
|
719 |
+
= 4.07.01 =
|
720 |
+
* New: Show a warning when leaving a back-end page with unsaved changes.
|
721 |
+
* Fix: Make any multiselect dropdowns in admin settings accessible.
|
722 |
+
* Fix: aria-invalid attribute was missing on elements for accessibility.
|
723 |
+
|
724 |
+
= 4.07 =
|
725 |
+
* New: Use frm_inline_success for the class in the customized HTML to move the success message next to the submit button. "frm_inline_success frm_alignright_success" will right-align the message.
|
726 |
+
* Tweak: Improve the admin listing pages when nothing has been created.
|
727 |
+
* Fix: Update the recaptcha for better reliability to catch more spam.
|
728 |
+
|
729 |
+
= 4.06.03 =
|
730 |
+
* More consistent dropdown styling with multiselect dropdowns.
|
731 |
+
* Prepare the code for handling permissions options as an array of roles.
|
732 |
+
* Fix: WP 5.5 - Email subject lines were coming through encoded.
|
733 |
+
* Fix: WP 5.5 - When WP Mail SMTP was installed, the Formidable SMTP page has an error.
|
734 |
+
|
735 |
+
= 4.05.02 =
|
736 |
+
* New: Added frm_message_placement hook to show the message below the form
|
737 |
+
* New: New classes that can be used in the class setting: frm_plain_success (Removes styling from the success message) and frm_below_success (Moves the success message below).
|
738 |
+
* Add Formidable back to the admin bar. This is now a setting if the default WordPress v5.2+ behavior is desired.
|
739 |
+
* Fix: Review requests were added to the inbox too frequently for sites with multiple admins.
|
740 |
+
* Fix: Elementor conflict by using the glost $post in the admin area.
|
741 |
+
* Fix: The color picker position in the styling settings was off for some options.
|
742 |
+
|
743 |
+
= 4.05.01 =
|
744 |
+
* Fix: The entry list wasn't always showing the entries.
|
745 |
+
* Better sync between review requests in inbox and message.
|
746 |
+
|
747 |
+
= 4.05 =
|
748 |
+
* Updates to the default styling.
|
749 |
+
* New: Added an inbox as a centralized place for notices and communication.
|
750 |
+
* New: Added frm_color_block and frm_total_big classes for more beautiful forms.
|
751 |
+
* Help prevent common email issues by showing a warning in the email settings when the from and to email addresses are the same.
|
752 |
+
* Fix: Forms edited after export and reimported were losing the required indicator in some cases.
|
753 |
|
754 |
<a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
|