Formidable Forms – Form Builder for WordPress - Version 4.07

Version Description

  • New: Use frm_inline_success for the form class in the customized HTML to move the success message next to the submit button. "frm_inline_success frm_alignright_success" will right-align the message.
  • Tweak: Improve the form listing page and entry listings page when nothing has been created.
  • Fix: Update the recaptcha for better reliability to catch more spam.
Download this release

Release Info

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

Code changes from version 4.06.03 to 4.07

classes/controllers/FrmAppController.php CHANGED
@@ -83,6 +83,7 @@ class FrmAppController {
83
  $white_pages = array(
84
  'formidable',
85
  'formidable-entries',
 
86
  'formidable-pro-upgrade',
87
  'formidable-addons',
88
  'formidable-import',
@@ -167,27 +168,23 @@ class FrmAppController {
167
  // Let people know reports and views exist.
168
  if ( ! FrmAppHelper::pro_is_installed() ) {
169
  $nav_items[] = array(
170
- 'link' => '',
171
  'label' => __( 'Views', 'formidable' ),
172
  'current' => array(),
173
- 'page' => '',
174
  'permission' => 'frm_view_entries',
175
  'atts' => array(
176
- 'class' => 'frm_show_upgrade frm_noallow',
177
- 'data-upgrade' => __( 'Views', 'formidable' ),
178
- 'data-medium' => 'views-nav',
179
  ),
180
  );
181
  $nav_items[] = array(
182
- 'link' => '',
183
  'label' => __( 'Reports', 'formidable' ),
184
- 'current' => array(),
185
- 'page' => '',
186
  'permission' => 'frm_view_entries',
187
  'atts' => array(
188
- 'class' => 'frm_show_upgrade frm_noallow',
189
- 'data-upgrade' => __( 'Reports', 'formidable' ),
190
- 'data-medium' => 'reports-nav',
191
  ),
192
  );
193
  }
83
  $white_pages = array(
84
  'formidable',
85
  'formidable-entries',
86
+ 'formidable-views',
87
  'formidable-pro-upgrade',
88
  'formidable-addons',
89
  'formidable-import',
168
  // Let people know reports and views exist.
169
  if ( ! FrmAppHelper::pro_is_installed() ) {
170
  $nav_items[] = array(
171
+ 'link' => admin_url( 'admin.php?page=formidable-views&frm-full=1&form=' . absint( $id ) ),
172
  'label' => __( 'Views', 'formidable' ),
173
  'current' => array(),
174
+ 'page' => 'formidable-views',
175
  'permission' => 'frm_view_entries',
176
  'atts' => array(
177
+ 'class' => 'frm_noallow',
 
 
178
  ),
179
  );
180
  $nav_items[] = array(
181
+ 'link' => admin_url( 'admin.php?page=formidable&frm_action=lite-reports&frm-full=1&form=' . absint( $id ) ),
182
  'label' => __( 'Reports', 'formidable' ),
183
+ 'current' => array( 'reports' ),
184
+ 'page' => 'formidable',
185
  'permission' => 'frm_view_entries',
186
  'atts' => array(
187
+ 'class' => 'frm_noallow',
 
 
188
  ),
189
  );
190
  }
classes/controllers/FrmEntriesController.php CHANGED
@@ -7,6 +7,10 @@ class FrmEntriesController {
7
 
8
  add_submenu_page( 'formidable', 'Formidable | ' . __( 'Entries', 'formidable' ), __( 'Entries', 'formidable' ), 'frm_view_entries', 'formidable-entries', 'FrmEntriesController::route' );
9
 
 
 
 
 
10
  if ( FrmAppHelper::is_admin_page( 'formidable-entries' ) ) {
11
  self::load_manage_entries_hooks();
12
  }
7
 
8
  add_submenu_page( 'formidable', 'Formidable | ' . __( 'Entries', 'formidable' ), __( 'Entries', 'formidable' ), 'frm_view_entries', 'formidable-entries', 'FrmEntriesController::route' );
9
 
10
+ if ( ! FrmAppHelper::pro_is_installed() ) {
11
+ add_submenu_page( 'formidable', 'Formidable | ' . __( 'Views', 'formidable' ), __( 'Views', 'formidable' ), 'frm_view_entries', 'formidable-views', 'FrmFormsController::no_views' );
12
+ }
13
+
14
  if ( FrmAppHelper::is_admin_page( 'formidable-entries' ) ) {
15
  self::load_manage_entries_hooks();
16
  }
classes/controllers/FrmFormsController.php CHANGED
@@ -1386,6 +1386,10 @@ class FrmFormsController {
1386
  case 'settings':
1387
  case 'update_settings':
1388
  return self::$action( $vars );
 
 
 
 
1389
  default:
1390
  do_action( 'frm_form_action_' . $action );
1391
  if ( apply_filters( 'frm_form_stop_action_' . $action, false ) ) {
@@ -1422,6 +1426,31 @@ class FrmFormsController {
1422
  include( FrmAppHelper::plugin_path() . '/classes/views/frm-forms/add_form_style_options.php' );
1423
  }
1424
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1425
  /* FRONT-END FORMS */
1426
  public static function admin_bar_css() {
1427
  if ( is_admin() || ! current_user_can( 'frm_edit_forms' ) ) {
@@ -1878,14 +1907,19 @@ class FrmFormsController {
1878
  }
1879
 
1880
  /**
1881
- * @return string - 'before' or 'after'
1882
  *
1883
  * @since 4.05.02
1884
  */
1885
  private static function message_placement( $form, $message ) {
1886
  $place = 'before';
1887
- if ( ! empty( $message ) && isset( $form->options['form_class'] ) && strpos( $form->options['form_class'], 'frm_below_success' ) !== false ) {
1888
- $place = 'after';
 
 
 
 
 
1889
  }
1890
 
1891
  /**
1386
  case 'settings':
1387
  case 'update_settings':
1388
  return self::$action( $vars );
1389
+ case 'lite-reports':
1390
+ return self::no_reports( $vars );
1391
+ case 'views':
1392
+ return self::no_views( $vars );
1393
  default:
1394
  do_action( 'frm_form_action_' . $action );
1395
  if ( apply_filters( 'frm_form_stop_action_' . $action, false ) ) {
1426
  include( FrmAppHelper::plugin_path() . '/classes/views/frm-forms/add_form_style_options.php' );
1427
  }
1428
 
1429
+ /**
1430
+ * Add education about views.
1431
+ *
1432
+ * @since 4.07
1433
+ */
1434
+ public static function no_views( $values = array() ) {
1435
+ FrmAppHelper::include_svg();
1436
+ $id = FrmAppHelper::get_param( 'form', '', 'get', 'absint' );
1437
+ $form = $id ? FrmForm::getOne( $id ) : false;
1438
+
1439
+ include FrmAppHelper::plugin_path() . '/classes/views/shared/views-info.php';
1440
+ }
1441
+
1442
+ /**
1443
+ * Add education about reports.
1444
+ *
1445
+ * @since 4.07
1446
+ */
1447
+ public static function no_reports( $values = array() ) {
1448
+ $id = FrmAppHelper::get_param( 'form', '', 'get', 'absint' );
1449
+ $form = $id ? FrmForm::getOne( $id ) : false;
1450
+
1451
+ include FrmAppHelper::plugin_path() . '/classes/views/shared/reports-info.php';
1452
+ }
1453
+
1454
  /* FRONT-END FORMS */
1455
  public static function admin_bar_css() {
1456
  if ( is_admin() || ! current_user_can( 'frm_edit_forms' ) ) {
1907
  }
1908
 
1909
  /**
1910
+ * @return string - 'before', 'after', or 'submit'
1911
  *
1912
  * @since 4.05.02
1913
  */
1914
  private static function message_placement( $form, $message ) {
1915
  $place = 'before';
1916
+
1917
+ if ( $message && isset( $form->options['form_class'] ) ) {
1918
+ if ( strpos( $form->options['form_class'], 'frm_below_success' ) !== false ) {
1919
+ $place = 'after';
1920
+ } elseif ( strpos( $form->options['form_class'], 'frm_inline_success' ) !== false ) {
1921
+ $place = 'submit';
1922
+ }
1923
  }
1924
 
1925
  /**
classes/helpers/FrmAppHelper.php CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
11
  /**
12
  * @since 2.0
13
  */
14
- public static $plug_version = '4.06.03';
15
 
16
  /**
17
  * @since 1.07.02
@@ -115,6 +115,27 @@ class FrmAppHelper {
115
  return self::make_affiliate_url( $link );
116
  }
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  /**
119
  * Get the Formidable settings
120
  *
@@ -899,7 +920,8 @@ class FrmAppHelper {
899
  * @since 3.0
900
  */
901
  public static function add_new_item_link( $atts ) {
902
- if ( isset( $atts['new_link'] ) && ! empty( $atts['new_link'] ) ) { ?>
 
903
  <a href="<?php echo esc_url( $atts['new_link'] ); ?>" class="button button-primary frm-button-primary frm-with-plus">
904
  <?php self::icon_by_class( 'frmfont frm_plus_icon frm_svg15' ); ?>
905
  <?php esc_html_e( 'Add New', 'formidable' ); ?>
@@ -1157,6 +1179,19 @@ class FrmAppHelper {
1157
  <?php
1158
  }
1159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1160
  /**
1161
  * @param string|array $capability
1162
  */
@@ -1172,7 +1207,7 @@ class FrmAppHelper {
1172
  foreach ( $editable_roles as $role => $details ) {
1173
  $name = translate_user_role( $details['name'] );
1174
  ?>
1175
- <option value="<?php echo esc_attr( $role ); ?>" <?php echo in_array( $role, (array) $capability ) ? ' selected="selected"' : ''; ?>><?php echo esc_attr( $name ); ?> </option>
1176
  <?php
1177
  unset( $role, $details );
1178
  }
11
  /**
12
  * @since 2.0
13
  */
14
+ public static $plug_version = '4.07';
15
 
16
  /**
17
  * @since 1.07.02
115
  return self::make_affiliate_url( $link );
116
  }
117
 
118
+ /**
119
+ * @since 4.07
120
+ */
121
+ public static function renewal_message() {
122
+ if ( ! FrmAddonsController::is_license_expired() ) {
123
+ return;
124
+ }
125
+ ?>
126
+ <div class="frm_error_style" style="text-align:left">
127
+ <?php self::icon_by_class( 'frmfont frm_alert_icon' ); ?>
128
+ &nbsp;
129
+ <?php esc_attr_e( 'Your account has expired', 'formidable' ); ?>
130
+ <div style="float:right">
131
+ <a href="<?php echo esc_url( self::admin_upgrade_link( 'form-renew', 'account/downloads/' ) ); ?>">
132
+ Renew Now
133
+ </a>
134
+ </div>
135
+ </div>
136
+ <?php
137
+ }
138
+
139
  /**
140
  * Get the Formidable settings
141
  *
920
  * @since 3.0
921
  */
922
  public static function add_new_item_link( $atts ) {
923
+ if ( isset( $atts['new_link'] ) && ! empty( $atts['new_link'] ) ) {
924
+ ?>
925
  <a href="<?php echo esc_url( $atts['new_link'] ); ?>" class="button button-primary frm-button-primary frm-with-plus">
926
  <?php self::icon_by_class( 'frmfont frm_plus_icon frm_svg15' ); ?>
927
  <?php esc_html_e( 'Add New', 'formidable' ); ?>
1179
  <?php
1180
  }
1181
 
1182
+ /**
1183
+ * @since 4.07
1184
+ * @param array|string $selected
1185
+ * @param string $current
1186
+ */
1187
+ private static function selected( $selected, $current ) {
1188
+ if ( is_callable( 'FrmProAppHelper::selected' ) ) {
1189
+ FrmProAppHelper::selected( $selected, $current );
1190
+ } else {
1191
+ selected( in_array( $current, (array) $selected, true ) );
1192
+ }
1193
+ }
1194
+
1195
  /**
1196
  * @param string|array $capability
1197
  */
1207
  foreach ( $editable_roles as $role => $details ) {
1208
  $name = translate_user_role( $details['name'] );
1209
  ?>
1210
+ <option value="<?php echo esc_attr( $role ); ?>" <?php self::selected( $capability, $role ); ?>><?php echo esc_attr( $name ); ?> </option>
1211
  <?php
1212
  unset( $role, $details );
1213
  }
classes/helpers/FrmEntriesListHelper.php CHANGED
@@ -5,6 +5,11 @@ class FrmEntriesListHelper extends FrmListHelper {
5
  protected $item;
6
  protected $field;
7
 
 
 
 
 
 
8
  public function prepare_items() {
9
  global $per_page;
10
 
@@ -70,6 +75,7 @@ class FrmEntriesListHelper extends FrmListHelper {
70
  $limit = FrmDb::esc_limit( $start . ',' . $per_page );
71
  $this->items = FrmEntry::getAll( $s_query, $order, $limit, true, $join_form_in_query );
72
  $total_items = FrmEntry::getRecordCount( $s_query );
 
73
 
74
  $this->set_pagination_args(
75
  array(
5
  protected $item;
6
  protected $field;
7
 
8
+ /**
9
+ * @since 4.07
10
+ */
11
+ public $total_items = 0;
12
+
13
  public function prepare_items() {
14
  global $per_page;
15
 
75
  $limit = FrmDb::esc_limit( $start . ',' . $per_page );
76
  $this->items = FrmEntry::getAll( $s_query, $order, $limit, true, $join_form_in_query );
77
  $total_items = FrmEntry::getRecordCount( $s_query );
78
+ $this->total_items = $total_items;
79
 
80
  $this->set_pagination_args(
81
  array(
classes/helpers/FrmFormsListHelper.php CHANGED
@@ -6,6 +6,8 @@ if ( ! defined( 'ABSPATH' ) ) {
6
  class FrmFormsListHelper extends FrmListHelper {
7
  public $status = '';
8
 
 
 
9
  public function __construct( $args ) {
10
  $this->status = self::get_param( array( 'param' => 'form_type' ) );
11
 
@@ -88,6 +90,7 @@ class FrmFormsListHelper extends FrmListHelper {
88
 
89
  $this->items = FrmForm::getAll( $s_query, $orderby . ' ' . $order, $start . ',' . $per_page );
90
  $total_items = FrmDb::get_count( 'frm_forms', $s_query );
 
91
 
92
  $this->set_pagination_args(
93
  array(
@@ -98,24 +101,19 @@ class FrmFormsListHelper extends FrmListHelper {
98
  }
99
 
100
  public function no_items() {
101
- echo '<p>';
102
  if ( $this->status === 'trash' ) {
 
103
  esc_html_e( 'No forms found in the trash.', 'formidable' );
104
  ?>
105
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable' ) ); ?>">
106
  <?php esc_html_e( 'See all forms.', 'formidable' ); ?>
107
  </a>
108
  <?php
 
109
  } else {
110
-
111
- esc_html_e( 'No Forms Found.', 'formidable' );
112
- ?>
113
- <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable&frm_action=add_new' ) ); ?>">
114
- <?php esc_html_e( 'Add New', 'formidable' ); ?>
115
- </a>
116
- <?php
117
  }
118
- echo '</p>';
119
  }
120
 
121
  public function get_bulk_actions() {
6
  class FrmFormsListHelper extends FrmListHelper {
7
  public $status = '';
8
 
9
+ public $total_items = 0;
10
+
11
  public function __construct( $args ) {
12
  $this->status = self::get_param( array( 'param' => 'form_type' ) );
13
 
90
 
91
  $this->items = FrmForm::getAll( $s_query, $orderby . ' ' . $order, $start . ',' . $per_page );
92
  $total_items = FrmDb::get_count( 'frm_forms', $s_query );
93
+ $this->total_items = $total_items;
94
 
95
  $this->set_pagination_args(
96
  array(
101
  }
102
 
103
  public function no_items() {
 
104
  if ( $this->status === 'trash' ) {
105
+ echo '<p>';
106
  esc_html_e( 'No forms found in the trash.', 'formidable' );
107
  ?>
108
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable' ) ); ?>">
109
  <?php esc_html_e( 'See all forms.', 'formidable' ); ?>
110
  </a>
111
  <?php
112
+ echo '</p>';
113
  } else {
114
+ $title = __( 'No Forms Found', 'formidable' );
115
+ include FrmAppHelper::plugin_path() . '/classes/views/frm-forms/_no_forms.php';
 
 
 
 
 
116
  }
 
117
  }
118
 
119
  public function get_bulk_actions() {
classes/helpers/FrmListHelper.php CHANGED
@@ -13,6 +13,11 @@ class FrmListHelper {
13
  */
14
  public $items;
15
 
 
 
 
 
 
16
  /**
17
  * Various information about the current table
18
  *
@@ -945,6 +950,10 @@ class FrmListHelper {
945
  $class = "class='" . esc_attr( join( ' ', $class ) ) . "'";
946
  }
947
 
 
 
 
 
948
  echo "<$tag $scope $id $class>$column_display_name</$tag>"; // WPCS: XSS ok.
949
  }
950
  }
@@ -961,22 +970,25 @@ class FrmListHelper {
961
  $this->display_tablenav( 'top' );
962
  ?>
963
  <table class="wp-list-table <?php echo esc_attr( implode( ' ', $this->get_table_classes() ) ); ?>">
 
964
  <thead>
965
  <tr>
966
  <?php $this->print_column_headers(); ?>
967
  </tr>
968
  </thead>
 
969
 
970
  <tbody id="the-list"<?php echo( $singular ? " data-wp-lists='list:" . esc_attr( $singular ) . "'" : '' ); // WPCS: XSS ok. ?>>
971
  <?php $this->display_rows_or_placeholder(); ?>
972
  </tbody>
973
 
 
974
  <tfoot>
975
  <tr>
976
  <?php $this->print_column_headers( false ); ?>
977
  </tr>
978
  </tfoot>
979
-
980
  </table>
981
  <?php
982
  $this->display_tablenav( 'bottom' );
@@ -1005,6 +1017,13 @@ class FrmListHelper {
1005
  protected function display_tablenav( $which ) {
1006
  if ( 'top' == $which ) {
1007
  wp_nonce_field( 'bulk-' . $this->_args['plural'] );
 
 
 
 
 
 
 
1008
  }
1009
  ?>
1010
  <div class="tablenav <?php echo esc_attr( $which ); ?>">
@@ -1022,6 +1041,16 @@ class FrmListHelper {
1022
  <?php
1023
  }
1024
 
 
 
 
 
 
 
 
 
 
 
1025
  /**
1026
  * Extra controls to be displayed between bulk actions and pagination
1027
  *
13
  */
14
  public $items;
15
 
16
+ /**
17
+ * @since 4.07
18
+ */
19
+ public $total_items = false;
20
+
21
  /**
22
  * Various information about the current table
23
  *
950
  $class = "class='" . esc_attr( join( ' ', $class ) ) . "'";
951
  }
952
 
953
+ if ( ! $this->has_min_items() && ! $with_id ) {
954
+ // Hide the labels but show the border.
955
+ $column_display_name = '';
956
+ }
957
  echo "<$tag $scope $id $class>$column_display_name</$tag>"; // WPCS: XSS ok.
958
  }
959
  }
970
  $this->display_tablenav( 'top' );
971
  ?>
972
  <table class="wp-list-table <?php echo esc_attr( implode( ' ', $this->get_table_classes() ) ); ?>">
973
+ <?php if ( $this->has_min_items( 1 ) ) { ?>
974
  <thead>
975
  <tr>
976
  <?php $this->print_column_headers(); ?>
977
  </tr>
978
  </thead>
979
+ <?php } ?>
980
 
981
  <tbody id="the-list"<?php echo( $singular ? " data-wp-lists='list:" . esc_attr( $singular ) . "'" : '' ); // WPCS: XSS ok. ?>>
982
  <?php $this->display_rows_or_placeholder(); ?>
983
  </tbody>
984
 
985
+ <?php if ( $this->has_min_items( 1 ) ) { ?>
986
  <tfoot>
987
  <tr>
988
  <?php $this->print_column_headers( false ); ?>
989
  </tr>
990
  </tfoot>
991
+ <?php } ?>
992
  </table>
993
  <?php
994
  $this->display_tablenav( 'bottom' );
1017
  protected function display_tablenav( $which ) {
1018
  if ( 'top' == $which ) {
1019
  wp_nonce_field( 'bulk-' . $this->_args['plural'] );
1020
+ if ( ! $this->has_min_items( 1 ) ) {
1021
+ // Don't show bulk actions if no items.
1022
+ return;
1023
+ }
1024
+ } elseif ( ! $this->has_min_items() ) {
1025
+ // don't show the bulk actions when there aren't many rows.
1026
+ return;
1027
  }
1028
  ?>
1029
  <div class="tablenav <?php echo esc_attr( $which ); ?>">
1041
  <?php
1042
  }
1043
 
1044
+ /**
1045
+ * Use this to exclude the footer labels and bulk items.
1046
+ * When close together, it feels like duplicates.
1047
+ *
1048
+ * @since 4.07
1049
+ */
1050
+ protected function has_min_items( $limit = 5 ) {
1051
+ return $this->has_items() && ( $this->total_items === false || $this->total_items >= $limit );
1052
+ }
1053
+
1054
  /**
1055
  * Extra controls to be displayed between bulk actions and pagination
1056
  *
classes/models/FrmDb.php CHANGED
@@ -188,7 +188,7 @@ class FrmDb {
188
  public static function get_count( $table, $where = array(), $args = array() ) {
189
  $count = self::get_var( $table, $where, 'COUNT(*)', $args );
190
 
191
- return $count;
192
  }
193
 
194
  /**
188
  public static function get_count( $table, $where = array(), $args = array() ) {
189
  $count = self::get_var( $table, $where, 'COUNT(*)', $args );
190
 
191
+ return (int) $count;
192
  }
193
 
194
  /**
classes/models/fields/FrmFieldCaptcha.php CHANGED
@@ -131,55 +131,64 @@ class FrmFieldCaptcha extends FrmFieldType {
131
  return ( $frm_settings->re_type == 'invisible' ) ? 'invisible' : $captcha_size;
132
  }
133
 
134
- public function validate( $args ) {
135
- $errors = array();
136
-
137
- if ( ! $this->should_validate() ) {
138
- return $errors;
139
- }
140
-
141
- if ( ! isset( $_POST['g-recaptcha-response'] ) ) {
142
- // If captcha is missing, check if it was already verified.
143
- $checked = FrmAppHelper::get_param( 'recaptcha_checked', '', 'post', 'sanitize_text_field' );
144
- if ( ! isset( $_POST['recaptcha_checked'] ) || ! wp_verify_nonce( $checked, 'frm_ajax' ) ) {
145
- // There was no captcha submitted.
146
- $errors[ 'field' . $args['id'] ] = __( 'The captcha is missing from this form', 'formidable' );
147
- }
148
-
149
- return $errors;
150
- }
151
-
152
  $frm_settings = FrmAppHelper::get_settings();
153
-
154
- $resp = $this->send_api_check( $frm_settings );
155
- $response = json_decode( wp_remote_retrieve_body( $resp ), true );
156
 
157
  if ( isset( $response['success'] ) && ! $response['success'] ) {
158
  // What happens when the CAPTCHA was entered incorrectly
159
  $invalid_message = FrmField::get_option( $this->field, 'invalid' );
160
  $errors[ 'field' . $args['id'] ] = ( $invalid_message == '' ? $frm_settings->re_msg : $invalid_message );
161
  } elseif ( is_wp_error( $resp ) ) {
162
- $error_string = $resp->get_error_message();
163
- $errors[ 'field' . $args['id'] ] = __( 'There was a problem verifying your recaptcha', 'formidable' );
164
  $errors[ 'field' . $args['id'] ] .= ' ' . $error_string;
165
  }
166
 
167
  return $errors;
168
  }
169
 
170
- protected function should_validate() {
171
- $is_hidden_field = apply_filters( 'frm_is_field_hidden', false, $this->field, wp_unslash( $_POST ) ); // WPCS: CSRF ok.
172
- if ( FrmAppHelper::is_admin() || $is_hidden_field ) {
173
- return false;
 
 
 
174
  }
175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  $frm_settings = FrmAppHelper::get_settings();
177
- if ( empty( $frm_settings->pubkey ) ) {
178
- // don't require the captcha if it shouldn't be shown
 
 
 
 
179
  return false;
180
  }
181
 
182
- return true;
 
183
  }
184
 
185
  protected function send_api_check( $frm_settings ) {
131
  return ( $frm_settings->re_type == 'invisible' ) ? 'invisible' : $captcha_size;
132
  }
133
 
134
+ /**
135
+ * @since 4.07
136
+ * @param array $args
137
+ * @return array
138
+ */
139
+ protected function validate_against_api( $args ) {
140
+ $errors = array();
 
 
 
 
 
 
 
 
 
 
 
141
  $frm_settings = FrmAppHelper::get_settings();
142
+ $resp = $this->send_api_check( $frm_settings );
143
+ $response = json_decode( wp_remote_retrieve_body( $resp ), true );
 
144
 
145
  if ( isset( $response['success'] ) && ! $response['success'] ) {
146
  // What happens when the CAPTCHA was entered incorrectly
147
  $invalid_message = FrmField::get_option( $this->field, 'invalid' );
148
  $errors[ 'field' . $args['id'] ] = ( $invalid_message == '' ? $frm_settings->re_msg : $invalid_message );
149
  } elseif ( is_wp_error( $resp ) ) {
150
+ $error_string = $resp->get_error_message();
151
+ $errors[ 'field' . $args['id'] ] = __( 'There was a problem verifying your recaptcha', 'formidable' );
152
  $errors[ 'field' . $args['id'] ] .= ' ' . $error_string;
153
  }
154
 
155
  return $errors;
156
  }
157
 
158
+ /**
159
+ * @param array $args
160
+ * @return array
161
+ */
162
+ public function validate( $args ) {
163
+ if ( ! $this->should_validate() ) {
164
+ return array();
165
  }
166
 
167
+ if ( ! isset( $_POST['g-recaptcha-response'] ) ) {
168
+ // There was no captcha submitted.
169
+ return array( 'field' . $args['id'] => __( 'The captcha is missing from this form', 'formidable' ) );
170
+ }
171
+
172
+ return $this->validate_against_api( $args );
173
+ }
174
+
175
+ /**
176
+ * @since 4.07
177
+ * @return bool
178
+ */
179
+ private function should_show_captcha() {
180
  $frm_settings = FrmAppHelper::get_settings();
181
+ return ! empty( $frm_settings->pubkey );
182
+ }
183
+
184
+ protected function should_validate() {
185
+ $is_hidden_field = apply_filters( 'frm_is_field_hidden', false, $this->field, wp_unslash( $_POST ) ); // WPCS: CSRF ok.
186
+ if ( FrmAppHelper::is_admin() || $is_hidden_field ) {
187
  return false;
188
  }
189
 
190
+ // don't require the captcha if it shouldn't be shown
191
+ return $this->should_show_captcha();
192
  }
193
 
194
  protected function send_api_check( $frm_settings ) {
classes/views/frm-entries/form.php CHANGED
@@ -73,11 +73,24 @@ if ( isset( $frm_vars['collapse_div'] ) && $frm_vars['collapse_div'] ) {
73
  echo FrmFormsHelper::replace_shortcodes( $values['after_html'], $form ); // WPCS: XSS ok.
74
 
75
  if ( FrmForm::show_submit( $form ) ) {
76
-
77
  $copy_values = $values;
78
  unset( $copy_values['fields'] );
79
 
80
- FrmFormsHelper::get_custom_submit( $copy_values['submit_html'], $form, $submit, $form_action, $copy_values );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  }
82
  ?>
83
  <div class="frm_verify" aria-hidden="true">
73
  echo FrmFormsHelper::replace_shortcodes( $values['after_html'], $form ); // WPCS: XSS ok.
74
 
75
  if ( FrmForm::show_submit( $form ) ) {
 
76
  $copy_values = $values;
77
  unset( $copy_values['fields'] );
78
 
79
+ if ( isset( $form->options['form_class'] ) && strpos( $form->options['form_class'], 'frm_inline_success' ) !== false ) {
80
+ ob_start();
81
+ ob_implicit_flush( false );
82
+ FrmFormsHelper::get_custom_submit( $copy_values['submit_html'], $form, $submit, $form_action, $copy_values );
83
+ $clip = ob_get_clean();
84
+
85
+ ob_start();
86
+ ob_implicit_flush( false );
87
+ include FrmAppHelper::plugin_path() . '/classes/views/frm-entries/errors.php';
88
+ $message = ob_get_clean();
89
+
90
+ echo preg_replace( '~\<\/div\>(?!.*\<\/div\>)~', $message . '</div>', $clip ); // WPCS: XSS ok.
91
+ } else {
92
+ FrmFormsHelper::get_custom_submit( $copy_values['submit_html'], $form, $submit, $form_action, $copy_values );
93
+ }
94
  }
95
  ?>
96
  <div class="frm_verify" aria-hidden="true">
classes/views/frm-entries/list.php CHANGED
@@ -46,6 +46,7 @@
46
  <div class="clear"></div>
47
  <?php require( FrmAppHelper::plugin_path() . '/classes/views/shared/errors.php' ); ?>
48
  <?php $wp_list_table->display(); ?>
 
49
  </form>
50
  </div>
51
  <?php if ( $form ) { ?>
46
  <div class="clear"></div>
47
  <?php require( FrmAppHelper::plugin_path() . '/classes/views/shared/errors.php' ); ?>
48
  <?php $wp_list_table->display(); ?>
49
+ <?php FrmAppHelper::renewal_message(); ?>
50
  </form>
51
  </div>
52
  <?php if ( $form ) { ?>
classes/views/frm-entries/new.php CHANGED
@@ -8,15 +8,15 @@
8
 
9
  $message_placement = isset( $message_placement ) ? $message_placement : 'before';
10
 
11
- if ( $message_placement !== 'after' ) {
12
- include( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/errors.php' );
13
  }
14
 
15
  $form_action = 'create';
16
- require( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/form.php' );
17
 
18
  if ( $message_placement === 'after' ) {
19
- include( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/errors.php' );
20
  }
21
 
22
  if ( ! isset( $include_form_tag ) || $include_form_tag ) {
8
 
9
  $message_placement = isset( $message_placement ) ? $message_placement : 'before';
10
 
11
+ if ( ! in_array( $message_placement, array( 'after', 'submit' ), true ) ) {
12
+ include FrmAppHelper::plugin_path() . '/classes/views/frm-entries/errors.php';
13
  }
14
 
15
  $form_action = 'create';
16
+ require FrmAppHelper::plugin_path() . '/classes/views/frm-entries/form.php';
17
 
18
  if ( $message_placement === 'after' ) {
19
+ include FrmAppHelper::plugin_path() . '/classes/views/frm-entries/errors.php';
20
  }
21
 
22
  if ( ! isset( $include_form_tag ) || $include_form_tag ) {
classes/views/frm-entries/no_entries.php CHANGED
@@ -6,20 +6,22 @@
6
  printf(
7
  /* translators: %1$s: Start link HTML, %2$s: End link HTML, %3$s: Line break HTML */
8
  esc_html__( 'If you would like to save entries in this form, go to the %1$sform Settings%2$s page %3$s and uncheck the "Do not store any entries submitted from this form" box.', 'formidable' ),
9
- '<a href="' . esc_url( admin_url( 'admin.php?page=formidable&frm_action=settings&id=' . $form->id ) ) . '">',
10
  '</a>',
11
  '</br>'
12
  );
13
  ?>
14
  </p>
15
  <?php } elseif ( $form || $has_form ) { ?>
 
 
16
  <div class="frm_no_entries_header">
17
  <?php
18
  if ( $form ) {
19
  /* translators: %s: The form name */
20
  printf( esc_html__( 'No Entries for form: %s', 'formidable' ), esc_html( $form->name ) );
21
  } else {
22
- esc_html_e( 'No Entries found.', 'formidable' );
23
  }
24
  ?>
25
  </div>
@@ -33,17 +35,12 @@
33
  );
34
  ?>
35
  </p>
36
- <?php } else { ?>
37
- <div class="frm_no_entries_header"><?php esc_html_e( 'You have not created any forms yet.', 'formidable' ); ?></div>
38
- <p class="frm_no_entries_text">
39
  <?php
40
- printf(
41
- /* translators: %1$s: Start link HTML, %2$s: End link HTML, %3$s: Line break HTML */
42
- esc_html__( 'To view entries, you must first %1$sbuild a form%2$s', 'formidable' ),
43
- '<a href="' . esc_url( admin_url( 'admin.php?page=formidable&frm_action=add_new' ) ) . '">',
44
- '</a>'
45
- );
46
- ?>
47
- </p>
48
- <?php } ?>
49
  </div>
6
  printf(
7
  /* translators: %1$s: Start link HTML, %2$s: End link HTML, %3$s: Line break HTML */
8
  esc_html__( 'If you would like to save entries in this form, go to the %1$sform Settings%2$s page %3$s and uncheck the "Do not store any entries submitted from this form" box.', 'formidable' ),
9
+ '<a href="' . esc_url( admin_url( 'admin.php?page=formidable&frm_action=settings&id=' . absint( $form->id ) ) ) . '">',
10
  '</a>',
11
  '</br>'
12
  );
13
  ?>
14
  </p>
15
  <?php } elseif ( $form || $has_form ) { ?>
16
+ <div class="frmcenter">
17
+ <svg width="450" height="308" viewBox="0 0 450 308" fill="none" xmlns="http://www.w3.org/2000/svg"><g filter="url(#filter0_d)"><rect x="118" y="28" width="312" height="205" rx="10.1" fill="#fff"/></g><rect x="174" y="84" width="202" height="15" rx="2" fill="#8F99A6" fill-opacity=".2"/><rect x="174" y="69" width="179.1" height="9.4" rx="4.7" fill="#9EA9B8" fill-opacity=".7"/><rect x="174" y="132.2" width="202" height="15" rx="2" fill="#8F99A6" fill-opacity=".2"/><rect x="174" y="117" width="148" height="10" rx="5" fill="#9EA9B8" fill-opacity=".7"/><rect x="174" y="183.2" width="202" height="15" rx="2" fill="#8F99A6" fill-opacity=".2"/><rect x="174" y="168.2" width="179.1" height="9.4" rx="4.7" fill="#9EA9B8" fill-opacity=".7"/><ellipse cx="137" cy="42.2" rx="4" ry="3.8" fill="#F54242"/><ellipse cx="151" cy="42.2" rx="4" ry="3.8" fill="#F8E434"/><ellipse cx="165" cy="42.2" rx="4" ry="3.8" fill="#ADD779"/><g filter="url(#filter1_d)"><rect x="25" y="62" width="312" height="205" rx="10.1" fill="#fff"/></g><rect x="81" y="118" width="202" height="15" rx="2" fill="#8F99A6" fill-opacity=".2"/><rect x="81" y="103" width="179.1" height="9.4" rx="4.7" fill="#9EA9B8" fill-opacity=".7"/><rect x="81" y="166.2" width="202" height="15" rx="2" fill="#8F99A6" fill-opacity=".2"/><rect x="81" y="151" width="148" height="10" rx="5" fill="#9EA9B8" fill-opacity=".7"/><rect x="81" y="217.2" width="202" height="15" rx="2" fill="#8F99A6" fill-opacity=".2"/><rect x="81" y="202.2" width="179.1" height="9.4" rx="4.7" fill="#9EA9B8" fill-opacity=".7"/><ellipse cx="44" cy="76.2" rx="4" ry="3.8" fill="#F54242"/><ellipse cx="58" cy="76.2" rx="4" ry="3.8" fill="#F8E434"/><ellipse cx="72" cy="76.2" rx="4" ry="3.8" fill="#ADD779"/><defs><filter id="filter0_d" x="93.6" y=".5" width="360.9" height="253.9" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-3.1"/><feGaussianBlur stdDeviation="12.2"/><feColorMatrix values="0 0 0 0 0.164706 0 0 0 0 0.223529 0 0 0 0 0.294118 0 0 0 0.21 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter1_d" x=".6" y="34.5" width="360.9" height="253.9" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-3.1"/><feGaussianBlur stdDeviation="12.2"/><feColorMatrix values="0 0 0 0 0.164706 0 0 0 0 0.223529 0 0 0 0 0.294118 0 0 0 0.21 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter></defs></svg>
18
  <div class="frm_no_entries_header">
19
  <?php
20
  if ( $form ) {
21
  /* translators: %s: The form name */
22
  printf( esc_html__( 'No Entries for form: %s', 'formidable' ), esc_html( $form->name ) );
23
  } else {
24
+ esc_html_e( 'No Entries found', 'formidable' );
25
  }
26
  ?>
27
  </div>
35
  );
36
  ?>
37
  </p>
38
+ </div>
 
 
39
  <?php
40
+ } else {
41
+ $title = __( 'You have not created any forms yet', 'formidable' );
42
+ $info = __( 'Start collecting leads and data today.', 'formidable' );
43
+ include FrmAppHelper::plugin_path() . '/classes/views/frm-forms/_no_forms.php';
44
+ }
45
+ ?>
 
 
 
46
  </div>
classes/views/frm-forms/_no_forms.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="frmcenter">
2
+ <svg width="369" height="238" viewBox="0 0 369 238" fill="none" xmlns="http://www.w3.org/2000/svg"><g filter="url(#filter0_d)"><g clip-path="url(#clip0)"><g filter="url(#filter1_d)"><mask id="a" maskUnits="userSpaceOnUse" x="27" y="23" width="317" height="190"><rect x="27" y="23" width="316.3" height="189.8" rx="7" fill="#fff"/></mask><g mask="url(#a)"><rect x="27" y="21.6" width="315.2" height="185.9" rx="7" fill="#fff"/><g clip-path="url(#clip1)"><path d="M136.9 22.3H27v306.5h109.9V22.3z" fill="#fff"/><path d="M27 22.3h109.9V345H27V22.3z" fill="#F6F7FB"/><rect x="39.6" y="46.1" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="56.5" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="67" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="77.5" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="88" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="98.5" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="109" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="46.1" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="56.5" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="67" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="77.5" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="88" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="98.5" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="109" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="150.9" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="129.9" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="140.4" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="150.9" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="161.4" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="171.9" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="39.6" y="182.4" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="129.9" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="140.4" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="161.4" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="171.9" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="84.7" y="182.4" width="37.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><path d="M136.9 22.3H27v13.6h109.9V22.3z" fill="#F6F7FB"/></g><rect x="156.5" y="139.9" width="148.9" height="36.7" rx="3" fill="#579AF6" fill-opacity=".1" stroke="#579AF6" stroke-width=".3" stroke-dasharray="1.75 1.75"/>
3
+ <path d="M162 42.6v-6h-1.1l-1.9 4.6-2-4.5h-1v5.9h.8v-4.3h.1l1.7 4.1h.7l1.8-4v4.2h.9zm2 1.6c.8 0 1.3-.3 1.6-1.4l1.7-4.7h-1l-1 3.6h-.1L164 38h-1l1.6 4.5v.2c-.2.5-.4.6-.8.6h-.3v.8h.3zm9.3-1.6c1.3 0 2-.7 2-1.7 0-.8-.5-1.3-1.3-1.4.6-.2 1-.7 1-1.4 0-.9-.6-1.4-1.7-1.4h-2.4v5.9h2.4zm-1.5-5.2h1.2c.7 0 1.1.4 1.1 1 0 .5-.4.8-1.2.8h-1.1v-1.8zm0 4.4v-1.9h1.3c.8 0 1.3.3 1.3 1 0 .6-.4.9-1.3.9h-1.3zm6.6-3c.6 0 1 .4 1 1.1h-2.2c0-.7.5-1.1 1.2-1.1zm1 2.6c0 .3-.5.5-1 .5-.7 0-1.1-.5-1.2-1.3h3.2v-.3c0-1.4-.8-2.3-2-2.3-1.3 0-2 1-2 2.4s.7 2.3 2 2.3c1 0 1.7-.5 2-1.3h-1zm2-2c0 .6.5 1 1.3 1.2l.8.2c.4.1.6.3.6.6s-.3.6-.9.6c-.5 0-.9-.3-1-.6h-.8c0 .8.7 1.3 1.8 1.3 1 0 1.8-.6 1.8-1.4 0-.7-.4-1-1.2-1.3l-.8-.1c-.4-.1-.7-.3-.7-.6s.4-.5.9-.5.8.2.9.5h.8c0-.8-.7-1.3-1.7-1.3s-1.7.6-1.7 1.4zm5.1-2.4v1.1h-.7v.8h.7v2.5c0 .9.4 1.2 1.4 1.2h.5v-.8h-.4c-.4 0-.6-.2-.6-.6v-2.3h1V38h-1v-1h-.9zm9 1.2l1.2 4.4h1l1.5-6h-1l-1 4.6-1.3-4.5h-.9l-1.2 4.5-1.2-4.5h-1l1.7 5.9h.9l1.2-4.4zm6.3 4.5c1.3 0 2.1-1 2.1-2.4s-.8-2.3-2.1-2.3-2.1 1-2.1 2.3c0 1.5.8 2.4 2.1 2.4zm0-.8c-.8 0-1.2-.6-1.2-1.6s.4-1.5 1.2-1.5c.8 0 1.2.6 1.2 1.5 0 1-.4 1.6-1.2 1.6zm3.3.7h.9v-2.7c0-.6.4-1 1.1-1h.5v-.8h-.4c-.6 0-1 .3-1.2.7v-.7h-.9v4.5zm5 0c.6 0 1.1-.2 1.4-.7v.7h1v-6.2h-1v2.4c-.3-.5-.8-.8-1.4-.8-1.1 0-1.8 1-1.8 2.3 0 1.5.7 2.4 1.8 2.4zm.3-3.8c.7 0 1.2.6 1.2 1.6 0 .9-.5 1.5-1.2 1.5-.8 0-1.2-.6-1.2-1.6 0-.9.4-1.5 1.2-1.5zm3.6-2.1v5.9h1v-2h1.3c1.1 0 2-.8 2-2 0-1.1-.8-2-2-2H214zm1 .8h1c.9 0 1.3.4 1.3 1.1 0 .8-.4 1.2-1.2 1.2h-1.2v-2.3zm4.5 5h.9V40c0-.6.4-1 1-1h.6v-.8h-.4c-.6 0-1 .3-1.2.7v-.7h-1v4.5zm5.2-3.7c.6 0 1 .4 1 1.1h-2.2c0-.7.5-1.1 1.2-1.1zm1 2.6c0 .3-.4.5-1 .5-.7 0-1.1-.5-1.2-1.3h3.2v-.3c0-1.4-.8-2.3-2-2.3-1.3 0-2 1-2 2.4s.7 2.3 2 2.3c1 0 1.7-.5 2-1.3h-1zm2-2c0 .6.5 1 1.3 1.2l.8.2c.4.1.7.3.7.6s-.4.6-1 .6c-.5 0-.8-.3-1-.6h-.8c0 .8.7 1.3 1.8 1.3 1 0 1.8-.6 1.8-1.4 0-.7-.4-1-1.2-1.3l-.7-.1c-.5-.1-.8-.3-.8-.6s.4-.5 1-.5c.4 0 .7.2.8.5h.9c-.1-.8-.8-1.3-1.8-1.3s-1.7.6-1.7 1.4zm4.7 0c0 .6.3 1 1.2 1.2l.8.2c.4.1.6.3.6.6s-.4.6-1 .6c-.4 0-.8-.3-.9-.6h-.9c.1.8.8 1.3 1.9 1.3 1 0 1.8-.6 1.8-1.4 0-.7-.4-1-1.2-1.3l-.8-.1c-.5-.1-.7-.3-.7-.6s.4-.5.9-.5.8.2.9.5h.8c0-.8-.7-1.3-1.7-1.3s-1.7.6-1.7 1.4zm8.2 3.2V40h2.5v-.8h-2.5v-1.8h2.7v-.8h-3.6v5.9h.9zm5.9 0c1.3 0 2-.8 2-2.3 0-1.4-.7-2.3-2-2.3s-2.1 1-2.1 2.3c0 1.5.8 2.4 2 2.4zm0-.7c-.8 0-1.2-.6-1.2-1.6s.4-1.5 1.2-1.5c.7 0 1.2.6 1.2 1.5 0 1-.5 1.6-1.2 1.6zm3.3.7h.8v-2.7c0-.6.5-1 1.2-1h.5v-.8h-.4c-.6 0-1.1.3-1.2.7v-.7h-1v4.5zm3.5 0h.9v-2.7c0-.6.4-1 1-1 .5 0 .8.2.8.8v2.9h.9v-2.8c0-.5.3-1 1-1 .5 0 .8.3.8 1v2.8h.9v-3c0-1-.6-1.6-1.5-1.6-.6 0-1.1.4-1.3.8h-.1c-.2-.4-.6-.8-1.2-.8s-1 .3-1.3.8v-.7h-.9v4.5z" fill="#3F4B5B"/><g filter="url(#filter2_d)"><rect x="158.9" y="73.8" width="4.2" height="4.2" rx="2.1" stroke="#3F4B5B" stroke-width=".3"/></g><g filter="url(#filter3_d)"><rect x="158.9" y="81.9" width="4.2" height="4.2" rx="2.1" stroke="#3F4B5B" stroke-width=".3"/></g><g filter="url(#filter4_d)"><rect x="158.9" y="89.9" width="4.2" height="4.2" rx="2.1" stroke="#3F4B5B" stroke-width=".3"/></g><g filter="url(#filter5_d)"><rect x="158.9" y="98" width="4.2" height="4.2" rx="2.1" stroke="#3F4B5B" stroke-width=".3"/></g><g filter="url(#filter6_d)"><rect x="158.9" y="106.3" width="4.2" height="4.2" rx="2.1" stroke="#579AF6" stroke-width=".3"/></g><g filter="url(#filter7_d)"><rect x="159.8" y="107.2" width="2.4" height="2.4" rx="1.2" fill="#579AF6"/></g><g filter="url(#filter8_d)"><rect x="158.9" y="114.4" width="4.2" height="4.2" rx="2.1" stroke="#3F4B5B" stroke-width=".3"/></g><g filter="url(#filter9_d)"><rect x="158.9" y="122.4" width="4.2" height="4.2" rx="2.1" stroke="#3F4B5B" stroke-width=".3"/></g><rect x="155.3" y="61.8" width="105.5" height="7" rx="3.5" fill="#9EA9B8" fill-opacity=".7"/><rect x="167.5" y="73.3" width="19.6" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="167.5" y="81.4" width="22.7" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="167.5" y="89.4" width="38.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="167.5" y="97.4" width="40.5" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/>
4
+ <rect x="167.5" y="105.5" width="56.6" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="167.5" y="113.5" width="23.4" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/><rect x="167.5" y="121.5" width="12.6" height="4.9" rx="2.4" fill="#9AA6B5" fill-opacity=".5"/></g></g><g filter="url(#filter10_d)"><rect x="128.7" y="126.4" width="148.2" height="41.2" rx="4.5" fill="#fff"/><rect x="137.4" y="147.1" width="129.7" height="11.2" rx="1.4" fill="#8F99A6" fill-opacity=".2"/><rect x="137.4" y="135.9" width="115" height="7" rx="3.5" fill="#9EA9B8" fill-opacity=".7"/></g></g></g><defs><filter id="filter0_d" x=".8" y=".9" width="368.4" height="236.6" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="4.1"/><feGaussianBlur stdDeviation="13.1"/><feColorMatrix values="0 0 0 0 0.247059 0 0 0 0 0.294118 0 0 0 0 0.356863 0 0 0 0.15 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter1_d" x="4.6" y="-2.2" width="359.9" height="234.5" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-2.8"/><feGaussianBlur stdDeviation="11.2"/><feColorMatrix values="0 0 0 0 0.164706 0 0 0 0 0.223529 0 0 0 0 0.294118 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter2_d" x="158.4" y="73.7" width="5.2" height="5.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter3_d" x="158.4" y="81.7" width="5.2" height="5.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter4_d" x="158.4" y="89.7" width="5.2" height="5.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter5_d" x="158.4" y="97.8" width="5.2" height="5.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter6_d" x="158.4" y="106.2" width="5.2" height="5.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
5
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter7_d" x="159.4" y="107.2" width="3.1" height="3.1" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter8_d" x="158.4" y="114.2" width="5.2" height="5.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter9_d" x="158.4" y="122.2" width="5.2" height="5.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".3"/><feGaussianBlur stdDeviation=".2"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.075 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter10_d" x="110.6" y="106.1" width="184.4" height="77.4" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-2.3"/><feGaussianBlur stdDeviation="9"/><feColorMatrix values="0 0 0 0 0.164706 0 0 0 0 0.223529 0 0 0 0 0.294118 0 0 0 0.21 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><clipPath id="clip0"><rect x="27" y="23" width="316" height="184.2" rx="11.5" fill="#fff"/></clipPath><clipPath id="clip1"><path fill="#fff" transform="translate(27 22.3)" d="M0 0h109.9v306.5H0z"/></clipPath></defs></svg>
6
+ <h2><?php echo esc_html( $title ); ?></h2>
7
+ <?php if ( isset( $info ) ) { ?>
8
+ <p><?php echo esc_html( $info ); ?></p>
9
+ <?php } ?>
10
+ <p>
11
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable&frm_action=add_new' ) ); ?>" class="button-primary frm-button-primary">
12
+ <?php esc_html_e( 'Add New Form', 'formidable' ); ?>
13
+ </a>
14
+ </p>
15
+ </div>
classes/views/frm-forms/form.php CHANGED
@@ -31,6 +31,7 @@
31
  }
32
  ?>
33
  </ul>
 
34
  <p id="frm-form-button">
35
  <button class="frm_button_submit" disabled="disabled">
36
  <?php echo esc_attr( isset( $form->options['submit_value'] ) ? $form->options['submit_value'] : __( 'Submit', 'formidable' ) ); ?>
31
  }
32
  ?>
33
  </ul>
34
+ <?php FrmAppHelper::renewal_message(); ?>
35
  <p id="frm-form-button">
36
  <button class="frm_button_submit" disabled="disabled">
37
  <?php echo esc_attr( isset( $form->options['submit_value'] ) ? $form->options['submit_value'] : __( 'Submit', 'formidable' ) ); ?>
classes/views/frm-forms/list.php CHANGED
@@ -22,6 +22,20 @@ $wp_list_table->views();
22
  $wp_list_table->search_box( __( 'Search', 'formidable' ), 'entry' );
23
  $wp_list_table->display();
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  ?>
26
  </form>
27
 
22
  $wp_list_table->search_box( __( 'Search', 'formidable' ), 'entry' );
23
  $wp_list_table->display();
24
 
25
+ if ( $wp_list_table->total_items === 1 && empty( $_REQUEST['s'] ) && $wp_list_table->status === '' ) {
26
+ $is_default = false;
27
+ foreach ( $wp_list_table->items as $item ) {
28
+ $is_default = $item->form_key === 'contact-form';
29
+ }
30
+ // Show no form created info if only the default form exists.
31
+ if ( $is_default ) {
32
+ $title = __( 'You have not created any forms yet', 'formidable' );
33
+ $info = __( 'Start collecting leads and data today.', 'formidable' );
34
+ include FrmAppHelper::plugin_path() . '/classes/views/frm-forms/_no_forms.php';
35
+ }
36
+ }
37
+
38
+ FrmAppHelper::renewal_message();
39
  ?>
40
  </form>
41
 
classes/views/shared/admin-header.php CHANGED
@@ -6,13 +6,21 @@
6
  </a>
7
  </div>
8
  <?php } ?>
9
- <div id="frm-publishing">
10
  <?php
11
  if ( isset( $atts['publish'] ) ) {
 
12
  call_user_func( $atts['publish'][0], $atts['publish'][1] );
 
 
 
 
 
 
 
 
 
13
  }
14
  ?>
15
- </div>
16
 
17
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable' ) ); ?>" class="frm-header-logo">
18
  <?php FrmAppHelper::show_header_logo(); ?>
@@ -27,7 +35,6 @@
27
  } else {
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'] ); ?>
6
  </a>
7
  </div>
8
  <?php } ?>
 
9
  <?php
10
  if ( isset( $atts['publish'] ) ) {
11
+ echo '<div id="frm-publishing">';
12
  call_user_func( $atts['publish'][0], $atts['publish'][1] );
13
+ echo '</div>';
14
+ } elseif ( ! FrmAppHelper::pro_is_installed() ) {
15
+ ?>
16
+ <div id="frm-publishing">
17
+ <a href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( 'header' ) ); ?>" class="button button-secondary frm-button-secondary">
18
+ <?php esc_html_e( 'Upgrade', 'formidable' ); ?>
19
+ </a>
20
+ </div>
21
+ <?php
22
  }
23
  ?>
 
24
 
25
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable' ) ); ?>" class="frm-header-logo">
26
  <?php FrmAppHelper::show_header_logo(); ?>
35
  } else {
36
  // Used when no form is currently selected.
37
  ?>
 
38
  <div class="frm_top_left <?php echo esc_attr( $atts['import_link'] ? 'frm_top_wide' : '' ); ?>">
39
  <h1>
40
  <?php echo esc_html( $atts['label'] ); ?>
classes/views/shared/reports-info.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="frm_wrap">
2
+ <div class="frm_page_container">
3
+ <?php
4
+ FrmAppHelper::get_admin_header(
5
+ array(
6
+ 'label' => __( 'Reports', 'formidable' ),
7
+ 'form' => $form,
8
+ 'close' => $form ? admin_url( 'admin.php?page=formidable&frm_action=reports&form=' . $form->id ) : '',
9
+ )
10
+ );
11
+ ?>
12
+ <div class="frmcenter" style="margin-top:10vh">
13
+ <img src="<?php echo esc_attr( FrmAppHelper::plugin_url() . '/images/reports.svg' ); ?>" alt="<?php esc_attr_e( 'View reports', 'formidable' ); ?>" height="243" />
14
+ <h2><?php esc_html_e( 'Get Live Graphs and Reports', 'formidable' ); ?></h2>
15
+ <p style="max-width:400px;margin:20px auto">
16
+ <?php esc_html_e( 'Get more insight for surveys, polls, daily contacts, and more.', 'formidable' ); ?>
17
+ </p>
18
+ <a class="button button-primary frm-button-primary" href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( 'reports-info' ) ); ?>" target="_blank" rel="noopener">
19
+ <?php esc_html_e( 'Upgrade Now', 'formidable' ); ?>
20
+ </a>
21
+ </div>
22
+ </div>
23
+ </div>
classes/views/shared/views-info.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="frm_wrap">
2
+ <div class="frm_page_container">
3
+ <?php
4
+ FrmAppHelper::get_admin_header(
5
+ array(
6
+ 'label' => __( 'Views', 'formidable' ),
7
+ 'form' => $form,
8
+ 'close' => $form ? admin_url( 'admin.php?page=formidable&frm_action=views&form=' . $form->id ) : '',
9
+ )
10
+ );
11
+ ?>
12
+ <div class="frmcenter" style="margin-top:10vh">
13
+ <img src="<?php echo esc_attr( FrmAppHelper::plugin_url() . '/images/views.svg' ); ?>" alt="<?php esc_attr_e( 'Create a View', 'formidable' ); ?>" width="403" height="243" />
14
+ <h2><?php esc_html_e( 'Show and Edit Entries with Views', 'formidable' ); ?></h2>
15
+ <p style="max-width:400px;margin:20px auto">
16
+ <?php esc_html_e( 'Bring entries to the front-end of your site for full-featured applications or just to show the content.', 'formidable' ); ?>
17
+ </p>
18
+ <a class="button button-primary frm-button-primary" href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( 'views-info' ) ); ?>" target="_blank" rel="noopener">
19
+ <?php esc_html_e( 'Upgrade Now', 'formidable' ); ?>
20
+ </a>
21
+ </div>
22
+ </div>
23
+ </div>
css/custom_theme.css.php CHANGED
@@ -551,6 +551,23 @@ legend.frm_hidden{
551
  text-align:center;
552
  }
553
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
554
  .with_frm_style.frm_center_submit .frm_submit input[type=submit],
555
  .with_frm_style.frm_center_submit .frm_submit input[type=button],
556
  .with_frm_style.frm_center_submit .frm_submit button{
551
  text-align:center;
552
  }
553
 
554
+ .with_frm_style .frm_inline_success .frm_submit{
555
+ display: flex;
556
+ flex-direction: row;
557
+ align-items: center;
558
+ margin: 0;
559
+ }
560
+
561
+ .with_frm_style .frm_inline_success .frm_submit .frm_message{
562
+ flex: 1;
563
+ margin: 0;
564
+ padding-left: 10px;
565
+ }
566
+
567
+ .with_frm_style .frm_inline_success.frm_alignright_success .frm_submit .frm_message{
568
+ text-align: right;
569
+ }
570
+
571
  .with_frm_style.frm_center_submit .frm_submit input[type=submit],
572
  .with_frm_style.frm_center_submit .frm_submit input[type=button],
573
  .with_frm_style.frm_center_submit .frm_submit button{
css/frm_admin.css CHANGED
@@ -90,7 +90,7 @@ a, .widget .widget-top, .stuffbox h3, .frm-collapsed {
90
 
91
  .frm-white-body #screen-meta-links .screen-meta-toggle {
92
  position: absolute;
93
- right: 90px;
94
  box-shadow: none;
95
  border-bottom-left-radius: var(--small-radius);
96
  border-bottom-right-radius: var(--small-radius);
@@ -411,6 +411,10 @@ ul.frm_form_nav > li {
411
  border-left: 2px solid var(--grey);
412
  }
413
 
 
 
 
 
414
  #frm-publishing {
415
  float: right;
416
  margin-top: 15px;
@@ -1531,11 +1535,21 @@ div.frm_updated_message {
1531
  }
1532
 
1533
  .frm_error_style {
1534
- color: #B94A48;
1535
- border-color: #EBCCD1;
1536
  background-color: #F2DEDE;
1537
  }
1538
 
 
 
 
 
 
 
 
 
 
 
1539
  .frm_warning_style {
1540
  color: #8B6E3C;
1541
  border-color: #FBECCD;
@@ -2293,6 +2307,7 @@ a.frm_option_icon:hover::before {
2293
  left: auto;
2294
  font-size: 14px;
2295
  padding-top: 3px;
 
2296
  }
2297
 
2298
  .frm-right-panel .accordion-section-content {
@@ -5401,8 +5416,11 @@ li.selected .divider_section_only:before {
5401
  content: '\e62a';
5402
  }
5403
 
 
 
 
 
5404
  .frm-collapse-me {
5405
- overflow: hidden !important;
5406
  padding-bottom: 10px;
5407
  }
5408
 
@@ -5900,13 +5918,9 @@ i.frm-show-inline-modal {
5900
  text-overflow: ellipsis;
5901
  }
5902
 
5903
- span.multiselect-selected-text {
5904
- white-space: nowrap;
5905
- display: inline-block;
5906
- }
5907
-
5908
  .frm-search span.multiselect-selected-text {
5909
  white-space: nowrap;
 
5910
  }
5911
 
5912
  .frm-search #search-submit {
90
 
91
  .frm-white-body #screen-meta-links .screen-meta-toggle {
92
  position: absolute;
93
+ right: 160px;
94
  box-shadow: none;
95
  border-bottom-left-radius: var(--small-radius);
96
  border-bottom-right-radius: var(--small-radius);
411
  border-left: 2px solid var(--grey);
412
  }
413
 
414
+ .frm_wrap > #frm_top_bar #frm-publishing {
415
+ margin-top: 0;
416
+ }
417
+
418
  #frm-publishing {
419
  float: right;
420
  margin-top: 15px;
1535
  }
1536
 
1537
  .frm_error_style {
1538
+ color: #973937;
1539
+ border-color: #F2DEDE;
1540
  background-color: #F2DEDE;
1541
  }
1542
 
1543
+ .frm_error_style a {
1544
+ color: #973937;
1545
+ text-decoration: underline;
1546
+ font-weight: 600;
1547
+ }
1548
+
1549
+ .frm_error_style svg {
1550
+ opacity: .7;
1551
+ }
1552
+
1553
  .frm_warning_style {
1554
  color: #8B6E3C;
1555
  border-color: #FBECCD;
2307
  left: auto;
2308
  font-size: 14px;
2309
  padding-top: 3px;
2310
+ margin-bottom: 3px;
2311
  }
2312
 
2313
  .frm-right-panel .accordion-section-content {
5416
  content: '\e62a';
5417
  }
5418
 
5419
+ .frm-collapsed + .frm-collapse-me {
5420
+ overflow: hidden !important;
5421
+ }
5422
+
5423
  .frm-collapse-me {
 
5424
  padding-bottom: 10px;
5425
  }
5426
 
5918
  text-overflow: ellipsis;
5919
  }
5920
 
 
 
 
 
 
5921
  .frm-search span.multiselect-selected-text {
5922
  white-space: nowrap;
5923
+ display: inline-block;
5924
  }
5925
 
5926
  .frm-search #search-submit {
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.06.03
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.07
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
images/icons.svg CHANGED
@@ -918,5 +918,6 @@
918
  <symbol id="frm_zapier_icon" viewBox="0 0 28 27">
919
  <title>Zapier</title>
920
  <path fill-rule="evenodd" clip-rule="evenodd" d="M13.6 1.7h-.2a1 1 0 00-.2 0h-.7l-.1.1h-.1-.1-.2v6.9A879.5 879.5 0 016.7 4l-.1.1h-.1v.1h-.1l-.1.1-.1.1-.2.1-.1.1-.1.1-.1.1A15.2 15.2 0 004 6.6a797.2 797.2 0 005 5H2V12.6l-.1.2V15.3l.1.1v.1h7.2l-.4.4a734.5 734.5 0 00-4.5 4.7v.1l.1.1.1.1v.1h.1v.1h.1v.1l.1.1.1.1H5l.1.2A15.2 15.2 0 006.9 23a275.5 275.5 0 005-4.9v6.9h.5l.1.1H16v-3.5-3.5a884.4 884.4 0 015.3 4.8v-.1h.2v-.1h.1v-.1h.1l.1-.1.2-.1v-.1h.1l.1-.1.1-.1a16 16 0 001.7-1.9 702.3 702.3 0 00-5-4.8H26v-.1-.1-.2-.1-.1-.2l.1-.2v-.1-.1-.2-.3-.3-.4-.2-.2-.1-.1-.2-.1-.1-.1-.2l-.1-.2h-7.2a886 886 0 015-5.1l-.1-.1v-.1h-.1l-.1-.1V6h-.1V6l-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1a16 16 0 00-1.9-1.6 272 272 0 00-5 4.8V1.8H16h-.2-.1-.2-.1-.1-.1-.1-.2-.1-.2a1 1 0 01-.2-.1h-.8zm.6 8.8H14.8l.2.1h.5v.1h.4l.1.1H16.4v.1h.2v.1h.1v.2l.1.1v.2h.1v.4h.1v.5l.1.1v1a3.8 3.8 0 010 .8v.6l-.1.1V15.4h-.1V15.7l-.1.1v.2h-.1v.1h-.1-.1l-.1.1h-.1-.1-.1v.1h-.1-.1-.1-.1l-.1.1h-.1-.1-.1-.2-.1l-.1.1h-.1-.1-.4-.4-.8H12.7h-.1l-.1-.1H12.1l-.1-.1H12h-.1-.1V16h-.2-.1V16h-.1v-.1-.1h-.1v-.1-.1-.1l-.1-.1v-.1-.1-.1L11 15v-.1-.1-.1-.1-.1H11v-.1-.1-.1-.1-.2-.4a3.8 3.8 0 010-.8v-.2-.2-.1-.1l.1-.1v-.1-.1-.1l.1-.1v-.1-.1-.1h.1v-.1-.1h.1V11h.2v-.1H12l.1-.1H12.4l.1-.1h.5l.1-.1h1.2z" fill="currentColor"/></symbol>
 
921
  </defs>
922
  </svg>
918
  <symbol id="frm_zapier_icon" viewBox="0 0 28 27">
919
  <title>Zapier</title>
920
  <path fill-rule="evenodd" clip-rule="evenodd" d="M13.6 1.7h-.2a1 1 0 00-.2 0h-.7l-.1.1h-.1-.1-.2v6.9A879.5 879.5 0 016.7 4l-.1.1h-.1v.1h-.1l-.1.1-.1.1-.2.1-.1.1-.1.1-.1.1A15.2 15.2 0 004 6.6a797.2 797.2 0 005 5H2V12.6l-.1.2V15.3l.1.1v.1h7.2l-.4.4a734.5 734.5 0 00-4.5 4.7v.1l.1.1.1.1v.1h.1v.1h.1v.1l.1.1.1.1H5l.1.2A15.2 15.2 0 006.9 23a275.5 275.5 0 005-4.9v6.9h.5l.1.1H16v-3.5-3.5a884.4 884.4 0 015.3 4.8v-.1h.2v-.1h.1v-.1h.1l.1-.1.2-.1v-.1h.1l.1-.1.1-.1a16 16 0 001.7-1.9 702.3 702.3 0 00-5-4.8H26v-.1-.1-.2-.1-.1-.2l.1-.2v-.1-.1-.2-.3-.3-.4-.2-.2-.1-.1-.2-.1-.1-.1-.2l-.1-.2h-7.2a886 886 0 015-5.1l-.1-.1v-.1h-.1l-.1-.1V6h-.1V6l-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1a16 16 0 00-1.9-1.6 272 272 0 00-5 4.8V1.8H16h-.2-.1-.2-.1-.1-.1-.1-.2-.1-.2a1 1 0 01-.2-.1h-.8zm.6 8.8H14.8l.2.1h.5v.1h.4l.1.1H16.4v.1h.2v.1h.1v.2l.1.1v.2h.1v.4h.1v.5l.1.1v1a3.8 3.8 0 010 .8v.6l-.1.1V15.4h-.1V15.7l-.1.1v.2h-.1v.1h-.1-.1l-.1.1h-.1-.1-.1v.1h-.1-.1-.1-.1l-.1.1h-.1-.1-.1-.2-.1l-.1.1h-.1-.1-.4-.4-.8H12.7h-.1l-.1-.1H12.1l-.1-.1H12h-.1-.1V16h-.2-.1V16h-.1v-.1-.1h-.1v-.1-.1-.1l-.1-.1v-.1-.1-.1L11 15v-.1-.1-.1-.1-.1H11v-.1-.1-.1-.1-.2-.4a3.8 3.8 0 010-.8v-.2-.2-.1-.1l.1-.1v-.1-.1-.1l.1-.1v-.1-.1-.1h.1v-.1-.1h.1V11h.2v-.1H12l.1-.1H12.4l.1-.1h.5l.1-.1h1.2z" fill="currentColor"/></symbol>
921
+ <symbol id="frm_alert_icon" viewBox="0 0 17 15"><path d="M16.8 12.9c.6 1-.1 2.1-1.2 2.1H1.4c-1 0-1.8-1.2-1.2-2.1L7.2.7c.6-1 2-1 2.5 0l7.1 12.2zm-8.3-2.5c-.7 0-1.4.6-1.4 1.3 0 .8.7 1.4 1.4 1.4s1.4-.6 1.4-1.4c0-.7-.7-1.3-1.4-1.3zM7.2 5.5l.2 4c0 .2.2.3.4.3h1.4c.2 0 .4-.1.4-.3l.2-4c0-.2-.2-.3-.4-.3H7.6c-.2 0-.4.1-.4.3z" fill="currentColor"/></symbol>
922
  </defs>
923
  </svg>
images/reports.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="477" height="326" viewBox="0 0 477 326" fill="none" xmlns="http://www.w3.org/2000/svg"><g filter="url(#filter0_d)"><rect x="63" y="46" width="331.7" height="238.7" rx="10.1" fill="#fff"/><rect x="77.4" y="60.9" width="289.5" height="16.4" rx="8.2" fill="#9EA9B8" fill-opacity=".7"/><rect x="77.4" y="85.7" width="160.1" height="8.7" rx="4.3" fill="#9AA6B5" fill-opacity=".5"/><path d="M98.2 184.9L81 213.2v52.4h294.7V144.9c0-.6-.9-1-1.3-.4l-15.8 19.5a7.2 7.2 0 01-11.2 0L337 151a7.2 7.2 0 00-11.9 1l-13.4 23.6a7.2 7.2 0 01-10.6 2.2l-9-6.8a7.2 7.2 0 00-11 2.7L269.8 198a7.2 7.2 0 01-13.3-.7l-12.7-34.8a7.2 7.2 0 00-12-2.4l-8.6 9.3a7.2 7.2 0 01-11.3-.8L199.2 150a7.2 7.2 0 00-11-1L178 159.3a7.2 7.2 0 01-11.2-1.2l-9.4-14.8a7.2 7.2 0 00-13 1.8l-14.1 46.5c-1.7 5.6-9 7-12.6 2.4l-7.7-9.8a7.2 7.2 0 00-11.8.7z" fill="url(#paint0_linear)"/><path d="M81 213l17.2-28.4a7.2 7.2 0 0111.8-.7l7.7 9.8a7.2 7.2 0 0012.6-2.4l14-46.3c1.9-5.9 9.8-7 13-1.8l9.5 14.8c2.5 3.9 8 4.5 11.2 1.2l10.2-10.3a7.2 7.2 0 0111 1l12.7 18.4a7.2 7.2 0 0011.2.8l8.5-9.2a7.2 7.2 0 0112.1 2.4l12.7 34.6a7.2 7.2 0 0013.3.7l11.5-24c2-4.2 7.2-5.5 10.8-2.8l9.1 6.8a7.2 7.2 0 0010.6-2.2L325 152c2.5-4.4 8.7-5 11.9-1l10.4 12.9a7.2 7.2 0 0011.2 0l17-21" stroke="#4278C1" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></g><g filter="url(#filter1_d)"><rect x="252" y="160" width="200.1" height="144" rx="6.1" fill="#fff"/></g><path d="M402 232a50 50 0 00-50-50v28.4a21.6 21.6 0 0121.6 21.6H402z" fill="#4278C0"/><path d="M402 233.3a50 50 0 01-79.3 39.2l16.6-23a21.6 21.6 0 0034.3-17l28.4.8z" fill="#EEF3FA"/><path d="M321.3 271.5A50 50 0 01351 182l.6 28.4a21.6 21.6 0 00-12.8 38.7l-17.4 22.4z" fill="#3F4B5B"/><defs><filter id="filter0_d" x="22.5" y=".4" width="412.8" height="319.7" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-5.1"/><feGaussianBlur stdDeviation="20.3"/><feColorMatrix values="0 0 0 0 0.164706 0 0 0 0 0.223529 0 0 0 0 0.294118 0 0 0 0.21 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter1_d" x="227.6" y="132.5" width="249" height="192.9" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-3.1"/><feGaussianBlur stdDeviation="12.2"/><feColorMatrix values="0 0 0 0 0.164706 0 0 0 0 0.223529 0 0 0 0 0.294118 0 0 0 0.21 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><linearGradient id="paint0_linear" x1="228.3" y1="130.1" x2="228.3" y2="265.7" gradientUnits="userSpaceOnUse"><stop stop-color="#4278C1" stop-opacity=".4"/><stop offset="1" stop-color="#7CADF0" stop-opacity=".1"/></linearGradient></defs></svg>
images/views.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="403" height="243" viewBox="0 0 403 243" fill="none" xmlns="http://www.w3.org/2000/svg"><g filter="url(#filter0_d)"><rect x="52" y="27" width="290" height="175" rx="15.3" fill="#fff"/><mask id="a" maskUnits="userSpaceOnUse" x="52" y="27" width="290" height="175"><rect x="52" y="27" width="290" height="175" rx="15.3" fill="#fff"/></mask><g mask="url(#a)"><path fill="#F6F7FB" d="M52 27h290v38H52z"/><rect x="74" y="44" width="24" height="9" rx="4.5" fill="#9AA6B5" fill-opacity=".5"/><rect x="74" y="71" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="74" y="88" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="74" y="105" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="74" y="123" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="74" y="141" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="74" y="159" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="74" y="177" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="74" y="195" width="24" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="44" width="53" height="9" rx="4.5" fill="#9AA6B5" fill-opacity=".5"/><rect x="120" y="71" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="88" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="105" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="123" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="141" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="159" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="177" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="120" y="195" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="44" width="54" height="9" rx="4.5" fill="#9AA6B5" fill-opacity=".5"/><rect x="193" y="71" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="88" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="105" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="123" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="141" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="159" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="177" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="193" y="195" width="54" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="44" width="53" height="9" rx="4.5" fill="#9AA6B5" fill-opacity=".5"/><rect x="267" y="71" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="88" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="105" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="123" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="141" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="159" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="177" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><rect x="267" y="195" width="53" height="4" rx="2" fill="#9AA6B5" fill-opacity=".3"/><path fill="#9AA6B5" fill-opacity=".2" d="M108 27h1v175h-1z"/><path fill="#9AA6B5" fill-opacity=".2" d="M51 81v-1h292v1zM51 99v-1h292v1zM51 117v-1h292v1zM51 135v-1h292v1zM51 153v-1h292v1zM51 171v-1h292v1zM51 189v-1h292v1z"/><path fill="#9AA6B5" fill-opacity=".2" d="M182 27h1v175h-1zM256 27h1v175h-1z"/></g></g><g filter="url(#filter1_d)"><g filter="url(#filter2_d)"><rect x="17" y="150" width="168" height="62" rx="3.8" fill="#fff"/></g><circle cx="46" cy="181.3" r="17" fill="#BCC4CE"/><rect x="84.8" y="167.5" width="59.7" height="9" rx="4.5" fill="#9EA9B8" fill-opacity=".7"/><rect x="85" y="181" width="73" height="5" rx="2.5" fill="#9AA6B5" fill-opacity=".3"/><rect x="85" y="191" width="73" height="5" rx="2.5" fill="#9AA6B5" fill-opacity=".3"/></g><g filter="url(#filter3_d)"><rect x="253" y="102" width="132.8" height="115" rx="1.5" fill="#fff"/><rect x="287" y="111" width="46" height="5" rx="2.5" fill="#9EA9B8" fill-opacity=".7"/><rect x="336" y="111" width="18" height="5" rx="2.5" fill="#9EA9B8" fill-opacity=".7"/><path d="M376 113.6l-.1-.2-2.3-2.2a.3.3 0 00-.4 0v.3l2 2.1-2 2v.5h.4l2.3-2.3v-.2zM265.7 113.6v.2l2.4 2.3h.4c.1-.1.1-.3 0-.4l-2-2 2-2.2v-.3a.3.3 0 00-.4 0l-2.3 2.2-.1.2z" fill="#6B6C7E"/><circle cx="372.2" cy="202.7" r="4" fill="#E1E4E9"/><circle cx="354.8" cy="202.7" r="4" fill="#E1E4E9"/><circle cx="337.4" cy="202.7" r="4" fill="#E1E4E9"/><circle cx="319.9" cy="202.7" r="4" fill="#E1E4E9"/><circle cx="302.5" cy="202.7" r="4" fill="#E1E4E9"/><circle cx="285.1" cy="202.7" r="4" fill="#E1E4E9"/><circle cx="267.7" cy="202.7" r="4" fill="#E1E4E9"/><circle cx="372" cy="188" r="5.8" fill="#9CA4AF"/><circle cx="354.8" cy="188.2" r="4" fill="#E1E4E9"/><circle cx="337.4" cy="188.2" r="4" fill="#E1E4E9"/><circle cx="319.9" cy="188.2" r="4" fill="#E1E4E9"/><circle cx="302.5" cy="188.2" r="4" fill="#E1E4E9"/><circle cx="285.1" cy="188.2" r="4" fill="#E1E4E9"/><circle cx="267.7" cy="188.2" r="4" fill="#E1E4E9"/><circle cx="372.2" cy="173.7" r="4" fill="#E1E4E9"/><circle cx="354.8" cy="173.7" r="4" fill="#E1E4E9"/><circle cx="337.4" cy="173.7" r="4" fill="#E1E4E9"/><circle cx="319.9" cy="173.7" r="4" fill="#E1E4E9"/><circle cx="302.5" cy="173.7" r="4" fill="#E1E4E9"/><circle cx="285.1" cy="173.7" r="4" fill="#E1E4E9"/><circle cx="267.7" cy="173.7" r="4" fill="#E1E4E9"/><circle cx="372.2" cy="159.2" r="4" fill="#E1E4E9"/><circle cx="354.8" cy="159.2" r="4" fill="#E1E4E9"/><circle cx="337.4" cy="159.2" r="4" fill="#E1E4E9"/><circle cx="319.9" cy="159.2" r="4" fill="#E1E4E9"/><circle cx="302.5" cy="159.2" r="4" fill="#E1E4E9"/><circle cx="285.1" cy="159.2" r="4" fill="#E1E4E9"/><circle cx="267.7" cy="159.2" r="4" fill="#E1E4E9"/><circle cx="372.2" cy="144.6" r="4" fill="#E1E4E9"/><circle cx="354.8" cy="144.6" r="4" fill="#E1E4E9"/><circle cx="337.4" cy="144.6" r="4" fill="#E1E4E9"/><circle cx="319.9" cy="144.6" r="4" fill="#E1E4E9"/><circle cx="302.5" cy="144.6" r="4" fill="#E1E4E9"/><circle cx="285.1" cy="144.6" r="4" fill="#E1E4E9"/><circle cx="267.7" cy="144.6" r="4" fill="#E1E4E9"/><path d="M373.2 130.2c0 .4-.2.6-.4.8-.2.2-.5.3-1 .3l-1-.2v-.6a2.7 2.7 0 001 .3c.3 0 .5 0 .6-.2l.2-.3c0-.2 0-.3-.2-.4l-.6-.3c-.3-.1-.6-.3-.7-.5a1 1 0 01-.2-.6c0-.3 0-.5.3-.7.2-.2.5-.3.9-.3.3 0 .7.1 1 .3l-.2.5-.8-.3c-.2 0-.4 0-.5.2l-.1.3v.2l.2.2.5.3c.3 0 .5.2.6.3l.3.3v.4zM355.8 130.2c0 .4-.2.6-.4.8-.2.2-.6.3-1 .3l-1-.2v-.6a2.7 2.7 0 001 .3c.3 0 .5 0 .6-.2l.2-.3c0-.2 0-.3-.2-.4l-.6-.3c-.4-.1-.6-.3-.7-.5a1 1 0 01-.2-.6c0-.3 0-.5.3-.7.2-.2.5-.3.9-.3.3 0 .7.1 1 .3l-.2.5-.9-.3c-.1 0-.3 0-.4.2l-.1.3v.2l.2.2.5.3c.3 0 .5.2.6.3l.3.3v.4zM336.9 131.2h-.6v-3.6h2v.5H337v1.1h1.3v.5H337v1.5zM320 131.2h-.5v-3.1h-1.1v-.5h2.7v.5h-1v3.1zM303.8 131.2h-.7l-.6-2.1a8.2 8.2 0 01-.2-.8 6.1 6.1 0 01-.1.8l-.6 2.1h-.7l-.5-1.8-.4-1.8h.6l.5 2.1.2.9a6.2 6.2 0 01.1-.9l.6-2.1h.6l.6 2.1.2.9c0-.2 0-.5.2-.9l.5-2.1h.6l-1 3.6zM285.2 131.2h-.6v-3.1h-1v-.5h2.7v.5h-1v3.1zM267.2 131.2l-1-3v3h-.6v-3.6h.9l1 2.9 1-3h.9v3.7h-.6v-1.8a26.7 26.7 0 010-1.2l-1 3h-.6z" fill="#596069"/></g><defs><filter id="filter0_d" x="20" y="0" width="354" height="239" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="5"/><feGaussianBlur stdDeviation="16"/><feColorMatrix values="0 0 0 0 0.247059 0 0 0 0 0.294118 0 0 0 0 0.356863 0 0 0 0.15 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter1_d" x=".2" y="141.6" width="201.7" height="95.7" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="8.4"/><feGaussianBlur stdDeviation="8.4"/><feColorMatrix values="0 0 0 0 0.247059 0 0 0 0 0.294118 0 0 0 0 0.356863 0 0 0 0.15 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter2_d" x="13.2" y="147" width="175.5" height="69.5" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".8"/><feGaussianBlur stdDeviation="1.9"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter><filter id="filter3_d" x="236.2" y="93.6" width="166.5" height="148.7" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="8.4"/><feGaussianBlur stdDeviation="8.4"/><feColorMatrix values="0 0 0 0 0.247059 0 0 0 0 0.294118 0 0 0 0 0.356863 0 0 0 0.15 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"/><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"/></filter></defs></svg>
js/formidable.js CHANGED
@@ -412,7 +412,16 @@ function frmFrontFormJS() {
412
  $recaptcha = jQuery( form ).find( '.frm-g-recaptcha' );
413
  if ( $recaptcha.length ) {
414
  recaptchaID = $recaptcha.data( 'rid' );
415
- response = grecaptcha.getResponse( recaptchaID );
 
 
 
 
 
 
 
 
 
416
 
417
  if ( response.length === 0 ) {
418
  fieldContainer = $recaptcha.closest( '.frm_form_field' );
@@ -454,8 +463,7 @@ function frmFrontFormJS() {
454
  data: jQuery( object ).serialize() + '&action=frm_entries_' + action + '&nonce=' + frm_js.nonce,
455
  success: function( response ) {
456
  var formID, replaceContent, pageOrder, formReturned, contSubmit, delay,
457
- showCaptcha, $fieldCont, key, inCollapsedSection, frmTrigger,
458
- $recaptcha, recaptchaID,
459
  defaultResponse = { 'content': '', 'errors': {}, 'pass': false };
460
  if ( response === null ) {
461
  response = defaultResponse;
@@ -486,6 +494,8 @@ function frmFrontFormJS() {
486
 
487
  setTimeout(
488
  function() {
 
 
489
  replaceContent.replaceWith( response.content );
490
 
491
  addUrlParam( response );
@@ -496,11 +506,22 @@ function frmFrontFormJS() {
496
  frmThemeOverride_frmAfterSubmit( formReturned, pageOrder, response.content, object );
497
  }
498
 
 
 
 
 
 
 
 
 
 
 
 
 
499
  afterFormSubmitted( object, response );
500
  },
501
  delay
502
  );
503
-
504
  } else if ( Object.keys( response.errors ).length ) {
505
  // errors were returned
506
 
@@ -510,11 +531,9 @@ function frmFrontFormJS() {
510
  contSubmit = true;
511
  removeAllErrors();
512
 
513
- showCaptcha = false;
514
  $fieldCont = null;
515
 
516
  for ( key in response.errors ) {
517
-
518
  $fieldCont = jQuery( object ).find( '#frm_field_' + key + '_container' );
519
 
520
  if ( $fieldCont.length ) {
@@ -532,34 +551,29 @@ function frmFrontFormJS() {
532
 
533
  if ( $fieldCont.is( ':visible' ) ) {
534
  addFieldError( $fieldCont, key, response.errors );
535
-
536
  contSubmit = false;
537
-
538
- $recaptcha = jQuery( object ).find( '#frm_field_' + key + '_container .frm-g-recaptcha, #frm_field_' + key + '_container .g-recaptcha' );
539
- if ( $recaptcha.length ) {
540
- showCaptcha = true;
541
- recaptchaID = $recaptcha.data( 'rid' );
542
- if ( jQuery().grecaptcha ) {
543
- if ( recaptchaID ) {
544
- grecaptcha.reset( recaptchaID );
545
- } else {
546
- grecaptcha.reset();
547
- }
548
- }
549
- }
550
  }
551
  }
552
  }
553
 
 
 
 
 
 
 
 
 
 
 
 
 
 
554
  jQuery( document ).trigger( 'frmFormErrors', [ object, response ]);
555
 
556
  fieldset.removeClass( 'frm_doing_ajax' );
557
  scrollToFirstField( object );
558
 
559
- if ( showCaptcha !== true ) {
560
- replaceCheckedRecaptcha( object, false );
561
- }
562
-
563
  if ( contSubmit ) {
564
  object.submit();
565
  } else {
@@ -569,7 +583,6 @@ function frmFrontFormJS() {
569
  // there may have been a plugin conflict, or the form is not set to submit with ajax
570
 
571
  showFileLoading( object );
572
- replaceCheckedRecaptcha( object, true );
573
 
574
  object.submit();
575
  }
@@ -757,20 +770,6 @@ function frmFrontFormJS() {
757
  }
758
  }
759
 
760
- function replaceCheckedRecaptcha( object, checkPage ) {
761
- var morePages,
762
- $recapField = jQuery( object ).find( '.frm-g-recaptcha, .g-recaptcha' );
763
- if ( $recapField.length ) {
764
- if ( checkPage ) {
765
- morePages = jQuery( object ).find( '.frm_next_page' ).length < 1 || jQuery( object ).find( '.frm_next_page' ).val() < 1;
766
- if ( ! morePages ) {
767
- return;
768
- }
769
- }
770
- $recapField.closest( '.frm_form_field' ).replaceWith( '<input type="hidden" name="recaptcha_checked" value="' + frm_js.nonce + '">' );
771
- }
772
- }
773
-
774
  function clearDefault() {
775
  /*jshint validthis:true */
776
  toggleDefault( jQuery( this ), 'clear' );
412
  $recaptcha = jQuery( form ).find( '.frm-g-recaptcha' );
413
  if ( $recaptcha.length ) {
414
  recaptchaID = $recaptcha.data( 'rid' );
415
+
416
+ try {
417
+ response = grecaptcha.getResponse( recaptchaID );
418
+ } catch ( e ) {
419
+ if ( jQuery( form ).find( 'input[name="recaptcha_checked"]' ).length ) {
420
+ return errors;
421
+ } else {
422
+ response = '';
423
+ }
424
+ }
425
 
426
  if ( response.length === 0 ) {
427
  fieldContainer = $recaptcha.closest( '.frm_form_field' );
463
  data: jQuery( object ).serialize() + '&action=frm_entries_' + action + '&nonce=' + frm_js.nonce,
464
  success: function( response ) {
465
  var formID, replaceContent, pageOrder, formReturned, contSubmit, delay,
466
+ $fieldCont, key, inCollapsedSection, frmTrigger,
 
467
  defaultResponse = { 'content': '', 'errors': {}, 'pass': false };
468
  if ( response === null ) {
469
  response = defaultResponse;
494
 
495
  setTimeout(
496
  function() {
497
+ var container, input, previousInput;
498
+
499
  replaceContent.replaceWith( response.content );
500
 
501
  addUrlParam( response );
506
  frmThemeOverride_frmAfterSubmit( formReturned, pageOrder, response.content, object );
507
  }
508
 
509
+ if ( typeof response.recaptcha !== 'undefined' ) {
510
+ container = jQuery( '#frm_form_' + formID + '_container' ).find( '.frm_fields_container' );
511
+ input = '<input type="hidden" name="recaptcha_checked" value="' + response.recaptcha + '">';
512
+ previousInput = container.find( 'input[name="recaptcha_checked"]' );
513
+
514
+ if ( previousInput.length ) {
515
+ previousInput.replaceWith( input );
516
+ } else {
517
+ container.append( input );
518
+ }
519
+ }
520
+
521
  afterFormSubmitted( object, response );
522
  },
523
  delay
524
  );
 
525
  } else if ( Object.keys( response.errors ).length ) {
526
  // errors were returned
527
 
531
  contSubmit = true;
532
  removeAllErrors();
533
 
 
534
  $fieldCont = null;
535
 
536
  for ( key in response.errors ) {
 
537
  $fieldCont = jQuery( object ).find( '#frm_field_' + key + '_container' );
538
 
539
  if ( $fieldCont.length ) {
551
 
552
  if ( $fieldCont.is( ':visible' ) ) {
553
  addFieldError( $fieldCont, key, response.errors );
 
554
  contSubmit = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
555
  }
556
  }
557
  }
558
 
559
+ jQuery( object ).find( '.frm-g-recaptcha, .g-recaptcha' ).each( function() {
560
+ var $recaptcha = jQuery( this ),
561
+ recaptchaID = $recaptcha.data( 'rid' );
562
+
563
+ if ( typeof grecaptcha !== 'undefined' && grecaptcha ) {
564
+ if ( recaptchaID ) {
565
+ grecaptcha.reset( recaptchaID );
566
+ } else {
567
+ grecaptcha.reset();
568
+ }
569
+ }
570
+ });
571
+
572
  jQuery( document ).trigger( 'frmFormErrors', [ object, response ]);
573
 
574
  fieldset.removeClass( 'frm_doing_ajax' );
575
  scrollToFirstField( object );
576
 
 
 
 
 
577
  if ( contSubmit ) {
578
  object.submit();
579
  } else {
583
  // there may have been a plugin conflict, or the form is not set to submit with ajax
584
 
585
  showFileLoading( object );
 
586
 
587
  object.submit();
588
  }
770
  }
771
  }
772
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
773
  function clearDefault() {
774
  /*jshint validthis:true */
775
  toggleDefault( jQuery( this ), 'clear' );
js/formidable.min.js CHANGED
@@ -13,38 +13,38 @@ fileID+'"], input[name="file'+fileID+'[]"], input[name^="item_meta['+fileID+']"]
13
  invalidMsg=getFieldValidationMessage(field,"data-invmsg");if(emailAddress!==""&&re.test(emailAddress)===false){errors[fieldID]=invalidMsg;if(isConf)errors[fieldID.replace("conf_","")]=""}else if(isConf){confName=field.name.replace("conf_","");match=emailFields.filter('[name="'+confName+'"]').val();if(match!==emailAddress){errors[fieldID]="";errors[fieldID.replace("conf_","")]=""}}}return errors}function checkNumberField(field,errors){var fieldID,number=field.value;if(number!==""&&isNaN(number/1)!==
14
  false){fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}return errors}function checkPatternField(field,errors){var fieldID,text=field.value,format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){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){var recaptcha,
15
  recaptchaID,alreadyChecked;if(isGoingToPrevPage(object))return false;recaptcha=jQuery(object).find('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');if(recaptcha.length){recaptchaID=recaptcha.data("rid");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)}
16
- function validateRecaptcha(form,errors){var recaptchaID,response,fieldContainer,fieldID,$recaptcha=jQuery(form).find(".frm-g-recaptcha");if($recaptcha.length){recaptchaID=$recaptcha.data("rid");response=grecaptcha.getResponse(recaptchaID);if(response.length===0){fieldContainer=$recaptcha.closest(".frm_form_field");fieldID=fieldContainer.attr("id").replace("frm_field_","").replace("_container","");errors[fieldID]=""}}return errors}function getFieldValidationMessage(field,messageType){var msg=field.getAttribute(messageType);
17
- if(msg===null)msg="";return msg}function shouldJSValidate(object){var validate=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){var fieldset;if(typeof action==="undefined")jQuery(object).find('input[name="frm_action"]').val();fieldset=jQuery(object).find(".frm_form_field");fieldset.addClass("frm_doing_ajax");jQuery.ajax({type:"POST",
18
- url:frm_js.ajax_url,data:jQuery(object).serialize()+"&action=frm_entries_"+action+"&nonce="+frm_js.nonce,success:function(response){var formID,replaceContent,pageOrder,formReturned,contSubmit,delay,showCaptcha,$fieldCont,key,inCollapsedSection,frmTrigger,$recaptcha,recaptchaID,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;
19
- 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);formID=jQuery(object).find('input[name="form_id"]').val();response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,
20
- formID);delay=maybeSlideOut(replaceContent,response.content);setTimeout(function(){replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),
21
- "enable");contSubmit=true;removeAllErrors();showCaptcha=false;$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.click()}}if($fieldCont.is(":visible")){addFieldError($fieldCont,
22
- key,response.errors);contSubmit=false;$recaptcha=jQuery(object).find("#frm_field_"+key+"_container .frm-g-recaptcha, #frm_field_"+key+"_container .g-recaptcha");if($recaptcha.length){showCaptcha=true;recaptchaID=$recaptcha.data("rid");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(showCaptcha!==true)replaceCheckedRecaptcha(object,
23
- false);if(contSubmit)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()}})}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",
24
- [object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")!==-1){c=oldContent.children();if(newContent.indexOf(" frm_going_back")!==-1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}
25
- function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");i=kvp.length;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,
26
- key,jsErrors){var input,id,describedBy;if($fieldCont.length&&$fieldCont.is(":visible")){$fieldCont.addClass("frm_blank_field");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)===
27
- -1)describedBy=describedBy+" "+id;input.attr("aria-describedby",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!==
28
- "undefined"){describedBy=describedBy.replace(errorId,"");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);
29
- disableSaveDraft($object)}function showLoadingIndicator($object){if(!$object.hasClass("frm_loading_form")&&!$object.hasClass("frm_loading_prev")){addLoadingClass($object);$object.trigger("frmStartFormLoading")}}function addLoadingClass($object){var loadingClass=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loadingClass)}function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading($object,
30
- enable,processesRunning){var loadingForm;if(processesRunning>0)return;loadingForm=jQuery(".frm_loading_form");loadingForm.removeClass("frm_loading_form");loadingForm.removeClass("frm_loading_prev");loadingForm.trigger("frmEndFormLoading");if(enable==="enable"){enableSubmitButton(loadingForm);enableSaveDraft(loadingForm)}}function showFileLoading(object){var fileval,loading=document.getElementById("frm_loading");if(loading!==null){fileval=jQuery(object).find("input[type=file]").val();if(typeof fileval!==
31
- "undefined"&&fileval!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}}function replaceCheckedRecaptcha(object,checkPage){var morePages,$recapField=jQuery(object).find(".frm-g-recaptcha, .g-recaptcha");if($recapField.length){if(checkPage){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+'">')}}
32
- function clearDefault(){toggleDefault(jQuery(this),"clear")}function replaceDefault(){toggleDefault(jQuery(this),"replace")}function toggleDefault($thisField,e){var thisVal,v=$thisField.data("frmval").replace(/(\n|\r\n)/g,"\r");if(v===""||typeof v==="undefined")return false;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=
33
- jQuery(this),entryId=this.getAttribute("data-eid"),formId=this.getAttribute("data-fid"),label=$link.find(".frm_link_label");if(label.length<1)label=$link;label.append('<span class="frm-wait"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:entryId,form_id:formId,nonce:frm_js.nonce},success:function(msg){var admin=document.getElementById("wpbody");if(admin===null)label.html(msg);else{label.html("");$link.after(msg)}}});return false}function confirmClick(){var message=
34
- 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(){var len,from;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(elt){len=this.length>>>0;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]===
35
- 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(){var t,len,res,thisp,i,val;if(!Array.prototype.filter)Array.prototype.filter=function(fun){if(this===void 0||this===null)throw new TypeError;t=Object(this);len=t.length>>>0;if(typeof fun!=="function")throw new TypeError;res=[];thisp=arguments[1];for(i=0;i<len;i++)if(i in t){val=t[i];if(fun.call(thisp,
36
- val,i,t))res.push(val)}return res}}function addKeysFallbackForIE8(){var keys,i;if(!Object.keys)Object.keys=function(obj){keys=[];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}return{init:function(){jQuery(document).off("submit.formidable",".frm-show-form");jQuery(document).on("submit.formidable",".frm-show-form",frmFrontForm.submitForm);jQuery(".frm-show-form input[onblur], .frm-show-form textarea[onblur]").each(function(){if(jQuery(this).val()==="")jQuery(this).blur()});jQuery(document).on("focus",
37
- ".frm_toggle_default",clearDefault);jQuery(document).on("blur",".frm_toggle_default",replaceDefault);jQuery(".frm_toggle_default").blur();jQuery(document.getElementById("frm_resend_email")).click(resendEmail);jQuery(document).on("change",'.frm-show-form input[name^="item_meta"], .frm-show-form select[name^="item_meta"], .frm-show-form textarea[name^="item_meta"]',frmFrontForm.fieldValueChanged);jQuery(document).on("change keyup",".frm-show-form .frm_inside_container input, .frm-show-form .frm_inside_container select, .frm-show-form .frm_inside_container textarea",
38
- maybeShowLabel);jQuery(document).on("click","a[data-frmconfirm]",confirmClick);jQuery("a[data-frmtoggle]").click(toggleDiv);addIndexOfFallbackForIE8();addTrimFallbackForIE8();addFilterFallbackForIE8();addKeysFallbackForIE8()},getFieldId:function(field,fullID){return getFieldId(field,fullID)},renderRecaptcha:function(captcha){var formID,recaptchaID,size=captcha.getAttribute("data-size"),rendered=captcha.getAttribute("data-rid")!==null,params={"sitekey":captcha.getAttribute("data-sitekey"),"size":size,
39
- "theme":captcha.getAttribute("data-theme")};if(rendered)return;if(size==="invisible"){formID=jQuery(captcha).closest("form").find('input[name="form_id"]').val();jQuery(captcha).closest(".frm_form_field .frm_primary_label").hide();params.callback=function(token){frmFrontForm.afterRecaptcha(token,formID)}}recaptchaID=grecaptcha.render(captcha.id,params);captcha.setAttribute("data-rid",recaptchaID)},afterSingleRecaptcha:function(){var object=jQuery(".frm-show-form .g-recaptcha").closest("form")[0];frmFrontForm.submitFormNow(object)},
40
- afterRecaptcha:function(token,formID){var object=jQuery("#frm_form_"+formID+"_container form")[0];frmFrontForm.submitFormNow(object)},submitForm:function(e){frmFrontForm.submitFormManual(e,this)},submitFormManual:function(e,object){var isPro,errors,invisibleRecaptcha=hasInvisibleRecaptcha(object),classList=object.className.trim().split(/\s+/gi);if(classList&&invisibleRecaptcha.length<1){isPro=classList.indexOf("frm_pro_form")>-1;if(!isPro)return}if(jQuery("body").hasClass("wp-admin")&&jQuery(object).closest(".frmapi-form").length<
41
- 1)return;e.preventDefault();if(typeof frmProForm!=="undefined"&&typeof frmProForm.submitAllowed==="function")if(!frmProForm.submitAllowed(object))return;if(invisibleRecaptcha.length){showLoadingIndicator(jQuery(object));executeInvisibleRecaptcha(invisibleRecaptcha)}else{errors=frmFrontForm.validateFormSubmit(object);if(Object.keys(errors).length===0){showSubmitLoading(jQuery(object));frmFrontForm.submitFormNow(object,classList)}}},submitFormNow:function(object){var hasFileFields,classList=object.className.trim().split(/\s+/gi);
42
- if(classList.indexOf("frm_ajax_submit")>-1){hasFileFields=jQuery(object).find('input[type="file"]').filter(function(){return!!this.value}).length;if(hasFileFields<1){action=jQuery(object).find('input[name="frm_action"]').val();frmFrontForm.checkFormErrors(object,action)}else object.submit()}else object.submit()},validateFormSubmit:function(object){if(typeof tinyMCE!=="undefined"&&jQuery(object).find(".wp-editor-wrap").length)tinyMCE.triggerSave();jsErrors=[];if(shouldJSValidate(object)){frmFrontForm.getAjaxFormErrors(object);
43
- if(Object.keys(jsErrors).length)frmFrontForm.addAjaxFormErrors(object)}return jsErrors},getAjaxFormErrors:function(object){var customErrors,key;jsErrors=validateForm(object);if(typeof frmThemeOverride_jsErrors==="function"){action=jQuery(object).find('input[name="frm_action"]').val();customErrors=frmThemeOverride_jsErrors(action,object);if(Object.keys(customErrors).length)for(key in customErrors)jsErrors[key]=customErrors[key]}return jsErrors},addAjaxFormErrors:function(object){var key,$fieldCont;
44
- removeAllErrors();for(key in jsErrors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length)addFieldError($fieldCont,key,jsErrors);else delete jsErrors[key]}scrollToFirstField(object)},checkFormErrors:function(object,action){getFormErrors(object,action)},checkRequiredField:function(field,errors){return checkRequiredField(field,errors)},showSubmitLoading:function($object){showSubmitLoading($object)},removeSubmitLoading:function($object,enable,processesRunning){removeSubmitLoading($object,
45
- enable,processesRunning)},scrollToID:function(id){var object=jQuery(document.getElementById(id));frmFrontForm.scrollMsg(object,false)},scrollMsg:function(id,object,animate){var newPos,m,b,screenTop,screenBottom,scrollObj="";if(typeof object==="undefined"){scrollObj=jQuery(document.getElementById("frm_form_"+id+"_container"));if(scrollObj.length<1)return}else if(typeof id==="string")scrollObj=jQuery(object).find("#frm_field_"+id+"_container");else scrollObj=id;scrollObj.focus();newPos=scrollObj.offset().top;
46
- if(!newPos||frm_js.offset==="-1")return;newPos=newPos-frm_js.offset;m=jQuery("html").css("margin-top");b=jQuery("body").css("margin-top");if(m||b)newPos=newPos-parseInt(m)-parseInt(b);if(newPos&&window.innerHeight){screenTop=document.documentElement.scrollTop||document.body.scrollTop;screenBottom=screenTop+window.innerHeight;if(newPos>screenBottom||newPos<screenTop){if(typeof animate==="undefined")jQuery(window).scrollTop(newPos);else jQuery("html,body").animate({scrollTop:newPos},500);return false}}},
47
- fieldValueChanged:function(e){var fieldId=frmFrontForm.getFieldId(this,false);if(!fieldId||typeof fieldId==="undefined")return;if(e.frmTriggered&&e.frmTriggered==fieldId)return;jQuery(document).trigger("frmFieldChanged",[this,fieldId,e]);if(e.selfTriggered!==true)maybeValidateChange(fieldId,this)},savingDraft:function(object){console.warn("DEPRECATED: function frmFrontForm.savingDraft in v3.0 use frmProForm.savingDraft");if(typeof frmProForm!=="undefined")return frmProForm.savingDraft(object)},goingToPreviousPage:function(object){console.warn("DEPRECATED: function frmFrontForm.goingToPreviousPage in v3.0 use frmProForm.goingToPreviousPage");
48
  if(typeof frmProForm!=="undefined")return frmProForm.goingToPreviousPage(object)},hideOrShowFields:function(){console.warn("DEPRECATED: function frmFrontForm.hideOrShowFields in v3.0 use frmProForm.hideOrShowFields");if(typeof frmProForm!=="undefined")frmProForm.hideOrShowFields()},hidePreviouslyHiddenFields:function(){console.warn("DEPRECATED: function frmFrontForm.hidePreviouslyHiddenFields in v3.0 use frmProForm.hidePreviouslyHiddenFields");if(typeof frmProForm!=="undefined")frmProForm.hidePreviouslyHiddenFields()},
49
  checkDependentDynamicFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentDynamicFields in v3.0 use frmProForm.checkDependentDynamicFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentDynamicFields(ids)},checkDependentLookupFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentLookupFields in v3.0 use frmProForm.checkDependentLookupFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentLookupFields(ids)},loadGoogle:function(){console.warn("DEPRECATED: function frmFrontForm.loadGoogle in v3.0 use frmProForm.loadGoogle");
50
  frmProForm.loadGoogle()},escapeHtml:function(text){return text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")},invisible:function(classes){jQuery(classes).css("visibility","hidden")},visible:function(classes){jQuery(classes).css("visibility","visible")}}}frmFrontForm=frmFrontFormJS();jQuery(document).ready(function(){frmFrontForm.init()});
13
  invalidMsg=getFieldValidationMessage(field,"data-invmsg");if(emailAddress!==""&&re.test(emailAddress)===false){errors[fieldID]=invalidMsg;if(isConf)errors[fieldID.replace("conf_","")]=""}else if(isConf){confName=field.name.replace("conf_","");match=emailFields.filter('[name="'+confName+'"]').val();if(match!==emailAddress){errors[fieldID]="";errors[fieldID.replace("conf_","")]=""}}}return errors}function checkNumberField(field,errors){var fieldID,number=field.value;if(number!==""&&isNaN(number/1)!==
14
  false){fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}return errors}function checkPatternField(field,errors){var fieldID,text=field.value,format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){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){var recaptcha,
15
  recaptchaID,alreadyChecked;if(isGoingToPrevPage(object))return false;recaptcha=jQuery(object).find('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');if(recaptcha.length){recaptchaID=recaptcha.data("rid");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)}
16
+ function validateRecaptcha(form,errors){var recaptchaID,response,fieldContainer,fieldID,$recaptcha=jQuery(form).find(".frm-g-recaptcha");if($recaptcha.length){recaptchaID=$recaptcha.data("rid");try{response=grecaptcha.getResponse(recaptchaID)}catch(e){if(jQuery(form).find('input[name="recaptcha_checked"]').length)return errors;else response=""}if(response.length===0){fieldContainer=$recaptcha.closest(".frm_form_field");fieldID=fieldContainer.attr("id").replace("frm_field_","").replace("_container",
17
+ "");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!=="undefined"&&(frmProForm.savingDraft(object)||frmProForm.goingToPreviousPage(object)))validate=false;return validate}function getFormErrors(object,action){var fieldset;if(typeof action==="undefined")jQuery(object).find('input[name="frm_action"]').val();
18
+ 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 formID,replaceContent,pageOrder,formReturned,contSubmit,delay,$fieldCont,key,inCollapsedSection,frmTrigger,defaultResponse={"content":"","errors":{},"pass":false};if(response===null)response=defaultResponse;response=response.replace(/^\s+|\s+$/g,"");if(response.indexOf("{")===
19
+ 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);formID=jQuery(object).find('input[name="form_id"]').val();response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");replaceContent=
20
+ jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);delay=maybeSlideOut(replaceContent,response.content);setTimeout(function(){var container,input,previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,
21
+ response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");input='<input type="hidden" name="recaptcha_checked" value="'+response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),
22
+ "enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.click()}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);
23
+ contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);else grecaptcha.reset()});jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(contSubmit)object.submit();else jQuery(object).prepend(response.error_message)}else{showFileLoading(object);
24
+ object.submit()}},error:function(){jQuery(object).find('input[type="submit"], input[type="button"]').removeAttr("disabled");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);
25
+ if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")!==-1){c=oldContent.children();if(newContent.indexOf(" frm_going_back")!==-1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",
26
+ response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");i=kvp.length;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){var input,id,describedBy;if($fieldCont.length&&$fieldCont.is(":visible")){$fieldCont.addClass("frm_blank_field");
27
+ 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",describedBy)}input.attr("aria-invalid",true);jQuery(document).trigger("frmAddFieldError",
28
+ [$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,"");input.attr("aria-describedby",describedBy)}}function removeAllErrors(){jQuery(".form-field").removeClass("frm_blank_field has-error");
29
+ 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")&&!$object.hasClass("frm_loading_prev")){addLoadingClass($object);
30
+ $object.trigger("frmStartFormLoading")}}function addLoadingClass($object){var loadingClass=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loadingClass)}function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading($object,enable,processesRunning){var loadingForm;if(processesRunning>0)return;loadingForm=jQuery(".frm_loading_form");loadingForm.removeClass("frm_loading_form");loadingForm.removeClass("frm_loading_prev");
31
+ loadingForm.trigger("frmEndFormLoading");if(enable==="enable"){enableSubmitButton(loadingForm);enableSaveDraft(loadingForm)}}function showFileLoading(object){var fileval,loading=document.getElementById("frm_loading");if(loading!==null){fileval=jQuery(object).find("input[type=file]").val();if(typeof fileval!=="undefined"&&fileval!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}}function clearDefault(){toggleDefault(jQuery(this),"clear")}function replaceDefault(){toggleDefault(jQuery(this),
32
+ "replace")}function toggleDefault($thisField,e){var thisVal,v=$thisField.data("frmval").replace(/(\n|\r\n)/g,"\r");if(v===""||typeof v==="undefined")return false;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),entryId=this.getAttribute("data-eid"),formId=this.getAttribute("data-fid"),label=$link.find(".frm_link_label");
33
+ if(label.length<1)label=$link;label.append('<span class="frm-wait"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:entryId,form_id:formId,nonce:frm_js.nonce},success:function(msg){var admin=document.getElementById("wpbody");if(admin===null)label.html(msg);else{label.html("");$link.after(msg)}}});return false}function confirmClick(){var message=jQuery(this).data("frmconfirm");return confirm(message)}function toggleDiv(){var div=jQuery(this).data("frmtoggle");
34
+ if(jQuery(div).is(":visible"))jQuery(div).slideUp("fast");else jQuery(div).slideDown("fast");return false}function addIndexOfFallbackForIE8(){var len,from;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(elt){len=this.length>>>0;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=
35
+ function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){var t,len,res,thisp,i,val;if(!Array.prototype.filter)Array.prototype.filter=function(fun){if(this===void 0||this===null)throw new TypeError;t=Object(this);len=t.length>>>0;if(typeof fun!=="function")throw new TypeError;res=[];thisp=arguments[1];for(i=0;i<len;i++)if(i in t){val=t[i];if(fun.call(thisp,val,i,t))res.push(val)}return res}}function addKeysFallbackForIE8(){var keys,i;if(!Object.keys)Object.keys=function(obj){keys=
36
+ [];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}return{init:function(){jQuery(document).off("submit.formidable",".frm-show-form");jQuery(document).on("submit.formidable",".frm-show-form",frmFrontForm.submitForm);jQuery(".frm-show-form input[onblur], .frm-show-form textarea[onblur]").each(function(){if(jQuery(this).val()==="")jQuery(this).blur()});jQuery(document).on("focus",".frm_toggle_default",clearDefault);jQuery(document).on("blur",".frm_toggle_default",replaceDefault);jQuery(".frm_toggle_default").blur();
37
+ jQuery(document.getElementById("frm_resend_email")).click(resendEmail);jQuery(document).on("change",'.frm-show-form input[name^="item_meta"], .frm-show-form select[name^="item_meta"], .frm-show-form textarea[name^="item_meta"]',frmFrontForm.fieldValueChanged);jQuery(document).on("change keyup",".frm-show-form .frm_inside_container input, .frm-show-form .frm_inside_container select, .frm-show-form .frm_inside_container textarea",maybeShowLabel);jQuery(document).on("click","a[data-frmconfirm]",confirmClick);
38
+ jQuery("a[data-frmtoggle]").click(toggleDiv);addIndexOfFallbackForIE8();addTrimFallbackForIE8();addFilterFallbackForIE8();addKeysFallbackForIE8()},getFieldId:function(field,fullID){return getFieldId(field,fullID)},renderRecaptcha:function(captcha){var formID,recaptchaID,size=captcha.getAttribute("data-size"),rendered=captcha.getAttribute("data-rid")!==null,params={"sitekey":captcha.getAttribute("data-sitekey"),"size":size,"theme":captcha.getAttribute("data-theme")};if(rendered)return;if(size==="invisible"){formID=
39
+ jQuery(captcha).closest("form").find('input[name="form_id"]').val();jQuery(captcha).closest(".frm_form_field .frm_primary_label").hide();params.callback=function(token){frmFrontForm.afterRecaptcha(token,formID)}}recaptchaID=grecaptcha.render(captcha.id,params);captcha.setAttribute("data-rid",recaptchaID)},afterSingleRecaptcha:function(){var object=jQuery(".frm-show-form .g-recaptcha").closest("form")[0];frmFrontForm.submitFormNow(object)},afterRecaptcha:function(token,formID){var object=jQuery("#frm_form_"+
40
+ formID+"_container form")[0];frmFrontForm.submitFormNow(object)},submitForm:function(e){frmFrontForm.submitFormManual(e,this)},submitFormManual:function(e,object){var isPro,errors,invisibleRecaptcha=hasInvisibleRecaptcha(object),classList=object.className.trim().split(/\s+/gi);if(classList&&invisibleRecaptcha.length<1){isPro=classList.indexOf("frm_pro_form")>-1;if(!isPro)return}if(jQuery("body").hasClass("wp-admin")&&jQuery(object).closest(".frmapi-form").length<1)return;e.preventDefault();if(typeof frmProForm!==
41
+ "undefined"&&typeof frmProForm.submitAllowed==="function")if(!frmProForm.submitAllowed(object))return;if(invisibleRecaptcha.length){showLoadingIndicator(jQuery(object));executeInvisibleRecaptcha(invisibleRecaptcha)}else{errors=frmFrontForm.validateFormSubmit(object);if(Object.keys(errors).length===0){showSubmitLoading(jQuery(object));frmFrontForm.submitFormNow(object,classList)}}},submitFormNow:function(object){var hasFileFields,classList=object.className.trim().split(/\s+/gi);if(classList.indexOf("frm_ajax_submit")>
42
+ -1){hasFileFields=jQuery(object).find('input[type="file"]').filter(function(){return!!this.value}).length;if(hasFileFields<1){action=jQuery(object).find('input[name="frm_action"]').val();frmFrontForm.checkFormErrors(object,action)}else object.submit()}else object.submit()},validateFormSubmit:function(object){if(typeof tinyMCE!=="undefined"&&jQuery(object).find(".wp-editor-wrap").length)tinyMCE.triggerSave();jsErrors=[];if(shouldJSValidate(object)){frmFrontForm.getAjaxFormErrors(object);if(Object.keys(jsErrors).length)frmFrontForm.addAjaxFormErrors(object)}return jsErrors},
43
+ getAjaxFormErrors:function(object){var customErrors,key;jsErrors=validateForm(object);if(typeof frmThemeOverride_jsErrors==="function"){action=jQuery(object).find('input[name="frm_action"]').val();customErrors=frmThemeOverride_jsErrors(action,object);if(Object.keys(customErrors).length)for(key in customErrors)jsErrors[key]=customErrors[key]}return jsErrors},addAjaxFormErrors:function(object){var key,$fieldCont;removeAllErrors();for(key in jsErrors){$fieldCont=jQuery(object).find("#frm_field_"+key+
44
+ "_container");if($fieldCont.length)addFieldError($fieldCont,key,jsErrors);else delete jsErrors[key]}scrollToFirstField(object)},checkFormErrors:function(object,action){getFormErrors(object,action)},checkRequiredField:function(field,errors){return checkRequiredField(field,errors)},showSubmitLoading:function($object){showSubmitLoading($object)},removeSubmitLoading:function($object,enable,processesRunning){removeSubmitLoading($object,enable,processesRunning)},scrollToID:function(id){var object=jQuery(document.getElementById(id));
45
+ frmFrontForm.scrollMsg(object,false)},scrollMsg:function(id,object,animate){var newPos,m,b,screenTop,screenBottom,scrollObj="";if(typeof object==="undefined"){scrollObj=jQuery(document.getElementById("frm_form_"+id+"_container"));if(scrollObj.length<1)return}else if(typeof id==="string")scrollObj=jQuery(object).find("#frm_field_"+id+"_container");else scrollObj=id;scrollObj.focus();newPos=scrollObj.offset().top;if(!newPos||frm_js.offset==="-1")return;newPos=newPos-frm_js.offset;m=jQuery("html").css("margin-top");
46
+ b=jQuery("body").css("margin-top");if(m||b)newPos=newPos-parseInt(m)-parseInt(b);if(newPos&&window.innerHeight){screenTop=document.documentElement.scrollTop||document.body.scrollTop;screenBottom=screenTop+window.innerHeight;if(newPos>screenBottom||newPos<screenTop){if(typeof animate==="undefined")jQuery(window).scrollTop(newPos);else jQuery("html,body").animate({scrollTop:newPos},500);return false}}},fieldValueChanged:function(e){var fieldId=frmFrontForm.getFieldId(this,false);if(!fieldId||typeof fieldId===
47
+ "undefined")return;if(e.frmTriggered&&e.frmTriggered==fieldId)return;jQuery(document).trigger("frmFieldChanged",[this,fieldId,e]);if(e.selfTriggered!==true)maybeValidateChange(fieldId,this)},savingDraft:function(object){console.warn("DEPRECATED: function frmFrontForm.savingDraft in v3.0 use frmProForm.savingDraft");if(typeof frmProForm!=="undefined")return frmProForm.savingDraft(object)},goingToPreviousPage:function(object){console.warn("DEPRECATED: function frmFrontForm.goingToPreviousPage in v3.0 use frmProForm.goingToPreviousPage");
48
  if(typeof frmProForm!=="undefined")return frmProForm.goingToPreviousPage(object)},hideOrShowFields:function(){console.warn("DEPRECATED: function frmFrontForm.hideOrShowFields in v3.0 use frmProForm.hideOrShowFields");if(typeof frmProForm!=="undefined")frmProForm.hideOrShowFields()},hidePreviouslyHiddenFields:function(){console.warn("DEPRECATED: function frmFrontForm.hidePreviouslyHiddenFields in v3.0 use frmProForm.hidePreviouslyHiddenFields");if(typeof frmProForm!=="undefined")frmProForm.hidePreviouslyHiddenFields()},
49
  checkDependentDynamicFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentDynamicFields in v3.0 use frmProForm.checkDependentDynamicFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentDynamicFields(ids)},checkDependentLookupFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentLookupFields in v3.0 use frmProForm.checkDependentLookupFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentLookupFields(ids)},loadGoogle:function(){console.warn("DEPRECATED: function frmFrontForm.loadGoogle in v3.0 use frmProForm.loadGoogle");
50
  frmProForm.loadGoogle()},escapeHtml:function(text){return text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")},invisible:function(classes){jQuery(classes).css("visibility","hidden")},visible:function(classes){jQuery(classes).css("visibility","visible")}}}frmFrontForm=frmFrontFormJS();jQuery(document).ready(function(){frmFrontForm.init()});
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.06.03\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-08-12T22:54:16+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"
@@ -552,7 +552,7 @@ msgid "We're sorry. It looks like you've already submitted that."
552
  msgstr ""
553
 
554
  #: classes/models/FrmSettings.php:105
555
- #: classes/views/frm-forms/form.php:36
556
  #: classes/views/styles/_sample_form.php:74
557
  msgid "Submit"
558
  msgstr ""
@@ -627,12 +627,12 @@ msgstr ""
627
  msgid "Please select a lower number"
628
  msgstr ""
629
 
630
- #: classes/models/fields/FrmFieldCaptcha.php:146
631
- msgid "The captcha is missing from this form"
632
  msgstr ""
633
 
634
- #: classes/models/fields/FrmFieldCaptcha.php:163
635
- msgid "There was a problem verifying your recaptcha"
636
  msgstr ""
637
 
638
  #: classes/models/FrmFormAction.php:38
@@ -660,7 +660,6 @@ msgid "Entry is imported"
660
  msgstr ""
661
 
662
  #: classes/models/FrmFormMigrator.php:67
663
- #: classes/helpers/FrmFormsListHelper.php:111
664
  msgid "No Forms Found."
665
  msgstr ""
666
 
@@ -712,6 +711,7 @@ msgstr ""
712
 
713
  #: classes/controllers/FrmAddonsController.php:19
714
  #: classes/controllers/FrmAddonsController.php:20
 
715
  #: classes/views/frm-fields/back-end/smart-values.php:11
716
  #: classes/helpers/FrmFormsHelper.php:1285
717
  msgid "Upgrade"
@@ -726,7 +726,7 @@ msgid "Installed"
726
  msgstr ""
727
 
728
  #: classes/controllers/FrmAddonsController.php:520
729
- #: classes/helpers/FrmAppHelper.php:2432
730
  msgid "Active"
731
  msgstr ""
732
 
@@ -750,37 +750,38 @@ msgstr ""
750
  msgid "Your plugins have been installed and activated."
751
  msgstr ""
752
 
753
- #: classes/controllers/FrmAppController.php:146
754
  msgid "Build"
755
  msgstr ""
756
 
757
- #: classes/controllers/FrmAppController.php:153
758
  #: classes/views/frm-forms/settings.php:8
759
  #: classes/views/frm-settings/form.php:9
760
- #: classes/helpers/FrmFormsListHelper.php:304
761
  msgid "Settings"
762
  msgstr ""
763
 
764
- #: classes/controllers/FrmAppController.php:160
765
  #: classes/controllers/FrmXMLController.php:256
766
  #: classes/controllers/FrmFormsController.php:741
767
  #: classes/controllers/FrmEntriesController.php:8
768
- #: classes/controllers/FrmEntriesController.php:92
769
  #: classes/views/xml/import_form.php:116
770
  msgid "Entries"
771
  msgstr ""
772
 
773
- #: classes/controllers/FrmAppController.php:171
774
- #: classes/controllers/FrmAppController.php:177
 
775
  msgid "Views"
776
  msgstr ""
777
 
778
- #: classes/controllers/FrmAppController.php:183
779
- #: classes/controllers/FrmAppController.php:189
780
  msgid "Reports"
781
  msgstr ""
782
 
783
- #: classes/controllers/FrmAppController.php:205
784
  msgid "Build a Form"
785
  msgstr ""
786
 
@@ -1022,7 +1023,7 @@ msgstr ""
1022
  #: classes/views/addons/list.php:81
1023
  #: classes/views/shared/upgrade_overlay.php:27
1024
  #: classes/helpers/FrmFormMigratorsHelper.php:131
1025
- #: classes/helpers/FrmAppHelper.php:2431
1026
  msgid "Install"
1027
  msgstr ""
1028
 
@@ -1066,7 +1067,7 @@ msgstr ""
1066
 
1067
  #: classes/controllers/FrmStylesController.php:38
1068
  #: classes/views/frm-entries/sidebar-shared.php:35
1069
- #: classes/helpers/FrmFormsListHelper.php:303
1070
  msgid "Edit"
1071
  msgstr ""
1072
 
@@ -1223,7 +1224,7 @@ msgid "Add forms and content"
1223
  msgstr ""
1224
 
1225
  #: classes/controllers/FrmFormsController.php:642
1226
- #: classes/controllers/FrmEntriesController.php:76
1227
  #: classes/views/xml/import_form.php:147
1228
  #: classes/widgets/FrmShowForm.php:56
1229
  msgid "Form"
@@ -1368,7 +1369,7 @@ msgid "Entry ID"
1368
  msgstr ""
1369
 
1370
  #: classes/controllers/FrmFormsController.php:1194
1371
- #: classes/controllers/FrmEntriesController.php:71
1372
  #: classes/views/frm-entries/sidebar-shared.php:52
1373
  #: classes/views/frm-entries/form.php:50
1374
  msgid "Entry Key"
@@ -1414,15 +1415,15 @@ msgstr ""
1414
  msgid "No forms were specified"
1415
  msgstr ""
1416
 
1417
- #: classes/controllers/FrmFormsController.php:1411
1418
  msgid "Abnormal HTML characters prevented your form from saving correctly"
1419
  msgstr ""
1420
 
1421
- #: classes/controllers/FrmFormsController.php:1501
1422
  #: classes/views/frm-forms/list-templates.php:198
1423
  #: classes/views/xml/import_form.php:128
1424
  #: classes/views/styles/manage.php:54
1425
- #: classes/helpers/FrmFormsListHelper.php:317
1426
  #: classes/helpers/FrmFormsHelper.php:57
1427
  #: classes/helpers/FrmFormsHelper.php:112
1428
  #: classes/helpers/FrmFormsHelper.php:166
@@ -1430,17 +1431,17 @@ msgstr ""
1430
  msgid "(no title)"
1431
  msgstr ""
1432
 
1433
- #: classes/controllers/FrmFormsController.php:1547
1434
- #: classes/controllers/FrmFormsController.php:1561
1435
  msgid "Please select a valid form"
1436
  msgstr ""
1437
 
1438
- #: classes/controllers/FrmFormsController.php:1783
1439
  msgid "Please wait while you are redirected."
1440
  msgstr ""
1441
 
1442
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
1443
- #: classes/controllers/FrmFormsController.php:1819
1444
  msgid "%1$sClick here%2$s if you are not automatically redirected."
1445
  msgstr ""
1446
 
@@ -1487,37 +1488,37 @@ msgstr ""
1487
  msgid "%s form actions"
1488
  msgstr ""
1489
 
1490
- #: classes/controllers/FrmEntriesController.php:77
1491
  msgid "Entry Name"
1492
  msgstr ""
1493
 
1494
- #: classes/controllers/FrmEntriesController.php:78
1495
  #: classes/helpers/FrmCSVExportHelper.php:150
1496
  msgid "Created By"
1497
  msgstr ""
1498
 
1499
- #: classes/controllers/FrmEntriesController.php:81
1500
  msgid "Entry creation date"
1501
  msgstr ""
1502
 
1503
- #: classes/controllers/FrmEntriesController.php:82
1504
  msgid "Entry update date"
1505
  msgstr ""
1506
 
1507
- #: classes/controllers/FrmEntriesController.php:388
1508
  msgid "Your import is complete"
1509
  msgstr ""
1510
 
1511
  #. translators: %1$s: Time string
1512
- #: classes/controllers/FrmEntriesController.php:400
1513
  msgid "This form is in the trash and is scheduled to be deleted permanently in %s along with any entries."
1514
  msgstr ""
1515
 
1516
- #: classes/controllers/FrmEntriesController.php:419
1517
  msgid "You are trying to view an entry that does not exist."
1518
  msgstr ""
1519
 
1520
- #: classes/controllers/FrmEntriesController.php:447
1521
  msgid "Entry was Successfully Deleted"
1522
  msgstr ""
1523
 
@@ -1553,7 +1554,7 @@ msgstr ""
1553
  #: classes/views/frm-forms/_publish_box.php:16
1554
  #: classes/views/frm-forms/list-templates.php:155
1555
  #: classes/views/frm-forms/list-templates.php:264
1556
- #: classes/helpers/FrmFormsListHelper.php:308
1557
  msgid "Preview"
1558
  msgstr ""
1559
 
@@ -1577,6 +1578,11 @@ msgstr ""
1577
  msgid "Slide vertically"
1578
  msgstr ""
1579
 
 
 
 
 
 
1580
  #: classes/views/frm-forms/settings-html.php:3
1581
  msgid "Form Classes"
1582
  msgstr ""
@@ -1614,8 +1620,8 @@ msgstr ""
1614
 
1615
  #: classes/views/frm-forms/new-form-overlay.php:31
1616
  #: classes/views/shared/confirm-overlay.php:14
1617
- #: classes/views/shared/admin-header.php:42
1618
- #: classes/helpers/FrmAppHelper.php:2392
1619
  msgid "Cancel"
1620
  msgstr ""
1621
 
@@ -1627,12 +1633,18 @@ msgstr ""
1627
  #: classes/views/shared/mb_adv_info.php:35
1628
  #: classes/views/shared/mb_adv_info.php:178
1629
  #: classes/views/frm-entries/list.php:42
1630
- #: classes/helpers/FrmAppHelper.php:920
1631
  msgid "Search"
1632
  msgstr ""
1633
 
1634
- #: classes/views/frm-forms/list-templates.php:5
1635
- msgid "Add New Form"
 
 
 
 
 
 
1636
  msgstr ""
1637
 
1638
  #. translators: %1$s: Start link HTML, %2$s: End link HTML
@@ -1645,7 +1657,7 @@ msgid "Blank Form"
1645
  msgstr ""
1646
 
1647
  #: classes/views/frm-forms/list-templates.php:58
1648
- #: classes/views/shared/admin-header.php:37
1649
  #: classes/views/xml/import_form.php:12
1650
  #: classes/views/frm-entries/list.php:29
1651
  msgid "Import"
@@ -1656,7 +1668,7 @@ msgid "Search Templates"
1656
  msgstr ""
1657
 
1658
  #: classes/views/frm-forms/list-templates.php:74
1659
- #: classes/helpers/FrmEntriesListHelper.php:141
1660
  msgid "Filter"
1661
  msgstr ""
1662
 
@@ -1696,7 +1708,6 @@ msgid "Select form for new template"
1696
  msgstr ""
1697
 
1698
  #: classes/views/frm-forms/list-templates.php:190
1699
- #: classes/views/frm-entries/no_entries.php:37
1700
  msgid "You have not created any forms yet."
1701
  msgstr ""
1702
 
@@ -1714,8 +1725,8 @@ msgstr ""
1714
 
1715
  #: classes/views/frm-forms/list-templates.php:256
1716
  #: classes/views/frm-form-actions/form_action.php:21
1717
- #: classes/helpers/FrmEntriesListHelper.php:286
1718
- #: classes/helpers/FrmFormsListHelper.php:135
1719
  #: classes/helpers/FrmFormsHelper.php:1103
1720
  msgid "Delete"
1721
  msgstr ""
@@ -1813,7 +1824,7 @@ msgid "Show Page Content"
1813
  msgstr ""
1814
 
1815
  #: classes/views/frm-forms/settings-advanced.php:93
1816
- #: classes/helpers/FrmAppHelper.php:1045
1817
  msgid "Select a Page"
1818
  msgstr ""
1819
 
@@ -1882,11 +1893,11 @@ msgstr ""
1882
  msgid "Page %s"
1883
  msgstr ""
1884
 
1885
- #: classes/views/frm-forms/form.php:43
1886
  msgid "Add Fields Here"
1887
  msgstr ""
1888
 
1889
- #: classes/views/frm-forms/form.php:46
1890
  msgid "Click or drag a field from the sidebar to add it to your form"
1891
  msgstr ""
1892
 
@@ -2118,6 +2129,8 @@ msgstr ""
2118
  #: classes/views/addons/list.php:84
2119
  #: classes/views/addons/list.php:94
2120
  #: classes/views/addons/list.php:95
 
 
2121
  msgid "Upgrade Now"
2122
  msgstr ""
2123
 
@@ -2144,7 +2157,7 @@ msgstr ""
2144
 
2145
  #: classes/views/shared/confirm-overlay.php:10
2146
  #: classes/views/shared/info-overlay.php:10
2147
- #: classes/helpers/FrmAppHelper.php:2399
2148
  msgid "Are you sure?"
2149
  msgstr ""
2150
 
@@ -2219,6 +2232,18 @@ msgstr ""
2219
  msgid "Sorry to hear you aren't enjoying building with Formidable. We would love a chance to improve. Could you take a minute and let us know what we can do better?"
2220
  msgstr ""
2221
 
 
 
 
 
 
 
 
 
 
 
 
 
2222
  #: classes/views/shared/mb_adv_info.php:5
2223
  msgid "Fields"
2224
  msgstr ""
@@ -2246,7 +2271,7 @@ msgstr ""
2246
 
2247
  #: classes/views/shared/mb_adv_info.php:90
2248
  #: classes/helpers/FrmCSVExportHelper.php:154
2249
- #: classes/helpers/FrmAppHelper.php:2371
2250
  msgid "ID"
2251
  msgstr ""
2252
 
@@ -2256,7 +2281,7 @@ msgstr ""
2256
 
2257
  #: classes/views/shared/mb_adv_info.php:108
2258
  #: classes/views/shared/mb_adv_info.php:122
2259
- #: classes/helpers/FrmAppHelper.php:2433
2260
  msgid "Select a Field"
2261
  msgstr ""
2262
 
@@ -2268,6 +2293,18 @@ msgstr ""
2268
  msgid "Click to Insert"
2269
  msgstr ""
2270
 
 
 
 
 
 
 
 
 
 
 
 
 
2271
  #: classes/views/shared/info-overlay.php:14
2272
  msgid "Got it!"
2273
  msgstr ""
@@ -2594,6 +2631,7 @@ msgid "Styling disabled"
2594
  msgstr ""
2595
 
2596
  #: classes/views/styles/manage.php:76
 
2597
  msgid "No Forms Found"
2598
  msgstr ""
2599
 
@@ -2867,7 +2905,7 @@ msgid "Label Position"
2867
  msgstr ""
2868
 
2869
  #: classes/views/frm-fields/back-end/settings.php:265
2870
- #: classes/helpers/FrmAppHelper.php:2393
2871
  msgid "Default"
2872
  msgstr ""
2873
 
@@ -3255,7 +3293,7 @@ msgid "Post"
3255
  msgstr ""
3256
 
3257
  #: classes/views/frm-entries/sidebar-shared.php:38
3258
- #: classes/helpers/FrmEntriesListHelper.php:281
3259
  msgid "View"
3260
  msgstr ""
3261
 
@@ -3299,7 +3337,7 @@ msgstr ""
3299
  msgid "You did not add any fields to your form. %1$sGo back%2$s and add some."
3300
  msgstr ""
3301
 
3302
- #: classes/views/frm-entries/form.php:85
3303
  msgid "If you are human, leave this field blank."
3304
  msgstr ""
3305
 
@@ -3313,24 +3351,19 @@ msgid "If you would like to save entries in this form, go to the %1$sform Settin
3313
  msgstr ""
3314
 
3315
  #. translators: %s: The form name
3316
- #: classes/views/frm-entries/no_entries.php:20
3317
  msgid "No Entries for form: %s"
3318
  msgstr ""
3319
 
3320
- #: classes/views/frm-entries/no_entries.php:22
3321
- msgid "No Entries found."
3322
  msgstr ""
3323
 
3324
  #. translators: %1$s: Start link HTML, %2$s: End link HTML, %3$s: Line break HTML
3325
- #: classes/views/frm-entries/no_entries.php:30
3326
  msgid "See the %1$sform documentation%2$s for instructions on publishing your form"
3327
  msgstr ""
3328
 
3329
- #. translators: %1$s: Start link HTML, %2$s: End link HTML, %3$s: Line break HTML
3330
- #: classes/views/frm-entries/no_entries.php:42
3331
- msgid "To view entries, you must first %1$sbuild a form%2$s"
3332
- msgstr ""
3333
-
3334
  #: classes/helpers/FrmTipsHelper.php:29
3335
  msgid "Pro Tip:"
3336
  msgstr ""
@@ -3541,96 +3574,91 @@ msgstr ""
3541
  msgid "Collect instant payments, and send leads to MailChimp."
3542
  msgstr ""
3543
 
3544
- #: classes/helpers/FrmEntriesListHelper.php:90
3545
  msgid "No Entries Found"
3546
  msgstr ""
3547
 
3548
- #: classes/helpers/FrmEntriesListHelper.php:122
3549
  msgid "Getting spam form submissions?"
3550
  msgstr ""
3551
 
3552
- #: classes/helpers/FrmEntriesListHelper.php:124
3553
  msgid "Learn how to prevent them."
3554
  msgstr ""
3555
 
3556
- #: classes/helpers/FrmEntriesListHelper.php:140
3557
  msgid "View all forms"
3558
  msgstr ""
3559
 
3560
- #: classes/helpers/FrmEntriesListHelper.php:251
3561
  msgid "No"
3562
  msgstr ""
3563
 
3564
- #: classes/helpers/FrmEntriesListHelper.php:251
3565
  msgid "Yes"
3566
  msgstr ""
3567
 
3568
- #: classes/helpers/FrmEntriesListHelper.php:286
3569
  msgid "Permanently delete this entry?"
3570
  msgstr ""
3571
 
3572
- #: classes/helpers/FrmFormsListHelper.php:103
3573
  msgid "No forms found in the trash."
3574
  msgstr ""
3575
 
3576
- #: classes/helpers/FrmFormsListHelper.php:106
3577
  msgid "See all forms."
3578
  msgstr ""
3579
 
3580
- #: classes/helpers/FrmFormsListHelper.php:114
3581
- #: classes/helpers/FrmAppHelper.php:905
3582
- msgid "Add New"
3583
- msgstr ""
3584
-
3585
- #: classes/helpers/FrmFormsListHelper.php:126
3586
  #: classes/helpers/FrmFormsHelper.php:1091
3587
  msgid "Restore"
3588
  msgstr ""
3589
 
3590
- #: classes/helpers/FrmFormsListHelper.php:130
3591
  #: classes/helpers/FrmFormsHelper.php:1102
3592
  msgid "Delete Permanently"
3593
  msgstr ""
3594
 
3595
- #: classes/helpers/FrmFormsListHelper.php:133
3596
  msgid "Move to Trash"
3597
  msgstr ""
3598
 
3599
- #: classes/helpers/FrmFormsListHelper.php:149
3600
  msgid "Empty Trash"
3601
  msgstr ""
3602
 
3603
- #: classes/helpers/FrmFormsListHelper.php:158
3604
  msgid "My Forms"
3605
  msgstr ""
3606
 
3607
- #: classes/helpers/FrmFormsListHelper.php:159
3608
  msgid "Drafts"
3609
  msgstr ""
3610
 
3611
- #: classes/helpers/FrmFormsListHelper.php:160
3612
  #: classes/helpers/FrmFormsHelper.php:1096
3613
  #: classes/helpers/FrmFormsHelper.php:1199
3614
  msgid "Trash"
3615
  msgstr ""
3616
 
3617
  #. translators: %1$s: Status, %2$s: Number of items
3618
- #: classes/helpers/FrmFormsListHelper.php:182
3619
  msgid "%1$s <span class=\"count\">(%2$s)</span>"
3620
  msgstr ""
3621
 
3622
- #: classes/helpers/FrmFormsListHelper.php:264
3623
  msgid "Saving entries is disabled for this form"
3624
  msgstr ""
3625
 
3626
- #: classes/helpers/FrmFormsListHelper.php:344
3627
  #: classes/helpers/FrmFormsHelper.php:1198
3628
  #: classes/helpers/FrmCSVExportHelper.php:152
3629
  msgid "Draft"
3630
  msgstr ""
3631
 
3632
  #: classes/helpers/FrmFieldsHelper.php:286
3633
- #: classes/helpers/FrmAppHelper.php:2404
3634
  msgid "The entered values do not match"
3635
  msgstr ""
3636
 
@@ -3641,7 +3669,7 @@ msgstr ""
3641
 
3642
  #: classes/helpers/FrmFieldsHelper.php:456
3643
  #: classes/helpers/FrmFieldsHelper.php:457
3644
- #: classes/helpers/FrmAppHelper.php:2408
3645
  msgid "New Option"
3646
  msgstr ""
3647
 
@@ -4832,71 +4860,71 @@ msgstr ""
4832
  msgid "Placeholder inside the field"
4833
  msgstr ""
4834
 
4835
- #: classes/helpers/FrmListHelper.php:138
4836
  msgid "List View"
4837
  msgstr ""
4838
 
4839
- #: classes/helpers/FrmListHelper.php:139
4840
  msgid "Excerpt View"
4841
  msgstr ""
4842
 
4843
- #: classes/helpers/FrmListHelper.php:257
4844
- #: classes/helpers/FrmAppHelper.php:2434
4845
  msgid "No items found."
4846
  msgstr ""
4847
 
4848
- #: classes/helpers/FrmListHelper.php:384
4849
  msgid "Select bulk action"
4850
  msgstr ""
4851
 
4852
- #: classes/helpers/FrmListHelper.php:386
4853
  msgid "Bulk Actions"
4854
  msgstr ""
4855
 
4856
- #: classes/helpers/FrmListHelper.php:396
4857
  msgid "Apply"
4858
  msgstr ""
4859
 
4860
- #: classes/helpers/FrmListHelper.php:464
4861
- #: classes/helpers/FrmListHelper.php:1129
4862
  msgid "Show more details"
4863
  msgstr ""
4864
 
4865
  #. translators: %s: Number of items
4866
- #: classes/helpers/FrmListHelper.php:572
4867
- #: classes/helpers/FrmListHelper.php:1155
4868
  msgid "%s item"
4869
  msgid_plural "%s items"
4870
  msgstr[0] ""
4871
 
4872
- #: classes/helpers/FrmListHelper.php:603
4873
- #: classes/helpers/FrmListHelper.php:607
4874
  msgid "Current Page"
4875
  msgstr ""
4876
 
4877
  #. translators: %1$s: Current page number, %2$s: Total pages
4878
- #: classes/helpers/FrmListHelper.php:615
4879
  msgctxt "paging"
4880
  msgid "%1$s of %2$s"
4881
  msgstr ""
4882
 
4883
- #: classes/helpers/FrmListHelper.php:679
4884
  msgid "First page"
4885
  msgstr ""
4886
 
4887
- #: classes/helpers/FrmListHelper.php:680
4888
  msgid "Last page"
4889
  msgstr ""
4890
 
4891
- #: classes/helpers/FrmListHelper.php:681
4892
  msgid "Previous page"
4893
  msgstr ""
4894
 
4895
- #: classes/helpers/FrmListHelper.php:682
4896
  msgid "Next page"
4897
  msgstr ""
4898
 
4899
- #: classes/helpers/FrmListHelper.php:902
4900
  msgid "Select All"
4901
  msgstr ""
4902
 
@@ -5113,7 +5141,7 @@ msgid "Is this intentional?"
5113
  msgstr ""
5114
 
5115
  #: classes/helpers/FrmFormsHelper.php:1457
5116
- #: classes/helpers/FrmAppHelper.php:2428
5117
  msgid "See the list of reserved words in WordPress."
5118
  msgstr ""
5119
 
@@ -5163,555 +5191,563 @@ msgstr ""
5163
  msgid "Parent ID"
5164
  msgstr ""
5165
 
5166
- #: classes/helpers/FrmAppHelper.php:1183
 
 
 
 
 
 
 
 
5167
  msgid "View Forms"
5168
  msgstr ""
5169
 
5170
- #: classes/helpers/FrmAppHelper.php:1184
5171
  msgid "Add and Edit Forms"
5172
  msgstr ""
5173
 
5174
- #: classes/helpers/FrmAppHelper.php:1185
5175
  msgid "Delete Forms"
5176
  msgstr ""
5177
 
5178
- #: classes/helpers/FrmAppHelper.php:1186
5179
  msgid "Access this Settings Page"
5180
  msgstr ""
5181
 
5182
- #: classes/helpers/FrmAppHelper.php:1187
5183
  msgid "View Entries from Admin Area"
5184
  msgstr ""
5185
 
5186
- #: classes/helpers/FrmAppHelper.php:1188
5187
  msgid "Delete Entries from Admin Area"
5188
  msgstr ""
5189
 
5190
- #: classes/helpers/FrmAppHelper.php:1195
5191
  msgid "Add Entries from Admin Area"
5192
  msgstr ""
5193
 
5194
- #: classes/helpers/FrmAppHelper.php:1196
5195
  msgid "Edit Entries from Admin Area"
5196
  msgstr ""
5197
 
5198
- #: classes/helpers/FrmAppHelper.php:1197
5199
  msgid "View Reports"
5200
  msgstr ""
5201
 
5202
- #: classes/helpers/FrmAppHelper.php:1198
5203
  msgid "Add/Edit Views"
5204
  msgstr ""
5205
 
5206
- #: classes/helpers/FrmAppHelper.php:1864
5207
  msgid "at"
5208
  msgstr ""
5209
 
5210
- #: classes/helpers/FrmAppHelper.php:2008
5211
  msgid "year"
5212
  msgstr ""
5213
 
5214
- #: classes/helpers/FrmAppHelper.php:2009
5215
  msgid "years"
5216
  msgstr ""
5217
 
5218
- #: classes/helpers/FrmAppHelper.php:2013
5219
  msgid "month"
5220
  msgstr ""
5221
 
5222
- #: classes/helpers/FrmAppHelper.php:2014
5223
  msgid "months"
5224
  msgstr ""
5225
 
5226
- #: classes/helpers/FrmAppHelper.php:2018
5227
  msgid "week"
5228
  msgstr ""
5229
 
5230
- #: classes/helpers/FrmAppHelper.php:2019
5231
  msgid "weeks"
5232
  msgstr ""
5233
 
5234
- #: classes/helpers/FrmAppHelper.php:2023
5235
  msgid "day"
5236
  msgstr ""
5237
 
5238
- #: classes/helpers/FrmAppHelper.php:2024
5239
  msgid "days"
5240
  msgstr ""
5241
 
5242
- #: classes/helpers/FrmAppHelper.php:2028
5243
  msgid "hour"
5244
  msgstr ""
5245
 
5246
- #: classes/helpers/FrmAppHelper.php:2029
5247
  msgid "hours"
5248
  msgstr ""
5249
 
5250
- #: classes/helpers/FrmAppHelper.php:2033
5251
  msgid "minute"
5252
  msgstr ""
5253
 
5254
- #: classes/helpers/FrmAppHelper.php:2034
5255
  msgid "minutes"
5256
  msgstr ""
5257
 
5258
- #: classes/helpers/FrmAppHelper.php:2038
5259
  msgid "second"
5260
  msgstr ""
5261
 
5262
- #: classes/helpers/FrmAppHelper.php:2039
5263
  msgid "seconds"
5264
  msgstr ""
5265
 
5266
- #: classes/helpers/FrmAppHelper.php:2133
5267
  msgid "Give this action a label for easy reference."
5268
  msgstr ""
5269
 
5270
- #: classes/helpers/FrmAppHelper.php:2134
5271
  msgid "Add one or more recipient addresses separated by a \",\". FORMAT: Name <name@email.com> or name@email.com. [admin_email] is the address set in WP General Settings."
5272
  msgstr ""