Formidable Forms – Form Builder for WordPress - Version 5.5.4

Version Description

  • New: Added support for hCaptcha. Now in Global Settings, the reCAPTCHA tab has been changed to a CAPTCHA tab with a new CAPTCHA type setting so you can choose between using reCAPTCHA or hCaptcha.
  • Fix: Avoid a fatal error if the hidden columns setting is in an unexpected format on the form and entry list pages. This may happen because of invalid option data being set or a conflict with another plugin or custom code.
  • Fix: Long field names on the reports tab would force the table to horizontally scroll. A long field name will now break into multiple lines instead.
  • Fix: The frm_form_object filter wouldn't get applied to a cached form result.
  • Fix: Prevent an undefined function get_editable_roles fatal error that triggers when trying to connect an account.
  • Fix: An incorrect section comparison was causing fields to keep old section data after being moved somewhere else. This would result in unexpected data exports and other side effects.
  • Fix: A "row is undefined" error would prevent merging multiple field groups together after the layout option was clicked.
  • Updated message styling on admin pages.
Download this release

Release Info

Developer sswells
Plugin Icon 128x128 Formidable Forms – Form Builder for WordPress
Version 5.5.4
Comparing to
See all releases

Code changes from version 5.5.3.1 to 5.5.4

classes/controllers/FrmEntriesController.php CHANGED
@@ -306,7 +306,18 @@ class FrmEntriesController {
306
  return apply_filters( 'frm_field_column_is_sortable', $is_sortable, $field );
307
  }
308
 
 
 
 
 
