Formidable Forms – Form Builder for WordPress - Version 4.09.06

Version Description

  • New: Added a new welcome screen to introduce new users to Formidable.
  • Fix: Make sure that Site Health exists when upgrading.
  • Fix: Invalid message data was occasionally appearing in the Inbox.
  • Fix: Excluded checkbox options were not properly toggling for Action Taxonomies.
  • Fix: Some pop ups were occasionally including outdated text.
Download this release

Release Info

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

Code changes from version 4.09.05 to 4.09.06

classes/controllers/FrmAddonsController.php CHANGED
@@ -45,6 +45,17 @@ class FrmAddonsController {
45
  $license_type = isset( $addons['error']['type'] ) ? $addons['error']['type'] : '';
46
  unset( $addons['error'] );
47
  }
 
 
 
 
 
 
 
 
 
 
 
48
  self::prepare_addons( $addons );
49
 
50
  $pricing = FrmAppHelper::admin_upgrade_link( 'addons' );
@@ -91,7 +102,7 @@ class FrmAddonsController {
91
  protected static function fallback_plugin_list() {
92
  $list = array(
93
  'formidable-pro' => array(
94
- 'title' => 'Formidable Forms',
95
  'link' => 'pricing/',
96
  'docs' => '',
97
  'excerpt' => 'Enhance your basic Formidable forms with a plethora of Pro field types and features. Create advanced forms and data-driven applications in minutes.',
45
  $license_type = isset( $addons['error']['type'] ) ? $addons['error']['type'] : '';
46
  unset( $addons['error'] );
47
  }
48
+
49
+ $pro = array(
50
+ 'pro' => array(
51
+ 'title' => 'Formidable Forms Pro',
52
+ 'slug' => 'formidable-pro',
53
+ 'released' => '2011-02-05',
54
+ 'docs' => 'knowledgebase/',
55
+ 'excerpt' => 'Create calculators, surveys, smart forms, and data-driven applications. Build directories, real estate listings, job boards, and much more.',
56
+ ),
57
+ );
58
+ $addons = $pro + $addons;
59
  self::prepare_addons( $addons );
60
 
61
  $pricing = FrmAppHelper::admin_upgrade_link( 'addons' );
102
  protected static function fallback_plugin_list() {
103
  $list = array(
104
  'formidable-pro' => array(
105
+ 'title' => 'Formidable Forms Pro',
106
  'link' => 'pricing/',
107
  'docs' => '',
108
  'excerpt' => 'Enhance your basic Formidable forms with a plethora of Pro field types and features. Create advanced forms and data-driven applications in minutes.',
classes/controllers/FrmAppController.php CHANGED
@@ -94,6 +94,7 @@ class FrmAppController {
94
  'formidable-styles',
95
  'formidable-styles2',
96
  'formidable-inbox',
 
97
  );
98
 
99
  $get_page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
@@ -267,7 +268,7 @@ class FrmAppController {
267
  include $shared_path . 'upgrade_overlay.php';
268
  include $shared_path . 'confirm-overlay.php';
269
 
270
- if ( FrmAppHelper::is_admin_page( 'formidable' ) && in_array( FrmAppHelper::get_param( 'frm_action' ), array( '', 'list', 'trash' ), true ) ) {
271
  self::new_form_overlay_html();
272
  }
273
  }
@@ -562,6 +563,8 @@ class FrmAppController {
562
  set_transient( 'frm_updating_api', true, MINUTE_IN_SECONDS );
563
  $request = new WP_REST_Request( 'GET', '/frm-admin/v1/install' );
564
 
 
 
565
  if ( $blog_id ) {
566
  switch_to_blog( $blog_id );
567
  $response = rest_do_request( $request );
@@ -576,6 +579,19 @@ class FrmAppController {
576
  }
577
  }
578
 
 
 
 
 
 
 
 
 
 
 
 
 
 
579
  /**
580
  * @since 3.0
581
  */
94
  'formidable-styles',
95
  'formidable-styles2',
96
  'formidable-inbox',
97
+ 'formidable-welcome',
98
  );
99
 
100
  $get_page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
268
  include $shared_path . 'upgrade_overlay.php';
269
  include $shared_path . 'confirm-overlay.php';
270
 
271
+ if ( ( FrmAppHelper::is_admin_page( 'formidable' ) || FrmAppHelper::is_admin_page( 'formidable-welcome' ) ) && in_array( FrmAppHelper::get_param( 'frm_action' ), array( '', 'list', 'trash' ), true ) ) {
272
  self::new_form_overlay_html();
273
  }
274
  }
563
  set_transient( 'frm_updating_api', true, MINUTE_IN_SECONDS );
564
  $request = new WP_REST_Request( 'GET', '/frm-admin/v1/install' );
565
 
566
+ self::maybe_add_wp_site_health();
567
+
568
  if ( $blog_id ) {
569
  switch_to_blog( $blog_id );
570
  $response = rest_do_request( $request );
579
  }
580
  }
581
 
582
+ /**
583
+ * Make sure WP_Site_Health has been included because it is required when calling rest_do_request.
584
+ * Check first that the file exists because WP_Site_Health was only introduced in WordPress 5.2.
585
+ */
586
+ private static function maybe_add_wp_site_health() {
587
+ if ( ! class_exists( 'WP_Site_Health' ) ) {
588
+ $wp_site_health_path = ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
589
+ if ( file_exists( $wp_site_health_path ) ) {
590
+ require_once $wp_site_health_path;
591
+ }
592
+ }
593
+ }
594
+
595
  /**
596
  * @since 3.0
597
  */
classes/controllers/FrmHooksController.php CHANGED
@@ -150,6 +150,7 @@ class FrmHooksController {
150
  add_action( 'admin_init', 'FrmUsageController::schedule_send' );
151
 
152
  FrmSMTPController::load_hooks();
 
153
  }
154
 
155
  public static function load_ajax_hooks() {
150
  add_action( 'admin_init', 'FrmUsageController::schedule_send' );
151
 
152
  FrmSMTPController::load_hooks();
153
+ FrmWelcomeController::load_hooks();
154
  }
155
 
156
  public static function load_ajax_hooks() {
classes/controllers/FrmWelcomeController.php ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ die( 'You are not allowed to call this page directly.' );
4
+ }
5
+
6
+ class FrmWelcomeController {
7
+
8
+ public static $menu_slug = 'formidable-welcome';
9
+
10
+ public static $option_name = 'frm_activation_redirect';
11
+
12
+ private static $last_redirect = 'frm_welcome_redirect';
13
+
14
+ /**
15
+ * Register all of the hooks related to the welcome screen functionality
16
+ *
17
+ * @access public
18
+ */
19
+ public static function load_hooks() {
20
+ add_action( 'admin_init', __CLASS__ . '::redirect' );
21
+
22
+ if ( ! FrmAppHelper::is_admin_page( self::$menu_slug ) ) {
23
+ return;
24
+ }
25
+
26
+ add_action( 'admin_menu', __CLASS__ . '::screen_page' );
27
+ add_action( 'admin_head', __CLASS__ . '::remove_menu' );
28
+ add_action( 'admin_enqueue_scripts', __CLASS__ . '::enqueue_styles' );
29
+ }
30
+
31
+ /**
32
+ * Performs a safe (local) redirect to the welcome screen
33
+ * when the plugin is activated
34
+ *
35
+ * @return void
36
+ */
37
+ public static function redirect() {
38
+ $current_page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
39
+ if ( $current_page === self::$menu_slug ) {
40
+ // Prevent endless loop.
41
+ return;
42
+ }
43
+
44
+ // Only do this for single site installs.
45
+ if ( isset( $_GET['activate-multi'] ) || is_network_admin() ) { // WPCS: CSRF ok.
46
+ return;
47
+ }
48
+
49
+ // Check if we should consider redirection.
50
+ if ( ! self::is_welcome_screen() ) {
51
+ return;
52
+ }
53
+
54
+ set_transient( self::$option_name, 'no', 60 );
55
+
56
+ // Prevent redirect with every activation.
57
+ if ( self::already_redirected() ) {
58
+ return;
59
+ }
60
+
61
+ // Initial install.
62
+ wp_safe_redirect( esc_url( self::settings_link() ) );
63
+ exit;
64
+ }
65
+
66
+ /**
67
+ * Don't redirect every time the plugin is activated.
68
+ */
69
+ private static function already_redirected() {
70
+ $last_redirect = get_option( self::$last_redirect );
71
+ if ( $last_redirect ) {
72
+ return true;
73
+ }
74
+
75
+ update_option( self::$last_redirect, FrmAppHelper::plugin_version(), 'no' );
76
+ return false;
77
+ }
78
+
79
+ /**
80
+ * Add a submenu welcome screen for the formidable parent menu
81
+ *
82
+ * @return void
83
+ */
84
+ public static function screen_page() {
85
+ add_submenu_page( 'formidable', 'Formidable | ' . __( 'Welcome Screen', 'formidable' ), __( 'Welcome Screen', 'formidable' ), 'read', self::$menu_slug, __CLASS__ . '::screen_content' );
86
+ }
87
+
88
+ /**
89
+ * Include html content for the welcome screem
90
+ *
91
+ * @return void
92
+ */
93
+ public static function screen_content() {
94
+ FrmAppHelper::include_svg();
95
+ include FrmAppHelper::plugin_path() . '/classes/views/welcome/show.php';
96
+ }
97
+
98
+ /**
99
+ * Remove the welcome screen submenu page from the formidable parent menu
100
+ * since it is not necessary to show that link there
101
+ *
102
+ * @return void
103
+ */
104
+ public static function remove_menu() {
105
+ remove_submenu_page( 'formidable', self::$menu_slug );
106
+ }
107
+
108
+ /**
109
+ * Register the stylesheets for the welcome screen.
110
+ *
111
+ * @return void
112
+ */
113
+ public static function enqueue_styles() {
114
+ $version = FrmAppHelper::plugin_version();
115
+ wp_enqueue_style( 'frm-welcome-screen', FrmAppHelper::plugin_url() . '/css/welcome_screen.css', array( 'formidable-admin' ), $version );
116
+ }
117
+
118
+ /**
119
+ * Helps to confirm if the user is currently on the welcome screen
120
+ *
121
+ * @return bool
122
+ */
123
+ public static function is_welcome_screen() {
124
+ $to_redirect = get_transient( self::$option_name );
125
+ return $to_redirect === self::$menu_slug;
126
+ }
127
+
128
+ /**
129
+ * Build the admin URL link for the welcome screen
130
+ *
131
+ * @return string
132
+ */
133
+ public static function settings_link() {
134
+ return admin_url( 'admin.php?page=' . self::$menu_slug );
135
+ }
136
+
137
+ public static function upgrade_to_pro_button() {
138
+ if ( ! FrmAppHelper::pro_is_installed() ) {
139
+ ?>
140
+ <a href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( 'settings-license' ) ); ?>" class="button-secondary frm-button-secondary" target="_blank" rel="nofollow noopener">
141
+ <?php esc_html_e( 'Upgrade Now', 'formidable' ); ?>
142
+ </a>
143
+ <?php
144
+ }
145
+ }
146
+
147
+ public static function maybe_show_license_box() {
148
+ if ( ! FrmAppHelper::pro_is_installed() ) {
149
+ FrmSettingsController::license_box();
150
+ }
151
+ }
152
+
153
+ public static function maybe_show_conditional_action_button( $plugin, $upgrade_link_args ) {
154
+ $is_installed = is_callable( 'FrmProAppHelper::views_is_installed' ) && FrmProAppHelper::views_is_installed();
155
+ if ( ! $is_installed ) {
156
+ FrmAddonsController::conditional_action_button( $plugin, $upgrade_link_args );
157
+ }
158
+ }
159
+ }
classes/helpers/FrmAppHelper.php CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
11
  /**
12
  * @since 2.0
13
  */
14
- public static $plug_version = '4.09.05';
15
 
16
  /**
17
  * @since 1.07.02
11
  /**
12
  * @since 2.0
13
  */
14
+ public static $plug_version = '4.09.06';
15
 
16
  /**
17
  * @since 1.07.02
classes/models/FrmInbox.php CHANGED
@@ -140,7 +140,7 @@ class FrmInbox extends FrmFormApi {
140
  $user_id = get_current_user_id();
141
  foreach ( $messages as $k => $message ) {
142
  $dismissed = isset( $message['dismissed'] ) && isset( $message['dismissed'][ $user_id ] );
143
- if ( $this->is_expired( $message ) || $dismissed ) {
144
  unset( $messages[ $k ] );
145
  } elseif ( ! $this->is_for_user( $message ) ) {
146
  unset( $messages[ $k ] );
@@ -176,7 +176,7 @@ class FrmInbox extends FrmFormApi {
176
  * @param string $key
177
  */
178
  public function mark_read( $key ) {
179
- if ( ! isset( $this->messages[ $key ] ) ) {
180
  return;
181
  }
182
 
140
  $user_id = get_current_user_id();
141
  foreach ( $messages as $k => $message ) {
142
  $dismissed = isset( $message['dismissed'] ) && isset( $message['dismissed'][ $user_id ] );
143
+ if ( empty( $k ) || $this->is_expired( $message ) || $dismissed ) {
144
  unset( $messages[ $k ] );
145
  } elseif ( ! $this->is_for_user( $message ) ) {
146
  unset( $messages[ $k ] );
176
  * @param string $key
177
  */
178
  public function mark_read( $key ) {
179
+ if ( ! $key || ! isset( $this->messages[ $key ] ) ) {
180
  return;
181
  }
182
 
classes/models/FrmMigrate.php CHANGED
@@ -234,6 +234,7 @@ class FrmMigrate {
234
  delete_option( 'frm-usage-uuid' );
235
  delete_option( 'frm_inbox' );
236
  delete_option( 'frmpro_css' );
 
237
 
238
  // Delete roles.
239
  $frm_roles = FrmAppHelper::frm_capabilities();
@@ -264,6 +265,7 @@ class FrmMigrate {
264
  delete_transient( 'frmpro_css' );
265
  delete_transient( 'frm_options' );
266
  delete_transient( 'frmpro_options' );
 
267
 
268
  $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_timeout_frm_form_fields_%', '_transient_frm_form_fields_%' ) );
269
 
234
  delete_option( 'frm-usage-uuid' );
235
  delete_option( 'frm_inbox' );
236
  delete_option( 'frmpro_css' );
237
+ delete_option( 'frm_welcome_redirect' );
238
 
239
  // Delete roles.
240
  $frm_roles = FrmAppHelper::frm_capabilities();
265
  delete_transient( 'frmpro_css' );
266
  delete_transient( 'frm_options' );
267
  delete_transient( 'frmpro_options' );
268
+ delete_transient( 'frm_activation_redirect' );
269
 
270
  $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_timeout_frm_form_fields_%', '_transient_frm_form_fields_%' ) );
271
 
classes/views/welcome/show.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ die( 'You are not allowed to call this page directly.' );
4
+ }
5
+ ?>
6
+ <div class="frm_wrap">
7
+ <div class="frm_grid_container frm_no_grid_750">
8
+ <div class="frm6">
9
+ <div class="frm-ws-block-1">
10
+ <div class="frm-ws-logo">
11
+ <?php
12
+ FrmAppHelper::show_logo(
13
+ array(
14
+ 'height' => 68.76,
15
+ 'width' => 69,
16
+ )
17
+ );
18
+ ?>
19
+ </div>
20
+ <h1><?php esc_html_e( 'Welcome to Formidable Forms!', 'formidable' ); ?></h1>
21
+ <p><?php esc_html_e( 'Thanks for choosing Formidable Froms - The most powerful and vesatile form builder for Wordpress', 'formidable' ); ?></p>
22
+ <?php FrmWelcomeController::maybe_show_license_box(); ?>
23
+
24
+ </div>
25
+ </div>
26
+ <div class="frm6">
27
+ <div class="frm-player">
28
+ <iframe width="480" height="240" src="https://www.youtube.com/embed/-eGuL_OWHw4" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
29
+ </div>
30
+ </div>
31
+ </div>
32
+
33
+ <div class="frm_grid_container frm-top-spacing">
34
+ <div class="frm6 frm-ws-block frm-create-blank-form">
35
+ <div class="frm-icon"><?php FrmAppHelper::icon_by_class( 'frmfont frm_plus_icon' ); ?></div>
36
+ <div class="frm-fill">
37
+ <h3><?php esc_html_e( 'New Blank Form', 'formidable' ); ?></h3>
38
+ <p><?php esc_html_e( 'Create a new view from scratch', 'formidable' ); ?></p>
39
+ </div>
40
+ <?php FrmAppHelper::icon_by_class( 'frmfont frm_arrow_right_icon frm-right-arrow' ); ?>
41
+ </div>
42
+ <div class="frm6 frm-ws-block frm-trigger-new-form-modal">
43
+ <div class="frm-icon frm-icon-briefcase">
44
+ <svg viewBox="0 0 24 24" fill="none"><path d="M15 6.5a1 1 0 01-1-1V4h-4v1.5a1 1 0 01-2 0V4c0-1.1.9-2 2-2h4a2 2 0 012 2v1.5a1 1 0 01-1 1z" fill="currentColor" fill-opacity=".6"/><path d="M18 12.5v1c0 .3-.3.7-.8.7s-.7-.4-.7-.8v-.9h-9v1c0 .3-.3.7-.8.7s-.7-.4-.7-.8v-.9H0v6.8A2.8 2.8 0 002.8 22h18.4a2.8 2.8 0 002.8-2.8v-6.7h-6zM21.3 5H2.6A2.8 2.8 0 000 7.8V11h6V9.7c0-.4.3-.7.8-.7s.7.3.7.8V11h9V9.7c0-.4.3-.7.8-.7s.7.3.7.8V11h6V7.7A2.8 2.8 0 0021.2 5z" fill="currentColor"/></svg>
45
+ </div>
46
+ <div class="frm-fill">
47
+ <h3><?php esc_html_e( 'New Form From a Template', 'formidable' ); ?></h3>
48
+ <p><?php esc_html_e( 'Check out our powerful pre-built templates', 'formidable' ); ?></p>
49
+ </div>
50
+ <?php FrmAppHelper::icon_by_class( 'frmfont frm_arrow_right_icon frm-right-arrow' ); ?>
51
+ </div>
52
+ </div>
53
+
54
+ <div class="frm-ws-carousel-wrapper">
55
+ <h4><?php esc_html_e( 'Get limitless possibilities', 'formidable' ); ?></h4>
56
+
57
+ <div class="frm_grid_container">
58
+ <div class="frm3">
59
+ <div class="frm-icon">
60
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 65 65"><path d="M57 39.5V11a4 4 0 00-4-4H11a4 4 0 00-4 4v42a4 4 0 004 4h42a4 4 0 004-4v-3M32.5 8.5v48" stroke="currentColor" stroke-width="3" stroke-linecap="round"/><path d="M40 28h10.5M40 34h10.5" stroke="currentColor" opacity=".6" stroke-width="3" stroke-linecap="round"/><path d="M32 33H8m12.5-18.5V25m3.6 16.2l-7.4 7.4M15 20h10.5m-9.1 21.2l7.4 7.4" stroke="currentColor" stroke-width="3" stroke-linecap="round"/></svg>
61
+ </div>
62
+ <h3><?php esc_html_e( 'Calculators', 'formidable' ); ?></h3>
63
+ <p><?php esc_html_e( 'Give instant online estimates and calculate advanced product options.', 'formidable' ); ?></p>
64
+ <?php FrmWelcomeController::upgrade_to_pro_button(); ?>
65
+ </div>
66
+ <div class="frm3">
67
+ <div class="frm-icon">
68
+ <?php FrmAppHelper::icon_by_class( 'frmfont frm_comment_icon' ); ?>
69
+ </div>
70
+ <h3><?php esc_html_e( 'Survey and Polls', 'formidable' ); ?></h3>
71
+ <p><?php esc_html_e( 'Collect customer feedback & data like a pro - no coding required.', 'formidable' ); ?></p>
72
+ <?php FrmWelcomeController::upgrade_to_pro_button(); ?>
73
+ </div>
74
+ <div class="frm3">
75
+ <div class="frm-icon">
76
+ <svg viewBox="0 0 28 28" fill="none"><path d="M25 12.9L14.3 23.6a7 7 0 11-10-9.9L15.2 3a4.7 4.7 0 016.6 6.6L11 20.3A2.3 2.3 0 017.7 17l9.9-9.9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
77
+ </div>
78
+ <h3><?php esc_html_e( 'File uploads', 'formidable' ); ?></h3>
79
+ <p><?php esc_html_e( 'Easily upload documents, files, photos, and music for user avatars, featured images, or email attachments.', 'formidable' ); ?></p>
80
+ <?php FrmWelcomeController::upgrade_to_pro_button(); ?>
81
+ </div>
82
+ <div class="frm3">
83
+ <div class="frm-icon">
84
+ <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.3 5.5H1.8C1 5.5.5 4.9.5 4.3V1.8C.5 1 1.1.5 1.8.5h5.4c.7 0 1.3.6 1.3 1.3v2.4c0 .7-.6 1.3-1.2 1.3zm0 9H1.8c-.7 0-1.3-.6-1.3-1.2v-2.5c0-.7.6-1.3 1.3-1.3h5.4c.7 0 1.3.6 1.3 1.2v2.5c0 .7-.6 1.3-1.2 1.3zm0 9H1.8c-.7 0-1.3-.6-1.3-1.2v-2.5c0-.7.6-1.3 1.3-1.3h5.4c.7 0 1.3.6 1.3 1.2v2.5c0 .7-.6 1.3-1.2 1.3z" stroke="currentColor" opacity=".6"/><path d="M23.3 1.4H11.7c-.4 0-.7.3-.7.6s.3.6.8.6h11.5c.4 0 .7-.3.7-.6s-.3-.6-.7-.6zm0 2H11.7c-.4 0-.7.3-.7.6s.3.6.8.6h11.5c.4 0 .7-.3.7-.6s-.3-.6-.7-.6zm0 7H11.7c-.4 0-.7.3-.7.6s.3.6.8.6h11.5c.4 0 .7-.3.7-.6s-.3-.6-.7-.6zm0 2H11.7c-.4 0-.7.3-.7.6s.3.6.8.6h11.5c.4 0 .7-.3.7-.6s-.3-.6-.7-.6zm0 7H11.7c-.4 0-.7.3-.7.6s.3.6.8.6h11.5c.4 0 .7-.3.7-.6s-.3-.6-.7-.6zm0 2H11.7c-.4 0-.7.3-.7.6s.3.6.8.6h11.5c.4 0 .7-.3.7-.6s-.3-.6-.7-.6z" fill="currentColor"/></svg>
85
+ </div>
86
+ <h3><?php esc_html_e( 'Display form data with views', 'formidable' ); ?></h3>
87
+ <p><?php esc_html_e( 'Now you can display form data in custom Views without any PHP.', 'formidable' ); ?></p>
88
+ <?php FrmWelcomeController::maybe_show_conditional_action_button( 'views', 'views-info' ); ?>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ </div>
css/frm_admin.css CHANGED
@@ -1101,7 +1101,7 @@ h2 .frm-button-primary {
1101
  .wp-core-ui.frm-white-body .button-secondary:focus,
1102
  .frm_wrap .preview > .button:hover {
1103
  border-color: var(--primary-hover) !important;
1104
- background: var(--primary-hover);
1105
  color: #fff;
1106
  box-shadow: none;
1107
  }
@@ -6878,6 +6878,7 @@ li.frm_noallow.button.frm_show_upgrade {
6878
  border-radius: 10px;
6879
  border: 1px solid var(--grey);
6880
  background-color: #fff;
 
6881
  }
6882
 
6883
  .frm-dialog .postbox {
1101
  .wp-core-ui.frm-white-body .button-secondary:focus,
1102
  .frm_wrap .preview > .button:hover {
1103
  border-color: var(--primary-hover) !important;
1104
+ background: var(--primary-hover) !important;
1105
  color: #fff;
1106
  box-shadow: none;
1107
  }
6878
  border-radius: 10px;
6879
  border: 1px solid var(--grey);
6880
  background-color: #fff;
6881
+ max-width: 100% !important;
6882
  }
6883
 
6884
  .frm-dialog .postbox {
css/welcome_screen.css ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body.frm-admin-page-welcome {
2
+ background: var(--sidebar-color);
3
+ color: var(--darkest-grey);
4
+ }
5
+
6
+ .frm_wrap {
7
+ max-width: 1092px;
8
+ margin: 62px auto 0;
9
+ padding: 0 20px;
10
+ }
11
+
12
+ .frm-button-secondary:hover {
13
+ background: transparent !important;
14
+ }
15
+
16
+ .frm-ws-block-1 h1 {
17
+ font-size: 30px;
18
+ line-height: 41px;
19
+ color: var(--darkest-grey);
20
+ }
21
+
22
+ .frm-ws-block-1 p {
23
+ font-size: 14px;
24
+ line-height: 25px;
25
+ opacity: 0.8;
26
+ }
27
+
28
+ #frm-connect-btns a {
29
+ border-radius: var(--border-radius);
30
+ margin: 16px 0;
31
+ padding: 12px 24px;
32
+ height: auto;
33
+ font-size: 15px;
34
+ line-height: 1;
35
+ }
36
+
37
+ #frm-connect-btns {
38
+ color: transparent; /* Hide the "or" */
39
+ opacity: 1;
40
+ }
41
+
42
+ #frm-using-lite {
43
+ display: none;
44
+ }
45
+
46
+ .frm-ws-block-1 .frm-bg-transparent {
47
+ margin-left: 16px;
48
+ }
49
+
50
+ .frm-ws-block-1 .frm-bg-transparent span {
51
+ color: var(--primary-color);
52
+ }
53
+
54
+ .frm-player {
55
+ overflow: hidden;
56
+ z-index: 1;
57
+ margin-left: 34px;
58
+ margin-top: 55px;
59
+ }
60
+
61
+ .frm-player iframe {
62
+ width: 100%;
63
+ max-width: 480px;
64
+ border-radius: 10px;
65
+ }
66
+
67
+ .frm-ws-block .frm-icon {
68
+ width: 40px;
69
+ height: 40px;
70
+ margin-right: 24px;
71
+
72
+ background: var(--primary-color);
73
+ border-radius: 4px;
74
+ }
75
+
76
+ .frm-ws-block h3 {
77
+ font-size: 14px;
78
+ color: rgba(40, 47, 54, 0.85);
79
+ margin: 2px 0;
80
+ }
81
+
82
+ .frm-ws-block p {
83
+ font-size: 13px;
84
+ opacity: 0.6;
85
+ margin: 0;
86
+ }
87
+
88
+ .frm-ws-block .frm-right-arrow {
89
+ height: 22px;
90
+ width: 19px;
91
+ align-self: center;
92
+ }
93
+
94
+ .frm-ws-block .frm-icon svg {
95
+ margin: 11px;
96
+ color: #FFFFFF;
97
+ }
98
+
99
+ .frm-ws-block .frm-icon-briefcase svg {
100
+ margin: 8px !important;
101
+ height: 24px;
102
+ width: 24px;
103
+ }
104
+
105
+ .frm-ws-block {
106
+ background: #FFFFFF;
107
+ border: 1px solid var(--sidebar-hover);
108
+ border-radius: 6px;
109
+ cursor: pointer;
110
+ padding: 24px;
111
+ display: flex;
112
+ }
113
+
114
+ .frm-fill {
115
+ flex: 1;
116
+ }
117
+
118
+ .frm-ws-carousel-wrapper h4 {
119
+ margin: 64px 0 20px;
120
+ font-size: 15px;
121
+ line-height: 157.9%;
122
+ color: rgba(40, 47, 54, 0.85);
123
+ }
124
+
125
+ .frm-ws-carousel-wrapper .frm3 {
126
+ background: #FFFFFF;
127
+ border-radius: 10px;
128
+ padding: 16px;
129
+ }
130
+
131
+ .frm-ws-carousel-wrapper .frm-icon {
132
+ height: 48px;
133
+ width: 48px;
134
+ background: var(--light-blue);
135
+ border-radius: 10px;
136
+ }
137
+
138
+ .frm-ws-carousel-wrapper .frm-icon svg {
139
+ width: 29px;
140
+ height: 29px;
141
+ margin: 9px;
142
+ color: #3F4B5B;
143
+ }
144
+
145
+ .frm-ws-carousel-wrapper h3 {
146
+ font-size: 14px;
147
+ line-height: 19px;
148
+ color: rgba(40, 47, 54, 0.85);
149
+ margin: 17px 0 8px;
150
+ }
151
+
152
+ .frm-ws-carousel-wrapper p {
153
+ font-size: 13px;
154
+ min-height: 80px;
155
+ line-height: 18px;
156
+ opacity: 0.6;
157
+ margin: 0;
158
+ }
159
+
160
+ .frm-ws-carousel-wrapper a {
161
+ font-size: 14px !important;
162
+ line-height: 19px;
163
+ text-align: center;
164
+ margin: 10px 0 0 !important;
165
+ }
166
+
167
+ .frm-top-spacing {
168
+ margin-top: 100px;
169
+ }
170
+
171
+ @media only screen and (max-width: 900px) {
172
+ .frm-ws-carousel-wrapper .frm3 {
173
+ grid-column:span 6 / span 6;
174
+ margin-bottom: 15px;
175
+ }
176
+ }
177
+
178
+ @media only screen and (max-width: 750px) {
179
+ .frm-player,
180
+ .frm-ws-block-1 {
181
+ text-align: center;
182
+ margin-left: 0;
183
+ }
184
+ }
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.09.05
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
@@ -95,3 +95,10 @@ function frm_class_autoloader( $class_name, $filepath ) {
95
  require( $filepath );
96
  }
97
  }
 
 
 
 
 
 
 
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
+ Version: 4.09.06
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
95
  require( $filepath );
96
  }
97
  }
98
+
99
+ add_action( 'activate_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'frm_maybe_install' );
100
+ function frm_maybe_install() {
101
+ if ( get_transient( FrmWelcomeController::$option_name ) !== 'no' ) {
102
+ set_transient( FrmWelcomeController::$option_name, FrmWelcomeController::$menu_slug, 60 );
103
+ }
104
+ }
images/icons.svg CHANGED
@@ -929,7 +929,7 @@
929
  <title>Unlock</title>
930
  <symbol id="frm_unlock_simple" viewBox="0 0 12 14" fill="none"><path d="M10.714 7H4.071V4.18c0-1.083.85-1.983 1.91-1.993 1.072-.011 1.948.877 1.948 1.968v.438c0 .363.286.656.642.656h.858a.648.648 0 00.642-.656v-.438c0-2.297-1.834-4.164-4.084-4.156-2.25.008-4.058 1.9-4.058 4.197V7h-.643C.576 7 0 7.587 0 8.312v4.375c0 .724.576 1.312 1.286 1.312h9.428c.71 0 1.286-.588 1.286-1.312V8.312c0-.725-.576-1.313-1.286-1.313z" fill="#F0F8FF"/></symbol>
931
  <symbol id="frm_house_icon" viewBox="0 0 20 20"><path d="M19.7 9L10.4.2a.6.6 0 00-.8 0L.3 9a1 1 0 00.7 1.8h1.5v8c0 .6.6 1.2 1.3 1.2h3.5c.3 0 .6-.3.6-.6V14c0-.2.1-.3.2-.3H12s.2.1.2.3v5.4c0 .3.3.6.6.6h3.6c.6 0 1.2-.6 1.2-1.3v-7.9H19a1 1 0 00.7-1.8z" fill="currentColor"/></symbol>
932
- <symbol id="frm_comment_icon" viewBox="0 0 25 24"><path d="M12.8 9.6c-7.2 3.8-2.4 13.8 6.6 11.2.9.3 1.6.8 2.5 1.2a54 54 0 00-.7-2c2.8-2 3.4-4.9 2.4-7.2-1.7-3.7-6.8-5.2-10.8-3.2zM17.4 8.3c-.4-2.2-2-4-3.8-5C7-.5-1.4 4.8.2 11a7.6 7.6 0 003.3 4.4L2.6 18l3-1.6c1.1.4 2.4.6 3.6.5-1.5-4.4 2.4-9 8.2-8.6z"></path></symbol>
933
  <symbol id="frm_case_icon" viewBox="0 0 24 24"><path d="M15 6.5a1 1 0 01-1-1V4h-4v1.5a1 1 0 01-2 0V4c0-1.1.9-2 2-2h4a2 2 0 012 2v1.5c0 .6-.4 1-1 1zM18 12.5v1c0 .3-.3.7-.8.7a.8.8 0 01-.7-.8v-.9h-9v1c0 .3-.3.7-.8.7a.8.8 0 01-.7-.8v-.9H0v6.7C0 20.8 1.2 22 2.7 22h18.5c1.6 0 2.8-1.2 2.8-2.8v-6.7h-6zM21.3 5H2.7A2.7 2.7 0 000 7.8V11h6V9.8c0-.5.3-.8.8-.8.4 0 .7.3.7.8V11h9V9.8c0-.5.3-.8.8-.8.4 0 .7.3.7.8V11h6V7.7C24 6.2 22.8 5 21.3 5z" fill="currentColor"></path></symbol>
934
  <symbol id="frm_smile_icon" viewBox="0 0 24 24"><path d="M12 0a12 12 0 100 24 12 12 0 000-24zM5 9c0-1.1.9-2 2-2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2zm12.7 9a8 8 0 01-11.4 0 1 1 0 011.4-1.5 6 6 0 008.6 0 1 1 0 011.4 1.4zm-.7-7a2 2 0 01-2-2c0-1.1.9-2 2-2a2 2 0 010 4z" fill="currentColor"></path></symbol>
935
  </defs>
929
  <title>Unlock</title>
930
  <symbol id="frm_unlock_simple" viewBox="0 0 12 14" fill="none"><path d="M10.714 7H4.071V4.18c0-1.083.85-1.983 1.91-1.993 1.072-.011 1.948.877 1.948 1.968v.438c0 .363.286.656.642.656h.858a.648.648 0 00.642-.656v-.438c0-2.297-1.834-4.164-4.084-4.156-2.25.008-4.058 1.9-4.058 4.197V7h-.643C.576 7 0 7.587 0 8.312v4.375c0 .724.576 1.312 1.286 1.312h9.428c.71 0 1.286-.588 1.286-1.312V8.312c0-.725-.576-1.313-1.286-1.313z" fill="#F0F8FF"/></symbol>
931
  <symbol id="frm_house_icon" viewBox="0 0 20 20"><path d="M19.7 9L10.4.2a.6.6 0 00-.8 0L.3 9a1 1 0 00.7 1.8h1.5v8c0 .6.6 1.2 1.3 1.2h3.5c.3 0 .6-.3.6-.6V14c0-.2.1-.3.2-.3H12s.2.1.2.3v5.4c0 .3.3.6.6.6h3.6c.6 0 1.2-.6 1.2-1.3v-7.9H19a1 1 0 00.7-1.8z" fill="currentColor"/></symbol>
932
+ <symbol id="frm_comment_icon" viewBox="0 0 36 36" fill="none"><path d="M28 23.3a2.6 2.6 0 01-2.6 2.6H11c-.6 0-1.1.2-1.5.6l-2.8 2.8a1 1 0 01-1.7-.7v-18A2.6 2.6 0 017.6 8h17.8a2.6 2.6 0 012.6 2.6v12.7z" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path><path d="M12.5 2.5a1 1 0 100 2v-2zM31 19a1 1 0 102 0h-2zM12.5 4.5H27v-2H12.5v2zm18.5 4V19h2V8.5h-2zm-4-4a4 4 0 014 4h2a6 6 0 00-6-6v2z" fill="currentColor" opacity=".6"></path></symbol>
933
  <symbol id="frm_case_icon" viewBox="0 0 24 24"><path d="M15 6.5a1 1 0 01-1-1V4h-4v1.5a1 1 0 01-2 0V4c0-1.1.9-2 2-2h4a2 2 0 012 2v1.5c0 .6-.4 1-1 1zM18 12.5v1c0 .3-.3.7-.8.7a.8.8 0 01-.7-.8v-.9h-9v1c0 .3-.3.7-.8.7a.8.8 0 01-.7-.8v-.9H0v6.7C0 20.8 1.2 22 2.7 22h18.5c1.6 0 2.8-1.2 2.8-2.8v-6.7h-6zM21.3 5H2.7A2.7 2.7 0 000 7.8V11h6V9.8c0-.5.3-.8.8-.8.4 0 .7.3.7.8V11h9V9.8c0-.5.3-.8.8-.8.4 0 .7.3.7.8V11h6V7.7C24 6.2 22.8 5 21.3 5z" fill="currentColor"></path></symbol>
934
  <symbol id="frm_smile_icon" viewBox="0 0 24 24"><path d="M12 0a12 12 0 100 24 12 12 0 000-24zM5 9c0-1.1.9-2 2-2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2zm12.7 9a8 8 0 01-11.4 0 1 1 0 011.4-1.5 6 6 0 008.6 0 1 1 0 011.4 1.4zm-.7-7a2 2 0 01-2-2c0-1.1.9-2 2-2a2 2 0 010 4z" fill="currentColor"></path></symbol>
935
  </defs>
js/bootstrap-multiselect.js CHANGED
@@ -708,7 +708,7 @@
708
  this.lastToggledInput = $target;
709
  }
710
 
711
- $target.blur();
712
  }, this));
713
 
714
  // Keyboard support.
@@ -742,7 +742,7 @@
742
  }
