Formidable Forms – Form Builder for WordPress - Version 4.04.03

Version Description

  • Add option to Import forms on the listing page and in the new form process.
  • Improve performance on the settings page when default values are used in fields.
  • Update the base migrator class for more flexibility.
  • Fix: Prevent a few PHP warnings.
Download this release

Release Info

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

Code changes from version 4.04.02 to 4.04.03

classes/controllers/FrmAddonsController.php CHANGED
@@ -16,8 +16,8 @@ class FrmAddonsController {
16
  if ( ! FrmAppHelper::pro_is_installed() ) {
17
  add_submenu_page(
18
  'formidable',
19
- 'Formidable | ' . __( 'Upgrade to Pro', 'formidable' ),
20
- '<span style="color:#fe5a1d">' . __( 'Upgrade to Pro', 'formidable' ) . '</span>',
21
  'frm_view_forms',
22
  'formidable-pro-upgrade',
23
  'FrmAddonsController::upgrade_to_pro'
@@ -85,7 +85,7 @@ class FrmAddonsController {
85
  private static function fallback_plugin_list() {
86
  return array(
87
  'formidable-pro' => array(
88
- 'title' => 'Formidable Pro',
89
  'link' => 'pricing/',
90
  'docs' => '',
91
  'excerpt' => 'Enhance your basic Formidable forms with a plethora of Pro field types and features. Create advanced forms and data-driven applications in minutes.',
16
  if ( ! FrmAppHelper::pro_is_installed() ) {
17
  add_submenu_page(
18
  'formidable',
19
+ 'Formidable | ' . __( 'Upgrade', 'formidable' ),
20
+ '<span style="color:#fe5a1d">' . __( 'Upgrade', 'formidable' ) . '</span>',
21
  'frm_view_forms',
22
  'formidable-pro-upgrade',
23
  'FrmAddonsController::upgrade_to_pro'
85
  private static function fallback_plugin_list() {
86
  return array(
87
  'formidable-pro' => array(
88
+ 'title' => 'Formidable Forms',
89
  'link' => 'pricing/',
90
  'docs' => '',
91
  'excerpt' => 'Enhance your basic Formidable forms with a plethora of Pro field types and features. Create advanced forms and data-driven applications in minutes.',
classes/controllers/FrmFieldsController.php CHANGED
@@ -584,7 +584,7 @@ class FrmFieldsController {
584
  $is_placeholder_field = FrmFieldsHelper::is_placeholder_field_type( $field['type'] );
585
  $is_combo_field = in_array( $field['type'], array( 'address', 'credit_card' ) );
586
 
587
- $placeholder = $field['placeholder'];
588
  if ( empty( $placeholder ) && $is_placeholder_field && ! $is_combo_field ) {
589
  $placeholder = self::get_default_value_from_name( $field );
590
  }
584
  $is_placeholder_field = FrmFieldsHelper::is_placeholder_field_type( $field['type'] );
585
  $is_combo_field = in_array( $field['type'], array( 'address', 'credit_card' ) );
586
 
587
+ $placeholder = isset( $field['placeholder'] ) ? $field['placeholder'] : '';
588
  if ( empty( $placeholder ) && $is_placeholder_field && ! $is_combo_field ) {
589
  $placeholder = self::get_default_value_from_name( $field );
590
  }
classes/helpers/FrmAppHelper.php CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
11
  /**
12
  * @since 2.0
13
  */
14
- public static $plug_version = '4.04.02';
15
 
16
  /**
17
  * @since 1.07.02
@@ -886,6 +886,9 @@ class FrmAppHelper {
886
  if ( ! isset( $atts['close'] ) || empty( $atts['close'] ) ) {
887
  $atts['close'] = admin_url( 'admin.php?page=formidable' );
888
  }
 
 
 
889
 
890
  include( self::plugin_path() . '/classes/views/shared/admin-header.php' );
891
  }
@@ -1560,7 +1563,10 @@ class FrmAppHelper {
1560
  private static function prepare_field_arrays( $fields, $record, array &$values, $args ) {
1561
  if ( ! empty( $fields ) ) {
1562
  foreach ( (array) $fields as $field ) {
1563
- $field->default_value = apply_filters( 'frm_get_default_value', $field->default_value, $field, true );
 
 
 
1564
  $args['parent_form_id'] = isset( $args['parent_form_id'] ) ? $args['parent_form_id'] : $field->form_id;
1565
  self::fill_field_defaults( $field, $record, $values, $args );
1566
  }
11
  /**
12
  * @since 2.0
13
  */
14
+ public static $plug_version = '4.04.03';
15
 
16
  /**
17
  * @since 1.07.02
886
  if ( ! isset( $atts['close'] ) || empty( $atts['close'] ) ) {
887
  $atts['close'] = admin_url( 'admin.php?page=formidable' );
888
  }
889
+ if ( ! isset( $atts['import_link'] ) ) {
890
+ $atts['import_link'] = false;
891
+ }
892
 
893
  include( self::plugin_path() . '/classes/views/shared/admin-header.php' );
894
  }
1563
  private static function prepare_field_arrays( $fields, $record, array &$values, $args ) {
1564
  if ( ! empty( $fields ) ) {
1565
  foreach ( (array) $fields as $field ) {
1566
+ if ( ! self::is_admin_page() ) {
1567
+ // Don't prep default values on the form settings page.
1568
+ $field->default_value = apply_filters( 'frm_get_default_value', $field->default_value, $field, true );
1569
+ }
1570
  $args['parent_form_id'] = isset( $args['parent_form_id'] ) ? $args['parent_form_id'] : $field->form_id;
1571
  self::fill_field_defaults( $field, $record, $values, $args );
1572
  }
classes/helpers/FrmFieldsHelper.php CHANGED
@@ -1128,13 +1128,17 @@ class FrmFieldsHelper {
1128
  * @return array $other_args
1129
  */
1130
  public static function prepare_other_input( $args, &$other_opt, &$checked ) {
 
 
 
 
 
1131
  //Check if this is an "Other" option
1132
  if ( ! self::is_other_opt( $args['opt_key'] ) ) {
1133
- return;
1134
  }
1135
 
1136
  $other_opt = true;
1137
- $other_args = array();
1138
 
1139
  self::set_other_name( $args, $other_args );
1140
  self::set_other_value( $args, $other_args );
1128
  * @return array $other_args
1129
  */
1130
  public static function prepare_other_input( $args, &$other_opt, &$checked ) {
1131
+ $other_args = array(
1132
+ 'name' => '',
1133
+ 'value' => '',
1134
+ );
1135
+
1136
  //Check if this is an "Other" option
1137
  if ( ! self::is_other_opt( $args['opt_key'] ) ) {
1138
+ return $other_args;
1139
  }
1140
 
1141
  $other_opt = true;
 
1142
 
1143
  self::set_other_name( $args, $other_args );
1144
  self::set_other_value( $args, $other_args );
classes/models/FrmDb.php CHANGED
@@ -615,7 +615,9 @@ class FrmDb {
615
  */
616
  public static function save_json_post( $settings ) {
617
  global $wp_filter;
618
- $filters = $wp_filter['content_save_pre'];
 
 
619
 
620
  // Remove the balanceTags filter in case WordPress is trying to validate the XHTML
621
  remove_all_filters( 'content_save_pre' );
@@ -623,7 +625,9 @@ class FrmDb {
623
  $post = wp_insert_post( $settings );
624
 
625
  // add the content filters back for views or posts
626
- $wp_filter['content_save_pre'] = $filters;
 
 
627
 
628
  return $post;
629
  }
615
  */
616
  public static function save_json_post( $settings ) {
617
  global $wp_filter;
618
+ if ( isset( $wp_filter['content_save_pre'] ) ) {
619
+ $filters = $wp_filter['content_save_pre'];
620
+ }
621
 
622
  // Remove the balanceTags filter in case WordPress is trying to validate the XHTML
623
  remove_all_filters( 'content_save_pre' );
625
  $post = wp_insert_post( $settings );
626
 
627
  // add the content filters back for views or posts
628
+ if ( isset( $filters ) ) {
629
+ $wp_filter['content_save_pre'] = $filters;
630
+ }
631
 
632
  return $post;
633
  }
classes/models/FrmEntry.php CHANGED
@@ -292,7 +292,7 @@ class FrmEntry {
292
  public static function maybe_get_entry( &$entry ) {
293
  if ( $entry && is_numeric( $entry ) ) {
294
  $entry = self::getOne( $entry );
295
- } elseif ( empty( $entry ) ) {
296
  $entry = false;
297
  }
298
  }
292
  public static function maybe_get_entry( &$entry ) {
293
  if ( $entry && is_numeric( $entry ) ) {
294
  $entry = self::getOne( $entry );
295
+ } elseif ( empty( $entry ) || 'false' === $entry ) {
296
  $entry = false;
297
  }
298
  }
classes/models/FrmEntryValidate.php CHANGED
@@ -79,6 +79,11 @@ class FrmEntryValidate {
79
 
80
  self::maybe_clear_value_for_default_blank_setting( $posted_field, $value );
81
 
 
 
 
 
 
82
  if ( ! is_array( $value ) ) {
83
  $value = trim( $value );
84
  }
79
 
80
  self::maybe_clear_value_for_default_blank_setting( $posted_field, $value );
81
 
82
+ $should_trim = is_array( $value ) && count( $value ) == 1 && isset( $value[0] ) && $posted_field->type !== 'checkbox';
83
+ if ( $should_trim ) {
84
+ $value = reset( $value );
85
+ }
86
+
87
  if ( ! is_array( $value ) ) {
88
  $value = trim( $value );
89
  }
classes/models/FrmFormMigrator.php CHANGED
@@ -11,6 +11,10 @@ abstract class FrmFormMigrator {
11
  public $response = array();
12
  public $tracking = 'frm_forms_imported';
13
 
 
 
 
 
14
  /**
15
  * Define required properties.
16
  */
@@ -19,6 +23,10 @@ abstract class FrmFormMigrator {
19
  return;
20
  }
21
 
 
 
 
 
22
  $this->source_active = is_plugin_active( $this->path );
23
  if ( ! $this->source_active ) {
24
  // if source plugin is not installed, do nothing
@@ -34,27 +42,31 @@ abstract class FrmFormMigrator {
34
  }
35
 
36
  private function maybe_add_to_import_page() {
37
- $menu_name = sanitize_title( FrmAppHelper::get_menu_name() );
38
- add_action( $menu_name . '_page_formidable-import', array( $this, 'import_page' ), 1 );
39
  add_action( 'wp_ajax_frm_import_' . $this->slug, array( $this, 'import_forms' ) );
40
  }
41
 
42
  public function import_page() {
43
  ?>
44
  <div class="wrap">
 
 
45
  <div class="welcome-panel" id="welcome-panel">
46
- <h2><?php echo esc_html( $this->name ); ?> Importer</h2>
47
  <div class="welcome-panel-content" style="text-align:center;margin-bottom:10px;">
48
  <p class="about-description">
49
- Import forms and settings automatically from <?php echo esc_html( $this->name ); ?>. <br/>
50
  Select the forms to import.
51
  </p>
52
- <form id="frm_form_importer" method="post"
53
  action="<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>">
54
  <?php wp_nonce_field( 'nonce', 'frm_ajax' ); ?>
55
  <input type="hidden" name="slug" value="<?php echo esc_attr( $this->slug ); ?>" />
56
  <input type="hidden" name="action" value="frm_import_<?php echo esc_attr( $this->slug ); ?>" />
57
  <div style="margin:10px auto;max-width:400px;text-align:left;">
 
 
 
 
 
58
  <?php foreach ( $this->get_forms() as $form_id => $name ) { ?>
59
  <p>
60
  <label>
@@ -73,7 +85,7 @@ abstract class FrmFormMigrator {
73
  </div>
74
  <button type="submit" class="button button-primary button-hero">Start Import</button>
75
  </form>
76
- <div id="frm-importer-process" class="frm_hidden">
77
 
78
  <p class="process-count">
79
  <span class="frm-wait" aria-hidden="true"></span>
@@ -130,7 +142,10 @@ abstract class FrmFormMigrator {
130
 
131
  $source_form = $this->get_form( $source_id );
132
  $source_form_name = $this->get_form_name( $source_form );
133
- $source_fields = $this->get_form_fields( $source_id );
 
 
 
134
 
135
  // If form does not contain fields, bail.
136
  if ( empty( $source_fields ) ) {
@@ -149,7 +164,12 @@ abstract class FrmFormMigrator {
149
 
150
  $this->prepare_form( $source_form, $form );
151
 
152
- return $this->add_form( $form );
 
 
 
 
 
153
  }
154
 
155
  protected function prepare_new_form( $source_id, $source_form_name ) {
@@ -169,7 +189,9 @@ abstract class FrmFormMigrator {
169
 
170
  protected function prepare_fields( $fields, &$form ) {
171
  $field_order = 1;
 
172
  foreach ( $fields as $field ) {
 
173
 
174
  $label = $this->get_field_label( $field );
175
  $type = $this->get_field_type( $field );
@@ -185,15 +207,39 @@ abstract class FrmFormMigrator {
185
  continue;
186
  }
187
 
188
- $new_field = FrmFieldsHelper::setup_new_vars( $this->convert_field_type( $type ) );
 
 
189
  $new_field['name'] = $label;
190
  $new_field['field_order'] = $field_order;
191
  $new_field['original'] = $type;
192
 
193
  $this->prepare_field( $field, $new_field );
 
 
 
 
 
 
194
  $form['fields'][] = $new_field;
195
 
 
 
 
 
 
 
 
 
196
  $field_order ++;
 
 
 
 
 
 
 
 
197
  }
198
  }
199
 
@@ -201,59 +247,107 @@ abstract class FrmFormMigrator {
201
  // customize this function
202
  }
203
 
204
- protected function convert_field_type( $type ) {
205
- return $type;
 
 
 
 
 
206
  }
207
 
208
  /**
209
- * Add the new form to the database and return AJAX data.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
210
  *
211
- * @since 1.4.2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  *
213
  * @param array $form Form to import.
214
  * @param array $upgrade_omit No field alternative
215
  */
216
- private function add_form( $form, $upgrade_omit = array() ) {
217
 
218
  // Create empty form so we have an ID to work with.
219
- $form_id = FrmForm::create(
220
- array(
221
- 'name' => $form['name'],
222
- 'description' => $form['description'],
223
- 'options' => $form['options'],
224
- 'form_key' => $form['name'],
225
- 'status' => 'published',
226
- )
227
- );
228
 
229
  if ( empty( $form_id ) ) {
230
- return array(
231
- 'error' => true,
232
- 'name' => sanitize_text_field( $form['settings']['form_title'] ),
233
- 'msg' => esc_html__( 'There was an error while creating a new form.', 'formidable' ),
234
- );
235
  }
236
 
237
- foreach ( $form['fields'] as $key => $new_field ) {
238
- $new_field['form_id'] = $form_id;
239
- $form['fields'][ $key ]['id'] = FrmField::create( $new_field );
240
- }
241
 
242
- // create emails
243
- foreach ( $form['actions'] as $action ) {
244
- $action_control = FrmFormActionsController::get_form_actions( $action['type'] );
245
- unset( $action['type'] );
246
- $new_action = $action_control->prepare_new( $form_id );
247
- foreach ( $action as $key => $value ) {
248
- if ( $key === 'post_title' ) {
249
- $new_action->post_title = $value;
250
- } else {
251
- $new_action->post_content[ $key ] = $this->replace_smart_tags( $value, $form['fields'] );
252
- }
253
- }
254
-
255
- $action_control->save_settings( $new_action );
256
- }
257
 
258
  $this->track_import( $form['import_form_id'], $form_id );
259
 
@@ -266,6 +360,81 @@ abstract class FrmFormMigrator {
266
  );
267
  }
268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
  /**
270
  * After a form has been successfully imported we track it, so that in the
271
  * future we can alert users if they try to import a form that has already
@@ -274,7 +443,7 @@ abstract class FrmFormMigrator {
274
  * @param int $source_id Imported plugin form ID
275
  * @param int $new_form_id Formidable form ID
276
  */
277
- private function track_import( $source_id, $new_form_id ) {
278
 
279
  $imported = $this->get_tracked_import();
280
 
@@ -298,8 +467,14 @@ abstract class FrmFormMigrator {
298
  private function is_imported( $source_id ) {
299
  $imported = $this->get_tracked_import();
300
  $new_form_id = 0;
301
- if ( isset( $imported[ $this->slug ] ) && in_array( $source_id, $imported[ $this->slug ] ) ) {
302
- $new_form_id = array_search( $source_id, array_reverse( $imported[ $this->slug ], true ) );
 
 
 
 
 
 
303
  }
304
 
305
  return $new_form_id;
@@ -329,7 +504,7 @@ abstract class FrmFormMigrator {
329
  return array();
330
  }
331
 
332
- private function should_skip_field( $type ) {
333
  $skip_pro_fields = $this->skip_pro_fields();
334
 
335
  return ( ! FrmAppHelper::pro_is_installed() && in_array( $type, $skip_pro_fields, true ) );
@@ -370,7 +545,7 @@ abstract class FrmFormMigrator {
370
  }
371
 
372
  /**
373
- * @param object|array|int $source_form
374
  *
375
  * @return array
376
  */
@@ -379,20 +554,25 @@ abstract class FrmFormMigrator {
379
  }
380
 
381
  /**
382
- * @param object|array $field
383
  *
384
  * @return string
385
  */
386
  protected function get_field_type( $field ) {
387
- return is_array( $field ) ? $field['type'] : $field->type;
388
  }
389
 
390
  /**
391
- * @param object|array $field
392
  *
393
  * @return string
394
  */
395
  protected function get_field_label( $field ) {
 
 
 
 
 
396
  $type = $this->get_field_type( $field );
397
  $label = sprintf(
398
  /* translators: %1$s - field type */
11
  public $response = array();
12
  public $tracking = 'frm_forms_imported';
13
 
14
+ protected $fields_map = array();
15
+ protected $current_source_form = null;
16
+ protected $current_section = array();
17
+
18
  /**
19
  * Define required properties.
20
  */
23
  return;
24
  }
25
 
26
+ if ( ! function_exists( 'is_plugin_active' ) ) {
27
+ require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
28
+ }
29
+
30
  $this->source_active = is_plugin_active( $this->path );
31
  if ( ! $this->source_active ) {
32
  // if source plugin is not installed, do nothing
42
  }
43
 
44
  private function maybe_add_to_import_page() {
45
+ add_action( 'frm_import_settings', array( $this, 'import_page' ) );
 
46
  add_action( 'wp_ajax_frm_import_' . $this->slug, array( $this, 'import_forms' ) );
47
  }
48
 
49
  public function import_page() {
50
  ?>
51
  <div class="wrap">
52
+ <h2 class="frm-h2"><?php echo esc_html( $this->name ); ?> Importer</h2>
53
+ <p class="howto">Import forms and settings automatically from <?php echo esc_html( $this->name ); ?>.</p>
54
  <div class="welcome-panel" id="welcome-panel">
 
55
  <div class="welcome-panel-content" style="text-align:center;margin-bottom:10px;">
56
  <p class="about-description">
 
57
  Select the forms to import.
58
  </p>
59
+ <form class="frm_form_importer" method="post"
60
  action="<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>">
61
  <?php wp_nonce_field( 'nonce', 'frm_ajax' ); ?>
62
  <input type="hidden" name="slug" value="<?php echo esc_attr( $this->slug ); ?>" />
63
  <input type="hidden" name="action" value="frm_import_<?php echo esc_attr( $this->slug ); ?>" />
64
  <div style="margin:10px auto;max-width:400px;text-align:left;">
65
+ <?php
66
+ if ( empty( $this->get_forms() ) ) {
67
+ esc_html_e( 'No Forms Found.', 'formidable' );
68
+ }
69
+ ?>
70
  <?php foreach ( $this->get_forms() as $form_id => $name ) { ?>
71
  <p>
72
  <label>
85
  </div>
86
  <button type="submit" class="button button-primary button-hero">Start Import</button>
87
  </form>
88
+ <div id="frm-importer-process" class="frm-importer-process frm_hidden">
89
 
90
  <p class="process-count">
91
  <span class="frm-wait" aria-hidden="true"></span>
142
 
143
  $source_form = $this->get_form( $source_id );
144
  $source_form_name = $this->get_form_name( $source_form );
145
+ $source_fields = $this->get_form_fields( $source_form );
146
+ $this->maybe_add_end_fields( $source_fields );
147
+
148
+ $this->current_source_form = $source_form;
149
 
150
  // If form does not contain fields, bail.
151
  if ( empty( $source_fields ) ) {
164
 
165
  $this->prepare_form( $source_form, $form );
166
 
167
+ $response = $this->add_form( $form );
168
+
169
+ // reset
170
+ $this->current_source_form = null;
171
+
172
+ return $response;
173
  }
174
 
175
  protected function prepare_new_form( $source_id, $source_form_name ) {
189
 
190
  protected function prepare_fields( $fields, &$form ) {
191
  $field_order = 1;
192
+
193
  foreach ( $fields as $field ) {
194
+ $field = (array) $field;
195
 
196
  $label = $this->get_field_label( $field );
197
  $type = $this->get_field_type( $field );
207
  continue;
208
  }
209
 
210
+ $new_type = $this->convert_field_type( $type, $field );
211
+
212
+ $new_field = FrmFieldsHelper::setup_new_vars( $new_type );
213
  $new_field['name'] = $label;
214
  $new_field['field_order'] = $field_order;
215
  $new_field['original'] = $type;
216
 
217
  $this->prepare_field( $field, $new_field );
218
+
219
+ $in_section = ! empty( $this->current_section ) && ! in_array( $new_type, $this->fields_with_end() ) && $new_type !== 'break';
220
+ if ( $in_section ) {
221
+ $new_field['field_options']['in_section'] = $this->current_section['id'];
222
+ }
223
+
224
  $form['fields'][] = $new_field;
225
 
226
+ if ( in_array( $new_type, $this->fields_with_end() ) ) {
227
+ $this->current_section = $field;
228
+ } elseif ( $new_type === 'break' || $new_type === 'end_divider' ) {
229
+ $this->current_section = array();
230
+ }
231
+
232
+ // This may occassionally skip one level/order e.g. after adding a
233
+ // list field, as field_order would already be prepared to be used.
234
  $field_order ++;
235
+
236
+ if ( isset( $new_field['fields'] ) && is_array( $new_field['fields'] ) && ! empty( $new_field['fields'] ) ) {
237
+ // we have (inner) fields to merge
238
+
239
+ $form['fields'] = array_merge( $form['fields'], $new_field['fields'] );
240
+ // set the new field_order as it would have changed
241
+ $field_order = $new_field['current_order'];
242
+ }
243
  }
244
  }
245
 
247
  // customize this function
248
  }
249
 
250
+ /**
251
+ * Add any field types that will need an end section field.
252
+ *
253
+ * @since 4.04.03
254
+ */
255
+ protected function fields_with_end() {
256
+ return array( 'divider' );
257
  }
258
 
259
  /**
260
+ * @since 4.04.03
261
+ */
262
+ protected function maybe_add_end_fields( &$fields ) {
263
+ $with_end = $this->fields_with_end();
264
+ if ( empty( $with_end ) ) {
265
+ return;
266
+ }
267
+
268
+ $open = array();
269
+
270
+ $order = 0;
271
+ foreach ( $fields as $field ) {
272
+ $order ++;
273
+ $type = $this->get_field_type( $field );
274
+ $new_type = $this->convert_field_type( $type, $field );
275
+ if ( ! in_array( $new_type, $with_end ) && $new_type !== 'break' ) {
276
+ continue;
277
+ }
278
+
279
+ if ( ! empty( $open ) ) {
280
+ $this->insert_end_section( $fields, $order );
281
+ $open = array();
282
+ }
283
+
284
+ if ( in_array( $new_type, $with_end ) ) {
285
+ $open = $field;
286
+ }
287
+ }
288
+
289
+ if ( ! empty( $open ) ) {
290
+ $this->insert_end_section( $fields, $order );
291
+ }
292
+ }
293
+
294
+ /**
295
+ * @since 4.04.03
296
+ */
297
+ protected function insert_end_section( &$fields, &$order ) {
298
+ $sub = FrmFieldsHelper::setup_new_vars( 'end_divider' );
299
+ $sub['name'] = __( 'Section Buttons', 'formidable' );
300
+ $subs = array( $sub );
301
+ $this->insert_fields_in_array( $subs, $order, 0, $fields );
302
+ $order ++;
303
+ }
304
+
305
+ /**
306
+ * Replace the original combo field with a group.
307
+ * This switches the name field to individual fields.
308
  *
309
+ * @since 4.04.03
310
+ */
311
+ protected function insert_fields_in_array( $subs, $start, $remove, &$fields ) {
312
+ array_splice( $fields, $start, $remove, $subs );
313
+ }
314
+
315
+ /**
316
+ * @param string $type
317
+ * @param array $field
318
+ * @param string $use Which field type to prefer to consider $field as.
319
+ * This also eases the recursive use of the method,
320
+ * particularly the overrides in child classes, as
321
+ * there will be no need to rebuild the converter
322
+ * array at usage locations.
323
+ */
324
+ protected function convert_field_type( $type, $field = array(), $use = '' ) {
325
+ if ( empty( $field ) ) {
326
+ // For reverse compatability.
327
+ return $type;
328
+ }
329
+
330
+ return $use ? $use : $field['type'];
331
+ }
332
+
333
+ /**
334
+ * Add the new form to the database and return AJAX data.å
335
  *
336
  * @param array $form Form to import.
337
  * @param array $upgrade_omit No field alternative
338
  */
339
+ protected function add_form( $form, $upgrade_omit = array() ) {
340
 
341
  // Create empty form so we have an ID to work with.
342
+ $form_id = $this->create_form( $form );
 
 
 
 
 
 
 
 
343
 
344
  if ( empty( $form_id ) ) {
345
+ return $this->form_creation_error_response( $form );
 
 
 
 
346
  }
347
 
348
+ $this->create_fields( $form_id, $form );
 
 
 
349
 
350
+ $this->create_emails( $form, $form_id );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
 
352
  $this->track_import( $form['import_form_id'], $form_id );
353
 
360
  );
361
  }
362
 
363
+ /**
364
+ * @since 4.04.03
365
+ *
366
+ * @param array $form parameters for the new form to be created. Only
367
+ * the name key is a must. The keys are the column
368
+ * names of the forms table in the DB.
369
+ *
370
+ * @return int The ID of the newly created form.
371
+ */
372
+ protected function create_form( $form ) {
373
+ $form['form_key'] = $form['name'];
374
+ $form['status'] = 'published';
375
+
376
+ return FrmForm::create( $form );
377
+ }
378
+
379
+ /**
380
+ * @since 4.04.03
381
+ */
382
+ protected function form_creation_error_response( $form ) {
383
+ return array(
384
+ 'error' => true,
385
+ 'name' => sanitize_text_field( $form['name'] ),
386
+ 'msg' => esc_html__( 'There was an error while creating a new form.', 'formidable' ),
387
+ );
388
+ }
389
+
390
+ /**
391
+ * @since 4.04.03
392
+ *
393
+ * @param int $form_id
394
+ * @param array $form
395
+ */
396
+ protected function create_fields( $form_id, &$form ) {
397
+ foreach ( $form['fields'] as $key => $new_field ) {
398
+ $new_field['form_id'] = $form_id;
399
+ $form['fields'][ $key ]['id'] = FrmField::create( $new_field );
400
+ }
401
+ }
402
+
403
+ /**
404
+ * @since 4.04.03
405
+ *
406
+ * @param array $form
407
+ */
408
+ protected function create_emails( $form, $form_id ) {
409
+ foreach ( $form['actions'] as $action ) {
410
+ $this->save_action( $action, $form, $form_id );
411
+ }
412
+ }
413
+
414
+ /**
415
+ * @since 4.04.03
416
+ *
417
+ * @param array $form
418
+ */
419
+ protected function save_action( $action, $form, $form_id ) {
420
+ $action_control = FrmFormActionsController::get_form_actions( $action['type'] );
421
+ unset( $action['type'] );
422
+ $new_action = $action_control->prepare_new( $form_id );
423
+ foreach ( $action as $key => $value ) {
424
+ if ( $key === 'post_title' ) {
425
+ $new_action->post_title = $value;
426
+ } elseif ( $key === 'the_post_title' ) {
427
+ $new_action->post_content['post_title'] = $value;
428
+ } elseif ( is_string( $value ) ) {
429
+ $new_action->post_content[ $key ] = $this->replace_smart_tags( $value, $form['fields'] );
430
+ } else {
431
+ $new_action->post_content[ $key ] = $value;
432
+ }
433
+ }
434
+
435
+ return $action_control->save_settings( $new_action );
436
+ }
437
+
438
  /**
439
  * After a form has been successfully imported we track it, so that in the
440
  * future we can alert users if they try to import a form that has already
443
  * @param int $source_id Imported plugin form ID
444
  * @param int $new_form_id Formidable form ID
445
  */
446
+ protected function track_import( $source_id, $new_form_id ) {
447
 
448
  $imported = $this->get_tracked_import();
449
 
467
  private function is_imported( $source_id ) {
468
  $imported = $this->get_tracked_import();
469
  $new_form_id = 0;
470
+ if ( ! isset( $imported[ $this->slug ] ) || ! in_array( $source_id, $imported[ $this->slug ] ) ) {
471
+ return $new_form_id;
472
+ }
473
+
474
+ $new_form_id = array_search( $source_id, array_reverse( $imported[ $this->slug ], true ) );
475
+ if ( ! empty( $new_form_id ) && empty( FrmForm::get_key_by_id( $new_form_id ) ) ) {
476
+ // Allow reimport if the form was deleted.
477
+ $new_form_id = 0;
478
  }
479
 
480
  return $new_form_id;
504
  return array();
505
  }
506
 
507
+ protected function should_skip_field( $type ) {
508
  $skip_pro_fields = $this->skip_pro_fields();
509
 
510
  return ( ! FrmAppHelper::pro_is_installed() && in_array( $type, $skip_pro_fields, true ) );
545
  }
546
 
547
  /**
548
+ * @param object|array $source_form
549
  *
550
  * @return array
551
  */
554
  }
555
 
556
  /**
557
+ * @param array $field
558
  *
559
  * @return string
560
  */
561
  protected function get_field_type( $field ) {
562
+ return $field['type'];
563
  }
564
 
565
  /**
566
+ * @param array $field
567
  *
568
  * @return string
569
  */
570
  protected function get_field_label( $field ) {
571
+ $label = isset( $field['label'] ) ? $field['label'] : '';
572
+ if ( ! empty( $label ) ) {
573
+ return $label;
574
+ }
575
+
576
  $type = $this->get_field_type( $field );
577
  $label = sprintf(
578
  /* translators: %1$s - field type */
classes/models/FrmStyle.php CHANGED
@@ -450,7 +450,7 @@ class FrmStyle {
450
 
451
  'progress_bg_color' => 'dddddd',
452
  'progress_active_color' => 'ffffff',
453
- 'progress_active_bg_color' => '008ec2',
454
  'progress_color' => 'ffffff',
455
  'progress_border_color' => 'dfdfdf',
456
  'progress_border_size' => '2px',
450
 
451
  'progress_bg_color' => 'dddddd',
452
  'progress_active_color' => 'ffffff',
453
+ 'progress_active_bg_color' => '4199FD',
454
  'progress_color' => 'ffffff',
455
  'progress_border_color' => 'dfdfdf',
456
  'progress_border_size' => '2px',
classes/views/frm-entries/list.php CHANGED
@@ -9,6 +9,7 @@
9
  'label' => __( 'Form Entries', 'formidable' ),
10
  'form' => $form,
11
  'close' => $form ? admin_url( 'admin.php?page=formidable-entries&form=' . $form->id ) : '',
 
12
  )
13
  );
14
  ?>
@@ -24,6 +25,9 @@
24
  )
25
  );
26
  ?>
 
 
 
27
  </h2>
28
  <?php if ( ! FrmAppHelper::pro_is_installed() ) { ?>
29
  <div class="clear"></div>
9
  'label' => __( 'Form Entries', 'formidable' ),
10
  'form' => $form,
11
  'close' => $form ? admin_url( 'admin.php?page=formidable-entries&form=' . $form->id ) : '',
12
+ 'import_link' => $form ? false : true,
13
  )
14
  );
15
  ?>
25
  )
26
  );
27
  ?>
28
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable-import' ) ); ?>" class="button button-secondary frm-button-secondary frm_animate_bg">
29
+ <?php esc_html_e( 'Import', 'formidable' ); ?>
30
+ </a>
31
  </h2>
32
  <?php if ( ! FrmAppHelper::pro_is_installed() ) { ?>
33
  <div class="clear"></div>
classes/views/frm-fields/back-end/smart-values.php CHANGED
@@ -8,7 +8,7 @@
8
  </p>
9
  <p>
10
  <a href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( $upgrade_link ) ); ?>" class="button button-primary frm-button-primary" target="_blank" rel="noopener noreferrer">
11
- <?php esc_html_e( 'Upgrade to Pro', 'formidable' ); ?>
12
  </a>
13
 
14
  <a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( $upgrade_link, 'knowledgebase/install-formidable-forms/' ) ) ); ?>" target="_blank" class="frm-link-secondary alignright">
8
  </p>
9
  <p>
10
  <a href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( $upgrade_link ) ); ?>" class="button button-primary frm-button-primary" target="_blank" rel="noopener noreferrer">
11
+ <?php esc_html_e( 'Upgrade', 'formidable' ); ?>
12
  </a>
13
 
14
  <a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( $upgrade_link, 'knowledgebase/install-formidable-forms/' ) ) ); ?>" target="_blank" class="frm-link-secondary alignright">
classes/views/frm-forms/list-templates.php CHANGED
@@ -50,6 +50,14 @@
50
  </a>
51
  </li>
52
  <?php } ?>
 
 
 
 
 
 
 
 
53
  </ul>
54
 
55
  <?php
50
  </a>
51
  </li>
52
  <?php } ?>
53
+ <li>
54
+ <a class="frm-featured-form" href="<?php echo esc_url( admin_url( 'admin.php?page=formidable-import' ) ); ?>">
55
+ <span class="frm-inner-circle" style="background-color:var(--orange)">
56
+ <?php FrmAppHelper::icon_by_class( 'frmfont frm_upload_icon' ); ?>
57
+ </span>
58
+ <h3><?php esc_html_e( 'Import', 'formidable' ); ?></h3>
59
+ </a>
60
+ </li>
61
  </ul>
62
 
63
  <?php
classes/views/frm-forms/list.php CHANGED
@@ -2,8 +2,9 @@
2
  <?php
3
  FrmAppHelper::get_admin_header(
4
  array(
5
- 'label' => $params['template'] ? __( 'Templates', 'formidable' ) : __( 'Forms', 'formidable' ),
6
- 'new_link' => ( ! $params['template'] && current_user_can( 'frm_edit_forms' ) ) ? '?page=formidable&frm_action=add_new' : '',
 
7
  )
8
  );
9
  ?>
2
  <?php
3
  FrmAppHelper::get_admin_header(
4
  array(
5
+ 'label' => $params['template'] ? __( 'Templates', 'formidable' ) : __( 'Forms', 'formidable' ),
6
+ 'new_link' => ( ! $params['template'] && current_user_can( 'frm_edit_forms' ) ) ? '?page=formidable&frm_action=add_new' : '',
7
+ 'import_link' => true,
8
  )
9
  );
10
  ?>
classes/views/shared/admin-header.php CHANGED
@@ -28,10 +28,15 @@
28
  // Used when no form is currently selected.
29
  ?>
30
 
31
- <div class="frm_top_left">
32
  <h1>
33
  <?php echo esc_html( $atts['label'] ); ?>
34
  <?php FrmAppHelper::add_new_item_link( $atts ); ?>
 
 
 
 
 
35
  <?php if ( isset( $atts['cancel_link'] ) ) { ?>
36
  <a href="<?php echo esc_url( $atts['cancel_link'] ); ?>" class="button button-secondary frm-button-secondary frm_animate_bg">
37
  <?php esc_html_e( 'Cancel', 'formidable' ); ?>
28
  // Used when no form is currently selected.
29
  ?>
30
 
31
+ <div class="frm_top_left <?php echo esc_attr( $atts['import_link'] ? 'frm_top_wide' : '' ); ?>">
32
  <h1>
33
  <?php echo esc_html( $atts['label'] ); ?>
34
  <?php FrmAppHelper::add_new_item_link( $atts ); ?>
35
+ <?php if ( $atts['import_link'] ) { ?>
36
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable-import' ) ); ?>" class="button button-secondary frm-button-secondary frm_animate_bg">
37
+ <?php esc_html_e( 'Import', 'formidable' ); ?>
38
+ </a>
39
+ <?php } ?>
40
  <?php if ( isset( $atts['cancel_link'] ) ) { ?>
41
  <a href="<?php echo esc_url( $atts['cancel_link'] ); ?>" class="button button-secondary frm-button-secondary frm_animate_bg">
42
  <?php esc_html_e( 'Cancel', 'formidable' ); ?>
classes/views/xml/import_form.php CHANGED
@@ -35,6 +35,7 @@
35
  </form>
36
  <?php FrmTipsHelper::pro_tip( 'get_import_tip' ); ?>
37
 
 
38
  <br/><br/>
39
  <h2 class="frm-h2"><?php esc_html_e( 'Export', 'formidable' ); ?></h2>
40
  <p class="howto">
35
  </form>
36
  <?php FrmTipsHelper::pro_tip( 'get_import_tip' ); ?>
37
 
38
+ <?php do_action( 'frm_import_settings' ); ?>
39
  <br/><br/>
40
  <h2 class="frm-h2"><?php esc_html_e( 'Export', 'formidable' ); ?></h2>
41
  <p class="howto">
css/frm_admin.css CHANGED
@@ -258,6 +258,10 @@ a .frmsvg,
258
  text-overflow: ellipsis;
259
  }
260
 
 
 
 
 
261
  .frm-header-logo,
262
  .edit-php.post-type-frm_display .frm-header-logo {
263
  float: left;
@@ -972,6 +976,7 @@ p.frm_has_shortcodes {
972
 
973
  h1 .frm-button-secondary,
974
  h1 .frm-button-primary,
 
975
  h2 .frm-button-primary {
976
  font-size: 14px !important;
977
  font-weight: normal;
258
  text-overflow: ellipsis;
259
  }
260
 
261
+ .frm_top_left.frm_top_wide {
262
+ max-width: 100%;
263
+ }
264
+
265
  .frm-header-logo,
266
  .edit-php.post-type-frm_display .frm-header-logo {
267
  float: left;
976
 
977
  h1 .frm-button-secondary,
978
  h1 .frm-button-primary,
979
+ h2 .frm-button-secondary,
980
  h2 .frm-button-primary {
981
  font-size: 14px !important;
982
  font-weight: normal;
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: 4.04.02
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
+ Version: 4.04.03
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
js/formidable.js CHANGED
@@ -120,6 +120,28 @@ function frmFrontFormJS(){
120
  $form.find( 'input[type="submit"], input[type="button"], button[type="submit"]' ).removeAttr( 'disabled' );
121
  }
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  function validateForm( object ) {
124
  var errors = [];
125
 
@@ -629,6 +651,7 @@ function frmFrontFormJS(){
629
  function showSubmitLoading( $object ) {
630
  showLoadingIndicator( $object );
631
  disableSubmitButton( $object );
 
632
  }
633
 
634
  function showLoadingIndicator( $object ) {
@@ -661,6 +684,7 @@ function frmFrontFormJS(){
661
 
662
  if ( enable === 'enable' ) {
663
  enableSubmitButton( loadingForm );
 
664
  }
665
  }
666
 
120
  $form.find( 'input[type="submit"], input[type="button"], button[type="submit"]' ).removeAttr( 'disabled' );
121
  }
122
 
123
+ /**
124
+ * Disable the save draft link for a given jQuery form object
125
+ *
126
+ * @since 4.04.03
127
+ *
128
+ * @param {object} $form
129
+ */
130
+ function disableSaveDraft( $form ) {
131
+ $form.find( 'a.frm_save_draft' ).css( 'pointer-events', 'none' );
132
+ }
133
+
134
+ /**
135
+ * Enable the save draft link for a given jQuery form object
136
+ *
137
+ * @since 4.04.03
138
+ *
139
+ * @param {object} $form
140
+ */
141
+ function enableSaveDraft( $form ) {
142
+ $form.find( 'a.frm_save_draft' ).css( 'pointer-events', '' );
143
+ }
144
+
145
  function validateForm( object ) {
146
  var errors = [];
147
 
651
  function showSubmitLoading( $object ) {
652
  showLoadingIndicator( $object );
653
  disableSubmitButton( $object );
654
+ disableSaveDraft( $object );
655
  }
656
 
657
  function showLoadingIndicator( $object ) {
684
 
685
  if ( enable === 'enable' ) {
686
  enableSubmitButton( loadingForm );
687
+ enableSaveDraft( loadingForm );
688
  }
689
  }
690
 
js/formidable.min.js CHANGED
@@ -1,32 +1,32 @@
1
  function frmFrontFormJS(){var action="";var jsErrors=[];function maybeShowLabel(){var $field=jQuery(this);var $label=$field.closest(".frm_inside_container").find(".frm_primary_label");if($field.val().length>0)$label.addClass("frm_visible");else $label.removeClass("frm_visible")}function getFieldId(field,fullID){var fieldName="";if(field instanceof jQuery)fieldName=field.attr("name");else fieldName=field.name;if(typeof fieldName==="undefined")fieldName="";if(fieldName===""){if(field instanceof jQuery)fieldName=
2
  field.data("name");else fieldName=field.getAttribute("data-name");if(typeof fieldName==="undefined")fieldName="";if(fieldName!==""&&fieldName)return fieldName;return 0}var nameParts=fieldName.replace("item_meta[","").replace("[]","").split("]");if(nameParts.length<1)return 0;nameParts=nameParts.filter(function(n){return n!==""});var field_id=nameParts[0];var isRepeating=false;if(nameParts.length===1)return field_id;if(nameParts[1]==="[form"||nameParts[1]==="[row_ids")return 0;if(jQuery('input[name="item_meta['+
3
  field_id+'][form]"]').length){field_id=nameParts[2].replace("[","");isRepeating=true}if("other"===field_id)if(isRepeating)field_id=nameParts[3].replace("[","");else field_id=nameParts[1].replace("[","");if(fullID===true)if(field_id===nameParts[0])field_id=field_id+"-"+nameParts[1].replace("[","");else field_id=field_id+"-"+nameParts[0]+"-"+nameParts[1].replace("[","");return field_id}function disableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled",
4
- "disabled")}function enableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').removeAttr("disabled")}function validateForm(object){var errors=[];var requiredFields=jQuery(object).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");if(requiredFields.length)for(var r=0,rl=requiredFields.length;r<rl;r++)errors=checkRequiredField(requiredFields[r],errors);var emailFields=
5
- jQuery(object).find("input[type=email]").filter(":visible");var fields=jQuery(object).find("input,select,textarea");if(fields.length)for(var n=0,nl=fields.length;n<nl;n++){var field=fields[n];var value=field.value;if(value!=="")if(field.type==="hidden");else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.type==="email")errors=checkEmailField(field,errors,emailFields);else if(field.pattern!==null)errors=checkPatternField(field,errors)}errors=validateRecaptcha(object,errors);
6
- return errors}function maybeValidateChange(field_id,field){if(field.type==="url")maybeAddHttpToUrl(field);if(jQuery(field).closest("form").hasClass("frm_js_validate"))validateField(field_id,field)}function maybeAddHttpToUrl(field){var url=field.value;var matches=url.match(/^(https?|ftps?|mailto|news|feed|telnet):/);if(field.value!==""&&matches===null)field.value="http://"+url}function validateField(fieldId,field){var errors=[];var $fieldCont=jQuery(field).closest(".frm_form_field");if($fieldCont.hasClass("frm_required_field")&&
7
- !jQuery(field).hasClass("frm_optional"))errors=checkRequiredField(field,errors);if(errors.length<1)if(field.type==="email"){var emailFields=jQuery(field).closest("form").find("input[type=email]");errors=checkEmailField(field,errors,emailFields)}else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.pattern!==null)errors=checkPatternField(field,errors);removeFieldError($fieldCont);if(Object.keys(errors).length>0)for(var key in errors)addFieldError($fieldCont,key,errors)}
8
- function checkRequiredField(field,errors){var fileID=field.getAttribute("data-frmfile");if(field.type==="hidden"&&fileID===null)return errors;var val="";var fieldID="";if(field.type==="checkbox"||field.type==="radio"){var checkGroup=jQuery('input[name="'+field.name+'"]').closest(".frm_required_field").find("input:checked");jQuery(checkGroup).each(function(){val=this.value})}else if(field.type==="file"||fileID){if(typeof fileID==="undefined"){fileID=getFieldId(field,true);fileID=fileID.replace("file",
9
- "")}if(typeof errors[fileID]==="undefined")val=getFileVals(fileID);fieldID=fileID}else{var fieldClasses=field.className;if(fieldClasses.indexOf("frm_pos_none")!==-1)return errors;val=jQuery(field).val();if(val===null)val="";else if(typeof val!=="string"){var tempVal=val;val="";for(var i=0;i<tempVal.length;i++)if(tempVal[i]!=="")val=tempVal[i]}if(fieldClasses.indexOf("frm_other_input")===-1)fieldID=getFieldId(field,true);else fieldID=getFieldId(field,false);if(fieldClasses.indexOf("frm_time_select")!==
10
- -1)fieldID=fieldID.replace("-H","").replace("-m","");var placeholder=field.getAttribute("data-frmplaceholder");if(placeholder!==null&&val===placeholder)val=""}if(val===""){if(fieldID==="")fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-reqmsg")}return errors}function getFileVals(fileID){var val="";var fileFields=jQuery('input[name="file'+fileID+'"], input[name="file'+fileID+'[]"], input[name^="item_meta['+fileID+']"]');fileFields.each(function(){if(val===
11
- "")val=this.value});return val}function checkEmailField(field,errors,emailFields){var emailAddress=field.value;var fieldID=getFieldId(field,true);if(fieldID in errors)return errors;var isConf=fieldID.indexOf("conf_")===0;if(emailAddress!==""||isConf){var re=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i;var invalidMsg=getFieldValidationMessage(field,"data-invmsg");if(emailAddress!==""&&re.test(emailAddress)===
12
- false){errors[fieldID]=invalidMsg;if(isConf)errors[fieldID.replace("conf_","")]=""}else if(isConf){var confName=field.name.replace("conf_","");var match=emailFields.filter('[name="'+confName+'"]').val();if(match!==emailAddress){errors[fieldID]="";errors[fieldID.replace("conf_","")]=""}}}return errors}function checkNumberField(field,errors){var number=field.value;if(number!==""&&isNaN(number/1)!==false){var fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,
13
- "data-invmsg")}return errors}function checkPatternField(field,errors){var text=field.value;var format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){var fieldID=getFieldId(field,true);if(!(fieldID in errors)){format=new RegExp("^"+format+"$","i");if(format.test(text)===false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}}return errors}function hasInvisibleRecaptcha(object){if(isGoingToPrevPage(object))return false;var recaptcha=jQuery(object).find('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');
14
- if(recaptcha.length){var recaptchaID=recaptcha.data("rid");var alreadyChecked=grecaptcha.getResponse(recaptchaID);if(alreadyChecked.length===0)return recaptcha;else return false}else return false}function executeInvisibleRecaptcha(invisibleRecaptcha){var recaptchaID=invisibleRecaptcha.data("rid");grecaptcha.reset(recaptchaID);grecaptcha.execute(recaptchaID)}function validateRecaptcha(form,errors){var $recaptcha=jQuery(form).find(".frm-g-recaptcha");if($recaptcha.length){var recaptchaID=$recaptcha.data("rid");
15
- var response=grecaptcha.getResponse(recaptchaID);if(response.length===0){var fieldContainer=$recaptcha.closest(".frm_form_field");var fieldID=fieldContainer.attr("id").replace("frm_field_","").replace("_container","");errors[fieldID]=""}}return errors}function getFieldValidationMessage(field,messageType){var msg=field.getAttribute(messageType);if(msg===null)msg="";return msg}function shouldJSValidate(object){var validate=jQuery(object).hasClass("frm_js_validate");if(validate&&typeof frmProForm!==
16
- "undefined"&&(frmProForm.savingDraft(object)||frmProForm.goingToPreviousPage(object)))validate=false;return validate}function getFormErrors(object,action){if(typeof action==="undefined")jQuery(object).find('input[name="frm_action"]').val();var fieldset=jQuery(object).find(".frm_form_field");fieldset.addClass("frm_doing_ajax");jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:jQuery(object).serialize()+"&action=frm_entries_"+action+"&nonce="+frm_js.nonce,success:function(response){var defaultResponse=
17
- {"content":"","errors":{},"pass":false};if(response===null)response=defaultResponse;response=response.replace(/^\s+|\s+$/g,"");if(response.indexOf("{")===0)response=jQuery.parseJSON(response);else response=defaultResponse;if(typeof response.redirect!=="undefined"){jQuery(document).trigger("frmBeforeFormRedirect",[object,response]);window.location=response.redirect}else if(response.content!==""){removeSubmitLoading(jQuery(object));if(frm_js.offset!=-1)frmFrontForm.scrollMsg(jQuery(object),false);var formID=
18
- jQuery(object).find('input[name="form_id"]').val();response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");var replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){var pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();var formReturned=jQuery(response.content).find('input[name="form_id"]').val();
19
- frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}afterFormSubmitted(object,response)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");var cont_submit=true;removeAllErrors();var show_captcha=false;var $fieldCont=null;for(var key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){var inCollapsedSection=$fieldCont.closest(".frm_toggle_container");
20
- if(inCollapsedSection.length){var frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.click()}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);cont_submit=false;var $recaptcha=jQuery(object).find("#frm_field_"+key+"_container .frm-g-recaptcha, #frm_field_"+key+"_container .g-recaptcha");if($recaptcha.length){show_captcha=true;var recaptchaID=$recaptcha.data("rid");if(jQuery().grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);
21
- else grecaptcha.reset()}}}}jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(show_captcha!==true)replaceCheckedRecaptcha(object,false);if(cont_submit)object.submit();else jQuery(object).prepend(response.error_message)}else{showFileLoading(object);replaceCheckedRecaptcha(object,true);object.submit()}},error:function(){jQuery(object).find('input[type="submit"], input[type="button"]').removeAttr("disabled");object.submit()}})}
22
- function afterFormSubmitted(object,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 addUrlParam(response){if(history.pushState&&
23
  typeof response.page!=="undefined"){var url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){key=encodeURI(key);value=encodeURI(value);var kvp=document.location.search.substr(1).split("&");var i=kvp.length;var x;while(i--){x=kvp[i].split("=");if(x[0]==key){x[1]=value;kvp[i]=x.join("=");break}}if(i<0)kvp[kvp.length]=[key,value].join("=");return kvp.join("&")}function addFieldError($fieldCont,key,jsErrors){if($fieldCont.length&&
24
  $fieldCont.is(":visible")){$fieldCont.addClass("frm_blank_field");var input=$fieldCont.find("input, select, textarea"),id="frm_error_field_"+key,describedBy=input.attr("aria-describedby");if(typeof frmThemeOverride_frmPlaceError==="function")frmThemeOverride_frmPlaceError(key,jsErrors);else{$fieldCont.append('<div class="frm_error" id="'+id+'">'+jsErrors[key]+"</div>");if(typeof describedBy==="undefined")describedBy=id;else if(describedBy.indexOf(id)===-1)describedBy=describedBy+" "+id;input.attr("aria-describedby",
25
  describedBy)}input.attr("aria-invalid",true);jQuery(document).trigger("frmAddFieldError",[$fieldCont,key,jsErrors])}}function removeFieldError($fieldCont){var errorMessage=$fieldCont.find(".frm_error"),errorId=errorMessage.attr("id"),input=$fieldCont.find("input, select, textarea"),describedBy=input.attr("aria-describedby");$fieldCont.removeClass("frm_blank_field has-error");errorMessage.remove();input.attr("aria-invalid",false);if(typeof describedBy!=="undefined"){describedBy=describedBy.replace(errorId,
26
- "");input.attr("aria-describedby",describedBy)}}function removeAllErrors(){jQuery(".form-field").removeClass("frm_blank_field has-error");jQuery(".form-field .frm_error").replaceWith("");jQuery(".frm_error_style").remove()}function scrollToFirstField(object){var field=jQuery(object).find(".frm_blank_field:first");if(field.length)frmFrontForm.scrollMsg(field,object,true)}function showSubmitLoading($object){showLoadingIndicator($object);disableSubmitButton($object)}function showLoadingIndicator($object){if(!$object.hasClass("frm_loading_form")&&
27
  !$object.hasClass("frm_loading_prev")){addLoadingClass($object);$object.trigger("frmStartFormLoading")}}function addLoadingClass($object){var loading_class=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loading_class)}function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading($object,enable,processesRunning){if(processesRunning>0)return;var loadingForm=jQuery(".frm_loading_form");
28
- loadingForm.removeClass("frm_loading_form");loadingForm.removeClass("frm_loading_prev");loadingForm.trigger("frmEndFormLoading");if(enable==="enable")enableSubmitButton(loadingForm)}function showFileLoading(object){var loading=document.getElementById("frm_loading");if(loading!==null){var file_val=jQuery(object).find("input[type=file]").val();if(typeof file_val!=="undefined"&&file_val!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}}function replaceCheckedRecaptcha(object,checkPage){var $recapField=
29
- jQuery(object).find(".frm-g-recaptcha, .g-recaptcha");if($recapField.length){if(checkPage){var morePages=jQuery(object).find(".frm_next_page").length<1||jQuery(object).find(".frm_next_page").val()<1;if(!morePages)return}$recapField.closest(".frm_form_field").replaceWith('<input type="hidden" name="recaptcha_checked" value="'+frm_js.nonce+'">')}}function clearDefault(){toggleDefault(jQuery(this),"clear")}function replaceDefault(){toggleDefault(jQuery(this),"replace")}function toggleDefault($thisField,
30
  e){var v=$thisField.data("frmval").replace(/(\n|\r\n)/g,"\r");if(v===""||typeof v==="undefined")return false;var thisVal=$thisField.val().replace(/(\n|\r\n)/g,"\r");if("replace"==e){if(thisVal==="")$thisField.addClass("frm_default").val(v)}else if(thisVal==v)$thisField.removeClass("frm_default").val("")}function resendEmail(){var $link=jQuery(this),entry_id=this.getAttribute("data-eid"),form_id=this.getAttribute("data-fid"),label=$link.find(".frm_link_label");if(label.length<1)label=$link;label.append('<span class="frm-wait"></span>');
31
  jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:entry_id,form_id:form_id,nonce:frm_js.nonce},success:function(msg){label.html(msg)}});return false}function confirmClick(){var message=jQuery(this).data("frmconfirm");return confirm(message)}function toggleDiv(){var div=jQuery(this).data("frmtoggle");if(jQuery(div).is(":visible"))jQuery(div).slideUp("fast");else jQuery(div).slideDown("fast");return false}function addIndexOfFallbackForIE8(){if(!Array.prototype.indexOf)Array.prototype.indexOf=
32
  function(elt){var len=this.length>>>0;var from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0)from+=len;for(;from<len;from++)if(from in this&&this[from]===elt)return from;return-1}}function addTrimFallbackForIE8(){if(typeof String.prototype.trim!=="function")String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){if(!Array.prototype.filter)Array.prototype.filter=function(fun){if(this===void 0||this===null)throw new TypeError;
1
  function frmFrontFormJS(){var action="";var jsErrors=[];function maybeShowLabel(){var $field=jQuery(this);var $label=$field.closest(".frm_inside_container").find(".frm_primary_label");if($field.val().length>0)$label.addClass("frm_visible");else $label.removeClass("frm_visible")}function getFieldId(field,fullID){var fieldName="";if(field instanceof jQuery)fieldName=field.attr("name");else fieldName=field.name;if(typeof fieldName==="undefined")fieldName="";if(fieldName===""){if(field instanceof jQuery)fieldName=
2
  field.data("name");else fieldName=field.getAttribute("data-name");if(typeof fieldName==="undefined")fieldName="";if(fieldName!==""&&fieldName)return fieldName;return 0}var nameParts=fieldName.replace("item_meta[","").replace("[]","").split("]");if(nameParts.length<1)return 0;nameParts=nameParts.filter(function(n){return n!==""});var field_id=nameParts[0];var isRepeating=false;if(nameParts.length===1)return field_id;if(nameParts[1]==="[form"||nameParts[1]==="[row_ids")return 0;if(jQuery('input[name="item_meta['+
3
  field_id+'][form]"]').length){field_id=nameParts[2].replace("[","");isRepeating=true}if("other"===field_id)if(isRepeating)field_id=nameParts[3].replace("[","");else field_id=nameParts[1].replace("[","");if(fullID===true)if(field_id===nameParts[0])field_id=field_id+"-"+nameParts[1].replace("[","");else field_id=field_id+"-"+nameParts[0]+"-"+nameParts[1].replace("[","");return field_id}function disableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled",
4
+ "disabled")}function enableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').removeAttr("disabled")}function disableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","none")}function enableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","")}function validateForm(object){var errors=[];var requiredFields=jQuery(object).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");
5
+ if(requiredFields.length)for(var r=0,rl=requiredFields.length;r<rl;r++)errors=checkRequiredField(requiredFields[r],errors);var emailFields=jQuery(object).find("input[type=email]").filter(":visible");var fields=jQuery(object).find("input,select,textarea");if(fields.length)for(var n=0,nl=fields.length;n<nl;n++){var field=fields[n];var value=field.value;if(value!=="")if(field.type==="hidden");else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.type==="email")errors=checkEmailField(field,
6
+ errors,emailFields);else if(field.pattern!==null)errors=checkPatternField(field,errors)}errors=validateRecaptcha(object,errors);return errors}function maybeValidateChange(field_id,field){if(field.type==="url")maybeAddHttpToUrl(field);if(jQuery(field).closest("form").hasClass("frm_js_validate"))validateField(field_id,field)}function maybeAddHttpToUrl(field){var url=field.value;var matches=url.match(/^(https?|ftps?|mailto|news|feed|telnet):/);if(field.value!==""&&matches===null)field.value="http://"+
7
+ url}function validateField(fieldId,field){var errors=[];var $fieldCont=jQuery(field).closest(".frm_form_field");if($fieldCont.hasClass("frm_required_field")&&!jQuery(field).hasClass("frm_optional"))errors=checkRequiredField(field,errors);if(errors.length<1)if(field.type==="email"){var emailFields=jQuery(field).closest("form").find("input[type=email]");errors=checkEmailField(field,errors,emailFields)}else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.pattern!==null)errors=
8
+ checkPatternField(field,errors);removeFieldError($fieldCont);if(Object.keys(errors).length>0)for(var key in errors)addFieldError($fieldCont,key,errors)}function checkRequiredField(field,errors){var fileID=field.getAttribute("data-frmfile");if(field.type==="hidden"&&fileID===null)return errors;var val="";var fieldID="";if(field.type==="checkbox"||field.type==="radio"){var checkGroup=jQuery('input[name="'+field.name+'"]').closest(".frm_required_field").find("input:checked");jQuery(checkGroup).each(function(){val=
9
+ this.value})}else if(field.type==="file"||fileID){if(typeof fileID==="undefined"){fileID=getFieldId(field,true);fileID=fileID.replace("file","")}if(typeof errors[fileID]==="undefined")val=getFileVals(fileID);fieldID=fileID}else{var fieldClasses=field.className;if(fieldClasses.indexOf("frm_pos_none")!==-1)return errors;val=jQuery(field).val();if(val===null)val="";else if(typeof val!=="string"){var tempVal=val;val="";for(var i=0;i<tempVal.length;i++)if(tempVal[i]!=="")val=tempVal[i]}if(fieldClasses.indexOf("frm_other_input")===
10
+ -1)fieldID=getFieldId(field,true);else fieldID=getFieldId(field,false);if(fieldClasses.indexOf("frm_time_select")!==-1)fieldID=fieldID.replace("-H","").replace("-m","");var placeholder=field.getAttribute("data-frmplaceholder");if(placeholder!==null&&val===placeholder)val=""}if(val===""){if(fieldID==="")fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-reqmsg")}return errors}function getFileVals(fileID){var val="";var fileFields=jQuery('input[name="file'+
11
+ fileID+'"], input[name="file'+fileID+'[]"], input[name^="item_meta['+fileID+']"]');fileFields.each(function(){if(val==="")val=this.value});return val}function checkEmailField(field,errors,emailFields){var emailAddress=field.value;var fieldID=getFieldId(field,true);if(fieldID in errors)return errors;var isConf=fieldID.indexOf("conf_")===0;if(emailAddress!==""||isConf){var re=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i;
12
+ var invalidMsg=getFieldValidationMessage(field,"data-invmsg");if(emailAddress!==""&&re.test(emailAddress)===false){errors[fieldID]=invalidMsg;if(isConf)errors[fieldID.replace("conf_","")]=""}else if(isConf){var confName=field.name.replace("conf_","");var match=emailFields.filter('[name="'+confName+'"]').val();if(match!==emailAddress){errors[fieldID]="";errors[fieldID.replace("conf_","")]=""}}}return errors}function checkNumberField(field,errors){var number=field.value;if(number!==""&&isNaN(number/
13
+ 1)!==false){var fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}return errors}function checkPatternField(field,errors){var text=field.value;var format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){var fieldID=getFieldId(field,true);if(!(fieldID in errors)){format=new RegExp("^"+format+"$","i");if(format.test(text)===false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}}return errors}function hasInvisibleRecaptcha(object){if(isGoingToPrevPage(object))return false;
14
+ var recaptcha=jQuery(object).find('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');if(recaptcha.length){var recaptchaID=recaptcha.data("rid");var alreadyChecked=grecaptcha.getResponse(recaptchaID);if(alreadyChecked.length===0)return recaptcha;else return false}else return false}function executeInvisibleRecaptcha(invisibleRecaptcha){var recaptchaID=invisibleRecaptcha.data("rid");grecaptcha.reset(recaptchaID);grecaptcha.execute(recaptchaID)}function validateRecaptcha(form,
15
+ errors){var $recaptcha=jQuery(form).find(".frm-g-recaptcha");if($recaptcha.length){var recaptchaID=$recaptcha.data("rid");var response=grecaptcha.getResponse(recaptchaID);if(response.length===0){var fieldContainer=$recaptcha.closest(".frm_form_field");var fieldID=fieldContainer.attr("id").replace("frm_field_","").replace("_container","");errors[fieldID]=""}}return errors}function getFieldValidationMessage(field,messageType){var msg=field.getAttribute(messageType);if(msg===null)msg="";return msg}function shouldJSValidate(object){var validate=
16
+ jQuery(object).hasClass("frm_js_validate");if(validate&&typeof frmProForm!=="undefined"&&(frmProForm.savingDraft(object)||frmProForm.goingToPreviousPage(object)))validate=false;return validate}function getFormErrors(object,action){if(typeof action==="undefined")jQuery(object).find('input[name="frm_action"]').val();var fieldset=jQuery(object).find(".frm_form_field");fieldset.addClass("frm_doing_ajax");jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:jQuery(object).serialize()+"&action=frm_entries_"+
17
+ action+"&nonce="+frm_js.nonce,success:function(response){var defaultResponse={"content":"","errors":{},"pass":false};if(response===null)response=defaultResponse;response=response.replace(/^\s+|\s+$/g,"");if(response.indexOf("{")===0)response=jQuery.parseJSON(response);else response=defaultResponse;if(typeof response.redirect!=="undefined"){jQuery(document).trigger("frmBeforeFormRedirect",[object,response]);window.location=response.redirect}else if(response.content!==""){removeSubmitLoading(jQuery(object));
18
+ if(frm_js.offset!=-1)frmFrontForm.scrollMsg(jQuery(object),false);var formID=jQuery(object).find('input[name="form_id"]').val();response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");var replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){var pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();
19
+ var formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}afterFormSubmitted(object,response)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");var cont_submit=true;removeAllErrors();var show_captcha=false;var $fieldCont=null;for(var key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){var inCollapsedSection=
20
+ $fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){var frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.click()}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);cont_submit=false;var $recaptcha=jQuery(object).find("#frm_field_"+key+"_container .frm-g-recaptcha, #frm_field_"+key+"_container .g-recaptcha");if($recaptcha.length){show_captcha=true;var recaptchaID=$recaptcha.data("rid");
21
+ if(jQuery().grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);else grecaptcha.reset()}}}}jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(show_captcha!==true)replaceCheckedRecaptcha(object,false);if(cont_submit)object.submit();else jQuery(object).prepend(response.error_message)}else{showFileLoading(object);replaceCheckedRecaptcha(object,true);object.submit()}},error:function(){jQuery(object).find('input[type="submit"], input[type="button"]').removeAttr("disabled");
22
+ object.submit()}})}function afterFormSubmitted(object,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 addUrlParam(response){if(history.pushState&&
23
  typeof response.page!=="undefined"){var url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){key=encodeURI(key);value=encodeURI(value);var kvp=document.location.search.substr(1).split("&");var i=kvp.length;var x;while(i--){x=kvp[i].split("=");if(x[0]==key){x[1]=value;kvp[i]=x.join("=");break}}if(i<0)kvp[kvp.length]=[key,value].join("=");return kvp.join("&")}function addFieldError($fieldCont,key,jsErrors){if($fieldCont.length&&
24
  $fieldCont.is(":visible")){$fieldCont.addClass("frm_blank_field");var input=$fieldCont.find("input, select, textarea"),id="frm_error_field_"+key,describedBy=input.attr("aria-describedby");if(typeof frmThemeOverride_frmPlaceError==="function")frmThemeOverride_frmPlaceError(key,jsErrors);else{$fieldCont.append('<div class="frm_error" id="'+id+'">'+jsErrors[key]+"</div>");if(typeof describedBy==="undefined")describedBy=id;else if(describedBy.indexOf(id)===-1)describedBy=describedBy+" "+id;input.attr("aria-describedby",
25
  describedBy)}input.attr("aria-invalid",true);jQuery(document).trigger("frmAddFieldError",[$fieldCont,key,jsErrors])}}function removeFieldError($fieldCont){var errorMessage=$fieldCont.find(".frm_error"),errorId=errorMessage.attr("id"),input=$fieldCont.find("input, select, textarea"),describedBy=input.attr("aria-describedby");$fieldCont.removeClass("frm_blank_field has-error");errorMessage.remove();input.attr("aria-invalid",false);if(typeof describedBy!=="undefined"){describedBy=describedBy.replace(errorId,
26
+ "");input.attr("aria-describedby",describedBy)}}function removeAllErrors(){jQuery(".form-field").removeClass("frm_blank_field has-error");jQuery(".form-field .frm_error").replaceWith("");jQuery(".frm_error_style").remove()}function scrollToFirstField(object){var field=jQuery(object).find(".frm_blank_field:first");if(field.length)frmFrontForm.scrollMsg(field,object,true)}function showSubmitLoading($object){showLoadingIndicator($object);disableSubmitButton($object);disableSaveDraft($object)}function showLoadingIndicator($object){if(!$object.hasClass("frm_loading_form")&&
27
  !$object.hasClass("frm_loading_prev")){addLoadingClass($object);$object.trigger("frmStartFormLoading")}}function addLoadingClass($object){var loading_class=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loading_class)}function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading($object,enable,processesRunning){if(processesRunning>0)return;var loadingForm=jQuery(".frm_loading_form");
28
+ loadingForm.removeClass("frm_loading_form");loadingForm.removeClass("frm_loading_prev");loadingForm.trigger("frmEndFormLoading");if(enable==="enable"){enableSubmitButton(loadingForm);enableSaveDraft(loadingForm)}}function showFileLoading(object){var loading=document.getElementById("frm_loading");if(loading!==null){var file_val=jQuery(object).find("input[type=file]").val();if(typeof file_val!=="undefined"&&file_val!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}}function replaceCheckedRecaptcha(object,
29
+ checkPage){var $recapField=jQuery(object).find(".frm-g-recaptcha, .g-recaptcha");if($recapField.length){if(checkPage){var morePages=jQuery(object).find(".frm_next_page").length<1||jQuery(object).find(".frm_next_page").val()<1;if(!morePages)return}$recapField.closest(".frm_form_field").replaceWith('<input type="hidden" name="recaptcha_checked" value="'+frm_js.nonce+'">')}}function clearDefault(){toggleDefault(jQuery(this),"clear")}function replaceDefault(){toggleDefault(jQuery(this),"replace")}function toggleDefault($thisField,
30
  e){var v=$thisField.data("frmval").replace(/(\n|\r\n)/g,"\r");if(v===""||typeof v==="undefined")return false;var thisVal=$thisField.val().replace(/(\n|\r\n)/g,"\r");if("replace"==e){if(thisVal==="")$thisField.addClass("frm_default").val(v)}else if(thisVal==v)$thisField.removeClass("frm_default").val("")}function resendEmail(){var $link=jQuery(this),entry_id=this.getAttribute("data-eid"),form_id=this.getAttribute("data-fid"),label=$link.find(".frm_link_label");if(label.length<1)label=$link;label.append('<span class="frm-wait"></span>');
31
  jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:entry_id,form_id:form_id,nonce:frm_js.nonce},success:function(msg){label.html(msg)}});return false}function confirmClick(){var message=jQuery(this).data("frmconfirm");return confirm(message)}function toggleDiv(){var div=jQuery(this).data("frmtoggle");if(jQuery(div).is(":visible"))jQuery(div).slideUp("fast");else jQuery(div).slideDown("fast");return false}function addIndexOfFallbackForIE8(){if(!Array.prototype.indexOf)Array.prototype.indexOf=
32
  function(elt){var len=this.length>>>0;var from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0)from+=len;for(;from<len;from++)if(from in this&&this[from]===elt)return from;return-1}}function addTrimFallbackForIE8(){if(typeof String.prototype.trim!=="function")String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){if(!Array.prototype.filter)Array.prototype.filter=function(fun){if(this===void 0||this===null)throw new TypeError;
js/formidable_admin.js CHANGED
@@ -4399,52 +4399,54 @@ function frmAdminBuildJS() {
4399
  function startFormMigration( event ) {
4400
  event.preventDefault();
4401
 
4402
- var checkedBoxes = jQuery( '#frm_form_importer input:checked' );
4403
- if ( checkedBoxes.length ) {
 
 
4404
 
4405
- var ids = [];
4406
- checkedBoxes.each( function( i ) {
4407
- ids[i] = this.value;
4408
- } );
4409
 
4410
- // Begin the import process.
4411
- importForms( ids );
4412
- }
4413
  }
4414
 
4415
  /**
4416
  * Begins the process of importing the forms.
4417
  */
4418
- function importForms( forms ) {
4419
 
4420
- var $processSettings = jQuery( '#frm-importer-process' );
 
 
4421
 
4422
  // Display total number of forms we have to import.
4423
  $processSettings.find( '.form-total' ).text( forms.length );
4424
  $processSettings.find( '.form-current' ).text( '1' );
4425
 
4426
- // Hide the form select section.
4427
- jQuery( '#frm_form_importer' ).hide();
4428
 
4429
  // Show processing status.
4430
- $processSettings.show();
4431
  $processSettings.find( '.process-completed' ).hide();
 
4432
 
4433
  // Create global import queue.
4434
  s.importQueue = forms;
4435
  s.imported = 0;
4436
 
4437
  // Import the first form in the queue.
4438
- importForm();
4439
  }
4440
 
4441
  /**
4442
  * Imports a single form from the import queue.
4443
  */
4444
- function importForm() {
4445
- var $processSettings = jQuery( '#frm-importer-process' ),
4446
- formID = s.importQueue[0],
4447
- provider = jQuery( 'input[name="slug"]' ).val(),
4448
  data = {
4449
  action: 'frm_import_' + provider,
4450
  form_id: formID,
@@ -4479,7 +4481,7 @@ function frmAdminBuildJS() {
4479
  } else {
4480
  // Import next form in the queue.
4481
  $processSettings.find( '.form-current' ).text( s.imported + 1 );
4482
- importForm();
4483
  }
4484
  }
4485
  } );
@@ -5808,7 +5810,7 @@ function frmAdminBuildJS() {
5808
  },
5809
 
5810
  exportInit: function() {
5811
- jQuery( '#frm_form_importer' ).submit( startFormMigration );
5812
  jQuery( document.getElementById( 'frm_export_xml' ) ).submit( validateExport );
5813
  jQuery( '#frm_export_xml input, #frm_export_xml select' ).change( removeExportError );
5814
  jQuery( 'input[name="frm_import_file"]' ).change( checkCSVExtension );
4399
  function startFormMigration( event ) {
4400
  event.preventDefault();
4401
 
4402
+ var checkedBoxes = jQuery( event.target ).find( 'input:checked' );
4403
+ if ( ! checkedBoxes.length ) {
4404
+ return;
4405
+ }
4406
 
4407
+ var ids = [];
4408
+ checkedBoxes.each( function( i ) {
4409
+ ids[i] = this.value;
4410
+ } );
4411
 
4412
+ // Begin the import process.
4413
+ importForms( ids, event.target );
 
4414
  }
4415
 
4416
  /**
4417
  * Begins the process of importing the forms.
4418
  */
4419
+ function importForms( forms, targetForm ) {
4420
 
4421
+ // Hide the form select section.
4422
+ var $form = jQuery( targetForm ),
4423
+ $processSettings = $form.next( '.frm-importer-process' );
4424
 
4425
  // Display total number of forms we have to import.
4426
  $processSettings.find( '.form-total' ).text( forms.length );
4427
  $processSettings.find( '.form-current' ).text( '1' );
4428
 
4429
+ $form.hide();
 
4430
 
4431
  // Show processing status.
4432
+ // '.process-completed' might have been shown earlier during a previous import, so hide now.
4433
  $processSettings.find( '.process-completed' ).hide();
4434
+ $processSettings.show();
4435
 
4436
  // Create global import queue.
4437
  s.importQueue = forms;
4438
  s.imported = 0;
4439
 
4440
  // Import the first form in the queue.
4441
+ importForm( $processSettings );
4442
  }
4443
 
4444
  /**
4445
  * Imports a single form from the import queue.
4446
  */
4447
+ function importForm( $processSettings ) {
4448
+ var formID = s.importQueue[0],
4449
+ provider = $processSettings.closest( '.welcome-panel-content' ).find( 'input[name="slug"]' ).val(),
 
4450
  data = {
4451
  action: 'frm_import_' + provider,
4452
  form_id: formID,
4481
  } else {
4482
  // Import next form in the queue.
4483
  $processSettings.find( '.form-current' ).text( s.imported + 1 );
4484
+ importForm( $processSettings );
4485
  }
4486
  }
4487
  } );
5810
  },
5811
 
5812
  exportInit: function() {
5813
+ jQuery( '.frm_form_importer' ).submit( startFormMigration );
5814
  jQuery( document.getElementById( 'frm_export_xml' ) ).submit( validateExport );
5815
  jQuery( '#frm_export_xml input, #frm_export_xml select' ).change( removeExportError );
5816
  jQuery( 'input[name="frm_import_file"]' ).change( checkCSVExtension );
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 4.04.02\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: 2020-04-09T00:11:51+02:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.1.0\n"
15
  "X-Domain: formidable\n"
@@ -320,6 +320,7 @@ msgid "Repeater"
320
  msgstr ""
321
 
322
  #: classes/models/FrmField.php:122
 
323
  msgid "Section Buttons"
324
  msgstr ""
325
 
@@ -394,12 +395,12 @@ msgstr ""
394
  msgid "You do not have permission to do that"
395
  msgstr ""
396
 
397
- #: classes/models/FrmEntryValidate.php:227
398
- #: classes/models/FrmEntryValidate.php:236
399
  msgid "Your entry appears to be spam!"
400
  msgstr ""
401
 
402
- #: classes/models/FrmEntryValidate.php:231
403
  msgid "Your entry appears to be blacklist spam!"
404
  msgstr ""
405
 
@@ -531,21 +532,26 @@ msgstr ""
531
  msgid "Entry is imported"
532
  msgstr ""
533
 
534
- #: classes/models/FrmFormMigrator.php:141
 
 
 
 
 
535
  msgid "No form fields found."
536
  msgstr ""
537
 
538
- #: classes/models/FrmFormMigrator.php:233
539
  msgid "There was an error while creating a new form."
540
  msgstr ""
541
 
542
- #: classes/models/FrmFormMigrator.php:369
543
  msgid "Default Form"
544
  msgstr ""
545
 
546
  #. translators: %1$s - field type
547
  #. translators: %1$s: Number of items
548
- #: classes/models/FrmFormMigrator.php:399
549
  #: classes/helpers/FrmXMLHelper.php:981
550
  msgid "%1$s Field"
551
  msgid_plural "%1$s Fields"
@@ -580,7 +586,8 @@ msgstr ""
580
  #: classes/controllers/FrmAddonsController.php:19
581
  #: classes/controllers/FrmAddonsController.php:20
582
  #: classes/views/frm-fields/back-end/smart-values.php:11
583
- msgid "Upgrade to Pro"
 
584
  msgstr ""
585
 
586
  #: classes/controllers/FrmAddonsController.php:52
@@ -592,7 +599,7 @@ msgid "Installed"
592
  msgstr ""
593
 
594
  #: classes/controllers/FrmAddonsController.php:484
595
- #: classes/helpers/FrmAppHelper.php:2266
596
  msgid "Active"
597
  msgstr ""
598
 
@@ -628,7 +635,7 @@ msgstr ""
628
  #: classes/controllers/FrmFormsController.php:729
629
  #: classes/controllers/FrmEntriesController.php:8
630
  #: classes/controllers/FrmEntriesController.php:90
631
- #: classes/views/xml/import_form.php:114
632
  msgid "Entries"
633
  msgstr ""
634
 
@@ -808,7 +815,7 @@ msgstr ""
808
 
809
  #: classes/controllers/FrmStylesController.php:36
810
  #: classes/controllers/FrmStylesController.php:37
811
- #: classes/views/xml/import_form.php:115
812
  #: classes/views/styles/_field-description.php:14
813
  #: classes/views/styles/_field-colors.php:18
814
  #: classes/views/styles/_field-colors.php:77
@@ -846,7 +853,7 @@ msgstr ""
846
  #: classes/controllers/FrmStylesController.php:390
847
  #: classes/controllers/FrmFormsController.php:728
848
  #: classes/views/frm-forms/settings-advanced.php:8
849
- #: classes/views/xml/import_form.php:111
850
  #: classes/views/styles/_sample_form.php:14
851
  #: classes/views/styles/manage.php:34
852
  msgid "Form Title"
@@ -962,7 +969,7 @@ msgstr ""
962
 
963
  #: classes/controllers/FrmFormsController.php:630
964
  #: classes/controllers/FrmEntriesController.php:74
965
- #: classes/views/xml/import_form.php:145
966
  #: classes/widgets/FrmShowForm.php:56
967
  msgid "Form"
968
  msgstr ""
@@ -990,7 +997,7 @@ msgid "Template Name"
990
  msgstr ""
991
 
992
  #: classes/controllers/FrmFormsController.php:725
993
- #: classes/views/xml/import_form.php:113
994
  msgid "Type"
995
  msgstr ""
996
 
@@ -1157,8 +1164,8 @@ msgid "Abnormal HTML characters prevented your form from saving correctly"
1157
  msgstr ""
1158
 
1159
  #: classes/controllers/FrmFormsController.php:1468
1160
- #: classes/views/frm-forms/list-templates.php:190
1161
- #: classes/views/xml/import_form.php:126
1162
  #: classes/views/styles/manage.php:54
1163
  #: classes/helpers/FrmFormsListHelper.php:317
1164
  #: classes/helpers/FrmFormsHelper.php:57
@@ -1264,8 +1271,8 @@ msgid "Show options"
1264
  msgstr ""
1265
 
1266
  #: classes/views/frm-forms/_publish_box.php:16
1267
- #: classes/views/frm-forms/list-templates.php:147
1268
- #: classes/views/frm-forms/list-templates.php:256
1269
  #: classes/helpers/FrmFormsListHelper.php:308
1270
  msgid "Preview"
1271
  msgstr ""
@@ -1315,8 +1322,8 @@ msgstr ""
1315
 
1316
  #: classes/views/frm-forms/new-form-overlay.php:31
1317
  #: classes/views/shared/confirm-overlay.php:14
1318
- #: classes/views/shared/admin-header.php:37
1319
- #: classes/helpers/FrmAppHelper.php:2226
1320
  msgid "Cancel"
1321
  msgstr ""
1322
 
@@ -1324,11 +1331,11 @@ msgstr ""
1324
  msgid "Templates"
1325
  msgstr ""
1326
 
1327
- #: classes/views/frm-forms/list.php:21
1328
  #: classes/views/shared/mb_adv_info.php:35
1329
  #: classes/views/shared/mb_adv_info.php:178
1330
- #: classes/views/frm-entries/list.php:38
1331
- #: classes/helpers/FrmAppHelper.php:915
1332
  msgid "Search"
1333
  msgstr ""
1334
 
@@ -1345,68 +1352,75 @@ msgstr ""
1345
  msgid "Blank Form"
1346
  msgstr ""
1347
 
1348
- #: classes/views/frm-forms/list-templates.php:59
 
 
 
 
 
 
 
1349
  msgid "Search Templates"
1350
  msgstr ""
1351
 
1352
- #: classes/views/frm-forms/list-templates.php:66
1353
  #: classes/helpers/FrmEntriesListHelper.php:141
1354
  msgid "Filter"
1355
  msgstr ""
1356
 
1357
- #: classes/views/frm-forms/list-templates.php:69
1358
  msgid "Filter Templates"
1359
  msgstr ""
1360
 
1361
- #: classes/views/frm-forms/list-templates.php:81
1362
  msgid "Premium Templates"
1363
  msgstr ""
1364
 
1365
- #: classes/views/frm-forms/list-templates.php:86
1366
- #: classes/views/frm-forms/list-templates.php:202
1367
  msgid "My Templates"
1368
  msgstr ""
1369
 
1370
  #. translators: %s: Link with label
1371
- #: classes/views/frm-forms/list-templates.php:120
1372
  msgid "This template requires an active %s license or above."
1373
  msgstr ""
1374
 
1375
- #: classes/views/frm-forms/list-templates.php:135
1376
  msgid "Category:"
1377
  msgstr ""
1378
 
1379
- #: classes/views/frm-forms/list-templates.php:163
1380
  #: classes/views/addons/list.php:16
1381
  msgid "Check now for a recent upgrade or renewal"
1382
  msgstr ""
1383
 
1384
- #: classes/views/frm-forms/list-templates.php:171
1385
  msgid "Create a template from an existing form"
1386
  msgstr ""
1387
 
1388
- #: classes/views/frm-forms/list-templates.php:174
1389
  msgid "Select form for new template"
1390
  msgstr ""
1391
 
1392
- #: classes/views/frm-forms/list-templates.php:182
1393
  #: classes/views/frm-entries/no_entries.php:37
1394
  msgid "You have not created any forms yet."
1395
  msgstr ""
1396
 
1397
- #: classes/views/frm-forms/list-templates.php:214
1398
  msgid "You do not have any custom templates yet."
1399
  msgstr ""
1400
 
1401
- #: classes/views/frm-forms/list-templates.php:229
1402
  msgid "Learn how to create custom form templates."
1403
  msgstr ""
1404
 
1405
- #: classes/views/frm-forms/list-templates.php:247
1406
  msgid "Delete this form template?"
1407
  msgstr ""
1408
 
1409
- #: classes/views/frm-forms/list-templates.php:248
1410
  #: classes/views/frm-form-actions/form_action.php:21
1411
  #: classes/helpers/FrmEntriesListHelper.php:286
1412
  #: classes/helpers/FrmFormsListHelper.php:135
@@ -1414,8 +1428,8 @@ msgstr ""
1414
  msgid "Delete"
1415
  msgstr ""
1416
 
1417
- #: classes/views/frm-forms/list-templates.php:251
1418
- #: classes/views/frm-forms/list-templates.php:252
1419
  #: classes/helpers/FrmFormsHelper.php:1264
1420
  msgid "Create Form"
1421
  msgstr ""
@@ -1507,7 +1521,7 @@ msgid "Show Page Content"
1507
  msgstr ""
1508
 
1509
  #: classes/views/frm-forms/settings-advanced.php:93
1510
- #: classes/helpers/FrmAppHelper.php:1040
1511
  msgid "Select a Page"
1512
  msgstr ""
1513
 
@@ -1813,7 +1827,7 @@ msgstr ""
1813
  #: classes/views/addons/list.php:74
1814
  #: classes/views/addons/list.php:75
1815
  #: classes/views/shared/upgrade_overlay.php:27
1816
- #: classes/helpers/FrmAppHelper.php:2265
1817
  msgid "Install"
1818
  msgstr ""
1819
 
@@ -1840,7 +1854,7 @@ msgstr ""
1840
 
1841
  #: classes/views/shared/confirm-overlay.php:10
1842
  #: classes/views/shared/info-overlay.php:10
1843
- #: classes/helpers/FrmAppHelper.php:2233
1844
  msgid "Are you sure?"
1845
  msgstr ""
1846
 
@@ -1955,7 +1969,7 @@ msgstr ""
1955
 
1956
  #: classes/views/shared/mb_adv_info.php:90
1957
  #: classes/helpers/FrmCSVExportHelper.php:154
1958
- #: classes/helpers/FrmAppHelper.php:2205
1959
  msgid "ID"
1960
  msgstr ""
1961
 
@@ -1965,7 +1979,7 @@ msgstr ""
1965
 
1966
  #: classes/views/shared/mb_adv_info.php:108
1967
  #: classes/views/shared/mb_adv_info.php:122
1968
- #: classes/helpers/FrmAppHelper.php:2267
1969
  msgid "Select a Field"
1970
  msgstr ""
1971
 
@@ -1981,10 +1995,6 @@ msgstr ""
1981
  msgid "Got it!"
1982
  msgstr ""
1983
 
1984
- #: classes/views/xml/import_form.php:12
1985
- msgid "Import"
1986
- msgstr ""
1987
-
1988
  #: classes/views/xml/import_form.php:13
1989
  msgid "Upload your Formidable XML file to import forms into this site. If your imported form key and creation date match a form on your site, that form will be updated."
1990
  msgstr ""
@@ -2002,61 +2012,61 @@ msgstr ""
2002
  msgid "Upload file and import"
2003
  msgstr ""
2004
 
2005
- #: classes/views/xml/import_form.php:39
2006
  msgid "Export"
2007
  msgstr ""
2008
 
2009
- #: classes/views/xml/import_form.php:41
2010
  msgid "Export your forms, entries, views, and styles so you can easily import them on another site."
2011
  msgstr ""
2012
 
2013
- #: classes/views/xml/import_form.php:48
2014
  msgid "Export Format"
2015
  msgstr ""
2016
 
2017
- #: classes/views/xml/import_form.php:59
2018
  msgid "If your CSV special characters are not working correctly, try a different formatting option."
2019
  msgstr ""
2020
 
2021
- #: classes/views/xml/import_form.php:60
2022
  msgid "CSV Encoding Format"
2023
  msgstr ""
2024
 
2025
- #: classes/views/xml/import_form.php:73
2026
  msgid "Column Separation"
2027
  msgstr ""
2028
 
2029
- #: classes/views/xml/import_form.php:79
2030
  msgid "Include the following in the export file"
2031
  msgstr ""
2032
 
2033
- #: classes/views/xml/import_form.php:91
2034
  msgid "Select Form(s)"
2035
  msgstr ""
2036
 
2037
- #: classes/views/xml/import_form.php:94
2038
  msgid "Select a Form"
2039
  msgstr ""
2040
 
2041
- #: classes/views/xml/import_form.php:101
2042
  #: classes/helpers/FrmFormsHelper.php:144
2043
  msgid "Search Forms"
2044
  msgstr ""
2045
 
2046
- #: classes/views/xml/import_form.php:112
2047
  msgid "ID / Form Key"
2048
  msgstr ""
2049
 
2050
- #: classes/views/xml/import_form.php:135
2051
  msgid "Template"
2052
  msgstr ""
2053
 
2054
  #. translators: %1$s: Form name
2055
- #: classes/views/xml/import_form.php:140
2056
  msgid "Child Form (%1$s)"
2057
  msgstr ""
2058
 
2059
- #: classes/views/xml/import_form.php:172
2060
  msgid "Export Selection"
2061
  msgstr ""
2062
 
@@ -2580,7 +2590,7 @@ msgid "Label Position"
2580
  msgstr ""
2581
 
2582
  #: classes/views/frm-fields/back-end/settings.php:265
2583
- #: classes/helpers/FrmAppHelper.php:2227
2584
  msgid "Default"
2585
  msgstr ""
2586
 
@@ -2975,7 +2985,7 @@ msgid "Referrer:"
2975
  msgstr ""
2976
 
2977
  #: classes/views/frm-entries/list.php:9
2978
- #: classes/views/frm-entries/list.php:19
2979
  msgid "Form Entries"
2980
  msgstr ""
2981
 
@@ -3266,12 +3276,8 @@ msgstr ""
3266
  msgid "See all forms."
3267
  msgstr ""
3268
 
3269
- #: classes/helpers/FrmFormsListHelper.php:111
3270
- msgid "No Forms Found."
3271
- msgstr ""
3272
-
3273
  #: classes/helpers/FrmFormsListHelper.php:114
3274
- #: classes/helpers/FrmAppHelper.php:900
3275
  msgid "Add New"
3276
  msgstr ""
3277
 
@@ -3323,7 +3329,7 @@ msgid "Draft"
3323
  msgstr ""
3324
 
3325
  #: classes/helpers/FrmFieldsHelper.php:286
3326
- #: classes/helpers/FrmAppHelper.php:2238
3327
  msgid "The entered values do not match"
3328
  msgstr ""
3329
 
@@ -3334,7 +3340,7 @@ msgstr ""
3334
 
3335
  #: classes/helpers/FrmFieldsHelper.php:456
3336
  #: classes/helpers/FrmFieldsHelper.php:457
3337
- #: classes/helpers/FrmAppHelper.php:2242
3338
  msgid "New Option"
3339
  msgstr ""
3340
 
@@ -3351,1132 +3357,1132 @@ msgstr ""
3351
  msgid "Categories"
3352
  msgstr ""
3353
 
3354
- #: classes/helpers/FrmFieldsHelper.php:1366
3355
  msgid "Afghanistan"
3356
  msgstr ""
3357
 
3358
- #: classes/helpers/FrmFieldsHelper.php:1367
3359
  msgid "Aland Islands"
3360
  msgstr ""
3361
 
3362
- #: classes/helpers/FrmFieldsHelper.php:1368
3363
  msgid "Albania"
3364
  msgstr ""
3365
 
3366
- #: classes/helpers/FrmFieldsHelper.php:1369
3367
  msgid "Algeria"
3368
  msgstr ""
3369
 
3370
- #: classes/helpers/FrmFieldsHelper.php:1370
3371
  msgid "American Samoa"
3372
  msgstr ""
3373
 
3374
- #: classes/helpers/FrmFieldsHelper.php:1371
3375
  msgid "Andorra"
3376
  msgstr ""
3377
 
3378
- #: classes/helpers/FrmFieldsHelper.php:1372
3379
  msgid "Angola"
3380
  msgstr ""
3381
 
3382
- #: classes/helpers/FrmFieldsHelper.php:1373
3383
  msgid "Anguilla"
3384
  msgstr ""
3385
 
3386
- #: classes/helpers/FrmFieldsHelper.php:1374
3387
  msgid "Antarctica"
3388
  msgstr ""
3389
 
3390
- #: classes/helpers/FrmFieldsHelper.php:1375
3391
  msgid "Antigua and Barbuda"
3392
  msgstr ""
3393
 
3394
- #: classes/helpers/FrmFieldsHelper.php:1376
3395
  msgid "Argentina"
3396
  msgstr ""
3397
 
3398
- #: classes/helpers/FrmFieldsHelper.php:1377
3399
  msgid "Armenia"
3400
  msgstr ""
3401
 
3402
- #: classes/helpers/FrmFieldsHelper.php:1378
3403
  msgid "Aruba"
3404
  msgstr ""
3405
 
3406
- #: classes/helpers/FrmFieldsHelper.php:1379
3407
  msgid "Australia"
3408
  msgstr ""
3409
 
3410
- #: classes/helpers/FrmFieldsHelper.php:1380
3411
  msgid "Austria"
3412
  msgstr ""
3413
 
3414
- #: classes/helpers/FrmFieldsHelper.php:1381
3415
  msgid "Azerbaijan"
3416
  msgstr ""
3417
 
3418
- #: classes/helpers/FrmFieldsHelper.php:1382
3419
  msgid "Bahamas"
3420
  msgstr ""
3421
 
3422
- #: classes/helpers/FrmFieldsHelper.php:1383
3423
  msgid "Bahrain"
3424
  msgstr ""
3425
 
3426
- #: classes/helpers/FrmFieldsHelper.php:1384
3427
  msgid "Bangladesh"
3428
  msgstr ""
3429
 
3430
- #: classes/helpers/FrmFieldsHelper.php:1385
3431
  msgid "Barbados"
3432
  msgstr ""
3433
 
3434
- #: classes/helpers/FrmFieldsHelper.php:1386
3435
  msgid "Belarus"
3436
  msgstr ""
3437
 
3438
- #: classes/helpers/FrmFieldsHelper.php:1387
3439
  msgid "Belgium"
3440
  msgstr ""
3441
 
3442
- #: classes/helpers/FrmFieldsHelper.php:1388
3443
  msgid "Belize"
3444
  msgstr ""
3445
 
3446
- #: classes/helpers/FrmFieldsHelper.php:1389
3447
  msgid "Benin"
3448
  msgstr ""
3449
 
3450
- #: classes/helpers/FrmFieldsHelper.php:1390
3451
  msgid "Bermuda"
3452
  msgstr ""
3453
 
3454
- #: classes/helpers/FrmFieldsHelper.php:1391
3455
  msgid "Bhutan"
3456
  msgstr ""
3457
 
3458
- #: classes/helpers/FrmFieldsHelper.php:1392
3459
  msgid "Bolivia"
3460
  msgstr ""
3461
 
3462
- #: classes/helpers/FrmFieldsHelper.php:1393
3463
  msgid "Bonaire, Sint Eustatius and Saba"
3464
  msgstr ""
3465
 
3466
- #: classes/helpers/FrmFieldsHelper.php:1394
3467
  msgid "Bosnia and Herzegovina"
3468
  msgstr ""
3469
 
3470
- #: classes/helpers/FrmFieldsHelper.php:1395
3471
  msgid "Botswana"
3472
  msgstr ""
3473
 
3474
- #: classes/helpers/FrmFieldsHelper.php:1396
3475
  msgid "Bouvet Island"
3476
  msgstr ""
3477
 
3478
- #: classes/helpers/FrmFieldsHelper.php:1397
3479
  msgid "Brazil"
3480
  msgstr ""
3481
 
3482
- #: classes/helpers/FrmFieldsHelper.php:1398
3483
  msgid "British Indian Ocean Territory"
3484
  msgstr ""
3485
 
3486
- #: classes/helpers/FrmFieldsHelper.php:1399
3487
  msgid "Brunei"
3488
  msgstr ""
3489
 
3490
- #: classes/helpers/FrmFieldsHelper.php:1400
3491
  msgid "Bulgaria"
3492
  msgstr ""
3493
 
3494
- #: classes/helpers/FrmFieldsHelper.php:1401
3495
  msgid "Burkina Faso"
3496
  msgstr ""
3497
 
3498
- #: classes/helpers/FrmFieldsHelper.php:1402
3499
  msgid "Burundi"
3500
  msgstr ""
3501
 
3502
- #: classes/helpers/FrmFieldsHelper.php:1403
3503
  msgid "Cambodia"
3504
  msgstr ""
3505
 
3506
- #: classes/helpers/FrmFieldsHelper.php:1404
3507
  msgid "Cameroon"
3508
  msgstr ""
3509
 
3510
- #: classes/helpers/FrmFieldsHelper.php:1405
3511
  msgid "Canada"
3512
  msgstr ""
3513
 
3514
- #: classes/helpers/FrmFieldsHelper.php:1406
3515
  msgid "Cape Verde"
3516
  msgstr ""
3517
 
3518
- #: classes/helpers/FrmFieldsHelper.php:1407
3519
  msgid "Cayman Islands"
3520
  msgstr ""
3521
 
3522
- #: classes/helpers/FrmFieldsHelper.php:1408
3523
  msgid "Central African Republic"
3524
  msgstr ""
3525
 
3526
- #: classes/helpers/FrmFieldsHelper.php:1409
3527
  msgid "Chad"
3528
  msgstr ""
3529
 
3530
- #: classes/helpers/FrmFieldsHelper.php:1410
3531
  msgid "Chile"
3532
  msgstr ""
3533
 
3534
- #: classes/helpers/FrmFieldsHelper.php:1411
3535
  msgid "China"
3536
  msgstr ""
3537
 
3538
- #: classes/helpers/FrmFieldsHelper.php:1412
3539
  msgid "Christmas Island"
3540
  msgstr ""
3541
 
3542
- #: classes/helpers/FrmFieldsHelper.php:1413
3543
  msgid "Cocos (Keeling) Islands"
3544
  msgstr ""
3545
 
3546
- #: classes/helpers/FrmFieldsHelper.php:1414
3547
  msgid "Colombia"
3548
  msgstr ""
3549
 
3550
- #: classes/helpers/FrmFieldsHelper.php:1415
3551
  msgid "Comoros"
3552
  msgstr ""
3553
 
3554
- #: classes/helpers/FrmFieldsHelper.php:1416
3555
  msgid "Congo"
3556
  msgstr ""
3557
 
3558
- #: classes/helpers/FrmFieldsHelper.php:1417
3559
  msgid "Cook Islands"
3560
  msgstr ""
3561
 
3562
- #: classes/helpers/FrmFieldsHelper.php:1418
3563
  msgid "Costa Rica"
3564
  msgstr ""
3565
 
3566
- #: classes/helpers/FrmFieldsHelper.php:1419
3567
  msgid "C&ocirc;te d'Ivoire"
3568
  msgstr ""
3569
 
3570
- #: classes/helpers/FrmFieldsHelper.php:1420
3571
  msgid "Croatia"
3572
  msgstr ""
3573
 
3574
- #: classes/helpers/FrmFieldsHelper.php:1421
3575
  msgid "Cuba"
3576
  msgstr ""
3577
 
3578
- #: classes/helpers/FrmFieldsHelper.php:1422
3579
  msgid "Curacao"
3580
  msgstr ""
3581
 
3582
- #: classes/helpers/FrmFieldsHelper.php:1423
3583
  msgid "Cyprus"
3584
  msgstr ""
3585
 
3586
- #: classes/helpers/FrmFieldsHelper.php:1424
3587
  msgid "Czech Republic"
3588
  msgstr ""
3589
 
3590
- #: classes/helpers/FrmFieldsHelper.php:1425
3591
  msgid "Denmark"
3592
  msgstr ""
3593
 
3594
- #: classes/helpers/FrmFieldsHelper.php:1426
3595
  msgid "Djibouti"
3596
  msgstr ""
3597
 
3598
- #: classes/helpers/FrmFieldsHelper.php:1427
3599
  msgid "Dominica"
3600
  msgstr ""
3601
 
3602
- #: classes/helpers/FrmFieldsHelper.php:1428
3603
  msgid "Dominican Republic"
3604
  msgstr ""
3605
 
3606
- #: classes/helpers/FrmFieldsHelper.php:1429
3607
  msgid "East Timor"
3608
  msgstr ""
3609
 
3610
- #: classes/helpers/FrmFieldsHelper.php:1430
3611
  msgid "Ecuador"
3612
  msgstr ""
3613
 
3614
- #: classes/helpers/FrmFieldsHelper.php:1431
3615
  msgid "Egypt"
3616
  msgstr ""
3617
 
3618
- #: classes/helpers/FrmFieldsHelper.php:1432
3619
  msgid "El Salvador"
3620
  msgstr ""
3621
 
3622
- #: classes/helpers/FrmFieldsHelper.php:1433
3623
  msgid "Equatorial Guinea"
3624
  msgstr ""
3625
 
3626
- #: classes/helpers/FrmFieldsHelper.php:1434
3627
  msgid "Eritrea"
3628
  msgstr ""
3629
 
3630
- #: classes/helpers/FrmFieldsHelper.php:1435
3631
  msgid "Estonia"
3632
  msgstr ""
3633
 
3634
- #: classes/helpers/FrmFieldsHelper.php:1436
3635
  msgid "Ethiopia"
3636
  msgstr ""
3637
 
3638
- #: classes/helpers/FrmFieldsHelper.php:1437
3639
  msgid "Falkland Islands (Malvinas)"
3640
  msgstr ""
3641
 
3642
- #: classes/helpers/FrmFieldsHelper.php:1438
3643
  msgid "Faroe Islands"
3644
  msgstr ""
3645
 
3646
- #: classes/helpers/FrmFieldsHelper.php:1439
3647
  msgid "Fiji"
3648
  msgstr ""
3649
 
3650
- #: classes/helpers/FrmFieldsHelper.php:1440
3651
  msgid "Finland"
3652
  msgstr ""
3653
 
3654
- #: classes/helpers/FrmFieldsHelper.php:1441
3655
  msgid "France"
3656
  msgstr ""
3657
 
3658
- #: classes/helpers/FrmFieldsHelper.php:1442
3659
  msgid "French Guiana"
3660
  msgstr ""
3661
 
3662
- #: classes/helpers/FrmFieldsHelper.php:1443
3663
  msgid "French Polynesia"
3664
  msgstr ""
3665
 
3666
- #: classes/helpers/FrmFieldsHelper.php:1444
3667
  msgid "French Southern Territories"
3668
  msgstr ""
3669
 
3670
- #: classes/helpers/FrmFieldsHelper.php:1445
3671
  msgid "Gabon"
3672
  msgstr ""
3673
 
3674
- #: classes/helpers/FrmFieldsHelper.php:1446
3675
  msgid "Gambia"
3676
  msgstr ""
3677
 
3678
- #: classes/helpers/FrmFieldsHelper.php:1447
3679
  msgid "Georgia"
3680
  msgstr ""
3681
 
3682
- #: classes/helpers/FrmFieldsHelper.php:1448
3683
  msgid "Germany"
3684
  msgstr ""
3685
 
3686
- #: classes/helpers/FrmFieldsHelper.php:1449
3687
  msgid "Ghana"
3688
  msgstr ""
3689
 
3690
- #: classes/helpers/FrmFieldsHelper.php:1450
3691
  msgid "Gibraltar"
3692
  msgstr ""
3693
 
3694
- #: classes/helpers/FrmFieldsHelper.php:1451
3695
  msgid "Greece"
3696
  msgstr ""
3697
 
3698
- #: classes/helpers/FrmFieldsHelper.php:1452
3699
  msgid "Greenland"
3700
  msgstr ""
3701
 
3702
- #: classes/helpers/FrmFieldsHelper.php:1453
3703
  msgid "Grenada"
3704
  msgstr ""
3705
 
3706
- #: classes/helpers/FrmFieldsHelper.php:1454
3707
  msgid "Guadeloupe"
3708
  msgstr ""
3709
 
3710
- #: classes/helpers/FrmFieldsHelper.php:1455
3711
  msgid "Guam"
3712
  msgstr ""
3713
 
3714
- #: classes/helpers/FrmFieldsHelper.php:1456
3715
  msgid "Guatemala"
3716
  msgstr ""
3717
 
3718
- #: classes/helpers/FrmFieldsHelper.php:1457
3719
  msgid "Guernsey"
3720
  msgstr ""
3721
 
3722
- #: classes/helpers/FrmFieldsHelper.php:1458
3723
  msgid "Guinea"
3724
  msgstr ""
3725
 
3726
- #: classes/helpers/FrmFieldsHelper.php:1459
3727
  msgid "Guinea-Bissau"
3728
  msgstr ""
3729
 
3730
- #: classes/helpers/FrmFieldsHelper.php:1460
3731
  msgid "Guyana"
3732
  msgstr ""
3733
 
3734
- #: classes/helpers/FrmFieldsHelper.php:1461
3735
  msgid "Haiti"
3736
  msgstr ""
3737
 
3738
- #: classes/helpers/FrmFieldsHelper.php:1462
3739
  msgid "Heard Island and McDonald Islands"
3740
  msgstr ""
3741
 
3742
- #: classes/helpers/FrmFieldsHelper.php:1463
3743
  msgid "Holy See"
3744
  msgstr ""
3745
 
3746
- #: classes/helpers/FrmFieldsHelper.php:1464
3747
  msgid "Honduras"
3748
  msgstr ""
3749
 
3750
- #: classes/helpers/FrmFieldsHelper.php:1465
3751
  msgid "Hong Kong"
3752
  msgstr ""
3753
 
3754
- #: classes/helpers/FrmFieldsHelper.php:1466
3755
  msgid "Hungary"
3756
  msgstr ""
3757
 
3758
- #: classes/helpers/FrmFieldsHelper.php:1467
3759
  msgid "Iceland"
3760
  msgstr ""
3761
 
3762
- #: classes/helpers/FrmFieldsHelper.php:1468
3763
  msgid "India"
3764
  msgstr ""
3765
 
3766
- #: classes/helpers/FrmFieldsHelper.php:1469
3767
  msgid "Indonesia"
3768
  msgstr ""
3769
 
3770
- #: classes/helpers/FrmFieldsHelper.php:1470
3771
  msgid "Iran"
3772
  msgstr ""
3773
 
3774
- #: classes/helpers/FrmFieldsHelper.php:1471
3775
  msgid "Iraq"
3776
  msgstr ""
3777
 
3778
- #: classes/helpers/FrmFieldsHelper.php:1472
3779
  msgid "Ireland"
3780
  msgstr ""
3781
 
3782
- #: classes/helpers/FrmFieldsHelper.php:1473
3783
  msgid "Israel"
3784
  msgstr ""
3785
 
3786
- #: classes/helpers/FrmFieldsHelper.php:1474
3787
  msgid "Isle of Man"
3788
  msgstr ""
3789
 
3790
- #: classes/helpers/FrmFieldsHelper.php:1475
3791
  msgid "Italy"
3792
  msgstr ""
3793
 
3794
- #: classes/helpers/FrmFieldsHelper.php:1476
3795
  msgid "Jamaica"
3796
  msgstr ""
3797
 
3798
- #: classes/helpers/FrmFieldsHelper.php:1477
3799
  msgid "Japan"
3800
  msgstr ""
3801
 
3802
- #: classes/helpers/FrmFieldsHelper.php:1478
3803
  msgid "Jersey"
3804
  msgstr ""
3805
 
3806
- #: classes/helpers/FrmFieldsHelper.php:1479
3807
  msgid "Jordan"
3808
  msgstr ""
3809
 
3810
- #: classes/helpers/FrmFieldsHelper.php:1480
3811
  msgid "Kazakhstan"
3812
  msgstr ""
3813
 
3814
- #: classes/helpers/FrmFieldsHelper.php:1481
3815
  msgid "Kenya"
3816
  msgstr ""
3817
 
3818
- #: classes/helpers/FrmFieldsHelper.php:1482
3819
  msgid "Kiribati"
3820
  msgstr ""
3821
 
3822
- #: classes/helpers/FrmFieldsHelper.php:1483
3823
  msgid "North Korea"
3824
  msgstr ""
3825
 
3826
- #: classes/helpers/FrmFieldsHelper.php:1484
3827
  msgid "South Korea"
3828
  msgstr ""
3829
 
3830
- #: classes/helpers/FrmFieldsHelper.php:1485
3831
  msgid "Kosovo"
3832
  msgstr ""
3833
 
3834
- #: classes/helpers/FrmFieldsHelper.php:1486
3835
  msgid "Kuwait"
3836
  msgstr ""
3837
 
3838
- #: classes/helpers/FrmFieldsHelper.php:1487
3839
  msgid "Kyrgyzstan"
3840
  msgstr ""
3841
 
3842
- #: classes/helpers/FrmFieldsHelper.php:1488
3843
  msgid "Laos"
3844
  msgstr ""
3845
 
3846
- #: classes/helpers/FrmFieldsHelper.php:1489
3847
  msgid "Latvia"
3848
  msgstr ""
3849
 
3850
- #: classes/helpers/FrmFieldsHelper.php:1490
3851
  msgid "Lebanon"
3852
  msgstr ""
3853
 
3854
- #: classes/helpers/FrmFieldsHelper.php:1491
3855
  msgid "Lesotho"
3856
  msgstr ""
3857
 
3858
- #: classes/helpers/FrmFieldsHelper.php:1492
3859
  msgid "Liberia"
3860
  msgstr ""
3861
 
3862
- #: classes/helpers/FrmFieldsHelper.php:1493
3863
  msgid "Libya"
3864
  msgstr ""
3865
 
3866
- #: classes/helpers/FrmFieldsHelper.php:1494
3867
  msgid "Liechtenstein"
3868
  msgstr ""
3869
 
3870
- #: classes/helpers/FrmFieldsHelper.php:1495
3871
  msgid "Lithuania"
3872
  msgstr ""
3873
 
3874
- #: classes/helpers/FrmFieldsHelper.php:1496
3875
  msgid "Luxembourg"
3876
  msgstr ""
3877
 
3878
- #: classes/helpers/FrmFieldsHelper.php:1497
3879
  msgid "Macao"
3880
  msgstr ""
3881
 
3882
- #: classes/helpers/FrmFieldsHelper.php:1498
3883
  msgid "Macedonia"
3884
  msgstr ""
3885
 
3886
- #: classes/helpers/FrmFieldsHelper.php:1499
3887
  msgid "Madagascar"
3888
  msgstr ""
3889
 
3890
- #: classes/helpers/FrmFieldsHelper.php:1500
3891
  msgid "Malawi"
3892
  msgstr ""
3893
 
3894
- #: classes/helpers/FrmFieldsHelper.php:1501
3895
  msgid "Malaysia"
3896
  msgstr ""
3897
 
3898
- #: classes/helpers/FrmFieldsHelper.php:1502
3899
  msgid "Maldives"
3900
  msgstr ""
3901
 
3902
- #: classes/helpers/FrmFieldsHelper.php:1503
3903
  msgid "Mali"
3904
  msgstr ""
3905
 
3906
- #: classes/helpers/FrmFieldsHelper.php:1504
3907
  msgid "Malta"
3908
  msgstr ""
3909
 
3910
- #: classes/helpers/FrmFieldsHelper.php:1505
3911
  msgid "Marshall Islands"
3912
  msgstr ""
3913
 
3914
- #: classes/helpers/FrmFieldsHelper.php:1506
3915
  msgid "Martinique"
3916
  msgstr ""
3917
 
3918
- #: classes/helpers/FrmFieldsHelper.php:1507
3919
  msgid "Mauritania"
3920
  msgstr ""
3921
 
3922
- #: classes/helpers/FrmFieldsHelper.php:1508
3923
  msgid "Mauritius"
3924
  msgstr ""
3925
 
3926
- #: classes/helpers/FrmFieldsHelper.php:1509
3927
  msgid "Mayotte"
3928
  msgstr ""
3929
 
3930
- #: classes/helpers/FrmFieldsHelper.php:1510
3931
  msgid "Mexico"
3932
  msgstr ""
3933
 
3934
- #: classes/helpers/FrmFieldsHelper.php:1511
3935
  msgid "Micronesia"
3936
  msgstr ""
3937
 
3938
- #: classes/helpers/FrmFieldsHelper.php:1512
3939
  msgid "Moldova"
3940
  msgstr ""
3941
 
3942
- #: classes/helpers/FrmFieldsHelper.php:1513
3943
  msgid "Monaco"
3944
  msgstr ""
3945
 
3946
- #: classes/helpers/FrmFieldsHelper.php:1514
3947
  msgid "Mongolia"
3948
  msgstr ""
3949
 
3950
- #: classes/helpers/FrmFieldsHelper.php:1515
3951
  msgid "Montenegro"
3952
  msgstr ""
3953
 
3954
- #: classes/helpers/FrmFieldsHelper.php:1516
3955
  msgid "Montserrat"
3956
  msgstr ""
3957
 
3958
- #: classes/helpers/FrmFieldsHelper.php:1517
3959
  msgid "Morocco"
3960
  msgstr ""
3961
 
3962
- #: classes/helpers/FrmFieldsHelper.php:1518
3963
  msgid "Mozambique"
3964
  msgstr ""
3965
 
3966
- #: classes/helpers/FrmFieldsHelper.php:1519
3967
  msgid "Myanmar"
3968
  msgstr ""
3969
 
3970
- #: classes/helpers/FrmFieldsHelper.php:1520
3971
  msgid "Namibia"
3972
  msgstr ""
3973
 
3974
- #: classes/helpers/FrmFieldsHelper.php:1521
3975
  msgid "Nauru"
3976
  msgstr ""
3977
 
3978
- #: classes/helpers/FrmFieldsHelper.php:1522
3979
  msgid "Nepal"
3980
  msgstr ""
3981
 
3982
- #: classes/helpers/FrmFieldsHelper.php:1523
3983
  msgid "Netherlands"
3984
  msgstr ""
3985
 
3986
- #: classes/helpers/FrmFieldsHelper.php:1524
3987
  msgid "New Caledonia"
3988
  msgstr ""
3989
 
3990
- #: classes/helpers/FrmFieldsHelper.php:1525
3991
  msgid "New Zealand"
3992
  msgstr ""
3993
 
3994
- #: classes/helpers/FrmFieldsHelper.php:1526
3995
  msgid "Nicaragua"
3996
  msgstr ""
3997
 
3998
- #: classes/helpers/FrmFieldsHelper.php:1527
3999
  msgid "Niger"
4000
  msgstr ""
4001
 
4002
- #: classes/helpers/FrmFieldsHelper.php:1528
4003
  msgid "Nigeria"
4004
  msgstr ""
4005
 
4006
- #: classes/helpers/FrmFieldsHelper.php:1529
4007
  msgid "Niue"
4008
  msgstr ""
4009
 
4010
- #: classes/helpers/FrmFieldsHelper.php:1530
4011
  msgid "Norfolk Island"
4012
  msgstr ""
4013
 
4014
- #: classes/helpers/FrmFieldsHelper.php:1531
4015
  msgid "Northern Mariana Islands"
4016
  msgstr ""
4017
 
4018
- #: classes/helpers/FrmFieldsHelper.php:1532
4019
  msgid "Norway"
4020
  msgstr ""
4021
 
4022
- #: classes/helpers/FrmFieldsHelper.php:1533
4023
  msgid "Oman"
4024
  msgstr ""
4025
 
4026
- #: classes/helpers/FrmFieldsHelper.php:1534
4027
  msgid "Pakistan"
4028
  msgstr ""
4029
 
4030
- #: classes/helpers/FrmFieldsHelper.php:1535
4031
  msgid "Palau"
4032
  msgstr ""
4033
 
4034
- #: classes/helpers/FrmFieldsHelper.php:1536
4035
  msgid "Palestine"
4036
  msgstr ""
4037
 
4038
- #: classes/helpers/FrmFieldsHelper.php:1537
4039
  msgid "Panama"
4040
  msgstr ""
4041
 
4042
- #: classes/helpers/FrmFieldsHelper.php:1538
4043
  msgid "Papua New Guinea"
4044
  msgstr ""
4045
 
4046
- #: classes/helpers/FrmFieldsHelper.php:1539
4047
  msgid "Paraguay"
4048
  msgstr ""
4049
 
4050
- #: classes/helpers/FrmFieldsHelper.php:1540
4051
  msgid "Peru"
4052
  msgstr ""
4053
 
4054
- #: classes/helpers/FrmFieldsHelper.php:1541
4055
  msgid "Philippines"
4056
  msgstr ""
4057
 
4058
- #: classes/helpers/FrmFieldsHelper.php:1542
4059
  msgid "Pitcairn"
4060
  msgstr ""
4061
 
4062
- #: classes/helpers/FrmFieldsHelper.php:1543
4063
  msgid "Poland"
4064
  msgstr ""
4065
 
4066
- #: classes/helpers/FrmFieldsHelper.php:1544
4067
  msgid "Portugal"
4068
  msgstr ""
4069
 
4070
- #: classes/helpers/FrmFieldsHelper.php:1545
4071
  msgid "Puerto Rico"
4072
  msgstr ""
4073
 
4074
- #: classes/helpers/FrmFieldsHelper.php:1546
4075
  msgid "Qatar"
4076
  msgstr ""
4077
 
4078
- #: classes/helpers/FrmFieldsHelper.php:1547
4079
  msgid "Reunion"
4080
  msgstr ""
4081
 
4082
- #: classes/helpers/FrmFieldsHelper.php:1548
4083
  msgid "Romania"
4084
  msgstr ""
4085
 
4086
- #: classes/helpers/FrmFieldsHelper.php:1549
4087
  msgid "Russia"
4088
  msgstr ""
4089
 
4090
- #: classes/helpers/FrmFieldsHelper.php:1550
4091
  msgid "Rwanda"
4092
  msgstr ""
4093
 
4094
- #: classes/helpers/FrmFieldsHelper.php:1551
4095
  msgid "Saint Barthelemy"
4096
  msgstr ""
4097
 
4098
- #: classes/helpers/FrmFieldsHelper.php:1552
4099
  msgid "Saint Helena, Ascension and Tristan da Cunha"
4100
  msgstr ""
4101
 
4102
- #: classes/helpers/FrmFieldsHelper.php:1553
4103
  msgid "Saint Kitts and Nevis"
4104
  msgstr ""
4105
 
4106
- #: classes/helpers/FrmFieldsHelper.php:1554
4107
  msgid "Saint Lucia"
4108
  msgstr ""
4109
 
4110
- #: classes/helpers/FrmFieldsHelper.php:1555
4111
  msgid "Saint Martin (French part)"
4112
  msgstr ""
4113
 
4114
- #: classes/helpers/FrmFieldsHelper.php:1556
4115
  msgid "Saint Pierre and Miquelon"
4116
  msgstr ""
4117
 
4118
- #: classes/helpers/FrmFieldsHelper.php:1557
4119
  msgid "Saint Vincent and the Grenadines"
4120
  msgstr ""
4121
 
4122
- #: classes/helpers/FrmFieldsHelper.php:1558
4123
  msgid "Samoa"
4124
  msgstr ""
4125
 
4126
- #: classes/helpers/FrmFieldsHelper.php:1559
4127
  msgid "San Marino"
4128
  msgstr ""
4129
 
4130
- #: classes/helpers/FrmFieldsHelper.php:1560
4131
  msgid "Sao Tome and Principe"
4132
  msgstr ""
4133
 
4134
- #: classes/helpers/FrmFieldsHelper.php:1561
4135
  msgid "Saudi Arabia"
4136
  msgstr ""
4137
 
4138
- #: classes/helpers/FrmFieldsHelper.php:1562
4139
  msgid "Senegal"
4140
  msgstr ""
4141
 
4142
- #: classes/helpers/FrmFieldsHelper.php:1563
4143
  msgid "Serbia"
4144
  msgstr ""
4145
 
4146
- #: classes/helpers/FrmFieldsHelper.php:1564
4147
  msgid "Seychelles"
4148
  msgstr ""
4149
 
4150
- #: classes/helpers/FrmFieldsHelper.php:1565
4151
  msgid "Sierra Leone"
4152
  msgstr ""
4153
 
4154
- #: classes/helpers/FrmFieldsHelper.php:1566
4155
  msgid "Singapore"
4156
  msgstr ""
4157
 
4158
- #: classes/helpers/FrmFieldsHelper.php:1567
4159
  msgid "Sint Maarten (Dutch part)"
4160
  msgstr ""
4161
 
4162
- #: classes/helpers/FrmFieldsHelper.php:1568
4163
  msgid "Slovakia"
4164
  msgstr ""
4165
 
4166
- #: classes/helpers/FrmFieldsHelper.php:1569
4167
  msgid "Slovenia"
4168
  msgstr ""
4169
 
4170
- #: classes/helpers/FrmFieldsHelper.php:1570
4171