309
  public static function hidden_columns( $result ) {
 
 
 
 
 
 
 
310
  $form_id = FrmForm::get_current_form_id();
311
 
312
  $hidden = self::user_hidden_columns_for_form( $form_id, $result );
@@ -473,7 +484,7 @@ class FrmEntriesController {
473
 
474
  $message = '';
475
  if ( FrmEntry::destroy( $params['id'] ) ) {
476
- $message = __( 'Entry was Successfully Deleted', 'formidable' );
477
  }
478
 
479
  self::display_list( $message );
306
  return apply_filters( 'frm_field_column_is_sortable', $is_sortable, $field );
307
  }
308
 
309
+ /**
310
+ * @param mixed $result Option value from database for hidden columns in entries table.
311
+ * @return array
312
+ */
313
  public static function hidden_columns( $result ) {
314
+ if ( ! is_array( $result ) ) {
315
+ // Force an unexpected value to be an array.
316
+ // Since $result is a filtered option and gets saved to the database, it's possible it could be a string.
317
+ // Since this code expects an array it would break with a "Uncaught Error: [] operator not supported for strings" error.
318
+ $result = array();
319
+ }
320
+
321
  $form_id = FrmForm::get_current_form_id();
322
 
323
  $hidden = self::user_hidden_columns_for_form( $form_id, $result );
484
 
485
  $message = '';
486
  if ( FrmEntry::destroy( $params['id'] ) ) {
487
+ $message = __( 'Entry was successfully deleted', 'formidable' );
488
  }
489
 
490
  self::display_list( $message );
classes/controllers/FrmFormsController.php CHANGED
@@ -888,7 +888,15 @@ class FrmFormsController {
888
  );
889
  }
890
 
 
 
 
 
891
  public static function hidden_columns( $hidden_columns ) {
 
 
 
 
892
  $type = FrmAppHelper::get_simple_request(
893
  array(
894
  'param' => 'form_type',
@@ -2421,7 +2429,7 @@ class FrmFormsController {
2421
  }
2422
 
2423
  public static function defer_script_loading( $tag, $handle ) {
2424
- if ( 'recaptcha-api' == $handle && ! strpos( $tag, 'defer' ) ) {
2425
  $tag = str_replace( ' src', ' defer="defer" async="async" src', $tag );
2426
  }
2427
 
888
  );
889
  }
890
 
891
+ /**
892
+ * @param mixed $hidden_columns
893
+ * @return array
894
+ */
895
  public static function hidden_columns( $hidden_columns ) {
896
+ if ( ! is_array( $hidden_columns ) ) {
897
+ $hidden_columns = array();
898
+ }
899
+
900
  $type = FrmAppHelper::get_simple_request(
901
  array(
902
  'param' => 'form_type',
2429
  }
2430
 
2431
  public static function defer_script_loading( $tag, $handle ) {
2432
+ if ( 'captcha-api' == $handle && ! strpos( $tag, 'defer' ) ) {
2433
  $tag = str_replace( ' src', ' defer="defer" async="async" src', $tag );
2434
  }
2435
 
classes/controllers/FrmHooksController.php CHANGED
@@ -169,6 +169,9 @@ class FrmHooksController {
169
  add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
170
  add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
171
 
 
 
 
172
  FrmSMTPController::load_hooks();
173
  FrmWelcomeController::load_hooks();
174
  new FrmPluginSearch();
169
  add_action( 'admin_enqueue_scripts', 'FrmApplicationsController::dequeue_scripts', 15 );
170
  add_action( 'wp_ajax_frm_get_applications_data', 'FrmApplicationsController::get_applications_data' );
171
 
172
+ // CAPTCHA
173
+ add_filter( 'frm_setup_edit_field_vars', 'FrmFieldCaptcha::update_field_name' );
174
+
175
  FrmSMTPController::load_hooks();
176
  FrmWelcomeController::load_hooks();
177
  new FrmPluginSearch();
classes/controllers/FrmSettingsController.php CHANGED
@@ -51,10 +51,10 @@ class FrmSettingsController {
51
  'name' => __( 'Permissions', 'formidable' ),
52
  'icon' => 'frm_icon_font frm_lock_icon',
53
  ),
54
- 'recaptcha' => array(
55
  'class' => __CLASS__,
56
- 'function' => 'recaptcha_settings',
57
- 'name' => __( 'reCAPTCHA', 'formidable' ),
58
  'icon' => 'frm_icon_font frm_shield_check_icon',
59
  ),
60
  'white_label' => array(
@@ -180,11 +180,11 @@ class FrmSettingsController {
180
  /**
181
  * @since 4.0
182
  */
183
- public static function recaptcha_settings() {
184
  $frm_settings = FrmAppHelper::get_settings();
185
  $captcha_lang = FrmAppHelper::locales( 'captcha' );
186
 
187
- include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/recaptcha.php' );
188
  }
189
 
190
  /**
@@ -345,4 +345,12 @@ class FrmSettingsController {
345
 
346
  wp_send_json( $results );
347
  }
 
 
 
 
 
 
 
 
348
  }
51
  'name' => __( 'Permissions', 'formidable' ),
52
  'icon' => 'frm_icon_font frm_lock_icon',
53
  ),
54
+ 'captcha' => array(
55
  'class' => __CLASS__,
56
+ 'function' => 'captcha_settings',
57
+ 'name' => __( 'CAPTCHA', 'formidable' ),
58
  'icon' => 'frm_icon_font frm_shield_check_icon',
59
  ),
60
  'white_label' => array(
180
  /**
181
  * @since 4.0
182
  */
183
+ public static function captcha_settings() {
184
  $frm_settings = FrmAppHelper::get_settings();
185
  $captcha_lang = FrmAppHelper::locales( 'captcha' );
186
 
187
+ include( FrmAppHelper::plugin_path() . '/classes/views/frm-settings/captcha/captcha.php' );
188
  }
189
 
190
  /**
345
 
346
  wp_send_json( $results );
347
  }
348
+
349
+ /**
350
+ * @deprecated x.x use FrmSettingsController::captcha_settings().
351
+ */
352
+ public static function recaptcha_settings() {
353
+ _deprecated_function( __FUNCTION__, 'x.x', 'FrmSettingsController::captcha_settings()' );
354
+ self::captcha_settings();
355
+ }
356
  }
classes/helpers/FrmAppHelper.php CHANGED
@@ -16,7 +16,7 @@ class FrmAppHelper {
16
  /**
17
  * @since 2.0
18
  */
19
- public static $plug_version = '5.5.3.1';
20
 
21
  /**
22
  * @since 1.07.02
@@ -2950,7 +2950,7 @@ class FrmAppHelper {
2950
  $pro_version = FrmProDb::$plug_version;
2951
  $expired = FrmAddonsController::is_license_expired();
2952
  ?>
2953
- <div class="error frm_previous_install">
2954
  <?php
2955
  esc_html_e( 'You are running a version of Formidable Forms that may not be compatible with your version of Formidable Forms Pro.', 'formidable' );
2956
  if ( empty( $expired ) ) {
@@ -2991,7 +2991,7 @@ class FrmAppHelper {
2991
 
2992
  foreach ( $message as $m ) {
2993
  ?>
2994
- <div class="error frm_previous_install">
2995
  <?php echo esc_html( $m ); ?>
2996
  </div>
2997
  <?php
16
  /**
17
  * @since 2.0
18
  */
19
+ public static $plug_version = '5.5.4';
20
 
21
  /**
22
  * @since 1.07.02
2950
  $pro_version = FrmProDb::$plug_version;
2951
  $expired = FrmAddonsController::is_license_expired();
2952
  ?>
2953
+ <div class="frm-banner-alert frm_error_style frm_previous_install">
2954
  <?php
2955
  esc_html_e( 'You are running a version of Formidable Forms that may not be compatible with your version of Formidable Forms Pro.', 'formidable' );
2956
  if ( empty( $expired ) ) {
2991
 
2992
  foreach ( $message as $m ) {
2993
  ?>
2994
+ <div class="frm-banner-alert frm_error_style frm_previous_install">
2995
  <?php echo esc_html( $m ); ?>
2996
  </div>
2997
  <?php
classes/helpers/FrmFieldsHelper.php CHANGED
@@ -159,7 +159,7 @@ class FrmFieldsHelper {
159
  $field_array['blank'] = $frm_settings->blank_msg;
160
  }
161
 
162
- if ( '' == $field_array['invalid'] ) {
163
  if ( 'captcha' === $field->type ) {
164
  $field_array['invalid'] = $frm_settings->re_msg;
165
  } else {
159
  $field_array['blank'] = $frm_settings->blank_msg;
160
  }
161
 
162
+ if ( '' === $field_array['invalid'] ) {
163
  if ( 'captcha' === $field->type ) {
164
  $field_array['invalid'] = $frm_settings->re_msg;
165
  } else {
classes/models/FrmAddon.php CHANGED
@@ -251,6 +251,10 @@ class FrmAddon {
251
  protected function update_pro_capabilities() {
252
  global $wp_roles;
253
 
 
 
 
 
254
  $caps = FrmAppHelper::frm_capabilities( 'pro_only' );
255
  $roles = get_editable_roles();
256
  $settings = new FrmSettings();
251
  protected function update_pro_capabilities() {
252
  global $wp_roles;
253
 
254
+ if ( ! function_exists( 'get_editable_roles' ) ) {
255
+ require_once ABSPATH . 'wp-admin/includes/user.php';
256
+ }
257
+
258
  $caps = FrmAppHelper::frm_capabilities( 'pro_only' );
259
  $roles = get_editable_roles();
260
  $settings = new FrmSettings();
classes/models/FrmField.php CHANGED
@@ -9,6 +9,15 @@ class FrmField {
9
  public static $transient_size = 200;
10
 
11
  public static function field_selection() {
 
 
 
 
 
 
 
 
 
12
  $fields = array(
13
  'text' => array(
14
  'name' => __( 'Text', 'formidable' ),
@@ -63,7 +72,7 @@ class FrmField {
63
  'icon' => 'frm_icon_font frm_user_icon',
64
  ),
65
  'captcha' => array(
66
- 'name' => __( 'reCAPTCHA', 'formidable' ),
67
  'icon' => 'frm_icon_font frm_shield_check_icon',
68
  ),
69
  );
9
  public static $transient_size = 200;
10
 
11
  public static function field_selection() {
12
+ $frm_settings = FrmAppHelper::get_settings();
13
+ $active_captcha = $frm_settings->active_captcha;
14
+ if ( ! FrmFieldCaptcha::should_show_captcha() ) {
15
+ $captcha_name = 'CAPTCHA';
16
+ } elseif ( $active_captcha === 'recaptcha' ) {
17
+ $captcha_name = 'reCAPTCHA';
18
+ } else {
19
+ $captcha_name = 'hCaptcha';
20
+ }
21
  $fields = array(
22
  'text' => array(
23
  'name' => __( 'Text', 'formidable' ),
72
  'icon' => 'frm_icon_font frm_user_icon',
73
  ),
74
  'captcha' => array(
75
+ 'name' => $captcha_name,
76
  'icon' => 'frm_icon_font frm_shield_check_icon',
77
  ),
78
  );
classes/models/FrmFieldCaptchaSettings.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ die( 'You are not allowed to call this page directly.' );
4
+ }
5
+
6
+ /**
7
+ * @since x.x
8
+ */
9
+ class FrmFieldCaptchaSettings {
10
+
11
+ public $secret;
12
+
13
+ public $token_field;
14
+
15
+ public $end_point;
16
+
17
+ public function __construct( $frm_settings ) {
18
+ if ( $frm_settings->active_captcha === 'recaptcha' ) {
19
+ $this->secret = $frm_settings->privkey;
20
+ $this->token_field = 'g-recaptcha-response';
21
+ $this->endpoint = 'https://www.google.com/recaptcha/api/siteverify';
22
+ } else {
23
+ $this->secret = $frm_settings->hcaptcha_privkey;
24
+ $this->token_field = 'h-captcha-response';
25
+ $this->endpoint = 'https://hcaptcha.com/siteverify';
26
+ }
27
+ }
28
+ }
classes/models/FrmForm.php CHANGED
@@ -727,7 +727,7 @@ class FrmForm {
727
  FrmAppHelper::unserialize_or_decode( $cache->options );
728
  }
729
 
730
- return wp_unslash( $cache );
731
  }
732
  }
733
 
727
  FrmAppHelper::unserialize_or_decode( $cache->options );
728
  }
729
 
730
+ return apply_filters( 'frm_form_object', wp_unslash( $cache ) );
731
  }
732
  }
733
 
classes/models/FrmSettings.php CHANGED
@@ -27,6 +27,9 @@ class FrmSettings {
27
  public $load_style;
28
  public $custom_style;
29
 
 
 
 
30
  public $pubkey;
31
  public $privkey;
32
  public $re_lang;
@@ -116,7 +119,7 @@ class FrmSettings {
116
  }
117
 
118
  private function set_default_options() {
119
- $this->fill_recaptcha_settings();
120
 
121
  if ( ! isset( $this->load_style ) ) {
122
  if ( ! isset( $this->custom_style ) ) {
@@ -179,9 +182,17 @@ class FrmSettings {
179
  }
180
  }
181
 
182
- private function fill_recaptcha_settings() {
183
- $privkey = '';
184
- $re_lang = '';
 
 
 
 
 
 
 
 
185
 
186
  if ( ! isset( $this->pubkey ) ) {
187
  // get the options from the database
@@ -192,7 +203,7 @@ class FrmSettings {
192
  }
193
 
194
  if ( ! isset( $this->re_msg ) || empty( $this->re_msg ) ) {
195
- $this->re_msg = __( 'The reCAPTCHA was not entered correctly', 'formidable' );
196
  }
197
 
198
  if ( ! isset( $this->privkey ) ) {
@@ -267,12 +278,15 @@ class FrmSettings {
267
  }
268
 
269
  private function update_settings( $params ) {
270
- $this->pubkey = trim( $params['frm_pubkey'] );
271
- $this->privkey = $params['frm_privkey'];
272
- $this->re_type = $params['frm_re_type'];
273
- $this->re_lang = $params['frm_re_lang'];
274
- $this->re_threshold = floatval( $params['frm_re_threshold'] );
275
- $this->load_style = $params['frm_load_style'];
 
 
 
276
 
277
  $checkboxes = array( 'mu_menu', 're_multi', 'use_html', 'jquery_css', 'accordion_js', 'fade_form', 'no_ips', 'tracking', 'admin_bar' );
278
  foreach ( $checkboxes as $set ) {
27
  public $load_style;
28
  public $custom_style;
29
 
30
+ public $active_captcha;
31
+ public $hcaptcha_pubkey;
32
+ public $hcaptcha_privkey;
33
  public $pubkey;
34
  public $privkey;
35
  public $re_lang;
119
  }
120
 
121
  private function set_default_options() {
122
+ $this->fill_captcha_settings();
123
 
124
  if ( ! isset( $this->load_style ) ) {
125
  if ( ! isset( $this->custom_style ) ) {
182
  }
183
  }
184
 
185
+ private function fill_captcha_settings() {
186
+ if ( ! isset( $this->active_captcha ) ) {
187
+ $this->active_captcha = 'recaptcha';
188
+ }
189
+
190
+ $privkey = '';
191
+ $re_lang = '';
192
+
193
+ if ( ! isset( $this->hcaptcha_privkey ) ) {
194
+ $this->hcaptcha_privkey = '';
195
+ }
196
 
197
  if ( ! isset( $this->pubkey ) ) {
198
  // get the options from the database
203
  }
204
 
205
  if ( ! isset( $this->re_msg ) || empty( $this->re_msg ) ) {
206
+ $this->re_msg = __( 'The CAPTCHA was not entered correctly', 'formidable' );
207
  }
208
 
209
  if ( ! isset( $this->privkey ) ) {
278
  }
279
 
280
  private function update_settings( $params ) {
281
+ $this->active_captcha = $params['frm_active_captcha'];
282
+ $this->hcaptcha_pubkey = trim( $params['frm_hcaptcha_pubkey'] );
283
+ $this->hcaptcha_privkey = $params['frm_hcaptcha_privkey'];
284
+ $this->pubkey = trim( $params['frm_pubkey'] );
285
+ $this->privkey = $params['frm_privkey'];
286
+ $this->re_type = $params['frm_re_type'];
287
+ $this->re_lang = $params['frm_re_lang'];
288
+ $this->re_threshold = floatval( $params['frm_re_threshold'] );
289
+ $this->load_style = $params['frm_load_style'];
290
 
291
  $checkboxes = array( 'mu_menu', 're_multi', 'use_html', 'jquery_css', 'accordion_js', 'fade_form', 'no_ips', 'tracking', 'admin_bar' );
292
  foreach ( $checkboxes as $set ) {
classes/models/fields/FrmFieldCaptcha.php CHANGED
@@ -21,15 +21,34 @@ class FrmFieldCaptcha extends FrmFieldType {
21
  return FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/field-captcha.php';
22
  }
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  /**
25
  * @return array
26
  */
27
  protected function field_settings_for_type() {
28
  return array(
29
- 'required' => false,
30
- 'invalid' => true,
31
- 'captcha_size' => true,
32
- 'default' => false,
33
  );
34
  }
35
 
@@ -64,21 +83,34 @@ class FrmFieldCaptcha extends FrmFieldType {
64
  * @return string
65
  */
66
  protected function before_replace_html_shortcodes( $args, $html ) {
67
- return str_replace( ' for="field_[key]"', ' for="g-recaptcha-response"', $html );
 
 
 
 
68
  }
69
 
70
  public function front_field_input( $args, $shortcode_atts ) {
71
  $frm_settings = FrmAppHelper::get_settings();
72
- if ( empty( $frm_settings->pubkey ) ) {
73
  return '';
74
  }
75
 
76
- $class_prefix = $this->class_prefix();
77
- $captcha_size = $this->captcha_size();
 
78
  $allow_mutiple = $frm_settings->re_multi;
79
 
80
- $html = '<div id="' . esc_attr( $args['html_id'] ) . '" class="' . esc_attr( $class_prefix ) . 'g-recaptcha" data-sitekey="' . esc_attr( $frm_settings->pubkey ) . '" data-size="' . esc_attr( $captcha_size ) . '" data-theme="' . esc_attr( $this->field['captcha_theme'] ) . '"';
81
- if ( $captcha_size == 'invisible' && ! $allow_mutiple ) {
 
 
 
 
 
 
 
 
82
  $html .= ' data-callback="frmAfterRecaptcha"';
83
  }
84
  $html .= '></div>';
@@ -89,14 +121,22 @@ class FrmFieldCaptcha extends FrmFieldType {
89
  protected function load_field_scripts( $args ) {
90
  $api_js_url = $this->api_url();
91
 
92
- wp_register_script( 'recaptcha-api', $api_js_url, array( 'formidable' ), '3', true );
93
- wp_enqueue_script( 'recaptcha-api' );
94
  }
95
 
96
  protected function api_url() {
 
 
 
 
 
 
 
 
 
97
  $api_js_url = 'https://www.google.com/recaptcha/api.js?';
98
 
99
- $frm_settings = FrmAppHelper::get_settings();
100
  $allow_mutiple = $frm_settings->re_multi;
101
  if ( $allow_mutiple ) {
102
  $api_js_url .= '&onload=frmRecaptcha&render=explicit';
@@ -107,11 +147,28 @@ class FrmFieldCaptcha extends FrmFieldType {
107
  $api_js_url .= '&hl=' . $lang;
108
  }
109
 
110
- return apply_filters( 'frm_recaptcha_js_url', $api_js_url );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  }
112
 
113
- protected function class_prefix() {
114
- if ( $this->allow_multiple() ) {
115
  $class_prefix = 'frm-';
116
  } else {
117
  $class_prefix = '';
@@ -120,17 +177,18 @@ class FrmFieldCaptcha extends FrmFieldType {
120
  return $class_prefix;
121
  }
122
 
123
- protected function allow_multiple() {
124
- $frm_settings = FrmAppHelper::get_settings();
 
125
 
 
126
  return $frm_settings->re_multi;
127
  }
128
 
129
  /**
130
  * @return string
131
  */
132
- protected function captcha_size() {
133
- $frm_settings = FrmAppHelper::get_settings();
134
  if ( in_array( $frm_settings->re_type, array( 'invisible', 'v3' ), true ) ) {
135
  return 'invisible';
136
  }
@@ -151,7 +209,7 @@ class FrmFieldCaptcha extends FrmFieldType {
151
 
152
  if ( is_wp_error( $resp ) ) {
153
  $error_string = $resp->get_error_message();
154
- $errors[ 'field' . $args['id'] ] = __( 'There was a problem verifying your recaptcha', 'formidable' );
155
  $errors[ 'field' . $args['id'] ] .= ' ' . $error_string;
156
  return $errors;
157
  }
@@ -160,21 +218,26 @@ class FrmFieldCaptcha extends FrmFieldType {
160
  return $errors;
161
  }
162
 
163
- if ( 'v3' === $frm_settings->re_type && array_key_exists( 'score', $response ) ) {
164
- $threshold = floatval( $frm_settings->re_threshold );
165
- $score = floatval( $response['score'] );
 
166
 
167
- $this->set_score( $score );
168
 
169
- if ( $score < $threshold ) {
170
- $response['success'] = false;
 
171
  }
172
  }
173
 
174
  if ( isset( $response['success'] ) && ! $response['success'] ) {
175
  // What happens when the CAPTCHA was entered incorrectly
176
- $invalid_message = FrmField::get_option( $this->field, 'invalid' );
177
- $errors[ 'field' . $args['id'] ] = ( $invalid_message == '' ? $frm_settings->re_msg : $invalid_message );
 
 
 
178
  }
179
 
180
  return $errors;
@@ -205,7 +268,7 @@ class FrmFieldCaptcha extends FrmFieldType {
205
  }
206
 
207
  // phpcs:ignore WordPress.Security.NonceVerification.Missing
208
- if ( ! isset( $_POST['g-recaptcha-response'] ) ) {
209
  // There was no captcha submitted.
210
  return array( 'field' . $args['id'] => __( 'The captcha is missing from this form', 'formidable' ) );
211
  }
@@ -217,9 +280,13 @@ class FrmFieldCaptcha extends FrmFieldType {
217
  * @since 4.07
218
  * @return bool
219
  */
220
- private function should_show_captcha() {
221
  $frm_settings = FrmAppHelper::get_settings();
222
- return ! empty( $frm_settings->pubkey );
 
 
 
 
223
  }
224
 
225
  protected function should_validate() {
@@ -229,18 +296,40 @@ class FrmFieldCaptcha extends FrmFieldType {
229
  }
230
 
231
  // don't require the captcha if it shouldn't be shown
232
- return $this->should_show_captcha();
233
  }
234
 
235
  protected function send_api_check( $frm_settings ) {
 
 
236
  $arg_array = array(
237
  'body' => array(
238
- 'secret' => $frm_settings->privkey,
239
- 'response' => FrmAppHelper::get_param( 'g-recaptcha-response', '', 'post', 'sanitize_text_field' ),
240
  'remoteip' => FrmAppHelper::get_ip_address(),
241
  ),
242
  );
243
 
244
- return wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', $arg_array );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  }
246
  }
21
  return FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/field-captcha.php';
22
  }
23
 
24
+ /**
25
+ * Returns the image name for a captcha.
26
+ *
27
+ * @return string
28
+ */
29
+ public static function get_captcha_image_name() {
30
+ $frm_settings = FrmAppHelper::get_settings();
31
+ $active_captcha = $frm_settings->active_captcha;
32
+ if ( ! self::should_show_captcha() ) {
33
+ $image_name = 'captcha_not_setup';
34
+ } elseif ( $active_captcha === 'recaptcha' && $frm_settings->re_type === 'v3' ) {
35
+ $image_name = 'recaptcha_v3';
36
+ } else {
37
+ $image_name = $active_captcha;
38
+ }
39
+
40
+ return $image_name;
41
+ }
42
+
43
  /**
44
  * @return array
45
  */
46
  protected function field_settings_for_type() {
47
  return array(
48
+ 'required' => false,
49
+ 'invalid' => true,
50
+ 'captcha_size' => true,
51
+ 'default' => false,
52
  );
53
  }
54
 
83
  * @return string
84
  */
85
  protected function before_replace_html_shortcodes( $args, $html ) {
86
+ $frm_settings = FrmAppHelper::get_settings();
87
+ $replace_response = $frm_settings->active_captcha === 'recaptcha' ? 'g-recaptcha-response' : 'h-captcha-response';
88
+ $replaced_for = str_replace( ' for="field_[key]"', ' for="' . $replace_response . '"', $html );
89
+
90
+ return $replaced_for;
91
  }
92
 
93
  public function front_field_input( $args, $shortcode_atts ) {
94
  $frm_settings = FrmAppHelper::get_settings();
95
+ if ( ! self::should_show_captcha() ) {
96
  return '';
97
  }
98
 
99
+ $class_prefix = $this->class_prefix( $frm_settings );
100
+ $captcha_class = $this->captcha_class( $frm_settings );
101
+ $captcha_size = $this->captcha_size( $frm_settings );
102
  $allow_mutiple = $frm_settings->re_multi;
103
 
104
+ if ( $frm_settings->active_captcha === 'recaptcha' ) {
105
+ $site_key = $frm_settings->pubkey;
106
+ $recaptcha_options = '" data-size="' . esc_attr( $captcha_size ) . '" data-theme="' . esc_attr( $this->field['captcha_theme'] ) . '"';
107
+ } else {
108
+ $site_key = $frm_settings->hcaptcha_pubkey;
109
+ }
110
+
111
+ $html = '<div id="' . esc_attr( $args['html_id'] ) . '" class="' . esc_attr( $class_prefix ) . $captcha_class . '" data-sitekey="' . esc_attr( $site_key ) . '"';
112
+ $html .= ! empty( $recaptcha_options ) ? $recaptcha_options : '';
113
+ if ( $captcha_size === 'invisible' && ! $allow_mutiple ) {
114
  $html .= ' data-callback="frmAfterRecaptcha"';
115
  }
116
  $html .= '></div>';
121
  protected function load_field_scripts( $args ) {
122
  $api_js_url = $this->api_url();
123
 
124
+ wp_register_script( 'captcha-api', $api_js_url, array( 'formidable' ), '3', true );
125
+ wp_enqueue_script( 'captcha-api' );
126
  }
127
 
128
  protected function api_url() {
129
+ $frm_settings = FrmAppHelper::get_settings();
130
+ if ( $frm_settings->active_captcha === 'recaptcha' ) {
131
+ return $this->recaptcha_api_url( $frm_settings );
132
+ }
133
+
134
+ return $this->hcaptcha_api_url();
135
+ }
136
+
137
+ protected function recaptcha_api_url( $frm_settings ) {
138
  $api_js_url = 'https://www.google.com/recaptcha/api.js?';
139
 
 
140
  $allow_mutiple = $frm_settings->re_multi;
141
  if ( $allow_mutiple ) {
142
  $api_js_url .= '&onload=frmRecaptcha&render=explicit';
147
  $api_js_url .= '&hl=' . $lang;
148
  }
149
 
150
+ $api_js_url = apply_filters( 'frm_recaptcha_js_url', $api_js_url );
151
+
152
+ return $api_js_url;
153
+ }
154
+
155
+ protected function hcaptcha_api_url() {
156
+ $api_js_url = 'https://js.hcaptcha.com/1/api.js';
157
+
158
+ /**
159
+ * Allows updating hcaptcha js api url.
160
+ *
161
+ * @since x.x
162
+ *
163
+ * @param string $api_js_url
164
+ */
165
+ $api_js_url = apply_filters( 'frm_hcaptcha_js_url', $api_js_url );
166
+
167
+ return $api_js_url;
168
  }
169
 
170
+ protected function class_prefix( $frm_settings ) {
171
+ if ( $this->allow_multiple( $frm_settings ) && $frm_settings->active_captcha === 'recaptcha' ) {
172
  $class_prefix = 'frm-';
173
  } else {
174
  $class_prefix = '';
177
  return $class_prefix;
178
  }
179
 
180
+ protected function captcha_class( $frm_settings ) {
181
+ return $frm_settings->active_captcha === 'recaptcha' ? 'g-recaptcha' : 'h-captcha';
182
+ }
183
 
184
+ protected function allow_multiple( $frm_settings ) {
185
  return $frm_settings->re_multi;
186
  }
187
 
188
  /**
189
  * @return string
190
  */
191
+ protected function captcha_size( $frm_settings ) {
 
192
  if ( in_array( $frm_settings->re_type, array( 'invisible', 'v3' ), true ) ) {
193
  return 'invisible';
194
  }
209
 
210
  if ( is_wp_error( $resp ) ) {
211
  $error_string = $resp->get_error_message();
212
+ $errors[ 'field' . $args['id'] ] = __( 'There was a problem verifying your captcha', 'formidable' );
213
  $errors[ 'field' . $args['id'] ] .= ' ' . $error_string;
214
  return $errors;
215
  }
218
  return $errors;
219
  }
220
 
221
+ if ( $frm_settings->active_captcha === 'recaptcha' ) {
222
+ if ( 'v3' === $frm_settings->re_type && array_key_exists( 'score', $response ) ) {
223
+ $threshold = floatval( $frm_settings->re_threshold );
224
+ $score = floatval( $response['score'] );
225
 
226
+ $this->set_score( $score );
227
 
228
+ if ( $score < $threshold ) {
229
+ $response['success'] = false;
230
+ }
231
  }
232
  }
233
 
234
  if ( isset( $response['success'] ) && ! $response['success'] ) {
235
  // What happens when the CAPTCHA was entered incorrectly
236
+ $invalid_message = FrmField::get_option( $this->field, 'invalid' );
237
+ if ( $invalid_message === __( 'The reCAPTCHA was not entered correctly', 'formidable' ) ) {
238
+ $invalid_message = '';
239
+ }
240
+ $errors[ 'field' . $args['id'] ] = ( $invalid_message === '' ? $frm_settings->re_msg : $invalid_message );
241
  }
242
 
243
  return $errors;
268
  }
269
 
270
  // phpcs:ignore WordPress.Security.NonceVerification.Missing
271
+ if ( ! isset( $_POST['g-recaptcha-response'] ) && ! isset( $_POST['h-captcha-response'] ) ) {
272
  // There was no captcha submitted.
273
  return array( 'field' . $args['id'] => __( 'The captcha is missing from this form', 'formidable' ) );
274
  }
280
  * @since 4.07
281
  * @return bool
282
  */
283
+ public static function should_show_captcha() {
284
  $frm_settings = FrmAppHelper::get_settings();
285
+ if ( $frm_settings->active_captcha === 'recaptcha' ) {
286
+ return ! empty( $frm_settings->pubkey );
287
+ }
288
+
289
+ return ! empty( $frm_settings->hcaptcha_pubkey );
290
  }
291
 
292
  protected function should_validate() {
296
  }
297
 
298
  // don't require the captcha if it shouldn't be shown
299
+ return self::should_show_captcha();
300
  }
301
 
302
  protected function send_api_check( $frm_settings ) {
303
+ $captcha_settings = new FrmFieldCaptchaSettings( $frm_settings );
304
+
305
  $arg_array = array(
306
  'body' => array(
307
+ 'secret' => $captcha_settings->secret,
308
+ 'response' => FrmAppHelper::get_param( $captcha_settings->token_field, '', 'post', 'sanitize_text_field' ),
309
  'remoteip' => FrmAppHelper::get_ip_address(),
310
  ),
311
  );
312
 
313
+ return wp_remote_post( $captcha_settings->endpoint, $arg_array );
314
+ }
315
+
316
+ /**
317
+ * Updates field name in page builder to the currently activated captcha if it is set to the default.
318
+ *
319
+ * @since x.x
320
+ *
321
+ * @param array $values
322
+ *
323
+ * @return array $values
324
+ */
325
+ public static function update_field_name( $values ) {
326
+ if ( $values['type'] === 'captcha' ) {
327
+ $name = $values['name'];
328
+ if ( in_array( $name, array( __( 'reCAPTCHA', 'formidable' ), __( 'hCaptcha', 'formidable' ) ), true ) ) {
329
+ $values['name'] = __( 'CAPTCHA', 'formidable' );
330
+ }
331
+ }
332
+
333
+ return $values;
334
  }
335
  }
classes/views/frm-fields/back-end/field-captcha.php CHANGED
@@ -3,13 +3,7 @@ if ( ! defined( 'ABSPATH' ) ) {
3
  die( 'You are not allowed to call this page directly.' );
4
  }
5
 
6
- $frm_settings = FrmAppHelper::get_settings();
7
- if ( empty( $frm_settings->pubkey ) ) {
8
- ?>
9
- <div class="howto frm_no_captcha_text"><?php
10
- /* translators: %1$s: Link HTML, %2$s: End link */
11
- printf( esc_html__( 'Your captcha will not appear on your form until you %1$sset up%2$s the Site and Secret Keys', 'formidable' ), '<a href="?page=formidable-settings" target="_blank">', '</a>' );
12
- ?></div>
13
- <?php } ?>
14
- <img src="<?php echo esc_url( FrmAppHelper::plugin_url() . '/images/recaptcha.png' ); ?>" class="recaptcha_placeholder" alt="reCaptcha"/>
15
  <input type="hidden" name="<?php echo esc_attr( $field_name ); ?>" value="1" />
3
  die( 'You are not allowed to call this page directly.' );
4
  }
5
 
6
+ $image_name = FrmFieldCaptcha::get_captcha_image_name();
7
+ ?>
8
+ <img src="<?php echo esc_url( FrmAppHelper::plugin_url() . '/images/' . $image_name . '.png' ); ?>" class="<?php echo esc_attr( $image_name ); ?>_placeholder" alt="<?php echo esc_attr( $image_name ); ?>"/>
 
 
 
 
 
 
9
  <input type="hidden" name="<?php echo esc_attr( $field_name ); ?>" value="1" />
classes/views/frm-fields/back-end/settings.php CHANGED
@@ -21,6 +21,21 @@ if ( ! defined( 'ABSPATH' ) ) {
21
  </h3>
22
 
23
  <div class="frm_grid_container frm-collapse-me">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  <?php if ( $display['label'] ) { ?>
25
  <p>
26
  <label for="frm_name_<?php echo esc_attr( $field['id'] ); ?>">
@@ -226,7 +241,7 @@ do_action( 'frm_before_field_options', $field, compact( 'field_obj', 'display',
226
  </p>
227
  <?php } ?>
228
 
229
- <?php if ( $display['captcha_size'] && $frm_settings->re_type !== 'invisible' ) { ?>
230
  <p class="frm6 frm_first frm_form_field">
231
  <label for="field_options_captcha_size_<?php echo esc_attr( $field['id'] ); ?>" class="frm_help" title="<?php esc_attr_e( 'Set the size of the captcha field. The compact option is best if your form is in a small area.', 'formidable' ); ?>">
232
  <?php esc_html_e( 'ReCaptcha Type', 'formidable' ); ?>
21
  </h3>
22
 
23
  <div class="frm_grid_container frm-collapse-me">
24
+ <?php
25
+ if ( $field['type'] === 'captcha' && ! FrmFieldCaptcha::should_show_captcha() ) {
26
+ ?>
27
+ <div class="frm_builder_captcha frm_warning_style">
28
+ <?php FrmAppHelper::icon_by_class( 'frm_icon_font frm_alert_icon' ); ?>
29
+ <div><b><?php echo esc_html__( 'Setup a captcha', 'formidable' ); ?></b>
30
+ <p>
31
+ <?php
32
+ /* translators: %1$s: Link HTML, %2$s: End link */
33
+ printf( esc_html__( 'Your captcha will not appear on your form until you %1$sset up%2$s the Site and Secret Keys', 'formidable' ), '<a href="?page=formidable-settings" target="_blank">', '</a>' );
34
+ ?>
35
+ </p>
36
+ </div>
37
+ </div>
38
+ <?php } ?>
39
  <?php if ( $display['label'] ) { ?>
40
  <p>
41
  <label for="frm_name_<?php echo esc_attr( $field['id'] ); ?>">
241
  </p>
242
  <?php } ?>
243
 
244
+ <?php if ( $display['captcha_size'] && $frm_settings->re_type !== 'invisible' && $frm_settings->active_captcha === 'recaptcha' ) { ?>
245
  <p class="frm6 frm_first frm_form_field">
246
  <label for="field_options_captcha_size_<?php echo esc_attr( $field['id'] ); ?>" class="frm_help" title="<?php esc_attr_e( 'Set the size of the captcha field. The compact option is best if your form is in a small area.', 'formidable' ); ?>">
247
  <?php esc_html_e( 'ReCaptcha Type', 'formidable' ); ?>
classes/views/frm-settings/captcha/captcha.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ die( 'You are not allowed to call this page directly.' );
4
+ }
5
+ ?>
6
+ <p class="howto">
7
+ <?php
8
+ esc_html_e( 'Captcha will help you to avoid gathering automatically generated responses', 'formidable' );
9
+ ?>
10
+ </p>
11
+ <?php
12
+ $active_captcha = $frm_settings->active_captcha;
13
+ $recaptcha_is_active = $active_captcha === 'recaptcha';
14
+ ?>
15
+ <h4><?php esc_html_e( 'Select captcha type', 'formidable' ); ?></h4>
16
+ <div class="frm_captchas">
17
+ <div class="frm_radio">
18
+ <div class="captcha_option <?php echo esc_attr( $recaptcha_is_active ? 'active' : '' ); ?>">
19
+ <input type="radio" name="frm_active_captcha" id="recaptcha" value="recaptcha" <?php checked( $frm_settings->active_captcha, 'recaptcha' ); ?> />
20
+ <label for="recaptcha">
21
+ <?php
22
+ FrmAppHelper::icon_by_class( 'frmfont frm_recaptcha' );
23
+ ?>
24
+ <p><?php echo esc_html_e( 'reCAPTCHA', 'formidable' ); ?></p>
25
+ </label>
26
+ </div>
27
+ <div class="captcha_option <?php echo esc_attr( $recaptcha_is_active ? '' : 'active' ); ?>">
28
+ <input type="radio" name="frm_active_captcha" id="hcaptcha" value="hcaptcha" <?php checked( $frm_settings->active_captcha, 'hcaptcha' ); ?> />
29
+ <label for="hcaptcha">
30
+ <?php
31
+ FrmAppHelper::icon_by_class( 'frmfont frm_hcaptcha' );
32
+ ?>
33
+ <p><?php echo esc_html_e( 'hCaptcha', 'formidable' ); ?></p>
34
+ </label>
35
+ </div>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="alert frm_hidden">
40
+ <?php FrmAppHelper::icon_by_class( 'frm_icon_font frm_tooltip_icon' ); ?>
41
+ <span><?php esc_html_e( 'Changing the captcha type here will replace it in all any forms where it is used.', 'formidable' ); ?></span>
42
+ </div>
43
+
44
+ <div id="recaptcha_settings" class="frm_grid_container <?php echo esc_attr( $recaptcha_is_active ? '' : 'frm_hidden' ); ?>">
45
+ <h3><?php esc_html_e( 'reCAPTCHA Settings', 'formidable' ); ?></h3>
46
+ <?php
47
+ $captcha = 'recaptcha';
48
+ require FrmAppHelper::plugin_path() . '/classes/views/frm-settings/captcha/captcha_keys.php';
49
+ ?>
50
+
51
+ <p class="frm6 frm_form_field">
52
+ <label for="frm_re_type">
53
+ <?php esc_html_e( 'reCAPTCHA Type', 'formidable' ); ?>
54
+ </label>
55
+ <select name="frm_re_type" id="frm_re_type">
56
+ <option value="" <?php selected( $frm_settings->re_type, '' ); ?>>
57
+ <?php esc_html_e( 'Checkbox (V2)', 'formidable' ); ?>
58
+ </option>
59
+ <option value="invisible" <?php selected( $frm_settings->re_type, 'invisible' ); ?>>
60
+ <?php esc_html_e( 'Invisible', 'formidable' ); ?>
61
+ </option>
62
+ <option value="v3" <?php selected( $frm_settings->re_type, 'v3' ); ?>>
63
+ <?php esc_html_e( 'v3', 'formidable' ); ?>
64
+ </option>
65
+ </select>
66
+ </p>
67
+
68
+ <p class="frm6 frm_form_field">
69
+ <label for="frm_re_lang">
70
+ <?php esc_html_e( 'reCAPTCHA Language', 'formidable' ); ?>
71
+ </label>
72
+ <select name="frm_re_lang" id="frm_re_lang">
73
+ <option value="" <?php selected( $frm_settings->re_lang, '' ); ?>>
74
+ <?php esc_html_e( 'Browser Default', 'formidable' ); ?>
75
+ </option>
76
+ <?php foreach ( $captcha_lang as $lang => $lang_name ) { ?>
77
+ <option value="<?php echo esc_attr( $lang ); ?>" <?php selected( $frm_settings->re_lang, $lang ); ?>>
78
+ <?php echo esc_html( $lang_name ); ?>
79
+ </option>
80
+ <?php } ?>
81
+ </select>
82
+ </p>
83
+
84
+ <p id="frm_captcha_threshold_container" class="frm6 frm_form_field <?php echo 'v3' === $frm_settings->re_type ? '' : 'frm_hidden'; ?>">
85
+ <label for="frm_re_type">
86
+ <?php esc_html_e( 'reCAPTCHA Threshold', 'formidable' ); ?>
87
+ <span class="frm_help frm_icon_font frm_tooltip_icon" title="<?php esc_attr_e( 'A score of 0 is likely to be a bot and a score of 1 is likely not a bot. Setting a lower threshold will allow more bots, but it will also stop fewer real users.', 'formidable' ); ?>"></span>
88
+ </label>
89
+ <span style="vertical-align:top;">0</span>
90
+ <input name="frm_re_threshold" id="frm_re_threshold" type="range" step="0.1" max="1" min="0" value="<?php echo esc_attr( $frm_settings->re_threshold ); ?>" />
91
+ <span style="vertical-align:top;">1</span>
92
+ </p>
93
+
94
+ <p>
95
+ <label for="frm_re_multi">
96
+ <input type="checkbox" name="frm_re_multi" id="frm_re_multi"
97
+ value="1" <?php checked( $frm_settings->re_multi, 1 ); ?> />
98
+ <?php esc_html_e( 'Allow multiple reCAPTCHAs to be used on a single page', 'formidable' ); ?>
99
+ </label>
100
+ </p>
101
+ </div>
102
+
103
+ <div id="hcaptcha_settings" class="frm_grid_container <?php echo esc_attr( $recaptcha_is_active ? 'frm_hidden' : '' ); ?>">
104
+ <h3><?php esc_html_e( 'hCaptcha Settings', 'formidable' ); ?></h3>
105
+ <?php
106
+ $captcha = 'hcaptcha';
107
+ require FrmAppHelper::plugin_path() . '/classes/views/frm-settings/captcha/captcha_keys.php';
108
+ ?>
109
+ </div>
classes/views/frm-settings/captcha/captcha_keys.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ die( 'You are not allowed to call this page directly.' );
4
+ }
5
+ ?>
6
+
7
+ <p class="howto">
8
+ <?php
9
+ $captcha_name = $captcha === 'recaptcha' ? 'reCAPTCHA' : 'hCaptcha';
10
+ if ( $captcha === 'recaptcha' ) {
11
+ $captcha_name = 'reCAPTCHA';
12
+ $captcha_api = 'https://www.google.com/recaptcha/';
13
+ } else {
14
+ $captcha_name = 'hCaptcha';
15
+ $captcha_api = 'https://www.hcaptcha.com/signup-interstitial';
16
+ }
17
+ printf(
18
+ /* translators: %1$s: Captcha name, %2$s: Start link HTML, %3$s: End link HTML */
19
+ esc_html__( '%1$s requires a Site and Private API key. Sign up for a %2$sfree %1$s key%3$s.', 'formidable' ),
20
+ esc_html( $captcha_name ),
21
+ '<a href="' . esc_url( $captcha_api ) . '" target="_blank">',
22
+ '</a>'
23
+ );
24
+ ?>
25
+ </p>
26
+ <?php
27
+ if ( $captcha === 'recaptcha' ) {
28
+ $prefix = '';
29
+ $title = __( 'reCAPTCHA is a free, accessible CAPTCHA service that helps to digitize books while blocking spam on your blog. reCAPTCHA asks commenters to retype two words scanned from a book to prove that they are a human. This verifies that they are not a spambot.', 'formidable' );
30
+ } else {
31
+ $prefix = 'hcaptcha_';
32
+ $title = __( 'hCaptcha is an anti-bot solution that protects user privacy and rewards websites. It is a privacy-focused drop-in replacement for reCAPTCHA.', 'formidable' );
33
+ }
34
+ ?>
35
+ <p class="frm6 frm_form_field">
36
+ <label class="frm_help" for="frm_<?php echo esc_attr( $prefix ); ?>pubkey" title="<?php echo esc_attr( $title ); ?>">
37
+ <?php esc_html_e( 'Site Key', 'formidable' ); ?>
38
+ </label>
39
+ <input type="text" name="frm_<?php echo esc_html( $prefix ); ?>pubkey" id="frm_<?php echo esc_html( $prefix ); ?>pubkey" size="42" value="<?php echo esc_attr( $frm_settings->{$prefix . 'pubkey'} ); ?>" />
40
+ </p>
41
+
42
+ <p class="frm6 frm_form_field">
43
+ <label for="frm_<?php echo esc_attr( $prefix ); ?>privkey">
44
+ <?php esc_html_e( 'Secret Key', 'formidable' ); ?>
45
+ </label>
46
+ <input type="text" name="frm_<?php echo esc_html( $prefix ); ?>privkey" id="frm_<?php echo esc_html( $prefix ); ?>privkey" size="42" value="<?php echo esc_attr( $frm_settings->{$prefix . 'privkey'} ); ?>" />
47
+ </p>
classes/views/frm-settings/recaptcha.php CHANGED
@@ -2,81 +2,7 @@
2
  if ( ! defined( 'ABSPATH' ) ) {
3
  die( 'You are not allowed to call this page directly.' );
4
  }
5
- ?>
6
- <p class="howto">
7
- <?php
8
- printf(
9
- /* translators: %1$s: Start link HTML, %2$s: End link HTML */
10
- esc_html__( 'reCAPTCHA requires a Site and Private API key. Sign up for a %1$sfree reCAPTCHA key%2$s.', 'formidable' ),
11
- '<a href="' . esc_url( 'https://www.google.com/recaptcha/' ) . '" target="_blank">',
12
- '</a>'
13
- );
14
- ?>
15
- </p>
16
 
17
- <div class="frm_grid_container">
18
- <p class="frm6 frm_form_field">
19
- <label class="frm_help" for="frm_pubkey" title="<?php esc_attr_e( 'reCAPTCHA is a free, accessible CAPTCHA service that helps to digitize books while blocking spam on your blog. reCAPTCHA asks commenters to retype two words scanned from a book to prove that they are a human. This verifies that they are not a spambot.', 'formidable' ); ?>">
20
- <?php esc_html_e( 'Site Key', 'formidable' ); ?>
21
- </label>
22
- <input type="text" name="frm_pubkey" id="frm_pubkey" size="42" value="<?php echo esc_attr( $frm_settings->pubkey ); ?>" />
23
- </p>
24
 
25
- <p class="frm6 frm_form_field">
26
- <label for="frm_privkey">
27
- <?php esc_html_e( 'Secret Key', 'formidable' ); ?>
28
- </label>
29
- <input type="text" name="frm_privkey" id="frm_privkey" size="42" value="<?php echo esc_attr( $frm_settings->privkey ); ?>" />
30
- </p>
31
-
32
- <p class="frm6 frm_form_field">
33
- <label for="frm_re_type">
34
- <?php esc_html_e( 'reCAPTCHA Type', 'formidable' ); ?>
35
- </label>
36
- <select name="frm_re_type" id="frm_re_type">
37
- <option value="" <?php selected( $frm_settings->re_type, '' ); ?>>
38
- <?php esc_html_e( 'Checkbox (V2)', 'formidable' ); ?>
39
- </option>
40
- <option value="invisible" <?php selected( $frm_settings->re_type, 'invisible' ); ?>>
41
- <?php esc_html_e( 'Invisible', 'formidable' ); ?>
42
- </option>
43
- <option value="v3" <?php selected( $frm_settings->re_type, 'v3' ); ?>>
44
- <?php esc_html_e( 'v3', 'formidable' ); ?>
45
- </option>
46
- </select>
47
- </p>
48
-
49
- <p class="frm6 frm_form_field">
50
- <label for="frm_re_lang">
51
- <?php esc_html_e( 'reCAPTCHA Language', 'formidable' ); ?>
52
- </label>
53
- <select name="frm_re_lang" id="frm_re_lang">
54
- <option value="" <?php selected( $frm_settings->re_lang, '' ); ?>>
55
- <?php esc_html_e( 'Browser Default', 'formidable' ); ?>
56
- </option>
57
- <?php foreach ( $captcha_lang as $lang => $lang_name ) { ?>
58
- <option value="<?php echo esc_attr( $lang ); ?>" <?php selected( $frm_settings->re_lang, $lang ); ?>>
59
- <?php echo esc_html( $lang_name ); ?>
60
- </option>
61
- <?php } ?>
62
- </select>
63
- </p>
64
-
65
- <p id="frm_captcha_threshold_container" class="frm6 frm_form_field <?php echo 'v3' === $frm_settings->re_type ? '' : 'frm_hidden'; ?>">
66
- <label for="frm_re_type">
67
- <?php esc_html_e( 'reCAPTCHA Threshold', 'formidable' ); ?>
68
- <span class="frm_help frm_icon_font frm_tooltip_icon" title="<?php esc_attr_e( 'A score of 0 is likely to be a bot and a score of 1 is likely not a bot. Setting a lower threshold will allow more bots, but it will also stop fewer real users.', 'formidable' ); ?>"></span>
69
- </label>
70
- <span style="vertical-align:top;">0</span>
71
- <input name="frm_re_threshold" id="frm_re_threshold" type="range" step="0.1" max="1" min="0" value="<?php echo esc_attr( $frm_settings->re_threshold ); ?>" />
72
- <span style="vertical-align:top;">1</span>
73
- </p>
74
-
75
- <p>
76
- <label for="frm_re_multi">
77
- <input type="checkbox" name="frm_re_multi" id="frm_re_multi"
78
- value="1" <?php checked( $frm_settings->re_multi, 1 ); ?> />
79
- <?php esc_html_e( 'Allow multiple reCAPTCHAs to be used on a single page', 'formidable' ); ?>
80
- </label>
81
- </p>
82
- </div>
2
  if ( ! defined( 'ABSPATH' ) ) {
3
  die( 'You are not allowed to call this page directly.' );
4
  }
 
 
 
 
 
 
 
 
 
 
 
5
 
6
+ _deprecated_file( esc_html( basename( __FILE__ ) ), 'x.x', 'formidable/classes/views/frm-settings/captcha/captcha.php' );
 
 
 
 
 
 
7
 
8
+ include FrmAppHelper::plugin_path() . '/classes/views/frm-settings/captcha/captcha.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/frm_admin.css CHANGED
@@ -239,9 +239,9 @@ td.column-title .frm_actions_dropdown {
239
  }
240
 
241
  .frm-upgrade-bar {
242
- background: var(--sidebar-color);
243
  border-bottom: 1px solid var(--sidebar-hover);
244
- padding: 3px 0 3px 60px;
245
  font-size: 95%;
246
  }
247
 
@@ -1526,17 +1526,17 @@ form .frm_blank_field label {
1526
 
1527
  .frm_error_style,
1528
  .frm_warning_style,
 
1529
  .frm_message,
1530
  #post-body-content .frm_updated_message,
1531
  div.frm_updated_message {
1532
- border-radius: var(--border-radius);
1533
- border: 1px solid #D6E9C6;
1534
- background-color: #DFF0D8;
1535
- color: #468847;
1536
- padding: 5px 25px;
1537
  font-size: 14px;
1538
  margin: 5px 0 15px;
1539
- text-align: center;
1540
  }
1541
 
1542
  #frm_top_bar + .wrap > .frm_updated_message, #frm_top_bar + .wrap > .frm_warning_style {
@@ -1549,19 +1549,17 @@ div.frm_updated_message {
1549
  margin: 5px 65px;
1550
  }
1551
 
1552
- #form_global_settings .frm_updated_message {
1553
  margin: 5px 25px;
1554
  }
1555
 
1556
  .frm_error_style {
1557
  color: #973937;
1558
- border-color: #F2DEDE;
1559
- background-color: #F2DEDE;
1560
  clear: both;
1561
  }
1562
 
1563
  .frm_error_style a {
1564
- color: #973937;
1565
  text-decoration: underline;
1566
  font-weight: 600;
1567
  }
@@ -1571,12 +1569,8 @@ div.frm_updated_message {
1571
  }
1572
 
1573
  .frm_warning_style {
1574
- color: #8B6E3C;
1575
- border-color: #FBECCD;
1576
- background-color: #FDF9E3;
1577
- border-radius: 10px;
1578
- text-align: left;
1579
- padding-top: 5px;
1580
  }
1581
 
1582
  .frm_warning_heading{
@@ -1584,11 +1578,16 @@ div.frm_updated_message {
1584
  margin-bottom:4px;
1585
  }
1586
 
 
 
 
 
 
1587
  .frm-banner-alert {
1588
  text-align: left;
1589
  margin: 0;
1590
  border-radius: 0;
1591
- padding: 10px 0 10px 50px;
1592
  }
1593
 
1594
  .frm-banner-alert a {
@@ -1618,6 +1617,7 @@ div.frm_updated_message {
1618
  }
1619
 
1620
  .frm-inline-message a {
 
1621
  font-weight: 600;
1622
  color: var(--primary-hover);
1623
  }
@@ -1835,7 +1835,7 @@ h2.frm-h2 + .howto {
1835
  overflow: visible;
1836
  }
1837
 
1838
- .frm-admin-page-formidableedit #wpbody-content > *:not(.frm-review-notice):not(.frm_previous_install),
1839
  #wpbody-content > .updated,
1840
  #wpbody-content > #update-nag,
1841
  #wpbody-content > .update-nag,
@@ -2295,10 +2295,6 @@ h2.frm-h2 + .howto {
2295
  padding: 15px 20px;
2296
  }
2297
 
2298
- #frm-create-footer .frm_error_style {
2299
- border-radius: 6px;
2300
- }
2301
-
2302
  #frm_code_from_email_options {
2303
  margin-top: 20px;
2304
  }
@@ -2585,7 +2581,6 @@ a.frm_pro_tip:hover .frmsvg {
2585
 
2586
  .frm_field_list .frm_pro_tip {
2587
  margin: 10px 15px;
2588
- padding-left: 40px;
2589
  position: relative;
2590
  width: calc(100% - 30px);
2591
  box-sizing: border-box;
@@ -4429,6 +4424,94 @@ label.frm-example-icon {
4429
  display: inline-block !important;
4430
  }
4431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4432
  .frm-example-icon .frmsvg,
4433
  .frm-example-icon i {
4434
  height: 20px;
@@ -5548,6 +5631,7 @@ span.howto {
5548
 
5549
  .frm_wrap .google-visualization-table-tr-head,
5550
  .frm_wrap .google-visualization-table-tr-head th {
 
5551
  font-size: 16px;
5552
  font-weight: 400 !important;
5553
  text-align: left;
239
  }
240
 
241
  .frm-upgrade-bar {
242
+ background: rgba(188, 224, 253, 0.23);
243
  border-bottom: 1px solid var(--sidebar-hover);
244
+ padding: 3px 0 3px 40px;
245
  font-size: 95%;
246
  }
247
 
1526
 
1527
  .frm_error_style,
1528
  .frm_warning_style,
1529
+ .frm_note_style,
1530
  .frm_message,
1531
  #post-body-content .frm_updated_message,
1532
  div.frm_updated_message {
1533
+ border-radius: var(--small-radius);
1534
+ background-color: #D5F2DC;
1535
+ color: #1E561F;
1536
+ padding: 12px 25px;
 
1537
  font-size: 14px;
1538
  margin: 5px 0 15px;
1539
+ text-align: left;
1540
  }
1541
 
1542
  #frm_top_bar + .wrap > .frm_updated_message, #frm_top_bar + .wrap > .frm_warning_style {
1549
  margin: 5px 65px;
1550
  }
1551
 
1552
+ #form_global_settings #post-body-content > .frm_updated_message {
1553
  margin: 5px 25px;
1554
  }
1555
 
1556
  .frm_error_style {
1557
  color: #973937;
1558
+ background-color: #EBCCCC;
 
1559
  clear: both;
1560
  }
1561
 
1562
  .frm_error_style a {
 
1563
  text-decoration: underline;
1564
  font-weight: 600;
1565
  }
1569
  }
1570
 
1571
  .frm_warning_style {
1572
+ color: #7A4D05;
1573
+ background-color: #FFF2D2;
 
 
 
 
1574
  }
1575
 
1576
  .frm_warning_heading{
1578
  margin-bottom:4px;
1579
  }
1580
 
1581
+ .frm_note_style {
1582
+ background: rgba(188, 224, 253, 0.23);
1583
+ color: var(--dark-grey);
1584
+ }
1585
+
1586
  .frm-banner-alert {
1587
  text-align: left;
1588
  margin: 0;
1589
  border-radius: 0;
1590
+ padding: 10px 0 10px 40px;
1591
  }
1592
 
1593
  .frm-banner-alert a {
1617
  }
1618
 
1619
  .frm-inline-message a {
1620
+ text-decoration: underline;
1621
  font-weight: 600;
1622
  color: var(--primary-hover);
1623
  }
1835
  overflow: visible;
1836
  }
1837
 
1838
+ .frm-admin-page-formidableedit #wpbody-content > *:not(.frm-review-notice):not(.frm_previous_install):not(.frm-banner-alert),
1839
  #wpbody-content > .updated,
1840
  #wpbody-content > #update-nag,
1841
  #wpbody-content > .update-nag,
2295
  padding: 15px 20px;
2296
  }
2297
 
 
 
 
 
2298
  #frm_code_from_email_options {
2299
  margin-top: 20px;
2300
  }
2581
 
2582
  .frm_field_list .frm_pro_tip {
2583
  margin: 10px 15px;
 
2584
  position: relative;
2585
  width: calc(100% - 30px);
2586
  box-sizing: border-box;
4424
  display: inline-block !important;
4425
  }
4426
 
4427
+ #form_global_settings .captcha_settings h4 {
4428
+ font-weight: 400;
4429
+ font-size: 14px;
4430
+ }
4431
+
4432
+ #form_global_settings .captcha_settings h3 {
4433
+ font-weight: 600;
4434
+ font-size: 18px;
4435
+ text-transform: none;
4436
+ color: #282F36;
4437
+ margin-bottom: 0;
4438
+ }
4439
+
4440
+ .captcha_settings .alert {
4441
+ display: flex;
4442
+ margin-top: 16px;
4443
+ padding: 12px 16px;
4444
+ column-gap: 10px;
4445
+ background: rgba(188, 224, 253, 0.23);
4446
+ border-radius: 4px;
4447
+ }
4448
+
4449
+ .captcha_settings .alert.frm_hidden {
4450
+ display: none;
4451
+ }
4452
+
4453
+ #form_global_settings .alert p {
4454
+ margin: 0;
4455
+ }
4456
+
4457
+ .frm_captchas {
4458
+ margin-top: 16px;
4459
+ }
4460
+
4461
+ .frm_captchas .frm_radio {
4462
+ display: flex;
4463
+ column-gap: 21px;
4464
+ }
4465
+
4466
+ .captcha_option {
4467
+ border: 1px solid rgba(40, 47, 54, 0.2);
4468
+ border-radius: 4px;
4469
+ display: inline-block;
4470
+ position: relative;
4471
+ }
4472
+
4473
+ .captcha_option label {
4474
+ display: block;
4475
+ padding: 12px;
4476
+ display: flex;
4477
+ flex-direction: column;
4478
+ text-align: center;
4479
+ justify-content: center;
4480
+ }
4481
+
4482
+ .captcha_option label p {
4483
+ color: #545F6E;
4484
+ }
4485
+
4486
+ .captcha_option input[type=radio] {
4487
+ border: none;
4488
+ border-width: 0 !important;
4489
+ display: none;
4490
+ }
4491
+
4492
+ .captcha_option.active label:before {
4493
+ content: '';
4494
+ background-color: none;
4495
+ position: absolute;
4496
+ left: -10px;
4497
+ top: -10px;
4498
+ width: 20px !important;
4499
+ height: 20px !important;
4500
+ margin: 0 !important;
4501
+ background-image: url( data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iIzQxOTlGRCI+PHRpdGxlPmNoZWNrbWFya19jaXJjbGU8L3RpdGxlPjxjaXJjbGUgY3g9IjEyLjIiIGN5PSIxMS43IiByPSIxMCIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0yMy42IDEyQTExLjYgMTEuNiAwIDExLjQgMTJhMTEuNiAxMS42IDAgMDEyMy4yIDB6bS0xMyA2LjJsOC43LTguN2MuMy0uMy4zLS43IDAtMWwtMS0xYS43LjcgMCAwMC0xLjEgMGwtNyA3LTMuNC0zLjNhLjguOCAwIDAwLTEgMGwtMSAxYy0uNC4zLS40LjggMCAxbDQuOCA1Yy4zLjIuOC4yIDEgMHoiLz48L3N2Zz4= );
4502
+ }
4503
+
4504
+ .frm_captchas .frmsvg {
4505
+ width: 140px;
4506
+ height: 38px;
4507
+ }
4508
+
4509
+ .frm_builder_captcha.frm_warning_style {
4510
+ display: flex;
4511
+ column-gap: 10px;
4512
+ padding: 12px 16px;
4513
+ }
4514
+
4515
  .frm-example-icon .frmsvg,
4516
  .frm-example-icon i {
4517
  height: 20px;
5631
 
5632
  .frm_wrap .google-visualization-table-tr-head,
5633
  .frm_wrap .google-visualization-table-tr-head th {
5634
+ white-space: pre-wrap;
5635
  font-size: 16px;
5636
  font-weight: 400 !important;
5637
  text-align: left;
css/frm_fonts.css CHANGED
@@ -20,7 +20,7 @@
20
  .wp-media-buttons .button.frm_insert_form{padding-left:5px;}
21
 
22
  /* Upgrade notice */
23
- #frm_install_message, .frm_previous_install{padding:7px;}
24
  .frm_deauthorize_link .spinner{
25
  display:inline-block;
26
  margin-top:0;
20
  .wp-media-buttons .button.frm_insert_form{padding-left:5px;}
21
 
22
  /* Upgrade notice */
23
+ #frm_install_message{padding:7px;}
24
  .frm_deauthorize_link .spinner{
25
  display:inline-block;
26
  margin-top:0;
formidable.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
- Version: 5.5.3.1
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11 Form Builder Team
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
+ Version: 5.5.4
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11 Form Builder Team
images/captcha_not_setup.png ADDED
Binary file
images/hcaptcha.png ADDED
Binary file
images/icons.svg CHANGED
@@ -250,9 +250,9 @@
250
  <title>pencil_solid</title>
251
  <path d="M1.7 13.4a1 1 0 0 0-.3.4l-1.3 5a.9.9 0 0 0 0 .5 1 1 0 0 0 1 .6l5-1.3c.2 0 .4-.2.5-.3l.2-.2-5-4.9zm.5 4.4zM19.7 2.2l-.8-1.1c-.6-.6-1.5-1-2.5-1S14.6.5 14 1l-1.3 1.3 4.9 5L18.9 6a3.5 3.5 0 0 0 .7-3.8zM3 12.1l8.6-8.6 5 5L7.8 17l-5-5z"/>
252
  </symbol>
253
- <symbol id="frm_pencil_icon" viewBox="0 0 20 20">
254
  <title>pencil</title>
255
- <path d="M19.7 2.2l-.8-1.1c-.6-.6-1.5-1-2.5-1S14.6.5 14 1L1.7 13.4a1 1 0 0 0-.3.4l-1.4 5a.9.9 0 0 0 0 .5 1 1 0 0 0 1.2.6l5-1.3.4-.3L18.9 6a3.5 3.5 0 0 0 .7-3.8zm-6.8 2.6L15.2 7l-8.6 8.7-2.4-2.4zm-10.7 13l1-3.3L5.4 17zM18 4.2l-.4.5L16.3 6 14 3.7l1.3-1.3A1.7 1.7 0 0 1 18 3.6l-.1.6z"/>
256
  </symbol>
257
  <symbol id="frm_signature_icon" viewBox="0 0 20 20">
258
  <title>signature</title>
@@ -921,5 +921,7 @@
921
  <symbol id="frm_thick_more_vert_icon" viewBox="0 0 20 20"><path d="M10 10.834a.833.833 0 100-1.667.833.833 0 000 1.667zM10 5a.833.833 0 100-1.667A.833.833 0 0010 5zM10 16.667A.833.833 0 1010 15a.833.833 0 000 1.667z" fill="#9EA9B8" stroke="#9EA9B8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol>
922
  <symbol id="frm_chat_forms_icon" viewBox="0 0 21 21" fill="none" stroke="currentColor"><path d="M19.991 13.914a2 2 0 0 1-2 2h-12l-4 4v-16a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol>
923
  <symbol id="frm_lightning" viewBox="0 0 20 22" fill="none"><path d="M11 1 1 13h9l-1 8L19 9h-9l1-8Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol>
 
 
924
  </defs>
925
  </svg>
250
  <title>pencil_solid</title>
251
  <path d="M1.7 13.4a1 1 0 0 0-.3.4l-1.3 5a.9.9 0 0 0 0 .5 1 1 0 0 0 1 .6l5-1.3c.2 0 .4-.2.5-.3l.2-.2-5-4.9zm.5 4.4zM19.7 2.2l-.8-1.1c-.6-.6-1.5-1-2.5-1S14.6.5 14 1l-1.3 1.3 4.9 5L18.9 6a3.5 3.5 0 0 0 .7-3.8zM3 12.1l8.6-8.6 5 5L7.8 17l-5-5z"/>
252
  </symbol>
253
+ <symbol id="frm_pencil_icon" viewBox="0 0 18 18" fill="none">
254
  <title>pencil</title>
255
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.167 1.5A2.358 2.358 0 0 1 16.5 4.833L5.25 16.083l-4.583 1.25 1.25-4.583L13.167 1.5Z"/>
256
  </symbol>
257
  <symbol id="frm_signature_icon" viewBox="0 0 20 20">
258
  <title>signature</title>
921
  <symbol id="frm_thick_more_vert_icon" viewBox="0 0 20 20"><path d="M10 10.834a.833.833 0 100-1.667.833.833 0 000 1.667zM10 5a.833.833 0 100-1.667A.833.833 0 0010 5zM10 16.667A.833.833 0 1010 15a.833.833 0 000 1.667z" fill="#9EA9B8" stroke="#9EA9B8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol>
922
  <symbol id="frm_chat_forms_icon" viewBox="0 0 21 21" fill="none" stroke="currentColor"><path d="M19.991 13.914a2 2 0 0 1-2 2h-12l-4 4v-16a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol>
923
  <symbol id="frm_lightning" viewBox="0 0 20 22" fill="none"><path d="M11 1 1 13h9l-1 8L19 9h-9l1-8Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol>
924
+ <symbol id="frm_hcaptcha" viewBox="0 0 38 40" fill="none"><path fill="#0074BF" d="M28.75 33.25H24V38h4.75v-4.75Z" opacity=".5"/><path fill="#0074BF" d="M24 33.25h-4.75V38H24v-4.75ZM19.25 33.25H14.5V38h4.75v-4.75Z" opacity=".7"/><path fill="#0074BF" d="M14.5 33.25H9.75V38h4.75v-4.75Z" opacity=".5"/><path fill="#0082BF" d="M33.5 28.5h-4.75v4.75h4.75V28.5Z" opacity=".7"/><path fill="#0082BF" d="M28.75 28.5H24v4.75h4.75V28.5Z" opacity=".8"/><path fill="#0082BF" d="M24 28.5h-4.75v4.75H24V28.5ZM19.25 28.5H14.5v4.75h4.75V28.5Z"/><path fill="#0082BF" d="M14.5 28.5H9.75v4.75h4.75V28.5Z" opacity=".8"/><path fill="#0082BF" d="M9.75 28.5H5v4.75h4.75V28.5Z" opacity=".7"/><path fill="#008FBF" d="M38.25 23.75H33.5v4.75h4.75v-4.75Z" opacity=".5"/><path fill="#008FBF" d="M33.5 23.75h-4.75v4.75h4.75v-4.75Z" opacity=".8"/><path fill="#008FBF" d="M28.75 23.75H24v4.75h4.75v-4.75ZM24 23.75h-4.75v4.75H24v-4.75ZM19.25 23.75H14.5v4.75h4.75v-4.75ZM14.5 23.75H9.75v4.75h4.75v-4.75Z"/><path fill="#008FBF" d="M9.75 23.75H5v4.75h4.75v-4.75Z" opacity=".8"/><path fill="#008FBF" d="M5 23.75H.25v4.75H5v-4.75Z" opacity=".5"/><path fill="#009DBF" d="M38.25 19H33.5v4.75h4.75V19Z" opacity=".7"/><path fill="#009DBF" d="M33.5 19h-4.75v4.75h4.75V19ZM28.75 19H24v4.75h4.75V19ZM24 19h-4.75v4.75H24V19ZM19.25 19H14.5v4.75h4.75V19ZM14.5 19H9.75v4.75h4.75V19ZM9.75 19H5v4.75h4.75V19Z"/><path fill="#009DBF" d="M5 19H.25v4.75H5V19Z" opacity=".7"/><path fill="#00ABBF" d="M38.25 14.25H33.5V19h4.75v-4.75Z" opacity=".7"/><path fill="#00ABBF" d="M33.5 14.25h-4.75V19h4.75v-4.75ZM28.75 14.25H24V19h4.75v-4.75ZM24 14.25h-4.75V19H24v-4.75ZM19.25 14.25H14.5V19h4.75v-4.75ZM14.5 14.25H9.75V19h4.75v-4.75ZM9.75 14.25H5V19h4.75v-4.75Z"/><path fill="#00ABBF" d="M5 14.25H.25V19H5v-4.75Z" opacity=".7"/><path fill="#00B9BF" d="M38.25 9.5H33.5v4.75h4.75V9.5Z" opacity=".5"/><path fill="#00B9BF" d="M33.5 9.5h-4.75v4.75h4.75V9.5Z" opacity=".8"/><path fill="#00B9BF" d="M28.75 9.5H24v4.75h4.75V9.5ZM24 9.5h-4.75v4.75H24V9.5ZM19.25 9.5H14.5v4.75h4.75V9.5ZM14.5 9.5H9.75v4.75h4.75V9.5Z"/><path fill="#00B9BF" d="M9.75 9.5H5v4.75h4.75V9.5Z" opacity=".8"/><path fill="#00B9BF" d="M5 9.5H.25v4.75H5V9.5Z" opacity=".5"/><path fill="#00C6BF" d="M33.5 4.75h-4.75V9.5h4.75V4.75Z" opacity=".7"/><path fill="#00C6BF" d="M28.75 4.75H24V9.5h4.75V4.75Z" opacity=".8"/><path fill="#00C6BF" d="M24 4.75h-4.75V9.5H24V4.75ZM19.25 4.75H14.5V9.5h4.75V4.75Z"/><path fill="#00C6BF" d="M14.5 4.75H9.75V9.5h4.75V4.75Z" opacity=".8"/><path fill="#00C6BF" d="M9.75 4.75H5V9.5h4.75V4.75Z" opacity=".7"/><path fill="#00D4BF" d="M28.75 0H24v4.75h4.75V0Z" opacity=".5"/><path fill="#00D4BF" d="M24 0h-4.75v4.75H24V0ZM19.25 0H14.5v4.75h4.75V0Z" opacity=".7"/><path fill="#00D4BF" d="M14.5 0H9.75v4.75h4.75V0Z" opacity=".5"/><path fill="#fff" d="m12.758 17.496 1.312-2.96c.478-.763.43-1.694-.119-2.22a.933.933 0 0 0-.239-.19 1.454 1.454 0 0 0-1.217-.143c-.454.143-.86.453-1.098.859 0 0-1.814 4.225-2.482 6.134-.669 1.91-.406 5.395 2.196 7.996 2.768 2.77 6.755 3.39 9.285 1.48.095-.047.215-.119.31-.19l7.853-6.54c.382-.311.955-.956.43-1.696-.502-.716-1.432-.238-1.814.024l-4.512 3.294a.217.217 0 0 1-.286-.024c-.12-.143-.143-.525.048-.668l6.922-5.872c.596-.549.692-1.313.19-1.862-.477-.525-1.217-.5-1.837.024l-6.206 4.822a.269.269 0 0 1-.382-.048v-.024c-.12-.143-.167-.382-.024-.501l7.065-6.85a1.39 1.39 0 0 0 .072-1.958 1.298 1.298 0 0 0-.955-.406c-.358 0-.716.144-1.002.406l-7.209 6.78c-.167.166-.501 0-.549-.192-.024-.072 0-.143.072-.19l5.514-6.278c.549-.502.572-1.385.071-1.934-.501-.549-1.384-.573-1.933-.071l-.072.071-8.378 9.261c-.31.31-.74.31-.955.144-.143-.144-.167-.334-.071-.478Z"/></symbol>
925
+ <symbol id="frm_recaptcha" viewBox="0 0 38 38" fill="none"><path fill="#1C3AA9" d="M38.586 19.085a19.756 19.756 0 0 0-.02-.82V2.752L34.278 7.04C30.768 2.744 25.428 0 19.447 0 13.223 0 7.693 2.97 4.197 7.572l7.03 7.103a9.313 9.313 0 0 1 2.848-3.195c1.227-.957 2.966-1.74 5.372-1.74.29 0 .515.034.68.098a9.268 9.268 0 0 1 7.084 4.267l-4.976 4.976c6.303-.025 13.423-.04 16.35.003"/><path fill="#4285F4" d="M19.335 0c-.275.002-.548.008-.82.02H3.002L7.29 4.31C2.994 7.819.25 13.159.25 19.139c0 6.225 2.971 11.754 7.572 15.25l7.103-7.03a9.313 9.313 0 0 1-3.195-2.848c-.957-1.227-1.74-2.966-1.74-5.371 0-.29.034-.515.098-.68a9.268 9.268 0 0 1 4.267-7.085l4.976 4.976c-.025-6.302-.04-13.422.003-16.35"/><path fill="#ABABAB" d="M.25 19.14c.002.274.008.547.02.82v15.512l4.289-4.288c3.51 4.296 8.85 7.04 14.83 7.04 6.225 0 11.754-2.97 15.25-7.571l-7.03-7.104a9.315 9.315 0 0 1-2.848 3.195c-1.227.958-2.966 1.74-5.371 1.74-.29 0-.515-.033-.68-.097a9.267 9.267 0 0 1-7.085-4.268l4.976-4.976c-6.302.025-13.423.04-16.35-.003"/></symbol>
926
  </defs>
927
  </svg>
images/recaptcha_v3.png ADDED
Binary file
js/formidable.js CHANGED
@@ -668,7 +668,6 @@ function frmFrontFormJS() {
668
  );
669
  } else if ( Object.keys( response.errors ).length ) {
670
  // errors were returned
671
-
672
  removeSubmitLoading( jQuery( object ), 'enable' );
673
 
674
  //show errors
@@ -700,7 +699,7 @@ function frmFrontFormJS() {
700
  }
701
  }
702
 
703
- jQuery( object ).find( '.frm-g-recaptcha, .g-recaptcha' ).each( function() {
704
  var $recaptcha = jQuery( this ),
705
  recaptchaID = $recaptcha.data( 'rid' );
706
 
@@ -711,6 +710,9 @@ function frmFrontFormJS() {
711
  grecaptcha.reset();
712
  }
713
  }
 
 
 
714
  });
715
 
716
  jQuery( document ).trigger( 'frmFormErrors', [ object, response ]);
@@ -1129,9 +1131,9 @@ function frmFrontFormJS() {
1129
  * @since 4.10.02
1130
  */
1131
  function changeFocusWhenClickComboFieldLabel() {
1132
- let label;
1133
 
1134
- const comboInputsContainer = document.querySelectorAll( '.frm_combo_inputs_container' );
1135
  comboInputsContainer.forEach( function( inputsContainer ) {
1136
  if ( ! inputsContainer.closest( '.frm_form_field' ) ) {
1137
  return;
668
  );
669
  } else if ( Object.keys( response.errors ).length ) {
670
  // errors were returned
 
671
  removeSubmitLoading( jQuery( object ), 'enable' );
672
 
673
  //show errors
699
  }
700
  }
701
 
702
+ jQuery( object ).find( '.frm-g-recaptcha, .g-recaptcha, .h-captcha' ).each( function() {
703
  var $recaptcha = jQuery( this ),
704
  recaptchaID = $recaptcha.data( 'rid' );
705
 
710
  grecaptcha.reset();
711
  }
712
  }
713
+ if ( typeof hcaptcha !== 'undefined' && hcaptcha ) {
714
+ hcaptcha.reset();
715
+ }
716
  });
717
 
718
  jQuery( document ).trigger( 'frmFormErrors', [ object, response ]);
1131
  * @since 4.10.02
1132
  */
1133
  function changeFocusWhenClickComboFieldLabel() {
1134
+ var label;
1135
 
1136
+ var comboInputsContainer = document.querySelectorAll( '.frm_combo_inputs_container' );
1137
  comboInputsContainer.forEach( function( inputsContainer ) {
1138
  if ( ! inputsContainer.closest( '.frm_form_field' ) ) {
1139
  return;
js/formidable.min.js CHANGED
@@ -24,8 +24,8 @@ pageOrder,formReturned,contSubmit,delay,$fieldCont,key,inCollapsedSection,frmTri
24
  response.redirect}else if(response.content!==""){if(shouldTriggerEvent){triggerCustomEvent(object,"frmSubmitEvent");return}removeSubmitLoading(jQuery(object));if(frm_js.offset!=-1)frmFrontForm.scrollMsg(jQuery(object),false);formID=jQuery(object).find('input[name="form_id"]').val();response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);delay=maybeSlideOut(replaceContent,
25
  response.content);setTimeout(function(){var container,input,previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");
26
  input='<input type="hidden" name="recaptcha_checked" value="'+response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");
27
- if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");
28
- if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);else grecaptcha.reset()});jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(contSubmit)object.submit();else{jQuery(object).prepend(response.error_message);checkForErrorsAndMaybeSetFocus()}}else{showFileLoading(object);object.submit()}};error=function(){jQuery(object).find('input[type="submit"], input[type="button"]').prop("disabled",
29
  false);object.submit()};postToAjaxUrl(object,data,success,error)}function postToAjaxUrl(form,data,success,error){var ajaxUrl,action,ajaxParams;ajaxUrl=frm_js.ajax_url;action=form.getAttribute("action");if("string"===typeof action&&-1!==action.indexOf("?action=frm_forms_preview"))ajaxUrl=action.split("?action=frm_forms_preview")[0];ajaxParams={type:"POST",url:ajaxUrl,data:data,success:success};if("function"===typeof error)ajaxParams.error=error;jQuery.ajax(ajaxParams)}function afterFormSubmitted(object,
30
  response){var formCompleted=jQuery(response.content).find(".frm_message");if(formCompleted.length)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")!==
31
  -1){c=oldContent.children();if(newContent.indexOf(" frm_going_back")!==-1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");
24
  response.redirect}else if(response.content!==""){if(shouldTriggerEvent){triggerCustomEvent(object,"frmSubmitEvent");return}removeSubmitLoading(jQuery(object));if(frm_js.offset!=-1)frmFrontForm.scrollMsg(jQuery(object),false);formID=jQuery(object).find('input[name="form_id"]').val();response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);delay=maybeSlideOut(replaceContent,
25
  response.content);setTimeout(function(){var container,input,previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");
26
  input='<input type="hidden" name="recaptcha_checked" value="'+response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");
27
+ if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha, .h-captcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=
28
+ $recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);else grecaptcha.reset();if(typeof hcaptcha!=="undefined"&&hcaptcha)hcaptcha.reset()});jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(contSubmit)object.submit();else{jQuery(object).prepend(response.error_message);checkForErrorsAndMaybeSetFocus()}}else{showFileLoading(object);object.submit()}};error=function(){jQuery(object).find('input[type="submit"], input[type="button"]').prop("disabled",
29
  false);object.submit()};postToAjaxUrl(object,data,success,error)}function postToAjaxUrl(form,data,success,error){var ajaxUrl,action,ajaxParams;ajaxUrl=frm_js.ajax_url;action=form.getAttribute("action");if("string"===typeof action&&-1!==action.indexOf("?action=frm_forms_preview"))ajaxUrl=action.split("?action=frm_forms_preview")[0];ajaxParams={type:"POST",url:ajaxUrl,data:data,success:success};if("function"===typeof error)ajaxParams.error=error;jQuery.ajax(ajaxParams)}function afterFormSubmitted(object,
30
  response){var formCompleted=jQuery(response.content).find(".frm_message");if(formCompleted.length)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")!==
31
  -1){c=oldContent.children();if(newContent.indexOf(" frm_going_back")!==-1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");
js/formidable_admin.js CHANGED
@@ -730,6 +730,15 @@ function frmAdminBuildJS() {
730
  showInputIcon( '#' + cont.attr( 'id' ) );
731
  frmDom.autocomplete.initAutocomplete( 'page', inside );
732
  jQuery( b ).trigger( 'frm-action-loaded' );
 
 
 
 
 
 
 
 
 
733
  }
734
  });
735
  }
@@ -1020,7 +1029,7 @@ function frmAdminBuildJS() {
1020
  maybeOpenCollapsedPage( placeholder );
1021
 
1022
  const $previousFieldContainer = ui.helper.parent();
1023
- const previousSection = ui.helper.get( 0 ).closest( 'ul.frm_sorting' );
1024
  const newSection = placeholder.closest( 'ul.frm_sorting' );
1025
 
1026
  if ( draggable.classList.contains( 'frm-new-field' ) ) {
@@ -1029,7 +1038,7 @@ function frmAdminBuildJS() {
1029
  moveFieldThatAlreadyExists( draggable, placeholder );
1030
  }
1031
 
1032
- const previousSectionId = previousSection && previousSection.classList.contains( 'start_divider' ) ? parseInt( previousSection.closest( '.edit_field_type_divider' ).getAttribute( 'data-fid' ) ) : 0;
1033
  const newSectionId = newSection.classList.contains( 'start_divider' ) ? parseInt( newSection.closest( '.edit_field_type_divider' ).getAttribute( 'data-fid' ) ) : 0;
1034
 
1035
  placeholder.remove();
@@ -1040,7 +1049,7 @@ function frmAdminBuildJS() {
1040
  maybeUpdateDraggableClassAfterDrop( draggable, $previousContainerFields );
1041
 
1042
  if ( previousSectionId !== newSectionId ) {
1043
- updateFieldAfterMovingBetweenSections( jQuery( draggable ) );
1044
  }
1045
 
1046
  debouncedSyncAfterDragAndDrop();
@@ -1538,23 +1547,26 @@ function frmAdminBuildJS() {
1538
  /**
1539
  * Update a field after it is dragged and dropped into, out of, or between sections
1540
  *
1541
- * @param {object} currentItem
 
 
1542
  */
1543
- function updateFieldAfterMovingBetweenSections( currentItem ) {
1544
  if ( ! currentItem.hasClass( 'form-field' ) ) {
1545
  // currentItem is a field group. Call for children recursively.
1546
  getFieldsInRow( jQuery( currentItem.get( 0 ).firstChild ) ).each(
1547
  function() {
1548
- updateFieldAfterMovingBetweenSections( jQuery( this ) );
1549
  }
1550
  );
1551
  return;
1552
  }
1553
 
1554
- const fieldId = currentItem.attr( 'id' ).replace( 'frm_field_id_', '' );
1555
- const section = getSectionForFieldPlacement( currentItem );
1556
- const formId = getFormIdForFieldPlacement( section );
1557
- const sectionId = getSectionIdForFieldPlacement( section );
 
1558
 
1559
  jQuery.ajax({
1560
  type: 'POST',
@@ -1564,6 +1576,7 @@ function frmAdminBuildJS() {
1564
  form_id: formId,
1565
  field: fieldId,
1566
  section_id: sectionId,
 
1567
  nonce: frmGlobal.nonce
1568
  },
1569
  success: function() {
@@ -3857,11 +3870,20 @@ function frmAdminBuildJS() {
3857
  return wrapper;
3858
  }
3859
 
 
 
 
 
 
3860
  function handleFieldGroupLayoutOptionClick() {
3861
- var type, row;
3862
- type = this.getAttribute( 'layout-type' );
3863
- row = document.querySelector( '.frm-field-group-hover-target' );
3864
- size = getFieldsInRow( jQuery( row ) ).length;
 
 
 
 
3865
  syncLayoutClasses( getFieldsInRow( jQuery( row ) ).first(), type );
3866
  destroyFieldGroupPopup();
3867
  }
@@ -6421,6 +6443,15 @@ function frmAdminBuildJS() {
6421
  if ( widgetTop ) {
6422
  jQuery( widgetTop ).trigger( 'frm-action-loaded' );
6423
  }
 
 
 
 
 
 
 
 
 
6424
  }
6425
  }
6426
 
@@ -10315,6 +10346,19 @@ function frmAdminBuildJS() {
10315
  if ( captchaType ) {
10316
  captchaType.addEventListener( 'change', handleCaptchaTypeChange );
10317
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
10318
  },
10319
 
10320
  exportInit: function() {
@@ -10419,7 +10463,9 @@ function frmAdminBuildJS() {
10419
  addFilter: function( hookName, callback, priority ) {
10420
  return wp.hooks.addFilter( hookName, 'formidable', callback, priority );
10421
  }
10422
- }
 
 
10423
  };
10424
  }
10425
 
730
  showInputIcon( '#' + cont.attr( 'id' ) );
731
  frmDom.autocomplete.initAutocomplete( 'page', inside );
732
  jQuery( b ).trigger( 'frm-action-loaded' );
733
+
734
+ /**
735
+ * Fires after filling form action content when opening.
736
+ *
737
+ * @since 5.5.4
738
+ *
739
+ * @param {Object} insideElement JQuery object of form action inside element.
740
+ */
741
+ wp.hooks.doAction( 'frm_filled_form_action', inside );
742
  }
743
  });
744
  }
1029
  maybeOpenCollapsedPage( placeholder );
1030
 
1031
  const $previousFieldContainer = ui.helper.parent();
1032
+ const previousSection = ui.helper.get( 0 ).closest( 'ul.start_divider' );
1033
  const newSection = placeholder.closest( 'ul.frm_sorting' );
1034
 
1035
  if ( draggable.classList.contains( 'frm-new-field' ) ) {
1038
  moveFieldThatAlreadyExists( draggable, placeholder );
1039
  }
1040
 
1041
+ const previousSectionId = previousSection ? parseInt( previousSection.closest( '.edit_field_type_divider' ).getAttribute( 'data-fid' ) ) : 0;
1042
  const newSectionId = newSection.classList.contains( 'start_divider' ) ? parseInt( newSection.closest( '.edit_field_type_divider' ).getAttribute( 'data-fid' ) ) : 0;
1043
 
1044
  placeholder.remove();
1049
  maybeUpdateDraggableClassAfterDrop( draggable, $previousContainerFields );
1050
 
1051
  if ( previousSectionId !== newSectionId ) {
1052
+ updateFieldAfterMovingBetweenSections( jQuery( draggable ), previousSection );
1053
  }
1054
 
1055
  debouncedSyncAfterDragAndDrop();
1547
  /**
1548
  * Update a field after it is dragged and dropped into, out of, or between sections
1549
  *
1550
+ * @param {Object} currentItem
1551
+ * @param {Object} previousSection
1552
+ * @returns {void}
1553
  */
1554
+ function updateFieldAfterMovingBetweenSections( currentItem, previousSection ) {
1555
  if ( ! currentItem.hasClass( 'form-field' ) ) {
1556
  // currentItem is a field group. Call for children recursively.
1557
  getFieldsInRow( jQuery( currentItem.get( 0 ).firstChild ) ).each(
1558
  function() {
1559
+ updateFieldAfterMovingBetweenSections( jQuery( this ), previousSection );
1560
  }
1561
  );
1562
  return;
1563
  }
1564
 
1565
+ const fieldId = currentItem.attr( 'id' ).replace( 'frm_field_id_', '' );
1566
+ const section = getSectionForFieldPlacement( currentItem );
1567
+ const formId = getFormIdForFieldPlacement( section );
1568
+ const sectionId = getSectionIdForFieldPlacement( section );
1569
+ const previousFormId = previousSection ? getFormIdForFieldPlacement( jQuery( previousSection.parentNode ) ) : 0;
1570
 
1571
  jQuery.ajax({
1572
  type: 'POST',
1576
  form_id: formId,
1577
  field: fieldId,
1578
  section_id: sectionId,
1579
+ previous_form_id: previousFormId,
1580
  nonce: frmGlobal.nonce
1581
  },
1582
  success: function() {
3870
  return wrapper;
3871
  }
3872
 
3873
+ /**
3874
+ * Handle when a field group layout option (that sets grid classes/column sizing) is selected in the "Row Layout" popup.
3875
+ *
3876
+ * @returns {void}
3877
+ */
3878
  function handleFieldGroupLayoutOptionClick() {
3879
+ const row = document.querySelector( '.frm-field-group-hover-target' );
3880
+ if ( ! row ) {
3881
+ // The field group layout options also get clicked when merging multiple rows.
3882
+ // The following code isn't required for multiple rows though so just exit early.
3883
+ return;
3884
+ }
3885
+
3886
+ const type = this.getAttribute( 'layout-type' );
3887
  syncLayoutClasses( getFieldsInRow( jQuery( row ) ).first(), type );
3888
  destroyFieldGroupPopup();
3889
  }
6443
  if ( widgetTop ) {
6444
  jQuery( widgetTop ).trigger( 'frm-action-loaded' );
6445
  }
6446
+
6447
+ /**
6448
+ * Fires after added a new form action.
6449
+ *
6450
+ * @since 5.5.4
6451
+ *
6452
+ * @param {HTMLElement} formAction Form action element.
6453
+ */
6454
+ wp.hooks.doAction( 'frm_added_form_action', newAction );
6455
  }
6456
  }
6457
 
10346
  if ( captchaType ) {
10347
  captchaType.addEventListener( 'change', handleCaptchaTypeChange );
10348
  }
10349
+
10350
+ document.querySelector( '.frm_captchas' ).addEventListener( 'change', function( e ) {
10351
+ var selectedValue, unselectedValue;
10352
+ selectedValue = e.target.value;
10353
+ unselectedValue = selectedValue === 'recaptcha' ? 'hcaptcha' : 'recaptcha';
10354
+ document.getElementById( selectedValue + '_settings' ).classList.remove( 'frm_hidden' );
10355
+ document.getElementById( selectedValue ).parentElement.classList.add( 'active' );
10356
+
10357
+ document.getElementById( unselectedValue + '_settings' ).classList.add( 'frm_hidden' );
10358
+ document.getElementById( unselectedValue ).parentElement.classList.remove( 'active' );
10359
+
10360
+ document.querySelector( '.captcha_settings .alert' ).classList.toggle( 'frm_hidden' );
10361
+ });
10362
  },
10363
 
10364
  exportInit: function() {
10463
  addFilter: function( hookName, callback, priority ) {
10464
  return wp.hooks.addFilter( hookName, 'formidable', callback, priority );
10465
  }
10466
+ },
10467
+
10468
+ infoModal: infoModal
10469
  };
10470
  }
10471
 
js/formidable_blocks.js CHANGED
@@ -1 +1 @@
1
- !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=5)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.updateAttribute=function(e,t,n){n(function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n;return e}({},e,t))},t.setTextAttribute=function(e,t){if(e)return" "+t+'="'+e+'"';return""},t.getSubDir=function(){var e=window.location.pathname,t=e.indexOf("wp-admin"),n="/";t>-1&&(n=e.substr(0,t));return n};t.cssHideAdvancedSettings="\n .components-panel__body.editor-block-inspector__advanced {\n display:none;\n }\n"},function(e,t,n){e.exports=n(8)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(0);function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var a=function(e){function t(){return i(this,t),l(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"render",value:function(){return wp.element.createElement("div",null,"[formidable",(e=this.props,t=e.formId,n=e.title,r=e.description,i=e.minimize,l="",l+=(0,o.setTextAttribute)(t,"id"),l+=(0,o.setTextAttribute)(n,"title"),l+=(0,o.setTextAttribute)(r,"description"),l+=(0,o.setTextAttribute)(i,"minimize")),"]");var e,t,n,r,i,l}}]),t}(wp.element.Component);t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=l(n(10)),i=l(n(1));function l(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=wp.i18n.__,s=function(e){function t(){return a(this,t),c(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"render",value:function(){var e=this.props,t=e.formId,n=e.setAttributes,r=e.forms;return wp.element.createElement(o.default,{selected:t,itemName:u("form","formidable"),itemNamePlural:u("forms","formidable"),items:r,onChange:function(e){n({formId:e})}})}}]),t}(wp.element.Component);t.default=s,s.propTypes={formId:i.default.string,setAttributes:i.default.func.isRequired}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var l=wp.element.Component,a=wp.components.Dashicon,c=function(e){function t(){return o(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"render",value:function(){return"svg"!==formidable_form_selector.icon?wp.element.createElement(a,{icon:formidable_form_selector.icon,size:"120"}):wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 599.68 601.37",width:"120",height:"120"},wp.element.createElement("path",{className:"cls-1 orange",d:"M289.6 384h140v76h-140z"}),wp.element.createElement("path",{className:"cls-1",d:"M400.2 147h-200c-17 0-30.6 12.2-30.6 29.3V218h260v-71zM397.9 264H169.6v196h75V340H398a32.2 32.2 0 0 0 30.1-21.4 24.3 24.3 0 0 0 1.7-8.7V264z"}),wp.element.createElement("path",{className:"cls-1",d:"M299.8 601.4A300.3 300.3 0 0 1 0 300.7a299.8 299.8 0 1 1 511.9 212.6 297.4 297.4 0 0 1-212 88zm0-563A262 262 0 0 0 38.3 300.7a261.6 261.6 0 1 0 446.5-185.5 259.5 259.5 0 0 0-185-76.8z"}))}}]),t}(l);t.default=c},function(e,t,n){"use strict";n(6),n(11)},function(e,t,n){"use strict";var r=c(n(2)),o=c(n(7)),i=c(n(4)),l=c(n(3)),a=n(0);function c(e){return e&&e.__esModule?e:{default:e}}var u=wp.element.Fragment,s=wp.i18n.__,f=wp.blocks.registerBlockType,p=wp.components,m=p.ServerSideRender,b=p.Notice;f("formidable/simple-form",{title:formidable_form_selector.name,description:s("Display a Form","formidable"),icon:i.default,category:"widgets",keywords:[s("contact forms","formidable"),"formidable"],edit:function(e){var t=e.setAttributes,n=e.attributes,r=e.isSelected,c=n.formId,f=formidable_form_selector.forms;return 0===f.length?wp.element.createElement(b,{status:"warning",isDismissible:!1},s("This site does not have any forms.","formidable")):c?wp.element.createElement(u,null,wp.element.createElement(o.default,{attributes:n,setAttributes:t,forms:f}),r&&wp.element.createElement("style",null,a.cssHideAdvancedSettings),wp.element.createElement(m,{block:"formidable/simple-form",attributes:n})):wp.element.createElement("div",{className:"frm-block-intro-screen"},wp.element.createElement("div",{className:"frm-block-intro-content"},wp.element.createElement(i.default,null),wp.element.createElement("div",{className:"frm-block-title"},formidable_form_selector.name),wp.element.createElement("div",{className:"frm-block-selector-screen"},wp.element.createElement(l.default,{formId:c,setAttributes:t,forms:f}))))},save:function(e){var t=e.attributes;return void 0===t.formId?"":wp.element.createElement(u,null,wp.element.createElement(r.default,t))}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=c(n(1)),i=c(n(3)),l=c(n(2)),a=n(0);function c(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var f=wp.i18n.__,p=wp.element.Component,m=wp.blockEditor.InspectorControls,b=wp.components,d=b.PanelBody,y=b.PanelRow,w=b.ToggleControl,h=b.ExternalLink,v=function(e){function t(){return u(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"render",value:function(){var e=this.props,t=e.setAttributes,n=e.attributes,r=e.forms,o=n.formId,c=n.title,u=n.description,s=n.minimize;return wp.element.createElement(m,null,wp.element.createElement(d,{title:f("Select Form","formidable"),initialOpen:!0},wp.element.createElement(y,null,wp.element.createElement(i.default,{formId:o,setAttributes:t,forms:r})),o&&wp.element.createElement(y,null,wp.element.createElement(h,{href:(0,a.getSubDir)()+"wp-admin/admin.php?page=formidable&frm_action=edit&id="+o},f("Go to form","formidable")))),wp.element.createElement(d,{title:f("Options","formidable"),initialOpen:!1},wp.element.createElement(w,{label:f("Show Form Title","formidable"),checked:c,onChange:function(e){(0,a.updateAttribute)("title",e?"1":"",t)}}),wp.element.createElement(w,{label:f("Show Form Description","formidable"),checked:u,onChange:function(e){(0,a.updateAttribute)("description",e?"1":"",t)}}),wp.element.createElement(w,{label:f("Minimize HTML","formidable"),checked:s,onChange:function(e){(0,a.updateAttribute)("minimize",e?"1":"",t)}})),wp.element.createElement(d,{title:f("Shortcode","formidable"),initialOpen:!1},wp.element.createElement(y,null,wp.element.createElement(l.default,this.props.attributes))))}}]),t}(p);t.default=v,v.propTypes={attributes:o.default.object,setAttributes:o.default.func}},function(e,t,n){"use strict";var r=n(9);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,l){if(l!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n(1),l=(r=i)&&r.__esModule?r:{default:r};function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var u=wp.i18n,s=u.__,f=u.sprintf,p=wp.element.Component,m=wp.components.SelectControl,b=function(e){function t(){return a(this,t),c(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:"createOptions",value:function(e,t){var n=e.map((function(e){return{label:e.label,value:e.value}}));return[{label:f(s("Select a %s","formidable"),t),value:""}].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(n))}},{key:"render",value:function(){var e=this.props,t=e.selected,n=e.items,r=e.onChange,o=e.itemName,i=e.itemNamePlural,l=e.label,a=e.help;return n&&0!==n.length?wp.element.createElement(m,{value:t,options:this.createOptions(n,o),label:l,help:a,onChange:r}):wp.element.createElement("p",{className:"frm-block-select-no-items"},f(s("Currently, there are no %s","formidable"),i))}}]),t}(p);t.default=b,b.defaultProps={itemName:"item",itemNamePlural:"items"},b.propTypes={selected:l.default.oneOfType([l.default.string,l.default.number]),items:l.default.array,onChange:l.default.func,itemName:l.default.string,itemNamePlural:l.default.string,label:l.default.string,help:l.default.string}},function(e,t,n){"use strict";var r,o=n(4),i=(r=o)&&r.__esModule?r:{default:r};var l=wp.i18n.__,a=wp.blocks.registerBlockType,c=wp.components.Notice,u=wp.element.createElement("svg",{width:20,height:20},wp.element.createElement("path",{d:"M16.9 0H3a2 2 0 0 0-1.9 1.9V18a2 2 0 0 0 2 1.9h13.7a2 2 0 0 0 1.9-1.9V2a2 2 0 0 0-2-1.9zm0 18.1H3v-10H17v10zm0-11.9H3V2H17v4.3zM5.5 12.6H7c.3 0 .5-.3.5-.5v-1.5c0-.3-.3-.5-.5-.5H5.5c-.3 0-.5.3-.5.5V12c0 .3.3.5.5.5zm7.5 3.8h1.5c.3 0 .5-.3.5-.6v-5.2c0-.3-.3-.5-.5-.5H13c-.3 0-.5.3-.5.5v5.3c0 .2.3.4.5.4zm-7.5 0H7c.3 0 .5-.3.5-.6v-1.4c0-.3-.3-.6-.5-.6H5.5c-.3 0-.5.3-.5.6v1.4c0 .3.3.6.5.6zm3.8-3.8h1.4c.3 0 .6-.3.6-.5v-1.5c0-.3-.3-.5-.6-.5H9.3c-.3 0-.6.3-.6.5V12c0 .3.3.5.6.5zm0 3.8h1.4c.3 0 .6-.3.6-.6v-1.4c0-.3-.3-.6-.6-.6H9.3c-.3 0-.6.3-.6.6v1.4c0 .3.3.6.6.6z"}));a("formidable/calculator",{title:l("Calculator Form","formidable"),description:l("Display a Calculator Form","formidable"),icon:u,category:"widgets",keywords:["calculation","formidable"],edit:function(e){e.setAttributes,e.attributes.formId;return 0===formidable_form_selector.forms.length?wp.element.createElement(c,{status:"warning",isDismissible:!1},l("This site does not have any forms.","formidable")):wp.element.createElement("div",{className:"frm-block-intro-screen"},wp.element.createElement("div",{className:"frm-block-intro-content"},wp.element.createElement(i.default,null),wp.element.createElement("div",{className:"frm-block-title"},l("Calculator Form","formidable")),wp.element.createElement("div",{className:"frm-block-selector-screen frm_pro_tip"},wp.element.createElement(c,{status:"warning",isDismissible:!1},l("This site does not have any calculator forms.","formidable"),wp.element.createElement("br",null),wp.element.createElement("a",{href:formidable_form_selector.link,target:"_blank"},l("Upgrade Formidable Forms.","formidable"))),wp.element.createElement("img",{src:formidable_form_selector.url+"/images/conversion-calc.jpg",alt:l("Calculator Form","formidable")}))))}})}]);
1
+ (()=>{var e={877:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var l=wp.element.Component,a=wp.components.Dashicon,i=function(e){function t(){return n(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"render",value:function(){return"svg"!==formidable_form_selector.icon?wp.element.createElement(a,{icon:formidable_form_selector.icon,size:"120"}):wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 599.68 601.37",width:"120",height:"120"},wp.element.createElement("path",{className:"cls-1 orange",d:"M289.6 384h140v76h-140z"}),wp.element.createElement("path",{className:"cls-1",d:"M400.2 147h-200c-17 0-30.6 12.2-30.6 29.3V218h260v-71zM397.9 264H169.6v196h75V340H398a32.2 32.2 0 0 0 30.1-21.4 24.3 24.3 0 0 0 1.7-8.7V264z"}),wp.element.createElement("path",{className:"cls-1",d:"M299.8 601.4A300.3 300.3 0 0 1 0 300.7a299.8 299.8 0 1 1 511.9 212.6 297.4 297.4 0 0 1-212 88zm0-563A262 262 0 0 0 38.3 300.7a261.6 261.6 0 1 0 446.5-185.5 259.5 259.5 0 0 0-185-76.8z"}))}}]),t}(l);t.default=i},752:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),l=(n=r(697))&&n.__esModule?n:{default:n};function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var c=wp.i18n,s=c.__,u=c.sprintf,f=wp.element.Component,m=wp.components.SelectControl,p=function(e){function t(){return a(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:"createOptions",value:function(e,t){var r=e.map((function(e){return{label:e.label,value:e.value}}));return[{label:u(s("Select a %s","formidable"),t),value:""}].concat(function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}(r))}},{key:"render",value:function(){var e=this.props,t=e.selected,r=e.items,n=e.onChange,o=e.itemName,l=e.itemNamePlural,a=e.label,i=e.help;return r&&0!==r.length?wp.element.createElement(m,{value:t,options:this.createOptions(r,o),label:a,help:i,onChange:n}):wp.element.createElement("p",{className:"frm-block-select-no-items"},u(s("Currently, there are no %s","formidable"),l))}}]),t}(f);t.default=p,p.defaultProps={itemName:"item",itemNamePlural:"items"},p.propTypes={selected:l.default.oneOfType([l.default.string,l.default.number]),items:l.default.array,onChange:l.default.func,itemName:l.default.string,itemNamePlural:l.default.string,label:l.default.string,help:l.default.string}},897:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.updateAttribute=function(e,t,r){var n,o,l;r((l=t,(o=e)in(n={})?Object.defineProperty(n,o,{value:l,enumerable:!0,configurable:!0,writable:!0}):n[o]=l,n))},t.setTextAttribute=function(e,t){return e?" "+t+'="'+e+'"':""},t.getSubDir=function(){var e=window.location.pathname,t=e.indexOf("wp-admin"),r="/";return t>-1&&(r=e.substr(0,t)),r},t.cssHideAdvancedSettings="\n .components-panel__body.editor-block-inspector__advanced {\n display:none;\n }\n"},186:(e,t,r)=>{"use strict";var n=c(r(350)),o=c(r(3)),l=c(r(877)),a=c(r(776)),i=r(897);function c(e){return e&&e.__esModule?e:{default:e}}var s=wp.element.Fragment,u=wp.i18n.__,f=wp.blocks.registerBlockType,m=wp.components,p=m.ServerSideRender,b=m.Notice;f("formidable/simple-form",{title:formidable_form_selector.name,description:u("Display a Form","formidable"),icon:l.default,category:"widgets",keywords:[u("contact forms","formidable"),"formidable"],edit:function(e){var t=e.setAttributes,r=e.attributes,n=e.isSelected,c=r.formId,f=formidable_form_selector.forms;return 0===f.length?wp.element.createElement(b,{status:"warning",isDismissible:!1},u("This site does not have any forms.","formidable")):c?wp.element.createElement(s,null,wp.element.createElement(o.default,{attributes:r,setAttributes:t,forms:f}),n&&wp.element.createElement("style",null,i.cssHideAdvancedSettings),wp.element.createElement(p,{block:"formidable/simple-form",attributes:r})):wp.element.createElement("div",{className:"frm-block-intro-screen"},wp.element.createElement("div",{className:"frm-block-intro-content"},wp.element.createElement(l.default,null),wp.element.createElement("div",{className:"frm-block-title"},formidable_form_selector.name),wp.element.createElement("div",{className:"frm-block-selector-screen"},wp.element.createElement(a.default,{formId:c,setAttributes:t,forms:f}))))},save:function(e){var t=e.attributes;return void 0===t.formId?"":wp.element.createElement(s,null,wp.element.createElement(n.default,t))}})},264:(e,t,r)=>{"use strict";var n,o=(n=r(877))&&n.__esModule?n:{default:n},l=wp.i18n.__,a=wp.blocks.registerBlockType,i=wp.components.Notice,c=wp.element.createElement("svg",{width:20,height:20},wp.element.createElement("path",{d:"M16.9 0H3a2 2 0 0 0-1.9 1.9V18a2 2 0 0 0 2 1.9h13.7a2 2 0 0 0 1.9-1.9V2a2 2 0 0 0-2-1.9zm0 18.1H3v-10H17v10zm0-11.9H3V2H17v4.3zM5.5 12.6H7c.3 0 .5-.3.5-.5v-1.5c0-.3-.3-.5-.5-.5H5.5c-.3 0-.5.3-.5.5V12c0 .3.3.5.5.5zm7.5 3.8h1.5c.3 0 .5-.3.5-.6v-5.2c0-.3-.3-.5-.5-.5H13c-.3 0-.5.3-.5.5v5.3c0 .2.3.4.5.4zm-7.5 0H7c.3 0 .5-.3.5-.6v-1.4c0-.3-.3-.6-.5-.6H5.5c-.3 0-.5.3-.5.6v1.4c0 .3.3.6.5.6zm3.8-3.8h1.4c.3 0 .6-.3.6-.5v-1.5c0-.3-.3-.5-.6-.5H9.3c-.3 0-.6.3-.6.5V12c0 .3.3.5.6.5zm0 3.8h1.4c.3 0 .6-.3.6-.6v-1.4c0-.3-.3-.6-.6-.6H9.3c-.3 0-.6.3-.6.6v1.4c0 .3.3.6.6.6z"}));a("formidable/calculator",{title:l("Calculator Form","formidable"),description:l("Display a Calculator Form","formidable"),icon:c,category:"widgets",keywords:["calculation","formidable"],edit:function(e){return e.setAttributes,e.attributes.formId,0===formidable_form_selector.forms.length?wp.element.createElement(i,{status:"warning",isDismissible:!1},l("This site does not have any forms.","formidable")):wp.element.createElement("div",{className:"frm-block-intro-screen"},wp.element.createElement("div",{className:"frm-block-intro-content"},wp.element.createElement(o.default,null),wp.element.createElement("div",{className:"frm-block-title"},l("Calculator Form","formidable")),wp.element.createElement("div",{className:"frm-block-selector-screen frm_pro_tip"},wp.element.createElement(i,{status:"warning",isDismissible:!1},l("This site does not have any calculator forms.","formidable"),wp.element.createElement("br",null),wp.element.createElement("a",{href:formidable_form_selector.link,target:"_blank"},l("Upgrade Formidable Forms.","formidable"))),wp.element.createElement("img",{src:formidable_form_selector.url+"/images/conversion-calc.jpg",alt:l("Calculator Form","formidable")}))))}})},776:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=a(r(752)),l=a(r(697));function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var s=wp.i18n.__,u=function(e){function t(){return i(this,t),c(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,wp.element.Component),n(t,[{key:"render",value:function(){var e=this.props,t=e.formId,r=e.setAttributes,n=e.forms;return wp.element.createElement(o.default,{selected:t,itemName:s("form","formidable"),itemNamePlural:s("forms","formidable"),items:n,onChange:function(e){r({formId:e})}})}}]),t}();t.default=u,u.propTypes={formId:l.default.string,setAttributes:l.default.func.isRequired}},350:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=r(897);function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var i=function(e){function t(){return l(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,wp.element.Component),n(t,[{key:"render",value:function(){return wp.element.createElement("div",null,"[formidable",(t=(e=this.props).formId,r=e.title,n=e.description,l=e.minimize,a="",a+=(0,o.setTextAttribute)(t,"id"),a+=(0,o.setTextAttribute)(r,"title"),(a+=(0,o.setTextAttribute)(n,"description"))+(0,o.setTextAttribute)(l,"minimize")),"]");var e,t,r,n,l,a}}]),t}();t.default=i},3:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),o=c(r(697)),l=c(r(776)),a=c(r(350)),i=r(897);function c(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var f=wp.i18n.__,m=wp.element.Component,p=wp.blockEditor.InspectorControls,b=wp.components,d=b.PanelBody,w=b.PanelRow,y=b.ToggleControl,h=b.ExternalLink,v=function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),n(t,[{key:"render",value:function(){var e=this.props,t=e.setAttributes,r=e.attributes,n=e.forms,o=r.formId,c=r.title,s=r.description,u=r.minimize;return wp.element.createElement(p,null,wp.element.createElement(d,{title:f("Select Form","formidable"),initialOpen:!0},wp.element.createElement(w,null,wp.element.createElement(l.default,{formId:o,setAttributes:t,forms:n})),o&&wp.element.createElement(w,null,wp.element.createElement(h,{href:(0,i.getSubDir)()+"wp-admin/admin.php?page=formidable&frm_action=edit&id="+o},f("Go to form","formidable")))),wp.element.createElement(d,{title:f("Options","formidable"),initialOpen:!1},wp.element.createElement(y,{label:f("Show Form Title","formidable"),checked:c,onChange:function(e){(0,i.updateAttribute)("title",e?"1":"",t)}}),wp.element.createElement(y,{label:f("Show Form Description","formidable"),checked:s,onChange:function(e){(0,i.updateAttribute)("description",e?"1":"",t)}}),wp.element.createElement(y,{label:f("Minimize HTML","formidable"),checked:u,onChange:function(e){(0,i.updateAttribute)("minimize",e?"1":"",t)}})),wp.element.createElement(d,{title:f("Shortcode","formidable"),initialOpen:!1},wp.element.createElement(w,null,wp.element.createElement(a.default,this.props.attributes))))}}]),t}(m);t.default=v,v.propTypes={attributes:o.default.object,setAttributes:o.default.func}},703:(e,t,r)=>{"use strict";var n=r(414);function o(){}function l(){}l.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,l,a){if(a!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:l,resetWarningCache:o};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var l=t[n]={exports:{}};return e[n](l,l.exports,r),l.exports}(()=>{"use strict";r(186),r(264)})()})();
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.5.3.1\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-11-03T16:12:50+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,7 +229,7 @@ msgid "Applications"
229
  msgstr ""
230
 
231
  #: classes/controllers/FrmEntriesController.php:79
232
- #: classes/controllers/FrmFormsController.php:1456
233
  #: classes/views/frm-entries/form.php:69
234
  #: classes/views/frm-entries/sidebar-shared.php:57
235
  msgid "Entry Key"
@@ -261,21 +261,21 @@ msgstr ""
261
  msgid "Entry update date"
262
  msgstr ""
263
 
264
- #: classes/controllers/FrmEntriesController.php:417
265
  msgid "Your import is complete"
266
  msgstr ""
267
 
268
  #. translators: %1$s: Time string
269
- #: classes/controllers/FrmEntriesController.php:429
270
  msgid "This form is in the trash and is scheduled to be deleted permanently in %s along with any entries."
271
  msgstr ""
272
 
273
- #: classes/controllers/FrmEntriesController.php:448
274
  msgid "You are trying to view an entry that does not exist."
275
  msgstr ""
276
 
277
- #: classes/controllers/FrmEntriesController.php:476
278
- msgid "Entry was Successfully Deleted"
279
  msgstr ""
280
 
281
  #: classes/controllers/FrmFieldsController.php:330
@@ -349,7 +349,7 @@ msgid "Settings Successfully Updated"
349
  msgstr ""
350
 
351
  #: classes/controllers/FrmFormsController.php:179
352
- #: classes/controllers/FrmFormsController.php:1086
353
  msgid "Form was successfully updated."
354
  msgstr ""
355
 
@@ -449,207 +449,207 @@ msgid "Actions"
449
  msgstr ""
450
 
451
  #: classes/controllers/FrmFormsController.php:867
452
- #: classes/models/FrmField.php:87
453
  msgid "Date"
454
  msgstr ""
455
 
456
- #: classes/controllers/FrmFormsController.php:992
457
  #: classes/helpers/FrmFormsHelper.php:1317
458
  msgid "My Templates"
459
  msgstr ""
460
 
461
- #: classes/controllers/FrmFormsController.php:1051
462
  msgid "You are trying to edit a form that does not exist."
463
  msgstr ""
464
 
465
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
466
- #: classes/controllers/FrmFormsController.php:1056
467
  msgid "You are trying to edit a child form. Please edit from %1$shere%2$s"
468
  msgstr ""
469
 
470
- #: classes/controllers/FrmFormsController.php:1088
471
  msgid "Template was successfully updated."
472
  msgstr ""
473
 
474
- #: classes/controllers/FrmFormsController.php:1112
475
  msgid "Form was Successfully Copied"
476
  msgstr ""
477
 
478
- #: classes/controllers/FrmFormsController.php:1177
479
  #: classes/controllers/FrmStylesController.php:403
480
  msgid "General"
481
  msgstr ""
482
 
483
- #: classes/controllers/FrmFormsController.php:1178
484
  msgid "General Form Settings"
485
  msgstr ""
486
 
487
- #: classes/controllers/FrmFormsController.php:1183
488
  msgid "Actions & Notifications"
489
  msgstr ""
490
 
491
- #: classes/controllers/FrmFormsController.php:1189
492
- #: classes/controllers/FrmFormsController.php:1194
493
  msgid "Form Permissions"
494
  msgstr ""
495
 
496
- #: classes/controllers/FrmFormsController.php:1195
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:1200
501
  msgid "Form Scheduling"
502
  msgstr ""
503
 
504
- #: classes/controllers/FrmFormsController.php:1205
505
  msgid "Form scheduling settings"
506
  msgstr ""
507
 
508
- #: classes/controllers/FrmFormsController.php:1210
509
  msgid "Styling & Buttons"
510
  msgstr ""
511
 
512
- #: classes/controllers/FrmFormsController.php:1216
513
  msgid "Form Landing Page"
514
  msgstr ""
515
 
516
- #: classes/controllers/FrmFormsController.php:1222
517
- #: classes/controllers/FrmFormsController.php:1228
518
  msgid "Conversational Forms"
519
  msgstr ""
520
 
521
- #: classes/controllers/FrmFormsController.php:1229
522
  msgid "Ask one question at a time for automated conversations."
523
  msgstr ""
524
 
525
- #: classes/controllers/FrmFormsController.php:1235
526
  msgid "Customize HTML"
527
  msgstr ""
528
 
529
- #: classes/controllers/FrmFormsController.php:1371
530
  msgid "Customize field values with the following parameters."
531
  msgstr ""
532
 
533
- #: classes/controllers/FrmFormsController.php:1409
534
  msgid "Separator"
535
  msgstr ""
536
 
537
- #: classes/controllers/FrmFormsController.php:1410
538
  msgid "Use a different separator for checkbox fields"
539
  msgstr ""
540
 
541
- #: classes/controllers/FrmFormsController.php:1413
542
  msgid "Date Format"
543
  msgstr ""
544
 
545
- #: classes/controllers/FrmFormsController.php:1416
546
- #: classes/views/frm-fields/back-end/settings.php:27
547
  msgid "Field Label"
548
  msgstr ""
549
 
550
- #: classes/controllers/FrmFormsController.php:1419
551
  msgid "No Auto P"
552
  msgstr ""
553
 
554
- #: classes/controllers/FrmFormsController.php:1420
555
  msgid "Do not automatically add any paragraphs or line breaks"
556
  msgstr ""
557
 
558
- #: classes/controllers/FrmFormsController.php:1435
559
- #: classes/models/FrmField.php:62
560
  msgid "User ID"
561
  msgstr ""
562
 
563
- #: classes/controllers/FrmFormsController.php:1436
564
  msgid "First Name"
565
  msgstr ""
566
 
567
- #: classes/controllers/FrmFormsController.php:1437
568
  msgid "Last Name"
569
  msgstr ""
570
 
571
- #: classes/controllers/FrmFormsController.php:1438
572
  msgid "Display Name"
573
  msgstr ""
574
 
575
- #: classes/controllers/FrmFormsController.php:1439
576
  msgid "User Login"
577
  msgstr ""
578
 
579
- #: classes/controllers/FrmFormsController.php:1440
580
- #: classes/models/FrmField.php:34
581
  msgid "Email"
582
  msgstr ""
583
 
584
- #: classes/controllers/FrmFormsController.php:1441
585
  msgid "Avatar"
586
  msgstr ""
587
 
588
- #: classes/controllers/FrmFormsController.php:1442
589
  msgid "Author Link"
590
  msgstr ""
591
 
592
- #: classes/controllers/FrmFormsController.php:1455
593
  #: classes/views/frm-entries/sidebar-shared.php:51
594
  msgid "Entry ID"
595
  msgstr ""
596
 
597
- #: classes/controllers/FrmFormsController.php:1457
598
  msgid "Post ID"
599
  msgstr ""
600
 
601
- #: classes/controllers/FrmFormsController.php:1458
602
  msgid "User IP"
603
  msgstr ""
604
 
605
- #: classes/controllers/FrmFormsController.php:1459
606
  msgid "Entry created"
607
  msgstr ""
608
 
609
- #: classes/controllers/FrmFormsController.php:1460
610
  msgid "Entry updated"
611
  msgstr ""
612
 
613
- #: classes/controllers/FrmFormsController.php:1462
614
  msgid "Site URL"
615
  msgstr ""
616
 
617
- #: classes/controllers/FrmFormsController.php:1463
618
  msgid "Site Name"
619
  msgstr ""
620
 
621
- #: classes/controllers/FrmFormsController.php:1471
622
  msgid "Default Msg"
623
  msgstr ""
624
 
625
- #: classes/controllers/FrmFormsController.php:1472
626
  msgid "Default HTML"
627
  msgstr ""
628
 
629
- #: classes/controllers/FrmFormsController.php:1473
630
  msgid "Default Plain"
631
  msgstr ""
632
 
633
- #: classes/controllers/FrmFormsController.php:1474
634
  #: classes/helpers/FrmFormsHelper.php:539
635
  #: classes/views/frm-forms/new-form-overlay.php:46
636
  #: classes/views/frm-forms/new-form-overlay.php:47
637
  msgid "Form Name"
638
  msgstr ""
639
 
640
- #: classes/controllers/FrmFormsController.php:1611
641
  msgid "No forms were specified"
642
  msgstr ""
643
 
644
- #: classes/controllers/FrmFormsController.php:1720
645
  msgid "There was a problem duplicating the form"
646
  msgstr ""
647
 
648
- #: classes/controllers/FrmFormsController.php:1731
649
  msgid "Abnormal HTML characters prevented your form from saving correctly"
650
  msgstr ""
651
 
652
- #: classes/controllers/FrmFormsController.php:1846
653
  #: classes/helpers/FrmFormsHelper.php:57
654
  #: classes/helpers/FrmFormsHelper.php:112
655
  #: classes/helpers/FrmFormsHelper.php:166
@@ -662,21 +662,21 @@ msgstr ""
662
  msgid "(no title)"
663
  msgstr ""
664
 
665
- #: classes/controllers/FrmFormsController.php:1912
666
- #: classes/controllers/FrmFormsController.php:1934
667
  msgid "Please select a valid form"
668
  msgstr ""
669
 
670
- #: classes/controllers/FrmFormsController.php:2168
671
  msgid "Please wait while you are redirected."
672
  msgstr ""
673
 
674
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
675
- #: classes/controllers/FrmFormsController.php:2203
676
  msgid "%1$sClick here%2$s if you are not automatically redirected."
677
  msgstr ""
678
 
679
- #: classes/controllers/FrmFormsController.php:2563
680
  #: classes/helpers/FrmAppHelper.php:1395
681
  #: classes/views/frm-forms/settings-advanced.php:93
682
  msgid "Select a Page"
@@ -713,8 +713,8 @@ msgid "Permissions"
713
  msgstr ""
714
 
715
  #: classes/controllers/FrmSettingsController.php:57
716
- #: classes/models/FrmField.php:66
717
- msgid "reCAPTCHA"
718
  msgstr ""
719
 
720
  #: classes/controllers/FrmSettingsController.php:61
@@ -893,7 +893,7 @@ msgstr ""
893
  #: classes/controllers/FrmSMTPController.php:322
894
  #: classes/models/FrmPluginSearch.php:306
895
  #: classes/views/addons/settings.php:31
896
- #: js/formidable_admin.js:6195
897
  msgid "Activate"
898
  msgstr ""
899
 
@@ -1245,12 +1245,12 @@ msgstr ""
1245
  #: classes/views/frm-forms/new-form-overlay.php:132
1246
  #: classes/views/shared/admin-header.php:56
1247
  #: classes/views/shared/confirm-overlay.php:19
1248
- #: js/formidable_admin.js:3963
1249
  msgid "Cancel"
1250
  msgstr ""
1251
 
1252
  #: classes/helpers/FrmAppHelper.php:2834
1253
- #: classes/views/frm-fields/back-end/settings.php:280
1254
  msgid "Default"
1255
  msgstr ""
1256
 
@@ -1272,7 +1272,7 @@ msgstr ""
1272
 
1273
  #: classes/helpers/FrmAppHelper.php:2839
1274
  #: classes/helpers/FrmListHelper.php:412
1275
- #: js/formidable_admin.js:4380
1276
  msgid "Heads up"
1277
  msgstr ""
1278
 
@@ -1897,7 +1897,7 @@ msgstr ""
1897
  #: classes/helpers/FrmFormsHelper.php:1196
1898
  #: classes/helpers/FrmFormsListHelper.php:133
1899
  #: classes/views/frm-form-actions/form_action.php:25
1900
- #: js/formidable_admin.js:2291
1901
  msgid "Delete"
1902
  msgstr ""
1903
 
@@ -3167,7 +3167,7 @@ msgid "Field ID"
3167
  msgstr ""
3168
 
3169
  #: classes/helpers/FrmFormsHelper.php:495
3170
- #: classes/views/frm-fields/back-end/settings.php:304
3171
  msgid "Field Key"
3172
  msgstr ""
3173
 
@@ -3176,7 +3176,7 @@ msgid "Field Name"
3176
  msgstr ""
3177
 
3178
  #: classes/helpers/FrmFormsHelper.php:507
3179
- #: classes/views/frm-fields/back-end/settings.php:277
3180
  msgid "Label Position"
3181
  msgstr ""
3182
 
@@ -3278,7 +3278,7 @@ msgid "This will permanently delete the form and all its entries. This is irreve
3278
  msgstr ""
3279
 
3280
  #: classes/helpers/FrmFormsHelper.php:1211
3281
- #: classes/models/FrmField.php:199
3282
  msgid "Total"
3283
  msgstr ""
3284
 
@@ -3409,7 +3409,7 @@ msgid "%1$s <span class=\"count\">(%2$s)</span>"
3409
  msgstr ""
3410
 
3411
  #: classes/helpers/FrmFormsListHelper.php:252
3412
- #: classes/models/FrmField.php:140
3413
  msgid "Embed Form"
3414
  msgstr ""
3415
 
@@ -3853,14 +3853,28 @@ msgstr ""
3853
  msgid "Email Notification"
3854
  msgstr ""
3855
 
3856
- #: classes/models/fields/FrmFieldCaptcha.php:154
3857
- msgid "There was a problem verifying your recaptcha"
3858
  msgstr ""
3859
 
3860
- #: classes/models/fields/FrmFieldCaptcha.php:210
 
 
 
 
3861
  msgid "The captcha is missing from this form"
3862
  msgstr ""
3863
 
 
 
 
 
 
 
 
 
 
 
3864
  #: classes/models/fields/FrmFieldCheckbox.php:43
3865
  #: classes/models/fields/FrmFieldRadio.php:63
3866
  #: classes/models/fields/FrmFieldSelect.php:39
@@ -3878,12 +3892,12 @@ msgid "Option 2"
3878
  msgstr ""
3879
 
3880
  #: classes/models/fields/FrmFieldCombo.php:190
3881
- #: classes/views/frm-fields/back-end/settings.php:144
3882
  msgid "Default Value"
3883
  msgstr ""
3884
 
3885
  #: classes/models/fields/FrmFieldCombo.php:191
3886
- #: classes/views/frm-fields/back-end/settings.php:190
3887
  msgid "Placeholder Text"
3888
  msgstr ""
3889
 
@@ -3938,66 +3952,66 @@ msgid "Website"
3938
  msgstr ""
3939
 
3940
  #. translators: %1$s: Plugin name, %2$s: Start link HTML, %3$s: end link HTML
3941
- #: classes/models/FrmAddon.php:310
3942
  msgid "Your %1$s license key is missing. Please add it on the %2$slicenses page%3$s."
3943
  msgstr ""
3944
 
3945
- #: classes/models/FrmAddon.php:505
3946
  msgid "Oops! You forgot to enter your license number."
3947
  msgstr ""
3948
 
3949
- #: classes/models/FrmAddon.php:588
3950
  msgid "Your license has been activated. Enjoy!"
3951
  msgstr ""
3952
 
3953
- #: classes/models/FrmAddon.php:589
3954
- #: classes/models/FrmAddon.php:594
3955
  msgid "That license key is invalid"
3956
  msgstr ""
3957
 
3958
- #: classes/models/FrmAddon.php:590
3959
  msgid "That license is expired"
3960
  msgstr ""
3961
 
3962
- #: classes/models/FrmAddon.php:591
3963
  msgid "That license has been refunded"
3964
  msgstr ""
3965
 
3966
- #: classes/models/FrmAddon.php:592
3967
  msgid "That license has been used on too many sites"
3968
  msgstr ""
3969
 
3970
- #: classes/models/FrmAddon.php:593
3971
  msgid "Oops! That is the wrong license key for this plugin."
3972
  msgstr ""
3973
 
3974
- #: classes/models/FrmAddon.php:610
3975
  msgid "Cache cleared"
3976
  msgstr ""
3977
 
3978
- #: classes/models/FrmAddon.php:632
3979
  msgid "That license was removed successfully"
3980
  msgstr ""
3981
 
3982
- #: classes/models/FrmAddon.php:634
3983
  msgid "There was an error deactivating your license."
3984
  msgstr ""
3985
 
3986
- #: classes/models/FrmAddon.php:678
3987
  msgid "Your License Key was invalid"
3988
  msgstr ""
3989
 
3990
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
3991
- #: classes/models/FrmAddon.php:682
3992
  msgid "You had an error communicating with the Formidable API. %1$sClick here%2$s for more information."
3993
  msgstr ""
3994
 
3995
- #: classes/models/FrmAddon.php:685
3996
  msgid "You had an HTTP error connecting to the Formidable API"
3997
  msgstr ""
3998
 
3999
  #. translators: %1$s: Error code, %2$s: Error message
4000
- #: classes/models/FrmAddon.php:696
4001
  msgid "There was a %1$s error: %2$s"
4002
  msgstr ""
4003
 
@@ -4056,7 +4070,7 @@ msgstr ""
4056
  msgid "Your entry appears to be blocked spam!"
4057
  msgstr ""
4058
 
4059
- #: classes/models/FrmField.php:14
4060
  #: classes/views/styles/_buttons.php:49
4061
  #: classes/views/styles/_buttons.php:92
4062
  #: classes/views/styles/_buttons.php:110
@@ -4068,141 +4082,141 @@ msgstr ""
4068
  msgid "Text"
4069
  msgstr ""
4070
 
4071
- #: classes/models/FrmField.php:18
4072
  msgid "Paragraph"
4073
  msgstr ""
4074
 
4075
- #: classes/models/FrmField.php:22
4076
  msgid "Checkboxes"
4077
  msgstr ""
4078
 
4079
- #: classes/models/FrmField.php:26
4080
  #: classes/views/styles/_sample_form.php:61
4081
  msgid "Radio Buttons"
4082
  msgstr ""
4083
 
4084
- #: classes/models/FrmField.php:30
4085
  msgid "Dropdown"
4086
  msgstr ""
4087
 
4088
- #: classes/models/FrmField.php:38
4089
  msgid "Website/URL"
4090
  msgstr ""
4091
 
4092
- #: classes/models/FrmField.php:42
4093
  msgid "Number"
4094
  msgstr ""
4095
 
4096
- #: classes/models/FrmField.php:46
4097
  msgid "Name"
4098
  msgstr ""
4099
 
4100
- #: classes/models/FrmField.php:50
4101
  msgid "Phone"
4102
  msgstr ""
4103
 
4104
- #: classes/models/FrmField.php:54
4105
  msgid "HTML"
4106
  msgstr ""
4107
 
4108
- #: classes/models/FrmField.php:58
4109
  msgid "Hidden"
4110
  msgstr ""
4111
 
4112
- #: classes/models/FrmField.php:78
4113
  msgid "File Upload"
4114
  msgstr ""
4115
 
4116
- #: classes/models/FrmField.php:83
4117
  msgid "Rich Text"
4118
  msgstr ""
4119
 
4120
- #: classes/models/FrmField.php:91
4121
  msgid "Time"
4122
  msgstr ""
4123
 
4124
- #: classes/models/FrmField.php:95
4125
  msgid "Scale"
4126
  msgstr ""
4127
 
4128
- #: classes/models/FrmField.php:100
4129
  msgid "Star Rating"
4130
  msgstr ""
4131
 
4132
- #: classes/models/FrmField.php:104
4133
  msgid "Slider"
4134
  msgstr ""
4135
 
4136
- #: classes/models/FrmField.php:108
4137
  msgid "Toggle"
4138
  msgstr ""
4139
 
4140
- #: classes/models/FrmField.php:112
4141
  msgid "Dynamic"
4142
  msgstr ""
4143
 
4144
- #: classes/models/FrmField.php:117
4145
  msgid "Lookup"
4146
  msgstr ""
4147
 
4148
- #: classes/models/FrmField.php:122
4149
  msgid "Repeater"
4150
  msgstr ""
4151
 
4152
- #: classes/models/FrmField.php:127
4153
  #: classes/models/FrmFormMigrator.php:302
4154
  msgid "Section Buttons"
4155
  msgstr ""
4156
 
4157
- #: classes/models/FrmField.php:131
4158
  msgid "Section"
4159
  msgstr ""
4160
 
4161
- #: classes/models/FrmField.php:135
4162
  msgid "Page Break"
4163
  msgstr ""
4164
 
4165
- #: classes/models/FrmField.php:144
4166
  msgid "Likert Scale"
4167
  msgstr ""
4168
 
4169
- #: classes/models/FrmField.php:149
4170
  msgid "NPS"
4171
  msgstr ""
4172
 
4173
- #: classes/models/FrmField.php:154
4174
  msgid "Password"
4175
  msgstr ""
4176
 
4177
- #: classes/models/FrmField.php:158
4178
  msgid "Tags"
4179
  msgstr ""
4180
 
4181
- #: classes/models/FrmField.php:162
4182
  msgid "Credit Card"
4183
  msgstr ""
4184
 
4185
- #: classes/models/FrmField.php:167
4186
  msgid "Address"
4187
  msgstr ""
4188
 
4189
- #: classes/models/FrmField.php:171
4190
  msgid "Summary"
4191
  msgstr ""
4192
 
4193
- #: classes/models/FrmField.php:176
4194
  msgid "Signature"
4195
  msgstr ""
4196
 
4197
- #: classes/models/FrmField.php:181
4198
  msgid "Appointment"
4199
  msgstr ""
4200
 
4201
- #: classes/models/FrmField.php:189
4202
  msgid "Product"
4203
  msgstr ""
4204
 
4205
- #: classes/models/FrmField.php:194
4206
  msgid "Quantity"
4207
  msgstr ""
4208
 
@@ -4319,42 +4333,42 @@ msgstr ""
4319
  msgid "Ok, you deserve it"
4320
  msgstr ""
4321
 
4322
- #: classes/models/FrmSettings.php:103
4323
  msgid "Your responses were successfully submitted. Thank you!"
4324
  msgstr ""
4325
 
4326
- #: classes/models/FrmSettings.php:104
4327
  msgid "This field cannot be blank."
4328
  msgstr ""
4329
 
4330
- #: classes/models/FrmSettings.php:105
4331
  msgid "This value must be unique."
4332
  msgstr ""
4333
 
4334
- #: classes/models/FrmSettings.php:106
4335
  msgid "There was a problem with your submission. Errors are marked below."
4336
  msgstr ""
4337
 
4338
- #: classes/models/FrmSettings.php:107
4339
  msgid "We're sorry. It looks like you've already submitted that."
4340
  msgstr ""
4341
 
4342
- #: classes/models/FrmSettings.php:108
4343
  #: classes/views/frm-forms/form.php:48
4344
  #: classes/views/styles/_sample_form.php:79
4345
  msgid "Submit"
4346
  msgstr ""
4347
 
4348
- #: classes/models/FrmSettings.php:109
4349
  msgid "You do not have permission to view this form."
4350
  msgstr ""
4351
 
4352
- #: classes/models/FrmSettings.php:110
4353
  msgid "You do not have permission to do that"
4354
  msgstr ""
4355
 
4356
- #: classes/models/FrmSettings.php:195
4357
- msgid "The reCAPTCHA was not entered correctly"
4358
  msgstr ""
4359
 
4360
  #: classes/models/FrmSolution.php:70
@@ -4632,7 +4646,7 @@ msgstr ""
4632
  #: classes/views/frm-fields/back-end/inline-modal.php:7
4633
  #: classes/views/frm-fields/back-end/inline-modal.php:8
4634
  #: classes/views/shared/admin-header.php:11
4635
- #: js/formidable_admin.js:8358
4636
  msgid "Close"
4637
  msgstr ""
4638
 
@@ -4648,11 +4662,6 @@ msgstr ""
4648
  msgid "Update Options"
4649
  msgstr ""
4650
 
4651
- #. translators: %1$s: Link HTML, %2$s: End link
4652
- #: classes/views/frm-fields/back-end/field-captcha.php:11
4653
- msgid "Your captcha will not appear on your form until you %1$sset up%2$s the Site and Secret Keys"
4654
- msgstr ""
4655
-
4656
  #: classes/views/frm-fields/back-end/field-hidden.php:8
4657
  msgid "Note: This field will not show in the form. Enter the value to be hidden."
4658
  msgstr ""
@@ -4670,8 +4679,8 @@ msgid "Content"
4670
  msgstr ""
4671
 
4672
  #: classes/views/frm-fields/back-end/html-content.php:16
4673
- #: classes/views/frm-fields/back-end/settings.php:85
4674
- #: classes/views/frm-fields/back-end/settings.php:153
4675
  #: classes/views/frm-fields/back-end/value-format.php:16
4676
  msgid "Toggle Options"
4677
  msgstr ""
@@ -4773,98 +4782,107 @@ msgstr ""
4773
  msgid "%s Field"
4774
  msgstr ""
4775
 
4776
- #: classes/views/frm-fields/back-end/settings.php:39
4777
- #: classes/views/frm-fields/back-end/settings.php:350
 
 
 
 
 
 
 
 
 
4778
  msgid "Required"
4779
  msgstr ""
4780
 
4781
- #: classes/views/frm-fields/back-end/settings.php:46
4782
  msgid "Unique: Do not allow the same response multiple times. For example, if one user enters 'Joe', then no one else will be allowed to enter the same name."
4783
  msgstr ""
4784
 
4785
- #: classes/views/frm-fields/back-end/settings.php:47
4786
- #: classes/views/frm-fields/back-end/settings.php:370
4787
  msgid "Unique"
4788
  msgstr ""
4789
 
4790
- #: classes/views/frm-fields/back-end/settings.php:54
4791
  msgid "Read Only: Show this field but do not allow the field value to be edited from the front-end."
4792
  msgstr ""
4793
 
4794
- #: classes/views/frm-fields/back-end/settings.php:56
4795
  msgid "Read Only"
4796
  msgstr ""
4797
 
4798
- #: classes/views/frm-fields/back-end/settings.php:76
4799
  msgid "Add a CSS class to the field container. Use our predefined classes to align multiple fields in single row."
4800
  msgstr ""
4801
 
4802
- #: classes/views/frm-fields/back-end/settings.php:77
4803
  msgid "CSS Layout Classes"
4804
  msgstr ""
4805
 
4806
- #: classes/views/frm-fields/back-end/settings.php:118
4807
  #: classes/views/shared/mb_adv_info.php:22
4808
  msgid "Advanced"
4809
  msgstr ""
4810
 
4811
- #: classes/views/frm-fields/back-end/settings.php:224
4812
  msgid "If this URL points to an image, show to image on the entries listing page."
4813
  msgstr ""
4814
 
4815
- #: classes/views/frm-fields/back-end/settings.php:231
4816
  msgid "Set the size of the captcha field. The compact option is best if your form is in a small area."
4817
  msgstr ""
4818
 
4819
- #: classes/views/frm-fields/back-end/settings.php:232
4820
  msgid "ReCaptcha Type"
4821
  msgstr ""
4822
 
4823
- #: classes/views/frm-fields/back-end/settings.php:236
4824
  msgid "Normal"
4825
  msgstr ""
4826
 
4827
- #: classes/views/frm-fields/back-end/settings.php:239
4828
  msgid "Compact"
4829
  msgstr ""
4830
 
4831
- #: classes/views/frm-fields/back-end/settings.php:245
4832
  msgid "reCAPTCHA Color"
4833
  msgstr ""
4834
 
4835
- #: classes/views/frm-fields/back-end/settings.php:249
4836
  msgid "Light"
4837
  msgstr ""
4838
 
4839
- #: classes/views/frm-fields/back-end/settings.php:252
4840
  msgid "Dark"
4841
  msgstr ""
4842
 
4843
- #: classes/views/frm-fields/back-end/settings.php:269
4844
  msgid "Required Field Indicator"
4845
  msgstr ""
4846
 
4847
- #: classes/views/frm-fields/back-end/settings.php:295
4848
  msgid "Center"
4849
  msgstr ""
4850
 
4851
- #: classes/views/frm-fields/back-end/settings.php:303
4852
  msgid "The field key can be used as an alternative to the field ID in many cases."
4853
  msgstr ""
4854
 
4855
- #: classes/views/frm-fields/back-end/settings.php:312
4856
  msgid "Field Type"
4857
  msgstr ""
4858
 
4859
- #: classes/views/frm-fields/back-end/settings.php:342
4860
  msgid "Validation Messages"
4861
  msgstr ""
4862
 
4863
- #: classes/views/frm-fields/back-end/settings.php:359
4864
  msgid "Invalid Format"
4865
  msgstr ""
4866
 
4867
- #: classes/views/frm-fields/back-end/settings.php:381
4868
  msgid "Confirmation"
4869
  msgstr ""
4870
 
@@ -4933,7 +4951,7 @@ msgstr ""
4933
 
4934
  #: classes/views/frm-form-actions/form_action.php:21
4935
  #: classes/views/styles/_upsell-multiple-styles.php:15
4936
- #: js/formidable_admin.js:2297
4937
  msgid "Duplicate"
4938
  msgstr ""
4939
 
@@ -5062,9 +5080,9 @@ msgid "Move Field"
5062
  msgstr ""
5063
 
5064
  #: classes/views/frm-forms/add_field.php:29
5065
- #: js/formidable_admin.js:1405
5066
- #: js/formidable_admin.js:1408
5067
- #: js/formidable_admin.js:2235
5068
  msgid "More Options"
5069
  msgstr ""
5070
 
@@ -5581,6 +5599,83 @@ msgstr ""
5581
  msgid "Embed"
5582
  msgstr ""
5583
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5584
  #: classes/views/frm-settings/general.php:7
5585
  msgid "License Key"
5586
  msgstr ""
@@ -5714,59 +5809,6 @@ msgstr ""
5714
  msgid "Select users that are allowed access to Formidable. Without access to View Forms, users will be unable to see the Formidable menu."
5715
  msgstr ""
5716
 
5717
- #. translators: %1$s: Start link HTML, %2$s: End link HTML
5718
- #: classes/views/frm-settings/recaptcha.php:10
5719
- msgid "reCAPTCHA requires a Site and Private API key. Sign up for a %1$sfree reCAPTCHA key%2$s."
5720
- msgstr ""
5721
-
5722
- #: classes/views/frm-settings/recaptcha.php:19
5723
- msgid "reCAPTCHA is a free, accessible CAPTCHA service that helps to digitize books while blocking spam on your blog. reCAPTCHA asks commenters to retype two words scanned from a book to prove that they are a human. This verifies that they are not a spambot."
5724
- msgstr ""
5725
-
5726
- #: classes/views/frm-settings/recaptcha.php:20
5727
- msgid "Site Key"
5728
- msgstr ""
5729
-
5730
- #: classes/views/frm-settings/recaptcha.php:27
5731
- msgid "Secret Key"
5732
- msgstr ""
5733
-
5734
- #: classes/views/frm-settings/recaptcha.php:34
5735
- msgid "reCAPTCHA Type"
5736
- msgstr ""
5737
-
5738
- #: classes/views/frm-settings/recaptcha.php:38
5739
- msgid "Checkbox (V2)"
5740
- msgstr ""
5741
-
5742
- #: classes/views/frm-settings/recaptcha.php:41
5743
- msgid "Invisible"
5744
- msgstr ""
5745
-
5746
- #: classes/views/frm-settings/recaptcha.php:44
5747
- msgid "v3"
5748
- msgstr ""
5749
-
5750
- #: classes/views/frm-settings/recaptcha.php:51
5751
- msgid "reCAPTCHA Language"
5752
- msgstr ""
5753
-
5754
- #: classes/views/frm-settings/recaptcha.php:55
5755
- msgid "Browser Default"
5756
- msgstr ""
5757
-
5758
- #: classes/views/frm-settings/recaptcha.php:67
5759
- msgid "reCAPTCHA Threshold"
5760
- msgstr ""
5761
-
5762
- #: classes/views/frm-settings/recaptcha.php:68
5763
- msgid "A score of 0 is likely to be a bot and a score of 1 is likely not a bot. Setting a lower threshold will allow more bots, but it will also stop fewer real users."
5764
- msgstr ""
5765
-
5766
- #: classes/views/frm-settings/recaptcha.php:79
5767
- msgid "Allow multiple reCAPTCHAs to be used on a single page"
5768
- msgstr ""
5769
-
5770
  #: classes/views/frm-settings/settings_cta.php:14
5771
  msgid "Get Formidable Forms Pro and Unlock all the Powerful Features"
5772
  msgstr ""
@@ -6601,75 +6643,75 @@ msgstr ""
6601
  msgid "Successfully copied embed example"
6602
  msgstr ""
6603
 
6604
- #: js/formidable_admin.js:1366
6605
  msgid "Set Row Layout"
6606
  msgstr ""
6607
 
6608
- #: js/formidable_admin.js:1373
6609
  msgid "Move Field Group"
6610
  msgstr ""
6611
 
6612
- #: js/formidable_admin.js:2263
6613
  msgid "Field settings"
6614
  msgstr ""
6615
 
6616
- #: js/formidable_admin.js:2291
6617
  msgid "Delete Group"
6618
  msgstr ""
6619
 
6620
- #: js/formidable_admin.js:2297
6621
  msgid "Duplicate Group"
6622
  msgstr ""
6623
 
6624
- #: js/formidable_admin.js:3670
6625
  msgid "Custom layout"
6626
  msgstr ""
6627
 
6628
- #: js/formidable_admin.js:3693
6629
  msgid "Break into rows"
6630
  msgstr ""
6631
 
6632
- #: js/formidable_admin.js:3703
6633
  msgid "Row Layout"
6634
  msgstr ""
6635
 
6636
- #: js/formidable_admin.js:3948
6637
  msgid "Enter number of columns for each field"
6638
  msgstr ""
6639
 
6640
- #: js/formidable_admin.js:3952
6641
  msgid "Layouts are based on a 12-column grid system"
6642
  msgstr ""
6643
 
6644
- #: js/formidable_admin.js:3968
6645
  msgid "Save"
6646
  msgstr ""
6647
 
6648
- #: js/formidable_admin.js:4294
6649
  msgid "Merge into row"
6650
  msgstr ""
6651
 
6652
  #. translators: %1$s: Number of fields that are selected to be deleted.
6653
- #: js/formidable_admin.js:4382
6654
  msgid "Are you sure you want to delete these %1$s selected fields?"
6655
  msgstr ""
6656
 
6657
- #: js/formidable_admin.js:5505
6658
  msgid "Duplicate option value \"%s\" detected"
6659
  msgstr ""
6660
 
6661
- #: js/formidable_admin.js:7599
6662
  msgid "Ready Made Solution"
6663
  msgstr ""
6664
 
6665
- #: js/formidable_admin.js:7602
6666
  msgid "Check all applications"
6667
  msgstr ""
6668
 
6669
- #: js/formidable_admin.js:8343
6670
  msgid "Save and Reload"
6671
  msgstr ""
6672
 
6673
- #: js/formidable_admin.js:8973
6674
  msgid "Unable to install template"
6675
  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.5.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-12-01T17:28:01+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:1464
233
  #: classes/views/frm-entries/form.php:69
234
  #: classes/views/frm-entries/sidebar-shared.php:57
235
  msgid "Entry Key"
261
  msgid "Entry update date"
262
  msgstr ""
263
 
264
+ #: classes/controllers/FrmEntriesController.php:428
265
  msgid "Your import is complete"
266
  msgstr ""
267
 
268
  #. translators: %1$s: Time string
269
+ #: classes/controllers/FrmEntriesController.php:440
270
  msgid "This form is in the trash and is scheduled to be deleted permanently in %s along with any entries."
271
  msgstr ""
272
 
273
+ #: classes/controllers/FrmEntriesController.php:459
274
  msgid "You are trying to view an entry that does not exist."
275
  msgstr ""
276
 
277
+ #: classes/controllers/FrmEntriesController.php:487
278
+ msgid "Entry was successfully deleted"
279
  msgstr ""
280
 
281
  #: classes/controllers/FrmFieldsController.php:330
349
  msgstr ""
350
 
351
  #: classes/controllers/FrmFormsController.php:179
352
+ #: classes/controllers/FrmFormsController.php:1094
353
  msgid "Form was successfully updated."
354
  msgstr ""
355
 
449
  msgstr ""
450
 
451
  #: classes/controllers/FrmFormsController.php:867
452
+ #: classes/models/FrmField.php:96
453
  msgid "Date"
454
  msgstr ""
455
 
456
+ #: classes/controllers/FrmFormsController.php:1000
457
  #: classes/helpers/FrmFormsHelper.php:1317
458
  msgid "My Templates"
459
  msgstr ""
460
 
461
+ #: classes/controllers/FrmFormsController.php:1059
462
  msgid "You are trying to edit a form that does not exist."
463
  msgstr ""
464
 
465
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
466
+ #: classes/controllers/FrmFormsController.php:1064
467
  msgid "You are trying to edit a child form. Please edit from %1$shere%2$s"
468
  msgstr ""
469
 
470
+ #: classes/controllers/FrmFormsController.php:1096
471
  msgid "Template was successfully updated."
472
  msgstr ""
473
 
474
+ #: classes/controllers/FrmFormsController.php:1120
475
  msgid "Form was Successfully Copied"
476
  msgstr ""
477
 
478
+ #: classes/controllers/FrmFormsController.php:1185
479
  #: classes/controllers/FrmStylesController.php:403
480
  msgid "General"
481
  msgstr ""
482
 
483
+ #: classes/controllers/FrmFormsController.php:1186
484
  msgid "General Form Settings"
485
  msgstr ""
486
 
487
+ #: classes/controllers/FrmFormsController.php:1191
488
  msgid "Actions & Notifications"
489
  msgstr ""
490
 
491
+ #: classes/controllers/FrmFormsController.php:1197
492
+ #: classes/controllers/FrmFormsController.php:1202
493
  msgid "Form Permissions"
494
  msgstr ""
495
 
496
+ #: classes/controllers/FrmFormsController.php:1203
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:1208
501
  msgid "Form Scheduling"
502
  msgstr ""
503
 
504
+ #: classes/controllers/FrmFormsController.php:1213
505
  msgid "Form scheduling settings"
506
  msgstr ""
507
 
508
+ #: classes/controllers/FrmFormsController.php:1218
509
  msgid "Styling & Buttons"
510
  msgstr ""
511
 
512
+ #: classes/controllers/FrmFormsController.php:1224
513
  msgid "Form Landing Page"
514
  msgstr ""
515
 
516
+ #: classes/controllers/FrmFormsController.php:1230
517
+ #: classes/controllers/FrmFormsController.php:1236
518
  msgid "Conversational Forms"
519
  msgstr ""
520
 
521
+ #: classes/controllers/FrmFormsController.php:1237
522
  msgid "Ask one question at a time for automated conversations."
523
  msgstr ""
524
 
525
+ #: classes/controllers/FrmFormsController.php:1243
526
  msgid "Customize HTML"
527
  msgstr ""
528
 
529
+ #: classes/controllers/FrmFormsController.php:1379
530
  msgid "Customize field values with the following parameters."
531
  msgstr ""
532
 
533
+ #: classes/controllers/FrmFormsController.php:1417
534
  msgid "Separator"
535
  msgstr ""
536
 
537
+ #: classes/controllers/FrmFormsController.php:1418
538
  msgid "Use a different separator for checkbox fields"
539
  msgstr ""
540
 
541
+ #: classes/controllers/FrmFormsController.php:1421
542
  msgid "Date Format"
543
  msgstr ""
544
 
545
+ #: classes/controllers/FrmFormsController.php:1424
546
+ #: classes/views/frm-fields/back-end/settings.php:42
547
  msgid "Field Label"
548
  msgstr ""
549
 
550
+ #: classes/controllers/FrmFormsController.php:1427
551
  msgid "No Auto P"
552
  msgstr ""
553
 
554
+ #: classes/controllers/FrmFormsController.php:1428
555
  msgid "Do not automatically add any paragraphs or line breaks"
556
  msgstr ""
557
 
558
+ #: classes/controllers/FrmFormsController.php:1443
559
+ #: classes/models/FrmField.php:71
560
  msgid "User ID"
561
  msgstr ""
562
 
563
+ #: classes/controllers/FrmFormsController.php:1444
564
  msgid "First Name"
565
  msgstr ""
566
 
567
+ #: classes/controllers/FrmFormsController.php:1445
568
  msgid "Last Name"
569
  msgstr ""
570
 
571
+ #: classes/controllers/FrmFormsController.php:1446
572
  msgid "Display Name"
573
  msgstr ""
574
 
575
+ #: classes/controllers/FrmFormsController.php:1447
576
  msgid "User Login"
577
  msgstr ""
578
 
579
+ #: classes/controllers/FrmFormsController.php:1448
580
+ #: classes/models/FrmField.php:43
581
  msgid "Email"
582
  msgstr ""
583
 
584
+ #: classes/controllers/FrmFormsController.php:1449
585
  msgid "Avatar"
586
  msgstr ""
587
 
588
+ #: classes/controllers/FrmFormsController.php:1450
589
  msgid "Author Link"
590
  msgstr ""
591
 
592
+ #: classes/controllers/FrmFormsController.php:1463
593
  #: classes/views/frm-entries/sidebar-shared.php:51
594
  msgid "Entry ID"
595
  msgstr ""
596
 
597
+ #: classes/controllers/FrmFormsController.php:1465
598
  msgid "Post ID"
599
  msgstr ""
600
 
601
+ #: classes/controllers/FrmFormsController.php:1466
602
  msgid "User IP"
603
  msgstr ""
604
 
605
+ #: classes/controllers/FrmFormsController.php:1467
606
  msgid "Entry created"
607
  msgstr ""
608
 
609
+ #: classes/controllers/FrmFormsController.php:1468
610
  msgid "Entry updated"
611
  msgstr ""
612
 
613
+ #: classes/controllers/FrmFormsController.php:1470
614
  msgid "Site URL"
615
  msgstr ""
616
 
617
+ #: classes/controllers/FrmFormsController.php:1471
618
  msgid "Site Name"
619
  msgstr ""
620
 
621
+ #: classes/controllers/FrmFormsController.php:1479
622
  msgid "Default Msg"
623
  msgstr ""
624
 
625
+ #: classes/controllers/FrmFormsController.php:1480
626
  msgid "Default HTML"
627
  msgstr ""
628
 
629
+ #: classes/controllers/FrmFormsController.php:1481
630
  msgid "Default Plain"
631
  msgstr ""
632
 
633
+ #: classes/controllers/FrmFormsController.php:1482
634
  #: classes/helpers/FrmFormsHelper.php:539
635
  #: classes/views/frm-forms/new-form-overlay.php:46
636
  #: classes/views/frm-forms/new-form-overlay.php:47
637
  msgid "Form Name"
638
  msgstr ""
639
 
640
+ #: classes/controllers/FrmFormsController.php:1619
641
  msgid "No forms were specified"
642
  msgstr ""
643
 
644
+ #: classes/controllers/FrmFormsController.php:1728
645
  msgid "There was a problem duplicating the form"
646
  msgstr ""
647
 
648
+ #: classes/controllers/FrmFormsController.php:1739
649
  msgid "Abnormal HTML characters prevented your form from saving correctly"
650
  msgstr ""
651
 
652
+ #: classes/controllers/FrmFormsController.php:1854
653
  #: classes/helpers/FrmFormsHelper.php:57
654
  #: classes/helpers/FrmFormsHelper.php:112
655
  #: classes/helpers/FrmFormsHelper.php:166
662
  msgid "(no title)"
663
  msgstr ""
664
 
665
+ #: classes/controllers/FrmFormsController.php:1920
666
+ #: classes/controllers/FrmFormsController.php:1942
667
  msgid "Please select a valid form"
668
  msgstr ""
669
 
670
+ #: classes/controllers/FrmFormsController.php:2176
671
  msgid "Please wait while you are redirected."
672
  msgstr ""
673
 
674
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
675
+ #: classes/controllers/FrmFormsController.php:2211
676
  msgid "%1$sClick here%2$s if you are not automatically redirected."
677
  msgstr ""
678
 
679
+ #: classes/controllers/FrmFormsController.php:2571
680
  #: classes/helpers/FrmAppHelper.php:1395
681
  #: classes/views/frm-forms/settings-advanced.php:93
682
  msgid "Select a Page"
713
  msgstr ""
714
 
715
  #: classes/controllers/FrmSettingsController.php:57
716
+ #: classes/models/fields/FrmFieldCaptcha.php:329
717
+ msgid "CAPTCHA"
718
  msgstr ""
719
 
720
  #: classes/controllers/FrmSettingsController.php:61
893
  #: classes/controllers/FrmSMTPController.php:322
894
  #: classes/models/FrmPluginSearch.php:306
895
  #: classes/views/addons/settings.php:31
896
+ #: js/formidable_admin.js:6217
897
  msgid "Activate"
898
  msgstr ""
899
 
1245
  #: classes/views/frm-forms/new-form-overlay.php:132
1246
  #: classes/views/shared/admin-header.php:56
1247
  #: classes/views/shared/confirm-overlay.php:19
1248
+ #: js/formidable_admin.js:3985
1249
  msgid "Cancel"
1250
  msgstr ""
1251
 
1252
  #: classes/helpers/FrmAppHelper.php:2834
1253
+ #: classes/views/frm-fields/back-end/settings.php:295
1254
  msgid "Default"
1255
  msgstr ""
1256
 
1272
 
1273
  #: classes/helpers/FrmAppHelper.php:2839
1274
  #: classes/helpers/FrmListHelper.php:412
1275
+ #: js/formidable_admin.js:4402
1276
  msgid "Heads up"
1277
  msgstr ""
1278
 
1897
  #: classes/helpers/FrmFormsHelper.php:1196
1898
  #: classes/helpers/FrmFormsListHelper.php:133
1899
  #: classes/views/frm-form-actions/form_action.php:25
1900
+ #: js/formidable_admin.js:2304
1901
  msgid "Delete"
1902
  msgstr ""
1903
 
3167
  msgstr ""
3168
 
3169
  #: classes/helpers/FrmFormsHelper.php:495
3170
+ #: classes/views/frm-fields/back-end/settings.php:319
3171
  msgid "Field Key"
3172
  msgstr ""
3173
 
3176
  msgstr ""
3177
 
3178
  #: classes/helpers/FrmFormsHelper.php:507
3179
+ #: classes/views/frm-fields/back-end/settings.php:292
3180
  msgid "Label Position"
3181
  msgstr ""
3182
 
3278
  msgstr ""
3279
 
3280
  #: classes/helpers/FrmFormsHelper.php:1211
3281
+ #: classes/models/FrmField.php:208
3282
  msgid "Total"
3283
  msgstr ""
3284
 
3409
  msgstr ""
3410
 
3411
  #: classes/helpers/FrmFormsListHelper.php:252
3412
+ #: classes/models/FrmField.php:149
3413
  msgid "Embed Form"
3414
  msgstr ""
3415
 
3853
  msgid "Email Notification"
3854
  msgstr ""
3855
 
3856
+ #: classes/models/fields/FrmFieldCaptcha.php:212
3857
+ msgid "There was a problem verifying your captcha"
3858
  msgstr ""
3859
 
3860
+ #: classes/models/fields/FrmFieldCaptcha.php:237
3861
+ msgid "The reCAPTCHA was not entered correctly"
3862
+ msgstr ""
3863
+
3864
+ #: classes/models/fields/FrmFieldCaptcha.php:273
3865
  msgid "The captcha is missing from this form"
3866
  msgstr ""
3867
 
3868
+ #: classes/models/fields/FrmFieldCaptcha.php:328
3869
+ #: classes/views/frm-settings/captcha/captcha.php:24
3870
+ msgid "reCAPTCHA"
3871
+ msgstr ""
3872
+
3873
+ #: classes/models/fields/FrmFieldCaptcha.php:328
3874
+ #: classes/views/frm-settings/captcha/captcha.php:33
3875
+ msgid "hCaptcha"
3876
+ msgstr ""
3877
+
3878
  #: classes/models/fields/FrmFieldCheckbox.php:43
3879
  #: classes/models/fields/FrmFieldRadio.php:63
3880
  #: classes/models/fields/FrmFieldSelect.php:39
3892
  msgstr ""
3893
 
3894
  #: classes/models/fields/FrmFieldCombo.php:190
3895
+ #: classes/views/frm-fields/back-end/settings.php:159
3896
  msgid "Default Value"
3897
  msgstr ""
3898
 
3899
  #: classes/models/fields/FrmFieldCombo.php:191
3900
+ #: classes/views/frm-fields/back-end/settings.php:205
3901
  msgid "Placeholder Text"
3902
  msgstr ""
3903
 
3952
  msgstr ""
3953
 
3954
  #. translators: %1$s: Plugin name, %2$s: Start link HTML, %3$s: end link HTML
3955
+ #: classes/models/FrmAddon.php:314
3956
  msgid "Your %1$s license key is missing. Please add it on the %2$slicenses page%3$s."
3957
  msgstr ""
3958
 
3959
+ #: classes/models/FrmAddon.php:509
3960
  msgid "Oops! You forgot to enter your license number."
3961
  msgstr ""
3962
 
3963
+ #: classes/models/FrmAddon.php:592
3964
  msgid "Your license has been activated. Enjoy!"
3965
  msgstr ""
3966
 
3967
+ #: classes/models/FrmAddon.php:593
3968
+ #: classes/models/FrmAddon.php:598
3969
  msgid "That license key is invalid"
3970
  msgstr ""
3971
 
3972
+ #: classes/models/FrmAddon.php:594
3973
  msgid "That license is expired"
3974
  msgstr ""
3975
 
3976
+ #: classes/models/FrmAddon.php:595
3977
  msgid "That license has been refunded"
3978
  msgstr ""
3979
 
3980
+ #: classes/models/FrmAddon.php:596
3981
  msgid "That license has been used on too many sites"
3982
  msgstr ""
3983
 
3984
+ #: classes/models/FrmAddon.php:597
3985
  msgid "Oops! That is the wrong license key for this plugin."
3986
  msgstr ""
3987
 
3988
+ #: classes/models/FrmAddon.php:614
3989
  msgid "Cache cleared"
3990
  msgstr ""
3991
 
3992
+ #: classes/models/FrmAddon.php:636
3993
  msgid "That license was removed successfully"
3994
  msgstr ""
3995
 
3996
+ #: classes/models/FrmAddon.php:638
3997
  msgid "There was an error deactivating your license."
3998
  msgstr ""
3999
 
4000
+ #: classes/models/FrmAddon.php:682
4001
  msgid "Your License Key was invalid"
4002
  msgstr ""
4003
 
4004
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
4005
+ #: classes/models/FrmAddon.php:686
4006
  msgid "You had an error communicating with the Formidable API. %1$sClick here%2$s for more information."
4007
  msgstr ""
4008
 
4009
+ #: classes/models/FrmAddon.php:689
4010
  msgid "You had an HTTP error connecting to the Formidable API"
4011
  msgstr ""
4012
 
4013
  #. translators: %1$s: Error code, %2$s: Error message
4014
+ #: classes/models/FrmAddon.php:700
4015
  msgid "There was a %1$s error: %2$s"
4016
  msgstr ""
4017
 
4070
  msgid "Your entry appears to be blocked spam!"
4071
  msgstr ""
4072
 
4073
+ #: classes/models/FrmField.php:23
4074
  #: classes/views/styles/_buttons.php:49
4075
  #: classes/views/styles/_buttons.php:92
4076
  #: classes/views/styles/_buttons.php:110
4082
  msgid "Text"
4083
  msgstr ""
4084
 
4085
+ #: classes/models/FrmField.php:27
4086
  msgid "Paragraph"
4087
  msgstr ""
4088
 
4089
+ #: classes/models/FrmField.php:31
4090
  msgid "Checkboxes"
4091
  msgstr ""
4092
 
4093
+ #: classes/models/FrmField.php:35
4094
  #: classes/views/styles/_sample_form.php:61
4095
  msgid "Radio Buttons"
4096
  msgstr ""
4097
 
4098
+ #: classes/models/FrmField.php:39
4099
  msgid "Dropdown"
4100
  msgstr ""
4101
 
4102
+ #: classes/models/FrmField.php:47
4103
  msgid "Website/URL"
4104
  msgstr ""
4105
 
4106
+ #: classes/models/FrmField.php:51
4107
  msgid "Number"
4108
  msgstr ""
4109
 
4110
+ #: classes/models/FrmField.php:55
4111
  msgid "Name"
4112
  msgstr ""
4113
 
4114
+ #: classes/models/FrmField.php:59
4115
  msgid "Phone"
4116
  msgstr ""
4117
 
4118
+ #: classes/models/FrmField.php:63
4119
  msgid "HTML"
4120
  msgstr ""
4121
 
4122
+ #: classes/models/FrmField.php:67
4123
  msgid "Hidden"
4124
  msgstr ""
4125
 
4126
+ #: classes/models/FrmField.php:87
4127
  msgid "File Upload"
4128
  msgstr ""
4129
 
4130
+ #: classes/models/FrmField.php:92
4131
  msgid "Rich Text"
4132
  msgstr ""
4133
 
4134
+ #: classes/models/FrmField.php:100
4135
  msgid "Time"
4136
  msgstr ""
4137
 
4138
+ #: classes/models/FrmField.php:104
4139
  msgid "Scale"
4140
  msgstr ""
4141
 
4142
+ #: classes/models/FrmField.php:109
4143
  msgid "Star Rating"
4144
  msgstr ""
4145
 
4146
+ #: classes/models/FrmField.php:113
4147
  msgid "Slider"
4148
  msgstr ""
4149
 
4150
+ #: classes/models/FrmField.php:117
4151
  msgid "Toggle"
4152
  msgstr ""
4153
 
4154
+ #: classes/models/FrmField.php:121
4155
  msgid "Dynamic"
4156
  msgstr ""
4157
 
4158
+ #: classes/models/FrmField.php:126
4159
  msgid "Lookup"
4160
  msgstr ""
4161
 
4162
+ #: classes/models/FrmField.php:131
4163
  msgid "Repeater"
4164
  msgstr ""
4165
 
4166
+ #: classes/models/FrmField.php:136
4167
  #: classes/models/FrmFormMigrator.php:302
4168
  msgid "Section Buttons"
4169
  msgstr ""
4170
 
4171
+ #: classes/models/FrmField.php:140
4172
  msgid "Section"
4173
  msgstr ""
4174
 
4175
+ #: classes/models/FrmField.php:144
4176
  msgid "Page Break"
4177
  msgstr ""
4178
 
4179
+ #: classes/models/FrmField.php:153
4180
  msgid "Likert Scale"
4181
  msgstr ""
4182
 
4183
+ #: classes/models/FrmField.php:158
4184
  msgid "NPS"
4185
  msgstr ""
4186
 
4187
+ #: classes/models/FrmField.php:163
4188
  msgid "Password"
4189
  msgstr ""
4190
 
4191
+ #: classes/models/FrmField.php:167
4192
  msgid "Tags"
4193
  msgstr ""
4194
 
4195
+ #: classes/models/FrmField.php:171
4196
  msgid "Credit Card"
4197
  msgstr ""
4198
 
4199
+ #: classes/models/FrmField.php:176
4200
  msgid "Address"
4201
  msgstr ""
4202
 
4203
+ #: classes/models/FrmField.php:180
4204
  msgid "Summary"
4205
  msgstr ""
4206
 
4207
+ #: classes/models/FrmField.php:185
4208
  msgid "Signature"
4209
  msgstr ""
4210
 
4211
+ #: classes/models/FrmField.php:190
4212
  msgid "Appointment"
4213
  msgstr ""
4214
 
4215
+ #: classes/models/FrmField.php:198
4216
  msgid "Product"
4217
  msgstr ""
4218
 
4219
+ #: classes/models/FrmField.php:203
4220
  msgid "Quantity"
4221
  msgstr ""
4222
 
4333
  msgid "Ok, you deserve it"
4334
  msgstr ""
4335
 
4336
+ #: classes/models/FrmSettings.php:106
4337
  msgid "Your responses were successfully submitted. Thank you!"
4338
  msgstr ""
4339
 
4340
+ #: classes/models/FrmSettings.php:107
4341
  msgid "This field cannot be blank."
4342
  msgstr ""
4343
 
4344
+ #: classes/models/FrmSettings.php:108
4345
  msgid "This value must be unique."
4346
  msgstr ""
4347
 
4348
+ #: classes/models/FrmSettings.php:109
4349
  msgid "There was a problem with your submission. Errors are marked below."
4350
  msgstr ""
4351
 
4352
+ #: classes/models/FrmSettings.php:110
4353
  msgid "We're sorry. It looks like you've already submitted that."
4354
  msgstr ""
4355
 
4356
+ #: classes/models/FrmSettings.php:111
4357
  #: classes/views/frm-forms/form.php:48
4358
  #: classes/views/styles/_sample_form.php:79
4359
  msgid "Submit"
4360
  msgstr ""
4361
 
4362
+ #: classes/models/FrmSettings.php:112
4363
  msgid "You do not have permission to view this form."
4364
  msgstr ""
4365
 
4366
+ #: classes/models/FrmSettings.php:113
4367
  msgid "You do not have permission to do that"
4368
  msgstr ""
4369
 
4370
+ #: classes/models/FrmSettings.php:206
4371
+ msgid "The CAPTCHA was not entered correctly"
4372
  msgstr ""
4373
 
4374
  #: classes/models/FrmSolution.php:70
4646
  #: classes/views/frm-fields/back-end/inline-modal.php:7
4647
  #: classes/views/frm-fields/back-end/inline-modal.php:8
4648
  #: classes/views/shared/admin-header.php:11
4649
+ #: js/formidable_admin.js:8389
4650
  msgid "Close"
4651
  msgstr ""
4652
 
4662
  msgid "Update Options"
4663
  msgstr ""
4664
 
 
 
 
 
 
4665
  #: classes/views/frm-fields/back-end/field-hidden.php:8
4666
  msgid "Note: This field will not show in the form. Enter the value to be hidden."
4667
  msgstr ""
4679
  msgstr ""
4680
 
4681
  #: classes/views/frm-fields/back-end/html-content.php:16
4682
+ #: classes/views/frm-fields/back-end/settings.php:100
4683
+ #: classes/views/frm-fields/back-end/settings.php:168
4684
  #: classes/views/frm-fields/back-end/value-format.php:16
4685
  msgid "Toggle Options"
4686
  msgstr ""
4782
  msgid "%s Field"
4783
  msgstr ""
4784
 
4785
+ #: classes/views/frm-fields/back-end/settings.php:29
4786
+ msgid "Setup a captcha"
4787
+ msgstr ""
4788
+
4789
+ #. translators: %1$s: Link HTML, %2$s: End link
4790
+ #: classes/views/frm-fields/back-end/settings.php:33
4791
+ msgid "Your captcha will not appear on your form until you %1$sset up%2$s the Site and Secret Keys"
4792
+ msgstr ""
4793
+
4794
+ #: classes/views/frm-fields/back-end/settings.php:54
4795
+ #: classes/views/frm-fields/back-end/settings.php:365
4796
  msgid "Required"
4797
  msgstr ""
4798
 
4799
+ #: classes/views/frm-fields/back-end/settings.php:61
4800
  msgid "Unique: Do not allow the same response multiple times. For example, if one user enters 'Joe', then no one else will be allowed to enter the same name."
4801
  msgstr ""
4802
 
4803
+ #: classes/views/frm-fields/back-end/settings.php:62
4804
+ #: classes/views/frm-fields/back-end/settings.php:385
4805
  msgid "Unique"
4806
  msgstr ""
4807
 
4808
+ #: classes/views/frm-fields/back-end/settings.php:69
4809
  msgid "Read Only: Show this field but do not allow the field value to be edited from the front-end."
4810
  msgstr ""
4811
 
4812
+ #: classes/views/frm-fields/back-end/settings.php:71
4813
  msgid "Read Only"
4814
  msgstr ""
4815
 
4816
+ #: classes/views/frm-fields/back-end/settings.php:91
4817
  msgid "Add a CSS class to the field container. Use our predefined classes to align multiple fields in single row."
4818
  msgstr ""
4819
 
4820
+ #: classes/views/frm-fields/back-end/settings.php:92
4821
  msgid "CSS Layout Classes"
4822
  msgstr ""
4823
 
4824
+ #: classes/views/frm-fields/back-end/settings.php:133
4825
  #: classes/views/shared/mb_adv_info.php:22
4826
  msgid "Advanced"
4827
  msgstr ""
4828
 
4829
+ #: classes/views/frm-fields/back-end/settings.php:239
4830
  msgid "If this URL points to an image, show to image on the entries listing page."
4831
  msgstr ""
4832
 
4833
+ #: classes/views/frm-fields/back-end/settings.php:246
4834
  msgid "Set the size of the captcha field. The compact option is best if your form is in a small area."
4835
  msgstr ""
4836
 
4837
+ #: classes/views/frm-fields/back-end/settings.php:247
4838
  msgid "ReCaptcha Type"
4839
  msgstr ""
4840
 
4841
+ #: classes/views/frm-fields/back-end/settings.php:251
4842
  msgid "Normal"
4843
  msgstr ""
4844
 
4845
+ #: classes/views/frm-fields/back-end/settings.php:254
4846
  msgid "Compact"
4847
  msgstr ""
4848
 
4849
+ #: classes/views/frm-fields/back-end/settings.php:260
4850
  msgid "reCAPTCHA Color"
4851
  msgstr ""
4852
 
4853
+ #: classes/views/frm-fields/back-end/settings.php:264
4854
  msgid "Light"
4855
  msgstr ""
4856
 
4857
+ #: classes/views/frm-fields/back-end/settings.php:267
4858
  msgid "Dark"
4859
  msgstr ""
4860
 
4861
+ #: classes/views/frm-fields/back-end/settings.php:284
4862
  msgid "Required Field Indicator"
4863
  msgstr ""
4864
 
4865
+ #: classes/views/frm-fields/back-end/settings.php:310
4866
  msgid "Center"
4867
  msgstr ""
4868
 
4869
+ #: classes/views/frm-fields/back-end/settings.php:318
4870
  msgid "The field key can be used as an alternative to the field ID in many cases."
4871
  msgstr ""
4872
 
4873
+ #: classes/views/frm-fields/back-end/settings.php:327
4874
  msgid "Field Type"
4875
  msgstr ""
4876
 
4877
+ #: classes/views/frm-fields/back-end/settings.php:357
4878
  msgid "Validation Messages"
4879
  msgstr ""
4880
 
4881
+ #: classes/views/frm-fields/back-end/settings.php:374
4882
  msgid "Invalid Format"
4883
  msgstr ""
4884
 
4885
+ #: classes/views/frm-fields/back-end/settings.php:396
4886
  msgid "Confirmation"
4887
  msgstr ""
4888
 
4951
 
4952
  #: classes/views/frm-form-actions/form_action.php:21
4953
  #: classes/views/styles/_upsell-multiple-styles.php:15
4954
+ #: js/formidable_admin.js:2310
4955
  msgid "Duplicate"
4956
  msgstr ""
4957
 
5080
  msgstr ""
5081
 
5082
  #: classes/views/frm-forms/add_field.php:29
5083
+ #: js/formidable_admin.js:1414
5084
+ #: js/formidable_admin.js:1417
5085
+ #: js/formidable_admin.js:2248
5086
  msgid "More Options"
5087
  msgstr ""
5088
 
5599
  msgid "Embed"
5600
  msgstr ""
5601
 
5602
+ #: classes/views/frm-settings/captcha/captcha.php:8
5603
+ msgid "Captcha will help you to avoid gathering automatically generated responses"
5604
+ msgstr ""
5605
+
5606
+ #: classes/views/frm-settings/captcha/captcha.php:15
5607
+ msgid "Select captcha type"
5608
+ msgstr ""
5609
+
5610
+ #: classes/views/frm-settings/captcha/captcha.php:41
5611
+ msgid "Changing the captcha type here will replace it in all any forms where it is used."
5612
+ msgstr ""
5613
+
5614
+ #: classes/views/frm-settings/captcha/captcha.php:45
5615
+ msgid "reCAPTCHA Settings"
5616
+ msgstr ""
5617
+
5618
+ #: classes/views/frm-settings/captcha/captcha.php:53
5619
+ msgid "reCAPTCHA Type"
5620
+ msgstr ""
5621
+
5622
+ #: classes/views/frm-settings/captcha/captcha.php:57
5623
+ msgid "Checkbox (V2)"
5624
+ msgstr ""
5625
+
5626
+ #: classes/views/frm-settings/captcha/captcha.php:60
5627
+ msgid "Invisible"
5628
+ msgstr ""
5629
+
5630
+ #: classes/views/frm-settings/captcha/captcha.php:63
5631
+ msgid "v3"
5632
+ msgstr ""
5633
+
5634
+ #: classes/views/frm-settings/captcha/captcha.php:70
5635
+ msgid "reCAPTCHA Language"
5636
+ msgstr ""
5637
+
5638
+ #: classes/views/frm-settings/captcha/captcha.php:74
5639
+ msgid "Browser Default"
5640
+ msgstr ""
5641
+
5642
+ #: classes/views/frm-settings/captcha/captcha.php:86
5643
+ msgid "reCAPTCHA Threshold"
5644
+ msgstr ""
5645
+
5646
+ #: classes/views/frm-settings/captcha/captcha.php:87
5647
+ msgid "A score of 0 is likely to be a bot and a score of 1 is likely not a bot. Setting a lower threshold will allow more bots, but it will also stop fewer real users."
5648
+ msgstr ""
5649
+
5650
+ #: classes/views/frm-settings/captcha/captcha.php:98
5651
+ msgid "Allow multiple reCAPTCHAs to be used on a single page"
5652
+ msgstr ""
5653
+
5654
+ #: classes/views/frm-settings/captcha/captcha.php:104
5655
+ msgid "hCaptcha Settings"
5656
+ msgstr ""
5657
+
5658
+ #. translators: %1$s: Captcha name, %2$s: Start link HTML, %3$s: End link HTML
5659
+ #: classes/views/frm-settings/captcha/captcha_keys.php:19
5660
+ msgid "%1$s requires a Site and Private API key. Sign up for a %2$sfree %1$s key%3$s."
5661
+ msgstr ""
5662
+
5663
+ #: classes/views/frm-settings/captcha/captcha_keys.php:29
5664
+ msgid "reCAPTCHA is a free, accessible CAPTCHA service that helps to digitize books while blocking spam on your blog. reCAPTCHA asks commenters to retype two words scanned from a book to prove that they are a human. This verifies that they are not a spambot."
5665
+ msgstr ""
5666
+
5667
+ #: classes/views/frm-settings/captcha/captcha_keys.php:32
5668
+ msgid "hCaptcha is an anti-bot solution that protects user privacy and rewards websites. It is a privacy-focused drop-in replacement for reCAPTCHA."
5669
+ msgstr ""
5670
+
5671
+ #: classes/views/frm-settings/captcha/captcha_keys.php:37
5672
+ msgid "Site Key"
5673
+ msgstr ""
5674
+
5675
+ #: classes/views/frm-settings/captcha/captcha_keys.php:44
5676
+ msgid "Secret Key"
5677
+ msgstr ""
5678
+
5679
  #: classes/views/frm-settings/general.php:7
5680
  msgid "License Key"
5681
  msgstr ""
5809
  msgid "Select users that are allowed access to Formidable. Without access to View Forms, users will be unable to see the Formidable menu."
5810
  msgstr ""
5811
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5812
  #: classes/views/frm-settings/settings_cta.php:14
5813
  msgid "Get Formidable Forms Pro and Unlock all the Powerful Features"
5814
  msgstr ""
6643
  msgid "Successfully copied embed example"
6644
  msgstr ""
6645
 
6646
+ #: js/formidable_admin.js:1375
6647
  msgid "Set Row Layout"
6648
  msgstr ""
6649
 
6650
+ #: js/formidable_admin.js:1382
6651
  msgid "Move Field Group"
6652
  msgstr ""
6653
 
6654
+ #: js/formidable_admin.js:2276
6655
  msgid "Field settings"
6656
  msgstr ""
6657
 
6658
+ #: js/formidable_admin.js:2304
6659
  msgid "Delete Group"
6660
  msgstr ""
6661
 
6662
+ #: js/formidable_admin.js:2310
6663
  msgid "Duplicate Group"
6664
  msgstr ""
6665
 
6666
+ #: js/formidable_admin.js:3683
6667
  msgid "Custom layout"
6668
  msgstr ""
6669
 
6670
+ #: js/formidable_admin.js:3706
6671
  msgid "Break into rows"
6672
  msgstr ""
6673
 
6674
+ #: js/formidable_admin.js:3716
6675
  msgid "Row Layout"
6676
  msgstr ""
6677
 
6678
+ #: js/formidable_admin.js:3970
6679
  msgid "Enter number of columns for each field"
6680
  msgstr ""
6681
 
6682
+ #: js/formidable_admin.js:3974
6683
  msgid "Layouts are based on a 12-column grid system"
6684
  msgstr ""
6685
 
6686
+ #: js/formidable_admin.js:3990
6687
  msgid "Save"
6688
  msgstr ""
6689
 
6690
+ #: js/formidable_admin.js:4316
6691
  msgid "Merge into row"
6692
  msgstr ""
6693
 
6694
  #. translators: %1$s: Number of fields that are selected to be deleted.
6695
+ #: js/formidable_admin.js:4404
6696
  msgid "Are you sure you want to delete these %1$s selected fields?"
6697
  msgstr ""
6698
 
6699
+ #: js/formidable_admin.js:5527
6700
  msgid "Duplicate option value \"%s\" detected"
6701
  msgstr ""
6702
 
6703
+ #: js/formidable_admin.js:7630
6704
  msgid "Ready Made Solution"
6705
  msgstr ""
6706
 
6707
+ #: js/formidable_admin.js:7633
6708
  msgid "Check all applications"
6709
  msgstr ""
6710
 
6711
+ #: js/formidable_admin.js:8374
6712
  msgid "Save and Reload"
6713
  msgstr ""
6714
 
6715
+ #: js/formidable_admin.js:9004
6716
  msgid "Unable to install template"
6717
  msgstr ""
readme.txt CHANGED
@@ -3,9 +3,9 @@ Plugin Name: Formidable Forms - Contact Form, Survey & Quiz Form Builder for Wor
3
  Contributors: formidableforms, sswells, srwells
4
  Tags: forms, form builder, survey, free, custom form, contact form, 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, drag and drop, mailchimp form
5
  Requires at least: 5.2
6
- Tested up to: 6.1
7
  Requires PHP: 5.6
8
- Stable tag: 5.5.3.1
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag and drop form builder for surveys, quizzes, and more.
11
 
@@ -53,7 +53,7 @@ When a user submits a web form, it's stored in your WordPress database so you wo
53
 
54
  Even though the entries are saved, it's still a **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.
55
 
56
- 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.
57
 
58
  You can also configure unlimited email notifications and autoresponders triggered by submissions.
59
 
@@ -138,7 +138,7 @@ You will not find any other WordPress form plugin offering a front-end editing s
138
 
139
  == All the Advanced Fields & Features You Need to Grow Your Business ==
140
 
141
- 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.
142
 
143
  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.
144
 
@@ -179,6 +179,7 @@ Since Formidable is not your average form plugin, this feature list is going to
179
  * <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.
180
  * <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.
181
  * 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.
 
182
  * Logged-in users can <a href="https://formidableforms.com/features/save-and-continue-partial-submissions/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">save and continue partial submissions</a>. Whether it's a basic email form or a long multi-paged registration form, users can save progress and pick up where they left off.
183
  * <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).
184
  * Permissions. Lock visibility and access based on user role.
@@ -200,7 +201,7 @@ Since Formidable is not your average form plugin, this feature list is going to
200
  * <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.
201
  * <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.
202
  * <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.
203
- * <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.
204
 
205
  == Payment Forms, APIs, and Marketing Integrations ==
206
  In addition to all the features listed above, add power ups with these integrations.
@@ -209,7 +210,7 @@ In addition to all the features listed above, add power ups with these integrati
209
  * <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.
210
  * <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.
211
  * <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.
212
- * <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.
213
  * Constant Contact. Create leads automatically with a newsletter signup form.
214
  * AWeber Forms. Subscribe users to an AWeber mailing list when a signup form is submitted.
215
  * <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.
@@ -221,6 +222,7 @@ In addition to all the features listed above, add power ups with these integrati
221
  * 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.
222
  * WPML Multilingual Forms. Translate your WP forms into multiple languages using our integrated multilingual forms.
223
  * Polylang. Get the form creator with Polylang bilingual or multilingual contact forms.
 
224
  * <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.
225
  * <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.
226
  * <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.
@@ -254,21 +256,21 @@ Formidable is part of the <a href="https://www.wpbeginner.com/">WPBeginner</a> f
254
 
255
  == Frequently Asked Questions ==
256
  = How do I get started with the best forms for WordPress? =
257
- 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.
258
 
259
  Go to the Formidable page and click "add new". Choose the Contact Us form template or another free template and click "Create".
260
 
261
  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.
262
 
263
  = Why isn't WordPress sending emails? =
264
- When you do not receive emails from your email form, try the following steps:
265
 
266
  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.
267
- 2. Are you receiving other emails from your site (ie comment notifications, forgot password...)? If not, notification emails will not work either.
268
  3. Check your SPAM box.
269
- 4. Try a different email address in your settings.
270
  5. Install WP Mail SMPT or another similar emailing alternative and configure the SMTP settings.
271
- 6. If these steps don't fix the problem and other WP emails are not going out, please reach out to your web host.
272
 
273
  <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.
274
 
@@ -354,7 +356,7 @@ Our online form maker comes with all the powerful fields that you need to create
354
  * Hidden fields
355
  * User ID
356
  * HTML block - Great for custom HTML
357
- * Google reCAPTCHA (invisible V2 or checkbox V2)
358
 
359
  Here is a list of our advanced premium fields that will come in handy:
360
 
@@ -400,7 +402,7 @@ Yes! We know that marketing is the key to growing your business. That's why Form
400
 
401
  Here is a list of our popular marketing integrations:
402
 
403
- * MailChimp
404
  * AWeber
405
  * Constant Contact
406
  * GetResponse
@@ -410,9 +412,8 @@ Here is a list of our popular marketing integrations:
410
  * HubSpot CRM
411
  * Campaign Monitor
412
 
413
- Using our Zapier integration, you can easily connect your website with over 1000+ marketing apps including:
414
 
415
- * Google Sheets
416
  * SendInBlue
417
  * Zoho CRM
418
  * Zoho Mail
@@ -440,6 +441,16 @@ Using our Zapier integration, you can easily connect your website with over 1000
440
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
441
 
442
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
443
  = 5.5.3 =
444
  * New: HTML emails using wpautop will now also convert line breaks into <br /> tags.
445
  * New: Improved support for importing large XML files. Previously a file over 200MB would trigger a "parser error : internal error: Huge input lookup" error.
@@ -471,7 +482,7 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
471
  * Fix: Prevent a fatal error that was preventing add ons from installing via API.
472
  * Fix: Updated radio button styling on the Edit Entry page to fix visual issues at mobile screen sizes.
473
  * Embed examples no longer include title=true and description=true.
474
- * License types will no longer appear as application template category options.
475
  * Plain text email actions will no longer use a rich text editor.
476
 
477
  = 5.5.1 =
@@ -498,7 +509,7 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
498
  * New: Added support for several new language options for datepicker localization and for reCAPTCHA.
499
  * New: Updated deprecated code in Elementor widget for better compatibility with new versions of Elementor.
500
  * Fix: Actions that trigger when an entry is deleted were not properly working when conditional logic would check item meta values.
501
- * Fix: An imported application page's parent page ID was not updating to match the new imported parent page ID.
502
  * Fix: Clicking save while a field was still being inserted would cause an error pop up to appear with a missing message.
503
  * Removed a restriction that was preventing a second summary field from being added after adding the first.
504
 
@@ -521,7 +532,7 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
521
  = 5.4.2 =
522
  * 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.
523
  * New: A redirect will now happen after duplication to avoid issues with multiple duplicate actions on page refresh.
524
- * New: Added additional styling for repeaters in tables shown in email actions to show indentation for the repeated data.
525
  * New: Added a Save and Reload button that appears after installing a required add on when clicking a field with missing requirements.
526
  * 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.
527
  * 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.
@@ -623,7 +634,7 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
623
  * 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.
624
  * New: Updated styling for radio buttons and checkboxes, with improvements to appearance on mobile devices as well.
625
  * 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.
626
- * 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.
627
  * 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.
628
  * New: Allow more colors in the styler to be transparent including background colors and border colors for active, hovered, and disabled inputs.
629
  * Fix: Selected radio buttons were appearing incorrectly when using the Twenty Twenty One theme in Chrome or Safari.
@@ -707,12 +718,12 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
707
 
708
  = 4.11.04 =
709
  * New: The first field with an error will now automatically get focus when an entry is submitted for better accessibility and improved user experience.
710
- * 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.
711
  * Fix: When switching between the dropdown and text lookup types, the watch lookup option did not properly toggle back on.
712
  * Fix: The autocomplete page dropdown was not consistent with other styles.
713
 
714
  = 4.11.03 =
715
- * New: Name fields now work in the To and From settings for email actions.
716
  * Fix: Images were not properly loading when styles were loading via an AJAX request.
717
  * Fix: Zeros were not appearing in the entries list for repeaters.
718
 
@@ -812,7 +823,7 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
812
  * Updates to the default styling.
813
  * New: Added an inbox as a centralized place for notices and communication.
814
  * New: Added frm_color_block and frm_total_big classes for more beautiful forms.
815
- * Help prevent common email issues by showing a warning in the email settings when the from and to email addresses are the same.
816
  * Fix: Forms edited after export and reimported were losing the required indicator in some cases.
817
 
818
  <a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
3
  Contributors: formidableforms, sswells, srwells
4
  Tags: forms, form builder, survey, free, custom form, contact form, 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, drag and drop, mailchimp form
5
  Requires at least: 5.2
6
+ Tested up to: 6.1.1
7
  Requires PHP: 5.6
8
+ Stable tag: 5.5.4
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag and drop form builder for surveys, quizzes, and more.
11
 
53
 
54
  Even though the entries are saved, it's still a **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.
55
 
56
+ 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.
57
 
58
  You can also configure unlimited email notifications and autoresponders triggered by submissions.
59
 
138
 
139
  == All the Advanced Fields & Features You Need to Grow Your Business ==
140
 
141
+ 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 flow, 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.
142
 
143
  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.
144
 
179
  * <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.
180
  * <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.
181
  * 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.
182
+ * Sync custom field values with ACF forms (Advanced Custom Fields). Now you can create ACF front-end forms to make managing your application faster.
183
  * Logged-in users can <a href="https://formidableforms.com/features/save-and-continue-partial-submissions/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">save and continue partial submissions</a>. Whether it's a basic email form or a long multi-paged registration form, users can save progress and pick up where they left off.
184
  * <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).
185
  * Permissions. Lock visibility and access based on user role.
201
  * <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.
202
  * <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.
203
  * <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.
204
+ * World class support. 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.
205
 
206
  == Payment Forms, APIs, and Marketing Integrations ==
207
  In addition to all the features listed above, add power ups with these integrations.
210
  * <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.
211
  * <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.
212
  * <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.
213
+ * <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.
214
  * Constant Contact. Create leads automatically with a newsletter signup form.
215
  * AWeber Forms. Subscribe users to an AWeber mailing list when a signup form is submitted.
216
  * <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.
222
  * 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.
223
  * WPML Multilingual Forms. Translate your WP forms into multiple languages using our integrated multilingual forms.
224
  * Polylang. Get the form creator with Polylang bilingual or multilingual contact forms.
225
+ * Google Sheets. Open up a world of options and save money with a direct integration.
226
  * <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.
227
  * <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.
228
  * <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.
256
 
257
  == Frequently Asked Questions ==
258
  = How do I get started with the best forms for WordPress? =
259
+ The fastest way to build a form is to use the example we built for you. After you activate Formidable, insert [formidable id=contact-form] on the WordPress page of your choice.
260
 
261
  Go to the Formidable page and click "add new". Choose the Contact Us form template or another free template and click "Create".
262
 
263
  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.
264
 
265
  = Why isn't WordPress sending emails? =
266
+ When you do not receive emails, try the following steps:
267
 
268
  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.
269
+ 2. Are you receiving other emails from your site (ie comment notifications, forgot password...)? If not, notifications will not work either.
270
  3. Check your SPAM box.
271
+ 4. Try a different address in your settings.
272
  5. Install WP Mail SMPT or another similar emailing alternative and configure the SMTP settings.
273
+ 6. If these steps don't fix the problem and other WP signup emails are not going out, please reach out to your web host.
274
 
275
  <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.
276
 
356
  * Hidden fields
357
  * User ID
358
  * HTML block - Great for custom HTML
359
+ * Google reCAPTCHA (invisible V2 or checkbox V2) or hCaptcha
360
 
361
  Here is a list of our advanced premium fields that will come in handy:
362
 
402
 
403
  Here is a list of our popular marketing integrations:
404
 
405
+ * Mailchimp
406
  * AWeber
407
  * Constant Contact
408
  * GetResponse
412
  * HubSpot CRM
413
  * Campaign Monitor
414
 
415
+ Using our Zapier integration, you can easily connect your website with over 5,000+ marketing apps including:
416
 
 
417
  * SendInBlue
418
  * Zoho CRM
419
  * Zoho Mail
441
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
442
 
443
  == Changelog ==
444
+ = 5.5.4 =
445
+ * New: Added support for hCaptcha. Now in Global Settings, the reCAPTCHA tab has been changed to a CAPTCHA tab with a new CAPTCHA type setting so you can choose between using reCAPTCHA or hCaptcha.
446
+ * Fix: Avoid a fatal error if the hidden columns setting is in an unexpected format on the form and entry list pages. This may happen because of invalid option data being set or a conflict with another plugin or custom code.
447
+ * Fix: Long field names on the reports tab would force the table to horizontally scroll. A long field name will now break into multiple lines instead.
448
+ * Fix: The frm_form_object filter wouldn't get applied to a cached form result.
449
+ * Fix: Prevent an undefined function get_editable_roles fatal error that triggers when trying to connect an account.
450
+ * Fix: An incorrect section comparison was causing fields to keep old section data after being moved somewhere else. This would result in unexpected data exports and other side effects.
451
+ * Fix: A "row is undefined" error would prevent merging multiple field groups together after the layout option was clicked.
452
+ * Updated message styling on admin pages.
453
+
454
  = 5.5.3 =
455
  * New: HTML emails using wpautop will now also convert line breaks into <br /> tags.
456
  * New: Improved support for importing large XML files. Previously a file over 200MB would trigger a "parser error : internal error: Huge input lookup" error.
482
  * Fix: Prevent a fatal error that was preventing add ons from installing via API.
483
  * Fix: Updated radio button styling on the Edit Entry page to fix visual issues at mobile screen sizes.
484
  * Embed examples no longer include title=true and description=true.
485
+ * License types will no longer appear as template categories.
486
  * Plain text email actions will no longer use a rich text editor.
487
 
488
  = 5.5.1 =
509
  * New: Added support for several new language options for datepicker localization and for reCAPTCHA.
510
  * New: Updated deprecated code in Elementor widget for better compatibility with new versions of Elementor.
511
  * Fix: Actions that trigger when an entry is deleted were not properly working when conditional logic would check item meta values.
512
+ * Fix: An imported app page's parent page ID was not updating to match the new imported parent page ID.
513
  * Fix: Clicking save while a field was still being inserted would cause an error pop up to appear with a missing message.
514
  * Removed a restriction that was preventing a second summary field from being added after adding the first.
515
 
532
  = 5.4.2 =
533
  * 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.
534
  * New: A redirect will now happen after duplication to avoid issues with multiple duplicate actions on page refresh.
535
+ * New: Added additional styling for repeaters in tables shown in actions to show indentation for the repeated data.
536
  * New: Added a Save and Reload button that appears after installing a required add on when clicking a field with missing requirements.
537
  * 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.
538
  * 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.
634
  * 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.
635
  * New: Updated styling for radio buttons and checkboxes, with improvements to appearance on mobile devices as well.
636
  * 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.
637
+ * 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 action ID.
638
  * 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.
639
  * New: Allow more colors in the styler to be transparent including background colors and border colors for active, hovered, and disabled inputs.
640
  * Fix: Selected radio buttons were appearing incorrectly when using the Twenty Twenty One theme in Chrome or Safari.
718
 
719
  = 4.11.04 =
720
  * New: The first field with an error will now automatically get focus when an entry is submitted for better accessibility and improved user experience.
721
+ * Fix: The reply to value would default to the admin email instead of the from setting when a shortcode with an empty result was used.
722
  * Fix: When switching between the dropdown and text lookup types, the watch lookup option did not properly toggle back on.
723
  * Fix: The autocomplete page dropdown was not consistent with other styles.
724
 
725
  = 4.11.03 =
726
+ * New: Name fields now work in the To and From settings.
727
  * Fix: Images were not properly loading when styles were loading via an AJAX request.
728
  * Fix: Zeros were not appearing in the entries list for repeaters.
729
 
823
  * Updates to the default styling.
824
  * New: Added an inbox as a centralized place for notices and communication.
825
  * New: Added frm_color_block and frm_total_big classes for more beautiful forms.
826
+ * Help prevent common email issues by showing a warning in the settings when the from and to email addresses are the same.
827
  * Fix: Forms edited after export and reimported were losing the required indicator in some cases.
828
 
829
  <a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>