743
 
744
  var $current = $items.eq(index);
745
- $current.focus();
746
 
747
  if (event.keyCode === 32 || event.keyCode === 13) {
748
  var $checkbox = $current.find('input');
708
  this.lastToggledInput = $target;
709
  }
710
 
711
+ $target.trigger( 'blur' );
712
  }, this));
713
 
714
  // Keyboard support.
742
  }
743
 
744
  var $current = $items.eq(index);
745
+ $current.trigger( 'focus' );
746
 
747
  if (event.keyCode === 32 || event.keyCode === 13) {
748
  var $checkbox = $current.find('input');
js/formidable.js CHANGED
@@ -125,7 +125,7 @@ function frmFrontFormJS() {
125
  * @param {object} $form
126
  */
127
  function enableSubmitButton( $form ) {
128
- $form.find( 'input[type="submit"], input[type="button"], button[type="submit"]' ).removeAttr( 'disabled' );
129
  }
130
 
131
  /**
@@ -618,7 +618,7 @@ function frmFrontFormJS() {
618
  }
619
  },
620
  error: function() {
621
- jQuery( object ).find( 'input[type="submit"], input[type="button"]' ).removeAttr( 'disabled' );
622
  object.submit();
623
  }
624
  });
@@ -987,13 +987,13 @@ function frmFrontFormJS() {
987
 
988
  jQuery( '.frm-show-form input[onblur], .frm-show-form textarea[onblur]' ).each( function() {
989
  if ( jQuery( this ).val() === '' ) {
990
- jQuery( this ).blur();
991
  }
992
  });
993
 
994
  jQuery( document ).on( 'focus', '.frm_toggle_default', clearDefault );
995
  jQuery( document ).on( 'blur', '.frm_toggle_default', replaceDefault );
996
- jQuery( '.frm_toggle_default' ).blur();
997
 
998
  jQuery( document.getElementById( 'frm_resend_email' ) ).on( 'click', resendEmail );
999
 
@@ -1202,7 +1202,7 @@ function frmFrontFormJS() {
1202
  scrollObj = id;
1203
  }
1204
 
1205
- scrollObj.focus();
1206
  newPos = scrollObj.offset().top;
1207
  if ( ! newPos || frm_js.offset === '-1' ) {
1208
  return;
125
  * @param {object} $form
126
  */
127
  function enableSubmitButton( $form ) {
128
+ $form.find( 'input[type="submit"], input[type="button"], button[type="submit"]' ).prop( 'disabled', false );
129
  }
130
 
131
  /**
618
  }
619
  },
620
  error: function() {
621
+ jQuery( object ).find( 'input[type="submit"], input[type="button"]' ).prop( 'disabled', false );
622
  object.submit();
623
  }
624
  });
987
 
988
  jQuery( '.frm-show-form input[onblur], .frm-show-form textarea[onblur]' ).each( function() {
989
  if ( jQuery( this ).val() === '' ) {
990
+ jQuery( this ).trigger( 'blur' );
991
  }
992
  });
993
 
994
  jQuery( document ).on( 'focus', '.frm_toggle_default', clearDefault );
995
  jQuery( document ).on( 'blur', '.frm_toggle_default', replaceDefault );
996
+ jQuery( '.frm_toggle_default' ).trigger( 'blur' );
997
 
998
  jQuery( document.getElementById( 'frm_resend_email' ) ).on( 'click', resendEmail );
999
 
1202
  scrollObj = id;
1203
  }
1204
 
1205
+ jQuery( scrollObj ).trigger( 'focus' );
1206
  newPos = scrollObj.offset().top;
1207
  if ( ! newPos || frm_js.offset === '-1' ) {
1208
  return;
js/formidable.min.js CHANGED
@@ -2,7 +2,7 @@ var frmFrontForm;
2
  function frmFrontFormJS(){var action="";var jsErrors=[];function maybeShowLabel(){var $field=jQuery(this),$label=$field.closest(".frm_inside_container").find(".frm_primary_label"),val=$field.val();if(val!==null&&val.length>0)$label.addClass("frm_visible");else $label.removeClass("frm_visible")}function getFieldId(field,fullID){var nameParts,fieldId,isRepeating=false,fieldName="";if(field instanceof jQuery)fieldName=field.attr("name");else fieldName=field.name;if(typeof fieldName==="undefined")fieldName=
3
  "";if(fieldName===""){if(field instanceof jQuery)fieldName=field.data("name");else fieldName=field.getAttribute("data-name");if(typeof fieldName==="undefined")fieldName="";if(fieldName!==""&&fieldName)return fieldName;return 0}nameParts=fieldName.replace("item_meta[","").replace("[]","").split("]");if(nameParts.length<1)return 0;nameParts=nameParts.filter(function(n){return n!==""});fieldId=nameParts[0];if(nameParts.length===1)return fieldId;if(nameParts[1]==="[form"||nameParts[1]==="[row_ids")return 0;
4
  if(jQuery('input[name="item_meta['+fieldId+'][form]"]').length){fieldId=nameParts[2].replace("[","");isRepeating=true}if("other"===fieldId)if(isRepeating)fieldId=nameParts[3].replace("[","");else fieldId=nameParts[1].replace("[","");if(fullID===true)if(fieldId===nameParts[0])fieldId=fieldId+"-"+nameParts[1].replace("[","");else fieldId=fieldId+"-"+nameParts[0]+"-"+nameParts[1].replace("[","");return fieldId}function disableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled",
5
- "disabled")}function enableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').removeAttr("disabled")}function disableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","none")}function enableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","")}function validateForm(object){var r,rl,n,nl,fields,field,value,requiredFields,errors=[];requiredFields=jQuery(object).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");
6
  if(requiredFields.length)for(r=0,rl=requiredFields.length;r<rl;r++)errors=checkRequiredField(requiredFields[r],errors);fields=jQuery(object).find("input,select,textarea");if(fields.length)for(n=0,nl=fields.length;n<nl;n++){field=fields[n];value=field.value;if(value!=="")if(field.type==="hidden");else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.type==="email")errors=checkEmailField(field,errors);else if(field.type==="password")errors=checkPasswordField(field,errors);
7
  else if(field.type==="url")errors=checkUrlField(field,errors);else if(field.pattern!==null)errors=checkPatternField(field,errors)}errors=validateRecaptcha(object,errors);return errors}function maybeValidateChange(fieldId,field){if(field.type==="url")maybeAddHttpToUrl(field);if(jQuery(field).closest("form").hasClass("frm_js_validate"))validateField(fieldId,field)}function maybeAddHttpToUrl(field){var url=field.value;var matches=url.match(/^(https?|ftps?|mailto|news|feed|telnet):/);if(field.value!==
8
  ""&&matches===null)field.value="http://"+url}function validateField(fieldId,field){var key,errors=[];var $fieldCont=jQuery(field).closest(".frm_form_field");if($fieldCont.hasClass("frm_required_field")&&!jQuery(field).hasClass("frm_optional"))errors=checkRequiredField(field,errors);if(errors.length<1)if(field.type==="email")errors=checkEmailField(field,errors);else if(field.type==="password")errors=checkPasswordField(field,errors);else if(field.type==="number")errors=checkNumberField(field,errors);
@@ -22,7 +22,7 @@ window.location=response.redirect}else if(response.content!==""){removeSubmitLoa
22
  previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");input='<input type="hidden" name="recaptcha_checked" value="'+
23
  response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=
24
  $fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);
25
- 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);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");
26
  if(formCompleted.length)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")!==-1){c=oldContent.children();if(newContent.indexOf(" frm_going_back")!==
27
  -1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");i=kvp.length;while(i--){x=kvp[i].split("=");if(x[0]==key){x[1]=
28
  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");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="'+
@@ -35,7 +35,7 @@ thisVal=$thisField.val().replace(/(\n|\r\n)/g,"\r");if("replace"===e){if(thisVal
35
  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");if(jQuery(div).is(":visible"))jQuery(div).slideUp("fast");else jQuery(div).slideDown("fast");return false}function addIndexOfFallbackForIE8(){var len,
36
  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=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){var t,len,res,thisp,i,val;if(!Array.prototype.filter)Array.prototype.filter=
37
  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=[];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}function onHoneypotFieldChange(){var css=jQuery(this).css("box-shadow");if(css.match(/inset/))this.parentNode.removeChild(this)}
38
- 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();jQuery(document.getElementById("frm_resend_email")).on("click",
39
  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("change","[id^=frm_email_]",onHoneypotFieldChange);jQuery(document).on("click","a[data-frmconfirm]",
40
  confirmClick);jQuery("a[data-frmtoggle]").on("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;
41
  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)},afterRecaptcha:function(token,
@@ -44,13 +44,13 @@ formID){var object=jQuery("#frm_form_"+formID+"_container form")[0];frmFrontForm
44
  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);
45
  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;
46
  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,
47
- 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;
48
- 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}}},
49
- 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");
50
- 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()},
51
- 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");
52
- 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()});
53
- function frmRecaptcha(){var c,cl,captchas=jQuery(".frm-g-recaptcha");for(c=0,cl=captchas.length;c<cl;c++)frmFrontForm.renderRecaptcha(captchas[c])}function frmAfterRecaptcha(token){frmFrontForm.afterSingleRecaptcha(token)}
54
  function frmUpdateField(entryId,fieldId,value,message,num){jQuery(document.getElementById("frm_update_field_"+entryId+"_"+fieldId+"_"+num)).html('<span class="frm-loading-img"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_update_field_ajax",entry_id:entryId,field_id:fieldId,value:value,nonce:frm_js.nonce},success:function(){if(message.replace(/^\s+|\s+$/g,"")==="")jQuery(document.getElementById("frm_update_field_"+entryId+"_"+fieldId+"_"+num)).fadeOut("slow");else jQuery(document.getElementById("frm_update_field_"+
55
  entryId+"_"+fieldId+"_"+num)).replaceWith(message)}})}
56
  function frmDeleteEntry(entryId,prefix){console.warn("DEPRECATED: function frmDeleteEntry in v2.0.13 use frmFrontForm.deleteEntry");jQuery(document.getElementById("frm_delete_"+entryId)).replaceWith('<span class="frm-loading-img" id="frm_delete_'+entryId+'"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_destroy",entry:entryId,nonce:frm_js.nonce},success:function(html){if(html.replace(/^\s+|\s+$/g,"")==="success")jQuery(document.getElementById(prefix+entryId)).fadeOut("slow");
2
  function frmFrontFormJS(){var action="";var jsErrors=[];function maybeShowLabel(){var $field=jQuery(this),$label=$field.closest(".frm_inside_container").find(".frm_primary_label"),val=$field.val();if(val!==null&&val.length>0)$label.addClass("frm_visible");else $label.removeClass("frm_visible")}function getFieldId(field,fullID){var nameParts,fieldId,isRepeating=false,fieldName="";if(field instanceof jQuery)fieldName=field.attr("name");else fieldName=field.name;if(typeof fieldName==="undefined")fieldName=
3
  "";if(fieldName===""){if(field instanceof jQuery)fieldName=field.data("name");else fieldName=field.getAttribute("data-name");if(typeof fieldName==="undefined")fieldName="";if(fieldName!==""&&fieldName)return fieldName;return 0}nameParts=fieldName.replace("item_meta[","").replace("[]","").split("]");if(nameParts.length<1)return 0;nameParts=nameParts.filter(function(n){return n!==""});fieldId=nameParts[0];if(nameParts.length===1)return fieldId;if(nameParts[1]==="[form"||nameParts[1]==="[row_ids")return 0;
4
  if(jQuery('input[name="item_meta['+fieldId+'][form]"]').length){fieldId=nameParts[2].replace("[","");isRepeating=true}if("other"===fieldId)if(isRepeating)fieldId=nameParts[3].replace("[","");else fieldId=nameParts[1].replace("[","");if(fullID===true)if(fieldId===nameParts[0])fieldId=fieldId+"-"+nameParts[1].replace("[","");else fieldId=fieldId+"-"+nameParts[0]+"-"+nameParts[1].replace("[","");return fieldId}function disableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled",
5
+ "disabled")}function enableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').prop("disabled",false)}function disableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","none")}function enableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","")}function validateForm(object){var r,rl,n,nl,fields,field,value,requiredFields,errors=[];requiredFields=jQuery(object).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");
6
  if(requiredFields.length)for(r=0,rl=requiredFields.length;r<rl;r++)errors=checkRequiredField(requiredFields[r],errors);fields=jQuery(object).find("input,select,textarea");if(fields.length)for(n=0,nl=fields.length;n<nl;n++){field=fields[n];value=field.value;if(value!=="")if(field.type==="hidden");else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.type==="email")errors=checkEmailField(field,errors);else if(field.type==="password")errors=checkPasswordField(field,errors);
7
  else if(field.type==="url")errors=checkUrlField(field,errors);else if(field.pattern!==null)errors=checkPatternField(field,errors)}errors=validateRecaptcha(object,errors);return errors}function maybeValidateChange(fieldId,field){if(field.type==="url")maybeAddHttpToUrl(field);if(jQuery(field).closest("form").hasClass("frm_js_validate"))validateField(fieldId,field)}function maybeAddHttpToUrl(field){var url=field.value;var matches=url.match(/^(https?|ftps?|mailto|news|feed|telnet):/);if(field.value!==
8
  ""&&matches===null)field.value="http://"+url}function validateField(fieldId,field){var key,errors=[];var $fieldCont=jQuery(field).closest(".frm_form_field");if($fieldCont.hasClass("frm_required_field")&&!jQuery(field).hasClass("frm_optional"))errors=checkRequiredField(field,errors);if(errors.length<1)if(field.type==="email")errors=checkEmailField(field,errors);else if(field.type==="password")errors=checkPasswordField(field,errors);else if(field.type==="number")errors=checkNumberField(field,errors);
22
  previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");input='<input type="hidden" name="recaptcha_checked" value="'+
23
  response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=
24
  $fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);
25
+ 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);object.submit()}},error:function(){jQuery(object).find('input[type="submit"], input[type="button"]').prop("disabled",false);object.submit()}})}function afterFormSubmitted(object,response){var formCompleted=jQuery(response.content).find(".frm_message");
26
  if(formCompleted.length)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")!==-1){c=oldContent.children();if(newContent.indexOf(" frm_going_back")!==
27
  -1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");i=kvp.length;while(i--){x=kvp[i].split("=");if(x[0]==key){x[1]=
28
  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");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="'+
35
  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");if(jQuery(div).is(":visible"))jQuery(div).slideUp("fast");else jQuery(div).slideDown("fast");return false}function addIndexOfFallbackForIE8(){var len,
36
  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=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){var t,len,res,thisp,i,val;if(!Array.prototype.filter)Array.prototype.filter=
37
  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=[];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}function onHoneypotFieldChange(){var css=jQuery(this).css("box-shadow");if(css.match(/inset/))this.parentNode.removeChild(this)}
38
+ 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).trigger("blur")});jQuery(document).on("focus",".frm_toggle_default",clearDefault);jQuery(document).on("blur",".frm_toggle_default",replaceDefault);jQuery(".frm_toggle_default").trigger("blur");jQuery(document.getElementById("frm_resend_email")).on("click",
39
  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("change","[id^=frm_email_]",onHoneypotFieldChange);jQuery(document).on("click","a[data-frmconfirm]",
40
  confirmClick);jQuery("a[data-frmtoggle]").on("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;
41
  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)},afterRecaptcha:function(token,
44
  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);
45
  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;
46
  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,
47
+ 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;jQuery(scrollObj).trigger("focus");newPos=
48
+ scrollObj.offset().top;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},
49
+ 500);return false}}},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)},
50
+ goingToPreviousPage:function(object){console.warn("DEPRECATED: function frmFrontForm.goingToPreviousPage in v3.0 use frmProForm.goingToPreviousPage");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");
51
+ if(typeof frmProForm!=="undefined")frmProForm.hidePreviouslyHiddenFields()},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!==
52
+ "undefined")frmProForm.checkDependentLookupFields(ids)},loadGoogle:function(){console.warn("DEPRECATED: function frmFrontForm.loadGoogle in v3.0 use frmProForm.loadGoogle");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")}}}
53
+ frmFrontForm=frmFrontFormJS();jQuery(document).ready(function(){frmFrontForm.init()});function frmRecaptcha(){var c,cl,captchas=jQuery(".frm-g-recaptcha");for(c=0,cl=captchas.length;c<cl;c++)frmFrontForm.renderRecaptcha(captchas[c])}function frmAfterRecaptcha(token){frmFrontForm.afterSingleRecaptcha(token)}
54
  function frmUpdateField(entryId,fieldId,value,message,num){jQuery(document.getElementById("frm_update_field_"+entryId+"_"+fieldId+"_"+num)).html('<span class="frm-loading-img"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_update_field_ajax",entry_id:entryId,field_id:fieldId,value:value,nonce:frm_js.nonce},success:function(){if(message.replace(/^\s+|\s+$/g,"")==="")jQuery(document.getElementById("frm_update_field_"+entryId+"_"+fieldId+"_"+num)).fadeOut("slow");else jQuery(document.getElementById("frm_update_field_"+
55
  entryId+"_"+fieldId+"_"+num)).replaceWith(message)}})}
56
  function frmDeleteEntry(entryId,prefix){console.warn("DEPRECATED: function frmDeleteEntry in v2.0.13 use frmFrontForm.deleteEntry");jQuery(document.getElementById("frm_delete_"+entryId)).replaceWith('<span class="frm-loading-img" id="frm_delete_'+entryId+'"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_destroy",entry:entryId,nonce:frm_js.nonce},success:function(html){if(html.replace(/^\s+|\s+$/g,"")==="success")jQuery(document.getElementById(prefix+entryId)).fadeOut("slow");
js/formidable_admin.js CHANGED
@@ -386,6 +386,7 @@ function frmAdminBuildJS() {
386
  caution = link.getAttribute( 'data-frmcaution' );
387
  verify = link.getAttribute( 'data-frmverify' );
388
  $confirmMessage = jQuery( '.frm-confirm-msg' );
 
389
 
390
  if ( caution ) {
391
  frmCaution = document.createElement( 'span' );
@@ -2236,7 +2237,7 @@ function frmAdminBuildJS() {
2236
  if ( $self.is( ':checked' ) ) {
2237
  uncheck = function() {
2238
  setTimeout( function() {
2239
- $self.removeAttr( 'checked' );
2240
  }, 0 );
2241
  };
2242
  unbind = function() {
@@ -5374,10 +5375,10 @@ function frmAdminBuildJS() {
5374
  var exportField = jQuery( 'input[name="frm_export_forms[]"]' );
5375
  if ( c === 'single' ) {
5376
  exportField.prop( 'multiple', false );
5377
- exportField.removeAttr( 'checked' );
5378
  } else {
5379
  exportField.prop( 'multiple', true );
5380
- exportField.removeAttr( 'disabled' );
5381
  }
5382
  }
5383
 
@@ -5390,13 +5391,13 @@ function frmAdminBuildJS() {
5390
  if ( count === 'single' ) {
5391
  // Disable all other fields to prevent multiple selections.
5392
  if ( this.checked ) {
5393
- exportField.attr( 'disabled', true );
5394
  this.removeAttribute( 'disabled' );
5395
  } else {
5396
- exportField.removeAttr( 'disabled' );
5397
  }
5398
  } else {
5399
- exportField.removeAttr( 'disabled' );
5400
  }
5401
  }
5402
 
@@ -5688,6 +5689,18 @@ function frmAdminBuildJS() {
5688
  transitionToAddDetails( $modal, name, link, action );
5689
  });
5690
 
 
 
 
 
 
 
 
 
 
 
 
 
5691
  jQuery( document ).on( 'click', '.frm-featured-forms.frm-templates-list li [role="button"]:not(a), .frm-templates-list .accordion-section.open li [role="button"]:not(a)', function( event ) {
5692
  var $hoverIcons, $trigger,
5693
  $li = jQuery( this ).closest( 'li' ),
@@ -5806,7 +5819,7 @@ function frmAdminBuildJS() {
5806
  }
5807
 
5808
  $hiddenForm = jQuery( '#frmapi-email-form' ).find( 'form' );
5809
- $hiddenEmailField = $hiddenForm.find( '[type="email"]' );
5810
  if ( ! $hiddenEmailField.length ) {
5811
  return;
5812
  }
@@ -6041,7 +6054,7 @@ function frmAdminBuildJS() {
6041
  jQuery( this ).autocomplete( 'option', 'appendTo', $container );
6042
  }
6043
  })
6044
- .focus( function() {
6045
  // Show options on click to make it work more like a dropdown.
6046
  if ( this.value === '' || this.nextElementSibling.value < 1 ) {
6047
  jQuery( this ).autocomplete( 'search', this.value );
@@ -6598,7 +6611,7 @@ function frmAdminBuildJS() {
6598
  });
6599
 
6600
  jQuery( '.frm_form_builder form' ).first().on( 'submit', function() {
6601
- jQuery( '.inplace_field' ).blur();
6602
  });
6603
 
6604
  initiateMultiselect();
@@ -7043,7 +7056,7 @@ function frmAdminBuildJS() {
7043
  target.parent().addClass( 'tabs' );
7044
 
7045
  // select the search bar
7046
- jQuery( '.quick-search', wrapper ).focus();
7047
 
7048
  e.preventDefault();
7049
  }
@@ -7224,20 +7237,12 @@ function frm_show_div( div, value, showIf, classId ) { // eslint-disable-line ca
7224
  }
7225
 
7226
  function frmCheckAll( checked, n ) {
7227
- if ( checked ) {
7228
- jQuery( 'input[name^="' + n + '"]' ).attr( 'checked', 'checked' );
7229
- } else {
7230
- jQuery( 'input[name^="' + n + '"]' ).removeAttr( 'checked' );
7231
- }
7232
  }
7233
 
7234
  function frmCheckAllLevel( checked, n, level ) {
7235
  var $kids = jQuery( '.frm_catlevel_' + level ).children( '.frm_checkbox' ).children( 'label' );
7236
- if ( checked ) {
7237
- $kids.children( 'input[name^="' + n + '"]' ).attr( 'checked', 'checked' );
7238
- } else {
7239
- $kids.children( 'input[name^="' + n + '"]' ).removeAttr( 'checked' );
7240
- }
7241
  }
7242
 
7243
  function frm_add_logic_row( id, formId ) { // eslint-disable-line camelcase
386
  caution = link.getAttribute( 'data-frmcaution' );
387
  verify = link.getAttribute( 'data-frmverify' );
388
  $confirmMessage = jQuery( '.frm-confirm-msg' );
389
+ $confirmMessage.empty();
390
 
391
  if ( caution ) {
392
  frmCaution = document.createElement( 'span' );
2237
  if ( $self.is( ':checked' ) ) {
2238
  uncheck = function() {
2239
  setTimeout( function() {
2240
+ $self.prop( 'checked', false );
2241
  }, 0 );
2242
  };
2243
  unbind = function() {
5375
  var exportField = jQuery( 'input[name="frm_export_forms[]"]' );
5376
  if ( c === 'single' ) {
5377
  exportField.prop( 'multiple', false );
5378
+ exportField.prop( 'checked', false );
5379
  } else {
5380
  exportField.prop( 'multiple', true );
5381
+ exportField.prop( 'disabled', false );
5382
  }
5383
  }
5384
 
5391
  if ( count === 'single' ) {
5392
  // Disable all other fields to prevent multiple selections.
5393
  if ( this.checked ) {
5394
+ exportField.prop( 'disabled', true );
5395
  this.removeAttribute( 'disabled' );
5396
  } else {
5397
+ exportField.prop( 'disabled', false );
5398
  }
5399
  } else {
5400
+ exportField.prop( 'disabled', false );
5401
  }
5402
  }
5403
 
5689
  transitionToAddDetails( $modal, name, link, action );
5690
  });
5691
 
5692
+ // Welcome page modals.
5693
+ jQuery( document ).on( 'click', '.frm-create-blank-form', function( event ) {
5694
+ event.preventDefault();
5695
+ jQuery( '.frm-trigger-new-form-modal' ).trigger( 'click' );
5696
+ transitionToAddDetails( $modal, '', '', 'frm_install_form' );
5697
+
5698
+ // Close the modal with the cancel button.
5699
+ jQuery( '.frm-modal-cancel.frm-back-to-all-templates' ).on( 'click', function() {
5700
+ jQuery( '.ui-widget-overlay' ).trigger( 'click' );
5701
+ });
5702
+ });
5703
+
5704
  jQuery( document ).on( 'click', '.frm-featured-forms.frm-templates-list li [role="button"]:not(a), .frm-templates-list .accordion-section.open li [role="button"]:not(a)', function( event ) {
5705
  var $hoverIcons, $trigger,
5706
  $li = jQuery( this ).closest( 'li' ),
5819
  }
5820
 
5821
  $hiddenForm = jQuery( '#frmapi-email-form' ).find( 'form' );
5822
+ $hiddenEmailField = $hiddenForm.find( '[type="email"]' ).not( '.frm_verify' );
5823
  if ( ! $hiddenEmailField.length ) {
5824
  return;
5825
  }
6054
  jQuery( this ).autocomplete( 'option', 'appendTo', $container );
6055
  }
6056
  })
6057
+ .on( 'focus', function() {
6058
  // Show options on click to make it work more like a dropdown.
6059
  if ( this.value === '' || this.nextElementSibling.value < 1 ) {
6060
  jQuery( this ).autocomplete( 'search', this.value );
6611
  });
6612
 
6613
  jQuery( '.frm_form_builder form' ).first().on( 'submit', function() {
6614
+ jQuery( '.inplace_field' ).trigger( 'blur' );
6615
  });
6616
 
6617
  initiateMultiselect();
7056
  target.parent().addClass( 'tabs' );
7057
 
7058
  // select the search bar
7059
+ jQuery( '.quick-search', wrapper ).trigger( 'focus' );
7060
 
7061
  e.preventDefault();
7062
  }
7237
  }
7238
 
7239
  function frmCheckAll( checked, n ) {
7240
+ jQuery( 'input[name^="' + n + '"]' ).prop( 'checked', ! ! checked );
 
 
 
 
7241
  }
7242
 
7243
  function frmCheckAllLevel( checked, n, level ) {
7244
  var $kids = jQuery( '.frm_catlevel_' + level ).children( '.frm_checkbox' ).children( 'label' );
7245
+ $kids.children( 'input[name^="' + n + '"]' ).prop( 'checked', ! ! checked );
 
 
 
 
7246
  }
7247
 
7248
  function frm_add_logic_row( id, formId ) { // eslint-disable-line camelcase
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.09.05\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: 2021-01-27T21:28:48+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: formidable\n"
@@ -136,58 +136,59 @@ msgstr ""
136
  msgid "Upgrade"
137
  msgstr ""
138
 
139
- #: classes/controllers/FrmAddonsController.php:58
140
  msgid "There are no plugins on your site that require a license"
141
  msgstr ""
142
 
143
- #: classes/controllers/FrmAddonsController.php:580
144
  msgid "Installed"
145
  msgstr ""
146
 
147
- #: classes/controllers/FrmAddonsController.php:585
148
  #: classes/helpers/FrmAppHelper.php:2459
149
  msgid "Active"
150
  msgstr ""
151
 
152
- #: classes/controllers/FrmAddonsController.php:590
153
  msgid "Not Installed"
154
  msgstr ""
155
 
156
- #: classes/controllers/FrmAddonsController.php:877
157
  msgid "Sorry, your site requires FTP authentication. Please download plugins from FormidableForms.com and install them manually."
158
  msgstr ""
159
 
160
- #: classes/controllers/FrmAddonsController.php:933
161
  msgid "Your plugin has been activated. Please reload the page to see more options."
162
  msgstr ""
163
 
164
- #: classes/controllers/FrmAddonsController.php:1032
165
  msgid "Could not install an upgrade. Please download from formidableforms.com and install manually."
166
  msgstr ""
167
 
168
- #: classes/controllers/FrmAddonsController.php:1117
169
- #: classes/controllers/FrmAddonsController.php:1118
 
170
  #: classes/views/frm-forms/new-form-overlay.php:112
171
  #: classes/views/shared/reports-info.php:24
172
  msgid "Upgrade Now"
173
  msgstr ""
174
 
175
- #: classes/controllers/FrmAddonsController.php:1132
176
  msgid "Your plugin has been installed. Please reload the page to see more options."
177
  msgstr ""
178
 
179
- #: classes/controllers/FrmAppController.php:150
180
  msgid "Build"
181
  msgstr ""
182
 
183
- #: classes/controllers/FrmAppController.php:157
184
  #: classes/helpers/FrmFormsListHelper.php:302
185
  #: classes/views/frm-forms/settings.php:13
186
  #: classes/views/frm-settings/form.php:14
187
  msgid "Settings"
188
  msgstr ""
189
 
190
- #: classes/controllers/FrmAppController.php:164
191
  #: classes/controllers/FrmEntriesController.php:11
192
  #: classes/controllers/FrmEntriesController.php:100
193
  #: classes/controllers/FrmFormsController.php:735
@@ -196,18 +197,18 @@ msgstr ""
196
  msgid "Entries"
197
  msgstr ""
198
 
199
- #: classes/controllers/FrmAppController.php:176
200
  #: classes/controllers/FrmEntriesController.php:15
201
  #: classes/views/shared/views-info.php:11
202
  msgid "Views"
203
  msgstr ""
204
 
205
- #: classes/controllers/FrmAppController.php:190
206
  #: classes/views/shared/reports-info.php:11
207
  msgid "Reports"
208
  msgstr ""
209
 
210
- #: classes/controllers/FrmAppController.php:210
211
  msgid "Build a Form"
212
  msgstr ""
213
 
@@ -946,6 +947,10 @@ msgstr ""
946
  msgid "Once Weekly"
947
  msgstr ""
948
 
 
 
 
 
949
  #: classes/controllers/FrmXMLController.php:9
950
  #: classes/views/xml/import_form.php:10
951
  msgid "Import/Export"
@@ -4002,7 +4007,7 @@ msgstr ""
4002
  msgid "Default Form"
4003
  msgstr ""
4004
 
4005
- #: classes/models/FrmMigrate.php:562
4006
  msgid "Sending"
4007
  msgstr ""
4008
 
@@ -5055,6 +5060,7 @@ msgid "Formidable Views"
5055
  msgstr ""
5056
 
5057
  #: classes/views/frm-forms/new-form-overlay/upgrade-body.php:21
 
5058
  msgid "File uploads"
5059
  msgstr ""
5060
 
@@ -5952,6 +5958,62 @@ msgstr ""
5952
  msgid "SAMPLE:"
5953
  msgstr ""
5954
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5955
  #: classes/views/xml/import_form.php:18
5956
  msgid "Upload your Formidable XML file to import forms into this site. If your imported form key and creation date match a form on your site, that form will be updated."
5957
  msgstr ""
2
  # This file is distributed under the same license as the Formidable Forms plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Formidable Forms 4.09.06\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: 2021-02-17T13:31:37+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: formidable\n"
136
  msgid "Upgrade"
137
  msgstr ""
138
 
139
+ #: classes/controllers/FrmAddonsController.php:69
140
  msgid "There are no plugins on your site that require a license"
141
  msgstr ""
142
 
143
+ #: classes/controllers/FrmAddonsController.php:591
144
  msgid "Installed"
145
  msgstr ""
146
 
147
+ #: classes/controllers/FrmAddonsController.php:596
148
  #: classes/helpers/FrmAppHelper.php:2459
149
  msgid "Active"
150
  msgstr ""
151
 
152
+ #: classes/controllers/FrmAddonsController.php:601
153
  msgid "Not Installed"
154
  msgstr ""
155
 
156
+ #: classes/controllers/FrmAddonsController.php:888
157
  msgid "Sorry, your site requires FTP authentication. Please download plugins from FormidableForms.com and install them manually."
158
  msgstr ""
159
 
160
+ #: classes/controllers/FrmAddonsController.php:944
161
  msgid "Your plugin has been activated. Please reload the page to see more options."
162
  msgstr ""
163
 
164
+ #: classes/controllers/FrmAddonsController.php:1043
165
  msgid "Could not install an upgrade. Please download from formidableforms.com and install manually."
166
  msgstr ""
167
 
168
+ #: classes/controllers/FrmAddonsController.php:1128
169
+ #: classes/controllers/FrmAddonsController.php:1129
170
+ #: classes/controllers/FrmWelcomeController.php:141
171
  #: classes/views/frm-forms/new-form-overlay.php:112
172
  #: classes/views/shared/reports-info.php:24
173
  msgid "Upgrade Now"
174
  msgstr ""
175
 
176
+ #: classes/controllers/FrmAddonsController.php:1143
177
  msgid "Your plugin has been installed. Please reload the page to see more options."
178
  msgstr ""
179
 
180
+ #: classes/controllers/FrmAppController.php:151
181
  msgid "Build"
182
  msgstr ""
183
 
184
+ #: classes/controllers/FrmAppController.php:158
185
  #: classes/helpers/FrmFormsListHelper.php:302
186
  #: classes/views/frm-forms/settings.php:13
187
  #: classes/views/frm-settings/form.php:14
188
  msgid "Settings"
189
  msgstr ""
190
 
191
+ #: classes/controllers/FrmAppController.php:165
192
  #: classes/controllers/FrmEntriesController.php:11
193
  #: classes/controllers/FrmEntriesController.php:100
194
  #: classes/controllers/FrmFormsController.php:735
197
  msgid "Entries"
198
  msgstr ""
199
 
200
+ #: classes/controllers/FrmAppController.php:177
201
  #: classes/controllers/FrmEntriesController.php:15
202
  #: classes/views/shared/views-info.php:11
203
  msgid "Views"
204
  msgstr ""
205
 
206
+ #: classes/controllers/FrmAppController.php:191
207
  #: classes/views/shared/reports-info.php:11
208
  msgid "Reports"
209
  msgstr ""
210
 
211
+ #: classes/controllers/FrmAppController.php:211
212
  msgid "Build a Form"
213
  msgstr ""
214
 
947
  msgid "Once Weekly"
948
  msgstr ""
949
 
950
+ #: classes/controllers/FrmWelcomeController.php:85
951
+ msgid "Welcome Screen"
952
+ msgstr ""
953
+
954
  #: classes/controllers/FrmXMLController.php:9
955
  #: classes/views/xml/import_form.php:10
956
  msgid "Import/Export"
4007
  msgid "Default Form"
4008
  msgstr ""
4009
 
4010
+ #: classes/models/FrmMigrate.php:564
4011
  msgid "Sending"
4012
  msgstr ""
4013
 
5060
  msgstr ""
5061
 
5062
  #: classes/views/frm-forms/new-form-overlay/upgrade-body.php:21
5063
+ #: classes/views/welcome/show.php:78
5064
  msgid "File uploads"
5065
  msgstr ""
5066
 
5958
  msgid "SAMPLE:"
5959
  msgstr ""
5960
 
5961
+ #: classes/views/welcome/show.php:20
5962
+ msgid "Welcome to Formidable Forms!"
5963
+ msgstr ""
5964
+
5965
+ #: classes/views/welcome/show.php:21
5966
+ msgid "Thanks for choosing Formidable Froms - The most powerful and vesatile form builder for Wordpress"
5967
+ msgstr ""
5968
+
5969
+ #: classes/views/welcome/show.php:37
5970
+ msgid "New Blank Form"
5971
+ msgstr ""
5972
+
5973
+ #: classes/views/welcome/show.php:38
5974
+ msgid "Create a new view from scratch"
5975
+ msgstr ""
5976
+
5977
+ #: classes/views/welcome/show.php:47
5978
+ msgid "New Form From a Template"
5979
+ msgstr ""
5980
+
5981
+ #: classes/views/welcome/show.php:48
5982
+ msgid "Check out our powerful pre-built templates"
5983
+ msgstr ""
5984
+
5985
+ #: classes/views/welcome/show.php:55
5986
+ msgid "Get limitless possibilities"
5987
+ msgstr ""
5988
+
5989
+ #: classes/views/welcome/show.php:62
5990
+ msgid "Calculators"
5991
+ msgstr ""
5992
+
5993
+ #: classes/views/welcome/show.php:63
5994
+ msgid "Give instant online estimates and calculate advanced product options."
5995
+ msgstr ""
5996
+
5997
+ #: classes/views/welcome/show.php:70
5998
+ msgid "Survey and Polls"
5999
+ msgstr ""
6000
+
6001
+ #: classes/views/welcome/show.php:71
6002
+ msgid "Collect customer feedback & data like a pro - no coding required."
6003
+ msgstr ""
6004
+
6005
+ #: classes/views/welcome/show.php:79
6006
+ msgid "Easily upload documents, files, photos, and music for user avatars, featured images, or email attachments."
6007
+ msgstr ""
6008
+
6009
+ #: classes/views/welcome/show.php:86
6010
+ msgid "Display form data with views"
6011
+ msgstr ""
6012
+
6013
+ #: classes/views/welcome/show.php:87
6014
+ msgid "Now you can display form data in custom Views without any PHP."
6015
+ msgstr ""
6016
+
6017
  #: classes/views/xml/import_form.php:18
6018
  msgid "Upload your Formidable XML file to import forms into this site. If your imported form key and creation date match a form on your site, that form will be updated."
6019
  msgstr ""
readme.txt CHANGED
@@ -3,9 +3,9 @@ Plugin Name: Formidable Forms - Contact Form, Survey & Quiz Forms Plugin for Wor
3
  Contributors: formidableforms, sswells, srwells
4
  Tags: forms, contact form, form builder, survey, form maker, form creator, paypal form, paypal, stripe, stripe form, aweber, aweber form, getresponse, getresponse form, calculator form, calculator, price calculator, quote form, contact button, form manager, forms creator, Akismet, web form, payment form, survey form, donation form, email submit form, message form, email subscription, contact form widget, user registration form, registration form, wordpress registration, wordpress login form, constant contact, mailpoet, active campaign, salesforce, hubspot, campaign monitor, quiz builder, quiz, feedback form, mailchimp form, custom form
5
  Requires at least: 4.7
6
- Tested up to: 5.6
7
  Requires PHP: 5.6
8
- Stable tag: 4.09.05
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
11
 
@@ -435,6 +435,13 @@ Using our Zapier integration, you can easily connect Formidable with over 1000+
435
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
436
 
437
  == Changelog ==
 
 
 
 
 
 
 
438
  = 4.09.05 =
439
  * Fix: Autofill was flagging form submissions as spam with Honeypot in some browsers.
440
  * Fix: Important security update that adds better escaping when text is used from attribute data.
3
  Contributors: formidableforms, sswells, srwells
4
  Tags: forms, contact form, form builder, survey, form maker, form creator, paypal form, paypal, stripe, stripe form, aweber, aweber form, getresponse, getresponse form, calculator form, calculator, price calculator, quote form, contact button, form manager, forms creator, Akismet, web form, payment form, survey form, donation form, email submit form, message form, email subscription, contact form widget, user registration form, registration form, wordpress registration, wordpress login form, constant contact, mailpoet, active campaign, salesforce, hubspot, campaign monitor, quiz builder, quiz, feedback form, mailchimp form, custom form
5
  Requires at least: 4.7
6
+ Tested up to: 5.6.1
7
  Requires PHP: 5.6
8
+ Stable tag: 4.09.06
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
11
 
435
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
436
 
437
  == Changelog ==
438
+ = 4.09.06 =
439
+ * New: Added a new welcome screen to introduce new users to Formidable.
440
+ * Fix: Make sure that Site Health exists when upgrading.
441
+ * Fix: Invalid message data was occasionally appearing in the Inbox.
442
+ * Fix: Excluded checkbox options were not properly toggling for Action Taxonomies.
443
+ * Fix: Some pop ups were occasionally including outdated text.
444
+
445
  = 4.09.05 =
446
  * Fix: Autofill was flagging form submissions as spam with Honeypot in some browsers.
447
  * Fix: Important security update that adds better escaping when text is used from attribute data.