Formidable Forms – Form Builder for WordPress - Version 4.10.03

Version Description

  • New: Improved the performance of the style editor preview.
  • New: You can now sign up for free form templates directly from your inbox.
  • Fix: Date fields were not properly detecting duplicate entries.
  • Fix: Conditional forms were not properly fading in when the form block was added to a page.
  • Fix: Actions would occasionally conflict if multiple were added too quickly.
Download this release

Release Info

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

Code changes from version 4.10.02 to 4.10.03

classes/controllers/FrmInboxController.php CHANGED
@@ -46,6 +46,7 @@ class FrmInboxController {
46
  public static function inbox() {
47
  FrmAppHelper::include_svg();
48
  self::add_tracking_request();
 
49
 
50
  $inbox = new FrmInbox();
51
  $messages = $inbox->get_messages( 'filter' );
@@ -99,4 +100,33 @@ class FrmInboxController {
99
  )
100
  );
101
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  }
46
  public static function inbox() {
47
  FrmAppHelper::include_svg();
48
  self::add_tracking_request();
49
+ self::add_free_template_message();
50
 
51
  $inbox = new FrmInbox();
52
  $messages = $inbox->get_messages( 'filter' );
100
  )
101
  );
102
  }
103
+
104
+ /**
105
+ * Adds free template design.
106
+ *
107
+ * @since 4.10.03
108
+ */
109
+ private static function add_free_template_message() {
110
+ if ( FrmAppHelper::pro_is_installed() ) {
111
+ return;
112
+ }
113
+
114
+ $api = new FrmFormTemplateApi();
115
+ if ( $api->has_free_access() ) {
116
+ return;
117
+ }
118
+
119
+ $link = admin_url( 'admin.php?page=formidable&triggerNewFormModal=1&free-templates=1' );
120
+
121
+ $message = new FrmInbox();
122
+ $message->add_message(
123
+ array(
124
+ 'key' => 'free_templates',
125
+ 'message' => 'Add your email address to get a code for 10+ free form templates.',
126
+ 'subject' => 'Get 10+ Free Form Templates',
127
+ 'cta' => '<a href="#" class="button-secondary frm-button-secondary frm_inbox_dismiss">Dismiss</a> <a href="' . esc_url( $link ) . '" class="button-primary frm-button-primary">Get Now</a>',
128
+ 'type' => 'feedback',
129
+ )
130
+ );
131
+ }
132
  }
classes/controllers/FrmSimpleBlocksController.php CHANGED
@@ -139,7 +139,20 @@ class FrmSimpleBlocksController {
139
  unset( $params['formId'] );
140
 
141
  $form = FrmFormsController::get_form_shortcode( $params );
 
 
142
 
143
- return str_replace( ' frm_logic_form ', ' ', $form ); // prevent the form from hiding
 
 
 
 
 
 
 
 
 
 
 
144
  }
145
  }
139
  unset( $params['formId'] );
140
 
141
  $form = FrmFormsController::get_form_shortcode( $params );
142
+ return self::maybe_remove_fade_on_load_for_block_preview( $form );
143
+ }
144
 
145
+ /**
146
+ * Remove fade on load when /wp-json/wp/v2/block-renderer/formidable/simple-form is called.
147
+ * With the class set, the form never appears in the form block preview.
148
+ *
149
+ * @param string $form
150
+ * @return string
151
+ */
152
+ private static function maybe_remove_fade_on_load_for_block_preview( $form ) {
153
+ if ( is_callable( 'wp_is_json_request' ) && wp_is_json_request() ) {
154
+ $form = str_replace( ' frm_logic_form ', ' ', $form );
155
+ }
156
+ return $form;
157
  }
158
  }
classes/helpers/FrmAppHelper.php CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
11
  /**
12
  * @since 2.0
13
  */
14
- public static $plug_version = '4.10.02';
15
 
16
  /**
17
  * @since 1.07.02
11
  /**
12
  * @since 2.0
13
  */
14
+ public static $plug_version = '4.10.03';
15
 
16
  /**
17
  * @since 1.07.02
classes/helpers/FrmStylesHelper.php CHANGED
@@ -379,6 +379,10 @@ class FrmStylesHelper {
379
  $settings['auto_width'] = $settings['auto_width'] ? 'auto' : $settings['field_width'];
380
  $settings['box_shadow'] = ( isset( $settings['remove_box_shadow'] ) && $settings['remove_box_shadow'] ) ? 'none' : '0 1px 1px rgba(0, 0, 0, 0.075) inset';
381
 
 
 
 
 
382
  return $settings;
383
  }
384
 
379
  $settings['auto_width'] = $settings['auto_width'] ? 'auto' : $settings['field_width'];
380
  $settings['box_shadow'] = ( isset( $settings['remove_box_shadow'] ) && $settings['remove_box_shadow'] ) ? 'none' : '0 1px 1px rgba(0, 0, 0, 0.075) inset';
381
 
382
+ if ( ! isset( $settings['repeat_icon'] ) ) {
383
+ $settings['repeat_icon'] = 1;
384
+ }
385
+
386
  return $settings;
387
  }
388
 
classes/models/FrmEntry.php CHANGED
@@ -131,6 +131,7 @@ class FrmEntry {
131
  foreach ( $filter_vals as $field_id => $value ) {
132
  $field = FrmFieldFactory::get_field_object( $field_id );
133
  $reduced[ $field_id ] = $field->get_value_to_save( $value, array( 'entry_id' => $entry_id ) );
 
134
  if ( '' === $reduced[ $field_id ] || ( is_array( $reduced[ $field_id ] ) && 0 === count( $reduced[ $field_id ] ) ) ) {
135
  unset( $reduced[ $field_id ] );
136
  }
131
  foreach ( $filter_vals as $field_id => $value ) {
132
  $field = FrmFieldFactory::get_field_object( $field_id );
133
  $reduced[ $field_id ] = $field->get_value_to_save( $value, array( 'entry_id' => $entry_id ) );
134
+ $reduced[ $field_id ] = $field->set_value_before_save( $reduced[ $field_id ] );
135
  if ( '' === $reduced[ $field_id ] || ( is_array( $reduced[ $field_id ] ) && 0 === count( $reduced[ $field_id ] ) ) ) {
136
  unset( $reduced[ $field_id ] );
137
  }
classes/models/FrmFormTemplateApi.php CHANGED
@@ -126,6 +126,10 @@ class FrmFormTemplateApi extends FrmFormApi {
126
  $data = array();
127
  $key = FrmAppHelper::get_param( 'key', '', 'post', 'sanitize_key' );
128
 
 
 
 
 
129
  if ( $key ) {
130
  self::clear_template_cache_before_getting_free_templates();
131
 
126
  $data = array();
127
  $key = FrmAppHelper::get_param( 'key', '', 'post', 'sanitize_key' );
128
 
129
+ // Remove message from Inbox page.
130
+ $message = new FrmInbox();
131
+ $message->remove( 'free_templates' );
132
+
133
  if ( $key ) {
134
  self::clear_template_cache_before_getting_free_templates();
135
 
classes/views/frm-form-actions/_action_inside.php CHANGED
@@ -89,7 +89,7 @@ if ( ! function_exists( 'load_frm_autoresponder' ) ) {
89
  }
90
  ?>
91
  <h3>
92
- <a href="javascript:void(0)" class="frm_show_upgrade<?php echo esc_attr( $class ); ?>" data-upgrade="<?php esc_attr_e( 'Form action automations', 'formidable' ); ?>" data-medium="action-automation" data-oneclick="<?php echo esc_attr( $install_data ); ?>">
93
  <?php esc_html_e( 'Setup Automation', 'formidable' ); ?>
94
  </a>
95
  </h3>
89
  }
90
  ?>
91
  <h3>
92
+ <a href="javascript:void(0)" class="frm_show_upgrade<?php echo esc_attr( $class ); ?>" data-upgrade="<?php esc_attr_e( 'Form action automations', 'formidable' ); ?>" data-requires="Elite" data-medium="action-automation" data-oneclick="<?php echo esc_attr( $install_data ); ?>">
93
  <?php esc_html_e( 'Setup Automation', 'formidable' ); ?>
94
  </a>
95
  </h3>
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.10.02
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
+ Version: 4.10.03
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
js/formidable_admin.js CHANGED
@@ -325,7 +325,8 @@ function frmAdminBuildJS() {
325
  fieldsUpdated = 0,
326
  thisFormId = 0,
327
  autoId = 0,
328
- optionMap = {};
 
329
 
330
  if ( thisForm !== null ) {
331
  thisFormId = thisForm.value;
@@ -3951,9 +3952,9 @@ function frmAdminBuildJS() {
3951
 
3952
  function addFormAction() {
3953
  /*jshint validthis:true */
3954
- var actionId = getNewActionId();
3955
- var type = jQuery( this ).data( 'actiontype' );
3956
- var formId = thisFormId;
3957
 
3958
  jQuery.ajax({
3959
  type: 'POST', url: ajaxurl,
@@ -4014,6 +4015,10 @@ function frmAdminBuildJS() {
4014
  if ( typeof document.getElementById( 'frm_form_action_' + len ) !== 'undefined' ) {
4015
  len = len + 100;
4016
  }
 
 
 
 
4017
  return len;
4018
  }
4019
 
@@ -5672,8 +5677,17 @@ function frmAdminBuildJS() {
5672
  handleError,
5673
  handleEmailAddressError,
5674
  handleConfirmEmailAddressError,
 
 
 
 
5675
  urlParams;
5676
 
 
 
 
 
 
5677
  jQuery( document ).on( 'click', '.frm-trigger-new-form-modal', triggerNewFormModal );
5678
  $modal = initModal( '#frm_new_form_modal', '600px' );
5679
 
@@ -5798,32 +5812,38 @@ function frmAdminBuildJS() {
5798
  setTemplateCount( $li.closest( '.accordion-section' ).get( 0 ) );
5799
  });
5800
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5801
  jQuery( document ).on( 'click', 'li.frm-locked-template .frm-hover-icons .frm-unlock-form', function( event ) {
5802
  var $li,
5803
- activePage,
5804
- formContainer;
5805
 
5806
  event.preventDefault();
5807
 
5808
  $li = jQuery( this ).closest( '.frm-locked-template' );
5809
 
5810
  if ( $li.hasClass( 'frm-free-template' ) ) {
5811
- formContainer = document.getElementById( 'frmapi-email-form' );
5812
- jQuery.ajax({
5813
- dataType: 'json',
5814
- url: formContainer.getAttribute( 'data-url' ),
5815
- success: function( json ) {
5816
- var form = json.renderedHtml;
5817
- form = form.replace( /<script\b[^<]*(community.formidableforms.com\/wp-includes\/js\/jquery\/jquery)[^<]*><\/script>/gi, '' );
5818
- form = form.replace( /<link\b[^>]*(formidableforms.css)[^>]*>/gi, '' );
5819
- formContainer.innerHTML = form;
5820
- }
5821
- });
5822
 
5823
- activePage = 'email';
5824
- $modal.attr( 'frm-this-form', $li.attr( 'data-key' ) );
5825
- $li.append( installFormTrigger );
5826
- } else if ( $modal.hasClass( 'frm-expired' ) ) {
5827
  activePage = 'renew';
5828
  } else {
5829
  activePage = 'upgrade';
@@ -5929,6 +5949,15 @@ function frmAdminBuildJS() {
5929
  },
5930
  success: function( response ) {
5931
  if ( response.success ) {
 
 
 
 
 
 
 
 
 
5932
  if ( typeof response.data !== 'undefined' && typeof response.data.url !== 'undefined' ) {
5933
  installFormTrigger.setAttribute( 'rel', response.data.url );
5934
  installFormTrigger.click();
@@ -6009,9 +6038,16 @@ function frmAdminBuildJS() {
6009
  }
6010
  });
6011
 
6012
- urlParams = new URLSearchParams( window.location.search );
6013
  if ( urlParams.get( 'triggerNewFormModal' ) ) {
6014
  triggerNewFormModal();
 
 
 
 
 
 
 
 
6015
  }
6016
  }
6017
 
@@ -6534,6 +6570,17 @@ function frmAdminBuildJS() {
6534
  return object;
6535
  }
6536
 
 
 
 
 
 
 
 
 
 
 
 
6537
  return {
6538
  init: function() {
6539
  s = {};
@@ -7019,6 +7066,7 @@ function frmAdminBuildJS() {
7019
 
7020
  // Show loading indicator.
7021
  jQuery( '#publish' ).on( 'mousedown', function() {
 
7022
  this.classList.add( 'frm_loading_button' );
7023
  });
7024
 
@@ -7053,6 +7101,10 @@ function frmAdminBuildJS() {
7053
  key = message.getAttribute( 'data-message' ),
7054
  href = this.getAttribute( 'href' );
7055
 
 
 
 
 
7056
  e.preventDefault();
7057
 
7058
  data = {
@@ -7105,8 +7157,7 @@ function frmAdminBuildJS() {
7105
  return oldText === 'Select Color' ? 'Select' : oldText;
7106
  });
7107
 
7108
- // update styling on change
7109
- jQuery( '#frm_styling_form .styling_settings' ).on( 'change', function() {
7110
  var locStr = jQuery( 'input[name^="frm_style_setting[post_content]"], select[name^="frm_style_setting[post_content]"], textarea[name^="frm_style_setting[post_content]"], input[name="style_name"]' ).serializeArray();
7111
  locStr = JSON.stringify( locStr );
7112
  jQuery.ajax({
@@ -7120,7 +7171,10 @@ function frmAdminBuildJS() {
7120
  document.getElementById( 'this_css' ).innerHTML = css;
7121
  }
7122
  });
7123
- });
 
 
 
7124
 
7125
  // menu tabs
7126
  jQuery( '#menu-settings-column' ).on( 'click', function( e ) {
325
  fieldsUpdated = 0,
326
  thisFormId = 0,
327
  autoId = 0,
328
+ optionMap = {},
329
+ lastNewActionIdReturned = 0;
330
 
331
  if ( thisForm !== null ) {
332
  thisFormId = thisForm.value;
3952
 
3953
  function addFormAction() {
3954
  /*jshint validthis:true */
3955
+ var actionId = getNewActionId(),
3956
+ type = jQuery( this ).data( 'actiontype' ),
3957
+ formId = thisFormId;
3958
 
3959
  jQuery.ajax({
3960
  type: 'POST', url: ajaxurl,
4015
  if ( typeof document.getElementById( 'frm_form_action_' + len ) !== 'undefined' ) {
4016
  len = len + 100;
4017
  }
4018
+ if ( lastNewActionIdReturned >= len ) {
4019
+ len = lastNewActionIdReturned + 1;
4020
+ }
4021
+ lastNewActionIdReturned = len;
4022
  return len;
4023
  }
4024
 
5677
  handleError,
5678
  handleEmailAddressError,
5679
  handleConfirmEmailAddressError,
5680
+ showFreeTemplatesForm,
5681
+ firstLockedTemplate,
5682
+ isShowFreeTemplatesFormFirst,
5683
+ url,
5684
  urlParams;
5685
 
5686
+ url = new URL( window.location.href );
5687
+ urlParams = url.searchParams;
5688
+
5689
+ isShowFreeTemplatesFormFirst = urlParams.get( 'free-templates' );
5690
+
5691
  jQuery( document ).on( 'click', '.frm-trigger-new-form-modal', triggerNewFormModal );
5692
  $modal = initModal( '#frm_new_form_modal', '600px' );
5693
 
5812
  setTemplateCount( $li.closest( '.accordion-section' ).get( 0 ) );
5813
  });
5814
 
5815
+ showFreeTemplatesForm = function( $el ) {
5816
+ var formContainer = document.getElementById( 'frmapi-email-form' );
5817
+ jQuery.ajax({
5818
+ dataType: 'json',
5819
+ url: formContainer.getAttribute( 'data-url' ),
5820
+ success: function( json ) {
5821
+ var form = json.renderedHtml;
5822
+ form = form.replace( /<script\b[^<]*(community.formidableforms.com\/wp-includes\/js\/jquery\/jquery)[^<]*><\/script>/gi, '' );
5823
+ form = form.replace( /<link\b[^>]*(formidableforms.css)[^>]*>/gi, '' );
5824
+ formContainer.innerHTML = form;
5825
+ }
5826
+ });
5827
+
5828
+ $modal.attr( 'frm-page', 'email' );
5829
+ $modal.attr( 'frm-this-form', $el.attr( 'data-key' ) );
5830
+ $el.append( installFormTrigger );
5831
+ };
5832
+
5833
  jQuery( document ).on( 'click', 'li.frm-locked-template .frm-hover-icons .frm-unlock-form', function( event ) {
5834
  var $li,
5835
+ activePage;
 
5836
 
5837
  event.preventDefault();
5838
 
5839
  $li = jQuery( this ).closest( '.frm-locked-template' );
5840
 
5841
  if ( $li.hasClass( 'frm-free-template' ) ) {
5842
+ showFreeTemplatesForm( $li );
5843
+ return;
5844
+ }
 
 
 
 
 
 
 
 
5845
 
5846
+ if ( $modal.hasClass( 'frm-expired' ) ) {
 
 
 
5847
  activePage = 'renew';
5848
  } else {
5849
  activePage = 'upgrade';
5949
  },
5950
  success: function( response ) {
5951
  if ( response.success ) {
5952
+ if ( isShowFreeTemplatesFormFirst ) {
5953
+ // Remove free-templates param from URL then reload page.
5954
+ urlParams.delete( 'free-templates' );
5955
+ url.search = urlParams.toString();
5956
+ window.location.href = url.toString();
5957
+
5958
+ return;
5959
+ }
5960
+
5961
  if ( typeof response.data !== 'undefined' && typeof response.data.url !== 'undefined' ) {
5962
  installFormTrigger.setAttribute( 'rel', response.data.url );
5963
  installFormTrigger.click();
6038
  }
6039
  });
6040
 
 
6041
  if ( urlParams.get( 'triggerNewFormModal' ) ) {
6042
  triggerNewFormModal();
6043
+
6044
+ if ( isShowFreeTemplatesFormFirst ) {
6045
+ firstLockedTemplate = jQuery( 'li.frm-locked-template.frm-free-template' ).eq( 0 );
6046
+
6047
+ if ( firstLockedTemplate.length ) {
6048
+ showFreeTemplatesForm( firstLockedTemplate );
6049
+ }
6050
+ }
6051
  }
6052
  }
6053
 
6570
  return object;
6571
  }
6572
 
6573
+ function debounce( func, wait = 100 ) {
6574
+ let timeout;
6575
+ return function( ...args ) {
6576
+ clearTimeout( timeout );
6577
+ timeout = setTimeout(
6578
+ () => func.apply( this, args ),
6579
+ wait
6580
+ );
6581
+ };
6582
+ }
6583
+
6584
  return {
6585
  init: function() {
6586
  s = {};
7066
 
7067
  // Show loading indicator.
7068
  jQuery( '#publish' ).on( 'mousedown', function() {
7069
+ fieldsUpdated = 0;
7070
  this.classList.add( 'frm_loading_button' );
7071
  });
7072
 
7101
  key = message.getAttribute( 'data-message' ),
7102
  href = this.getAttribute( 'href' );
7103
 
7104
+ if ( 'free_templates' === key && ! this.classList.contains( 'frm_inbox_dismiss' ) ) {
7105
+ return;
7106
+ }
7107
+
7108
  e.preventDefault();
7109
 
7110
  data = {
7157
  return oldText === 'Select Color' ? 'Select' : oldText;
7158
  });
7159
 
7160
+ function changeStyling() {
 
7161
  var locStr = jQuery( 'input[name^="frm_style_setting[post_content]"], select[name^="frm_style_setting[post_content]"], textarea[name^="frm_style_setting[post_content]"], input[name="style_name"]' ).serializeArray();
7162
  locStr = JSON.stringify( locStr );
7163
  jQuery.ajax({
7171
  document.getElementById( 'this_css' ).innerHTML = css;
7172
  }
7173
  });
7174
+ }
7175
+
7176
+ // update styling on change
7177
+ jQuery( '#frm_styling_form .styling_settings' ).on( 'change', debounce( changeStyling, 100 ) );
7178
 
7179
  // menu tabs
7180
  jQuery( '#menu-settings-column' ).on( 'click', function( e ) {
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.10.02\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2021-04-28T15:55:24+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"
@@ -659,7 +659,7 @@ msgstr ""
659
  msgid "Dismiss All"
660
  msgstr ""
661
 
662
- #: classes/controllers/FrmInboxController.php:96
663
  msgid "Help Formidable improve with usage tracking"
664
  msgstr ""
665
 
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.10.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: 2021-05-12T18:14:04+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"
659
  msgid "Dismiss All"
660
  msgstr ""
661
 
662
+ #: classes/controllers/FrmInboxController.php:97
663
  msgid "Help Formidable improve with usage tracking"
664
  msgstr ""
665
 
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, price calculator, quote form, contact button, form manager, Akismet, payment form, survey form, donation form, email subscription, contact form widget, user registration form, wordpress registration, wordpress login form, constant contact, mailpoet, active campaign, salesforce, hubspot, campaign monitor, quiz builder, quiz, feedback form, mailchimp form
5
  Requires at least: 4.7
6
- Tested up to: 5.7.1
7
  Requires PHP: 5.6
8
- Stable tag: 4.10.02
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
11
 
@@ -21,7 +21,7 @@ Before we explore the features of the powerful Formidable form builder plugin, y
21
  Plus, we have optimized Formidable for speed and maximum server performance. We can confidently say that Formidable is one of the FASTEST WordPress form builders on the market.
22
 
23
  > <strong>Formidable Forms Pro</strong><br />
24
- > This form builder plugin is the free version of Formidable that comes with all the features you will ever need. Build an advanced email subscription form, multi-page form, file upload form, quiz, or a smart form with conditional logic. Stack on repeater fields, payment integrations, form templates, form relationships, cascading dropdown fields. Don't forget the calculated fields, front-end form editing, and powerful Formidable Views to display data in web applications.
25
  > With Formidable, you get far more than just a contact form.
26
  > <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="Formidable">Click here to purchase the most advanced premium WordPress form builder plugin now!</a>
27
 
@@ -53,7 +53,7 @@ On top of that, you can easily customize the success message after a contact for
53
 
54
  With our built-in styler, you can instantly customize the look and feel of your contact form. With just a few clicks, your email form can be transformed to match your website design.
55
 
56
- By default, Formidable applies a single styling template to your WordPress forms. If you want a custom form style for each footer and sidebar form, check out the premium version of Formidable.
57
 
58
  == Build Smart Surveys with Beautiful Reports ==
59
 
@@ -63,7 +63,7 @@ Our graphs and reports will help you analyze and showcase data. We believe that
63
 
64
  You can even showcase data on the front-end of your website. Just embed graphs in your WordPress posts or pages.
65
 
66
- The best part is that you can do this all within Formidable without any third-party tools.
67
 
68
  == Quickly Create an Advanced WordPress Registration Form for Any Use Case ==
69
 
@@ -73,11 +73,11 @@ Then, our marketing integrations and APIs can send the data anywhere you want.
73
 
74
  == Accept Credit Cards and Easily Collect Payments ==
75
 
76
- By now, you probably already realize the theme that Formidable is more than just a WordPress contact form plugin. You can use Formidable to create a payment form to accept credit card payments right from your website.
77
 
78
  We offer seamless integration with PayPal, Stripe, and Authorize.net, so you can create an order form, donation form, or purchase form with our drag & drop form builder.
79
 
80
- You can even use Formidable to create a WooCommerce form with custom fields.
81
 
82
  == Make Data-Driven Web Applications with a Formidable View ==
83
 
@@ -97,7 +97,7 @@ You can add a WooCommerce product configurator with custom calculation fields. T
97
 
98
  == Make Powerful Quiz Forms & Calculators ==
99
 
100
- In addition to a simple order form, you can also use Formidable to create quizzes or web calculators.
101
 
102
  More on quizzes later, but here are some example online calculators that you can quickly add to your WordPress site:
103
 
@@ -140,9 +140,9 @@ Our goal is to help you build complex websites with low overhead. That's why we
140
 
141
  A Formidable View allows you to display form data anywhere, so you can quickly create data-driven web applications.
142
 
143
- On top of that, our hooks and filters allow you to extend Formidable to meet your needs. We even include hundreds of code examples in our docs to give you the confidence to get started.
144
 
145
- == Full Formidable Feature List ==
146
 
147
  Since Formidable is not your average WordPress form plugin, this feature list is going to be very long. Read through it, or just install the most powerful WordPress form maker. Your choice :)
148
 
@@ -219,7 +219,7 @@ Give Formidable Forms a try.
219
  Want to unlock the full power? <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Upgrade to our Premium forms</a> to get all the features for smart forms and full web applications.
220
 
221
  == Credits ==
222
- This online form builder plugin is created by Steve and Steph Wells and the amazing Formidable Team.
223
 
224
  Formidable is part of the <a href="https://www.wpbeginner.com/">WPBeginner</a> fund with <a href="https://syedbalkhi.com/">Syed Balkhi</a> as an Advisor to our company.
225
 
@@ -262,7 +262,7 @@ When you do not receive emails, try the following steps:
262
 
263
  <a href="https://formidableforms.com/wordpress-not-sending-emails-smtp/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Read more about WordPress emails not sending</a> in our blog.
264
 
265
- = What types of WordPress forms can I build with Formidable? =
266
  The Formidable drag & drop form builder combined with our add-ons is the most powerful form maker on the market. Here are some types of WordPress forms you can create:
267
 
268
  * Custom Contact Form
@@ -386,11 +386,11 @@ Additionally, our Payment fields will help you create an order form, donation fo
386
 
387
  = Can I import and export? =
388
 
389
- Yes, Formidable makes it easy to import and export your WordPress forms. This is incredibly useful for developers and agencies who are building websites for clients. You can also create custom form templates to use on client websites.
390
 
391
- Formidable also allows you to import from other WordPress contact form plugins such as <a href="https://wordpress.org/plugins/formidable-gravity-forms-importer/">Gravity Forms</a> and Pirate Forms.
392
 
393
- = Can I integrate Formidable with my CRM or email marketing service? =
394
 
395
  Yes! We know that marketing is the key to grow your business. That's why Formidable allows you to connect your WP form, or payment form, with the marketing platform of your choice. You can easily send data from your WordPress forms to your favorite CRM, email newsletter, and other marketing platforms.
396
 
@@ -436,8 +436,15 @@ Using our Zapier integration, you can easily connect Formidable with over 1000+
436
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
437
 
438
  == Changelog ==
 
 
 
 
 
 
 
439
  = 4.10.02 =
440
- * New: Added support for in-theme previews for more themes including Twenty Twenty, Customizr, and more.
441
 
442
  = 4.10.01 =
443
  * New: Include the full email header when an email is sent using the mail function.
@@ -447,15 +454,15 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
447
  = 4.10 =
448
  * Fix: Some fields, including signatures, were not properly detecting duplicate entries.
449
  * Fix: Zeros were not appearing when used as a placeholder value.
450
- * Fix: Prevent a warning when previewing a contact form with no fields.
451
 
452
  = 4.09.08 =
453
- * New: If you add or remove an action and try to leave the page without saving, there will be a warning.
454
  * Fix: The style editor save button was hidden in WordPress 5.7.
455
  * Fix: There were a couple of words misspelled on the welcome page.
456
 
457
  = 4.09.07 =
458
- * Fix: Duplicated fields would occasionally generate long field keys that were preventing fields from being created.
459
  * Fix: Fields for controlling radio options in the form builder were not using unique id attribute values.
460
 
461
  = 4.09.06 =
@@ -466,7 +473,1052 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
466
  * Fix: Some pop ups were occasionally including outdated text.
467
 
468
  = 4.09.05 =
469
- * Fix: Autofill was flagging submissions as spam with Honeypot in some browsers.
470
  * Fix: Important security update that adds better escaping when text is used from attribute data.
471
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  <a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
3
  Contributors: formidableforms, sswells, srwells
4
  Tags: forms, contact form, form builder, survey, form maker, form creator, paypal form, paypal, stripe, stripe form, aweber, aweber form, getresponse, getresponse form, calculator, price calculator, quote form, contact button, form manager, Akismet, payment form, survey form, donation form, email subscription, contact form widget, user registration form, wordpress registration, wordpress login form, constant contact, mailpoet, active campaign, salesforce, hubspot, campaign monitor, quiz builder, quiz, feedback form, mailchimp form
5
  Requires at least: 4.7
6
+ Tested up to: 5.7.2
7
  Requires PHP: 5.6
8
+ Stable tag: 4.10.03
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
11
 
21
  Plus, we have optimized Formidable for speed and maximum server performance. We can confidently say that Formidable is one of the FASTEST WordPress form builders on the market.
22
 
23
  > <strong>Formidable Forms Pro</strong><br />
24
+ > This form builder plugin is the free version of Formidable that comes with all the features you will ever need. Build an advanced email subscription form, multi-page form, file upload form, quiz, or a smart form with conditional logic. Stack on repeater fields, payment integrations, form templates, form relationships, cascading dropdown fields. Don't forget the calculated fields, front-end form editing, and powerful WordPress Views to display data in web applications.
25
  > With Formidable, you get far more than just a contact form.
26
  > <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="Formidable">Click here to purchase the most advanced premium WordPress form builder plugin now!</a>
27
 
53
 
54
  With our built-in styler, you can instantly customize the look and feel of your contact form. With just a few clicks, your email form can be transformed to match your website design.
55
 
56
+ By default, a single styling template is added to your WordPress forms. If you want a custom form style for each footer and sidebar form, check out the premium version of Formidable.
57
 
58
  == Build Smart Surveys with Beautiful Reports ==
59
 
63
 
64
  You can even showcase data on the front-end of your website. Just embed graphs in your WordPress posts or pages.
65
 
66
+ The best part is that you can do this all without any third-party tools.
67
 
68
  == Quickly Create an Advanced WordPress Registration Form for Any Use Case ==
69
 
73
 
74
  == Accept Credit Cards and Easily Collect Payments ==
75
 
76
+ By now, you probably already realize the theme that Formidable is more than just a WordPress contact form plugin. You can use it to create a payment form to accept credit card payments right from your website.
77
 
78
  We offer seamless integration with PayPal, Stripe, and Authorize.net, so you can create an order form, donation form, or purchase form with our drag & drop form builder.
79
 
80
+ You can even use the plugin to create a WooCommerce form with custom fields.
81
 
82
  == Make Data-Driven Web Applications with a Formidable View ==
83
 
97
 
98
  == Make Powerful Quiz Forms & Calculators ==
99
 
100
+ In addition to a simple order form, you can also create quizzes or web calculators.
101
 
102
  More on quizzes later, but here are some example online calculators that you can quickly add to your WordPress site:
103
 
140
 
141
  A Formidable View allows you to display form data anywhere, so you can quickly create data-driven web applications.
142
 
143
+ On top of that, our hooks and filters allow you to extend Formidable to meet your most advanced needs. We even include hundreds of code examples in our docs to give you the confidence to get started.
144
 
145
+ == Full Feature List ==
146
 
147
  Since Formidable is not your average WordPress form plugin, this feature list is going to be very long. Read through it, or just install the most powerful WordPress form maker. Your choice :)
148
 
219
  Want to unlock the full power? <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Upgrade to our Premium forms</a> to get all the features for smart forms and full web applications.
220
 
221
  == Credits ==
222
+ This online form builder plugin is created by Steve and Steph Wells and the amazing Strategy11 Team.
223
 
224
  Formidable is part of the <a href="https://www.wpbeginner.com/">WPBeginner</a> fund with <a href="https://syedbalkhi.com/">Syed Balkhi</a> as an Advisor to our company.
225
 
262
 
263
  <a href="https://formidableforms.com/wordpress-not-sending-emails-smtp/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Read more about WordPress emails not sending</a> in our blog.
264
 
265
+ = What types of WordPress forms can I build? =
266
  The Formidable drag & drop form builder combined with our add-ons is the most powerful form maker on the market. Here are some types of WordPress forms you can create:
267
 
268
  * Custom Contact Form
386
 
387
  = Can I import and export? =
388
 
389
+ Yes, it's easy to import and export your WordPress forms. This is incredibly useful for developers and agencies who are building websites for clients. You can also create custom form templates to use on client websites.
390
 
391
+ You can also import from other WordPress contact form plugins such as <a href="https://wordpress.org/plugins/formidable-gravity-forms-importer/">Gravity Forms</a> and Pirate Forms.
392
 
393
+ = Can I integrate with my CRM or email marketing service? =
394
 
395
  Yes! We know that marketing is the key to grow your business. That's why Formidable allows you to connect your WP form, or payment form, with the marketing platform of your choice. You can easily send data from your WordPress forms to your favorite CRM, email newsletter, and other marketing platforms.
396
 
436
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
437
 
438
  == Changelog ==
439
+ = 4.10.03 =
440
+ * New: Improved the performance of the style editor preview.
441
+ * New: You can now sign up for free form templates directly from your inbox.
442
+ * Fix: Date fields were not properly detecting duplicate entries.
443
+ * Fix: Conditional forms were not properly fading in when the form block was added to a page.
444
+ * Fix: Actions would occasionally conflict if multiple were added too quickly.
445
+
446
  = 4.10.02 =
447
+ * New: Added support for in-theme previews for more themes including Twenty Twenty and Customizr.
448
 
449
  = 4.10.01 =
450
  * New: Include the full email header when an email is sent using the mail function.
454
  = 4.10 =
455
  * Fix: Some fields, including signatures, were not properly detecting duplicate entries.
456
  * Fix: Zeros were not appearing when used as a placeholder value.
457
+ * Fix: Prevent a warning when previewing a form with no fields.
458
 
459
  = 4.09.08 =
460
+ * New: If you add or remove an action from a form and try to leave the page without saving, there will be a warning.
461
  * Fix: The style editor save button was hidden in WordPress 5.7.
462
  * Fix: There were a couple of words misspelled on the welcome page.
463
 
464
  = 4.09.07 =
465
+ * Fix: Duplicated form fields would occasionally generate long field keys that were preventing fields from being created.
466
  * Fix: Fields for controlling radio options in the form builder were not using unique id attribute values.
467
 
468
  = 4.09.06 =
473
  * Fix: Some pop ups were occasionally including outdated text.
474
 
475
  = 4.09.05 =
476
+ * Fix: Autofill was flagging form submissions as spam with Honeypot in some browsers.
477
  * Fix: Important security update that adds better escaping when text is used from attribute data.
478
 
479
+ = 4.09.04 =
480
+ * Fix: The form builder page wasn't always loading all fields correctly when loaded with ajax.
481
+ * New: frm_global_switch_fields and frm_maybe_switch_field_ids hooks for changing field ids in a form action when a form is duplicated.
482
+
483
+ = 4.09.03 =
484
+ * New: Added frm_run_honeypot hook to turn off honeypot. Return false to disable or 'limit' to hide from screenreader.
485
+ * Moved honeypot back to front of form to catch more spam.
486
+ * Fix: dropdown fields were cut off in the admin area in WordPress 5.6.
487
+ * Fix: Update a few deprecated jQuery functions.
488
+ * Fix: Prevent some duplicate database queries on the back end.
489
+
490
+ = 4.09.02 =
491
+ * Show a warning when leaving the form settings page with unsaved changes.
492
+ * Make the process for using free form templates more clear.
493
+
494
+ = 4.09.01 =
495
+ * Don't include a link in the entries list to the form page when the user doesn't have permission to see anything there.
496
+
497
+ = 4.09 =
498
+ * New: Updated the UX for creating a new blank form or from a template.
499
+ * Fix: Duplicating a closed form action didn't copy correctly.
500
+ * Fix: PHP warnings showed on the add-ons page on some sites.
501
+
502
+ = 4.08 =
503
+ * New: Added confirmation before forms are deleted in bulk.
504
+ * Allow a value to pass validation if the entered value matches the placeholder setting.
505
+ * Fix: Email addresses were not being sent to Akismet for logged out users, and resulting in some false positive spam.
506
+ * Fix: Some sites have been getting duplicate entries days apart. This issue should be fixed.
507
+ * Fix: Searching when switching between forms no longer triggers the confirmation message when leaving the page.
508
+
509
+ = 4.07.01 =
510
+ * New: Show a warning when leaving the form builder page with unsaved changes.
511
+ * Fix: Make any multiselect dropdowns in admin settings accessible.
512
+ * Fix: aria-invalid attribute was missing on form elements for accessibility.
513
+
514
+ = 4.07 =
515
+ * 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.
516
+ * Tweak: Improve the form listing page and entry listings page when nothing has been created.
517
+ * Fix: Update the recaptcha for better reliability to catch more spam.
518
+
519
+ = 4.06.03 =
520
+ * More consistent dropdown styling with multiselect dropdowns.
521
+ * Prepare the code for handling permissions options as an array of roles.
522
+ * Fix: WP 5.5 - Email subject lines were coming through encoded.
523
+ * Fix: WP 5.5 - When WP Mail SMTP was installed, the Formidable SMTP page has an error.
524
+
525
+ = 4.06.02 =
526
+ * New: Added frm_field_value_object hook for making adjustments to the field before it's label and value is displayed.
527
+ * New: Added frm_xml_response hook for altering the message/response when an XML file is imported.
528
+ * Fix: Updated deprecated blacklist functions in WP 5.5.
529
+ * Fix: Add more checks to the installation triggers to prevent them from being triggered at unintended times.
530
+ * Show a more helpful error message in some cases when the XML import fails.
531
+
532
+ = 4.06.01 =
533
+ * Remove the top level nav notification for inbox notifications.
534
+ * Use the frm_display_value hook for each different case where values are displayed (entries list table, view an entry, summary field...)
535
+ * Fix: Left and right margin setting on buttons was being ignored. Use something like "10px 10px" in the button margin setting to show margins on the sides.
536
+ * Fix: Prevent a js error in some cases when the ajax response isn't json.
537
+
538
+ = 4.06 =
539
+ * New: Better accessibility for honeypot field and message after submit.
540
+ * New: Add a Dismiss all button in the inbox.
541
+ * New: Add 'frm_user_id_display' hook for showing something other than the dispay name by default in user ID fields.
542
+ * Set the default styling to use grids since most browsers support it now.
543
+ * Fix: On some sites, permissions were preventing a form from being created from a template.
544
+ * Fix: The button colors were overriding eachother with some settings.
545
+
546
+ = 4.05.02 =
547
+ * New: Added frm_message_placement hook to show the form message below the form
548
+ * New: New classes that can be used in the 'form class' setting: frm_plain_success (Removes styling from the success message) and frm_below_success (Movs the success message below the form).
549
+ * Add Formidable back to the admin bar. This is now a setting if the default WordPress v5.2+ behavior is desired.
550
+ * Fix: Reiew requests were added to the inbox too frequently with sites with multiple admins.
551
+ * Fix: Elementor conflict by using the glost $post in the admin area.
552
+ * Fix: The color picker position in the styling settings was off for some options.
553
+
554
+ = 4.05.01 =
555
+ * Fix: The entry list wasn't always showing the entries.
556
+ * Better sync between review requests in inbox and message.
557
+
558
+ = 4.05 =
559
+ * Updates to the default form styling.
560
+ * New: Added an inbox as a centralized place for notices and communication.
561
+ * New: Added frm_color_block and frm_total_big classes for more beautiful forms.
562
+ * Help prevent common email issues by showing a warning in the email settings when the from and to email addresses are the same.
563
+ * Fix: Forms edited after export and reimported were losing the required indicator in some cases.
564
+
565
+ = 4.04.05 =
566
+ * When some styling settings are blank, allow inheritance from theme styling.
567
+ * Allow a form action to be updated during form migration.
568
+ * Code: Update javascript codestyling.
569
+
570
+ = 4.04.04 =
571
+ * Increased WP version requirement to 4.7.
572
+ * Added more options on Import/Export page depending on what other plugins are installed.
573
+ * More reliably add new options in fields when also reordering.
574
+ * Fix: When a newly added option is set as the default value, save it correctly.
575
+ * Added an easy way to install and SMTP plugin for better email deliverability.
576
+
577
+ = 4.04.03 =
578
+ * Add option to Import forms on the form listing page and in the new form process.
579
+ * Improve performance on the form settings page when default values are used in fields.
580
+ * Update the base migrator class for more flexibility.
581
+ * Fix: Prevent a few PHP warnings.
582
+
583
+ = 4.04.02 =
584
+ * Don't load the front end form js in the builder/settings.
585
+ * Fix: Some database prefixes weren't working correctly with many database calls: "rm", "fr", "_".
586
+ * Fix: Remove incorrect instructions for input masks and allow uppercase characters with 'a' in the input mask.
587
+ * Fix: Save value as array when single box is checked. This resolves a conflict when used with ACF.
588
+ * Fix: The 5/6th class was the wrong size when CSS grids are turned off.
589
+ * Fix: More accurately set the default options to fade in fields and use CSS grids.
590
+ * Fix: Sort country list by the current locale.
591
+
592
+ = 4.04.01 =
593
+ * Performance: Improve speed when creating a unique entry key.
594
+ * Performance: Always return a single result with FrmDb::get_var().
595
+ * Fix: Resolve php warning showing on form builder with some fields.
596
+ * Fix: Fix deprecated implode() strings for PHP 7.4.
597
+ * Fix: Prevent possibility of extra entry being deleted when switching forms right after deleting an entry.
598
+ * Fix: In some cases, a PHP warning was shown when redirecting after submit.
599
+
600
+ = 4.04 =
601
+ * New: Show a warning if a WordPress parameter is used in the redirect URL to prevent unintented results.
602
+ * New: Added frm_is_field_type hook to set if an individual field is shown as radio or checkbox
603
+ * New: Show the new pricing fields in the builder for product education.
604
+
605
+ = 4.03.07 =
606
+ * Project Delight: Make admin-side tooltips more enjoyable and helpful.
607
+ * Add several missing countries to the country list.
608
+ * Fix: Prevent duplicate localization strings from showing in the page source.
609
+
610
+ = 4.03.06 =
611
+ * New: Use autocomplete for settings for selecting a WordPress page for faster load time on sites with many pages.
612
+ * Fix: When saving conditional logic settings in WP 5.3.1, there was a PHP error message showing on some sites.
613
+ * Fix: Custom CSS was being sanitized incorrectly and > was switched to &rt;
614
+
615
+ = 4.03.05 =
616
+ * New: Add a center alignment option for section headings.
617
+ * Keep the add field & field options links fixed to prevent extra scrolling to add more fields.
618
+ * Add live searching on the add-ons page.
619
+ * Fix: When only one box was selected for the default value in a checkbox field, it wasn't being checked.
620
+ * Fix: Recaptcha labels are included for accessibility.
621
+
622
+ = 4.03.04 =
623
+ * Better compatibility with WP 5.3.
624
+ * Switch from using date to gmdate per WP codestyling recommendations.
625
+ * Fix: Prevent undefined get_plugins error on some sites.
626
+
627
+ = 4.03.03 =
628
+ * Fix: There was an error on form submit when Pro was not installed.
629
+
630
+ = 4.03.02 =
631
+ * Add 'frm_form_object' hook run when a form is fetched from the database.
632
+ * Include more education about field types, including the new Appointments field.
633
+ * Fix: Dropdown fields weren't saving HTML values correctly.
634
+
635
+ = 4.03.01 =
636
+ * Add an option to filter form templates by category.
637
+ * Add the refresh downloads link on the add-ons and form templates pages.
638
+ * Fix: If HTML entities are intentionally saved in a field, keep it that way rather than converting to the value.
639
+ * Fix: Prevent a js error with some plugins when the WP editor is loaded on a custom page.
640
+
641
+ = 4.03 =
642
+ * New: Add an easier way to upgrade to the Pro version.
643
+ * New: When the default Contact form is created, use the email address in the form as the Reply to address.
644
+ * Fix: On some sites, the Formidable js wasn't loading correctly and causing errors.
645
+ * Fix: Don't include generated css with plugin. Some sites weren't updating it.
646
+ * New: Added frm_before_create_field hook while a field is being created from the builder. This allows extra fields to be included at once.
647
+
648
+ = 4.02.04 =
649
+ * Add a bit more in-plugin education and guidance for using Styles.
650
+ * Add styling for Stripe credit card fields.
651
+ * Fix: Prevent the localized javascript info from being duplicated in the page source.
652
+ * Fix: Use the current date for the auto-created contact form.
653
+ * Remove a bit of unused code.
654
+
655
+ = 4.02.03 =
656
+ * Security: Don't unserialize values posted in field options in admin area.
657
+ * Start switching any data saved with serializing to json, including cache keys and default values.
658
+ * Save styling settings with json instead of serialized array.
659
+
660
+ = 4.02.02 =
661
+ * Security: Correctly escape values on the View Entry page.
662
+ * Include a message on the Entries page about how to prevent spam.
663
+ * Show the reCaptcha badge for invisible recaptcha since it's required by their terms.
664
+ * Fix: Show the correct labels on template buttons (Upgrade vs Renew)
665
+
666
+ = 4.02.01 =
667
+ * Security: Fix vulnerability with unserializing.
668
+ * Code: Refactor field settings to make it easier to add a section for field options/choices.
669
+
670
+ = 4.02 =
671
+ * New: Adjust the process and layout of starting a new form.
672
+ * New: Separate custom templates from downloadable templates.
673
+ * New: Add frm_modify_posted_field_value hook or adjusting a posted value.
674
+ * UX: Don't show the style template option if the Formidable styling is turned off.
675
+ * Fix: Always include form styling when previewing forms in the theme.
676
+
677
+ = 4.01.02 =
678
+ * Fix: Prevent the frm_alignright class from affecting the layout on the form builder page
679
+ * Fix: Importing in Windows was failing and not finding the file
680
+ * Tweak: When inserting smart default values, use a comma between values by default for checkbox fields
681
+ * Code: Set the field classes in a more generalizable way so other areas can set a separator and exclude shortcode brackets (use data-sep=" " and data-shortcode="0" in add-ons)
682
+
683
+ = 4.01.01 =
684
+ * Use svgs for admin menu and admin bar so icon font doesn't need to be loaded admin-wide.
685
+ * Optimize a few SVGs.
686
+ * Fix: Load the css a bit earlier on the page when it isn't set to load in the header. This solves issues with styling ajax multi-page forms.
687
+ * Fix: Changing settings in the styler was causing font icon not found warnings in the console.
688
+
689
+ = 4.01 =
690
+ * New: Prevent a flash of unstyled form when form styling is set to load only on applicable pages.
691
+ * New: Search by field id or key on the form listing page.
692
+ * Hide more notices from other plugins when on a Formidable page.
693
+ * Fix: The colorpicker box in the form styler was off screen on some sites.
694
+
695
+ = 4.0.04 =
696
+ * New: Added several missing countries to the default options in the bulk countries list.
697
+ * New: Include form ids in the form switcher dropdown. Searching here will also search the form key.
698
+ * New: Double click on a field in the form builder to auto-expend the advanced options section.
699
+ * New: Show more of the form title in the builder and include a tooltip when it's cut off.
700
+ * Give the builder sidebar a bit more space.
701
+ * Improve the way &, <, and > are sanitized and saved in the database. Strip them out in the fields that should not have them.
702
+ * Fix: Some custom created field types were showing as text fields when created.
703
+ * Fix: The form actions trigger options box was closing automatically when a box was checked.
704
+ * Added frm_admin_full_screen_class hook for preventing collapsed admin menu. This is not supported, and is not the best experience with using the Formidable form builder.
705
+
706
+ = 4.0.03 =
707
+ * Reduce builder layout and styling conflicts with themes that don't like to keep their messages and css to themselves. This hides messages and junk from other plugins on Formidable pages. It also removes the .description class from the builder page.
708
+ * Use a textarea for the placeholder setting in paragraph fields.
709
+ * Fix: CSV import was returning an error message.
710
+
711
+ = 4.0.02 =
712
+ * Include the WordPress admin bar in full screen mode.
713
+ * Replace field icons in builder with svg sprite to prevent browser caching issues.
714
+ * Update the field ids in more of the form action settings when a form is duplicated.
715
+ * Live update for default values.
716
+ * Click on a field description on the form builder page to be taken directly to the setting.
717
+ * Allow apostrophes in an email address.
718
+ * Save a few clicks. Move the layout classes out of the advanced section and auto open the fields class list on click. Also select the search box when the form switcher is selected.
719
+ * Fix: The WordPress menu was collapsed when editing a post. Oops!
720
+ * Fix: Trim whitespace from radio/checkbox/dropdown options when they are changed.
721
+ * Fix: Automatically hide and show the field box more accurately when clicking in and out of settings that use it.
722
+ * Fix: Include field selection box on the redirect url setting.
723
+ * Fix: Adjust the show entry page for small screens.
724
+ * Fix: After an entry was deleted from the entry listing page, the page no longer scrolled.
725
+ * Fix: Backslashes were removed in the Custom CSS on save.
726
+ * Fix: In some cases, the default value was showing as a placeholder.
727
+ * Fix: Fix a PHP 5.4 error. If you are running a version less than 5.6, you'll see a reminder message to get up to date.
728
+ * Code: Added a trigger for use after an ajax call. The frmElementAdded trigger allows add-ons to add the field box menu to newly added settings.
729
+ * Show a message if Internet Explorer is being used. This browser is no longer supported in the form builder.
730
+
731
+ = 4.0.01 =
732
+ * Automatically open the field options box on the form settings page.
733
+ * Clean up, size down, and reposition the request for reviews.
734
+ * Use collapsed admin menu in full screen mode.
735
+ * Show a form title in the top bar on hover if truncated.
736
+ * Show a message if 4.0 Lite is installed without the matching Pro version.
737
+ * Fix: The link to print an entry wasn't responding.
738
+ * Fix: The full screen entries page was only scrolling if the menu label was 'Forms'
739
+ * Fix: Sometimes the field classes and inline shortcodes were appearing on the wrong setting.
740
+ * Fix: 1Password was conflicting with some fields with the inline popup.
741
+
742
+ = 4.0 =
743
+ * We've added a new, full screen builder for a faster and more enjoyable form building experience.
744
+ * Moved all settings into the sidebar instead of expanding/collapsing under each field.
745
+ * Faster way of adding new radio/select/checkbox options with drag and drop reordering.
746
+ * Added a separate placeholder option to make it easier to use, and to allow for both a placeholder and a default value. Existing placeholders will be automatically moved to the new setting.
747
+ * Added placeholder setting for dropdown fields, and allow the field label to be used as a placeholder.
748
+ * Long forms are easier to edit and save since only the fields settings that have been viewed will be saved.
749
+ * Replaced the form builder sidebar panel with in-field modals that include the possible values to insert.
750
+ * Added a way to more easily see and find all possible add-ons in the form actions.
751
+ * Add link to imported form in the import success message.
752
+ * Removed a few unused settings including the option to disable HTML5.
753
+ * New hooks: frm_after_field_choices, frm_field_options, frm_after_field_options, frm_[type]_primary_field_options, Added hooks for each tab in the global settings: frm_[section name]_settings_form, frm_default_value_setting
754
+ * Added better confirmation messages before deleting fields, forms, form actions, and entries.
755
+ * Change default settings to fade in forms and use css grids for new installs.
756
+
757
+ = 3.06.06 =
758
+ * Remove complete Spanish translations
759
+ * Increase PHP requirements to 5.6
760
+ * Increase minimum WP version to 4.6
761
+
762
+ = 3.06.05 =
763
+ * When getting IP addresses, use the end use IP rather than the proxy IP with services like Cloudflare.
764
+ * On new installations, allow multiple reCaptchas on a page by default.
765
+ * Remove admin email address from user tracking in order to keep it 100% anonymous.
766
+ * Fix: When a license is saved, properly clear the local caches in order to get access to new add-ons and form templates after renewing or upgrading.
767
+
768
+ = 3.06.04 =
769
+ * New: Added an option to opt into usage tracking. This will allow us to simplify settings in a future release and better cater to the majority of use cases.
770
+ * Fix: Replace old field ids in the field description and HTML field after duplication or import.
771
+
772
+ = 3.06.03 =
773
+ * Fix: The required indicator for a field was blank after importing a form.
774
+ * Fix: Only include the id of the error message once in aria-describedby for linking the error message for screen readers.
775
+ * Fix: Prevent a couple PHP warning messages with certain settings.
776
+
777
+ = 3.06.02 =
778
+ * New: More WCAG improvements. Link the error messages to the field for screenreaders.
779
+ * Fix: When resending emails, don't send emails that are toggled off.
780
+ * Fix: Prevent other plugins from adding messages on the form templates and new form pages.
781
+ * Fix: Prevent front-end styles from loading on back-end pages.
782
+ * Fix: When the screen settings are changed after filtering the entry list, stay on the filtered list.
783
+
784
+ = 3.06.01 =
785
+ * Notice: The default HTML for field types with multiple inputs now use div instead of label for the field label for WCAG compliance. This will only affect new fields.
786
+ * New: When saving a form, check if it is too long for the server settings. If so, show a notice along with information on how to fix it.
787
+ * New: Better WCAG compliance. Added aria-required to required fields and aria-invalid when javascript validation is turned on.
788
+ * New: Add functions to get a list of field, form, and global settings to translate for multilingual add-ons. This will make maintaining strings much easier without a delay.
789
+ * New: Added frm_form_strings, frm_global_setting, frm_global_invalid_msg, frm_global_failed_msg, and frm_global_login_msg hooks for making adjustments to messages.
790
+ * New: Add frm_field filter when a field is fetched individually with FrmField::getOne( x, true )
791
+ * New: Allow the frm_scroll_box class to work on HTML fields instead of only accepting frm_html_scroll_box
792
+ * Fix: The pagination lost styling in WP 5.1.
793
+ * Fix: The saved CSS string was being autoloaded by WordPress since the transient didn't have an expiration.
794
+ * Fix: Prevent the invisible recaptcha from adding empty space in some forms.
795
+ * Fix: Form layouts with a long section of options in a radio or checkbox were adding extra spacing.
796
+ * Fix: The templates page was showing a blank tile for expired licenses.
797
+ * Fix: Submit button remained disabled after when the invisible reCaptcha validation failed.
798
+
799
+ = 3.06 =
800
+ * New: Add one-click form creation from a form template and adjust the way a new form is created
801
+ * New: Add a new process for creating a custom form template
802
+ * Tweak: Create smaller XML fiels when exporting forms
803
+ * Tweak: Use the name of the form for XML exports when a single form is exported
804
+ * Tweak: Don't limit the width of the color picker in the form styler to avoid conflicts with some color picker plugins
805
+ * Fix: Prevent the 'Advanced' section from hiding on non-Formidable blocks
806
+ * Fix: Some users were seeing PHP error messages in PHP 5.2
807
+ * Fix: XML form exports set to use the default style were not correctly setting the style on import
808
+
809
+ = 3.05 =
810
+ * New: Add a new Forms block for use with the new WP editor
811
+ * Fix: A false number was showing for number of plugin updates available when add-ons were not installed
812
+
813
+ = 3.04.03 =
814
+ * New: Improved autoupdating and installation for form add-ons
815
+ * Tweak: Only show the form add-ons page to those who can activate plugins
816
+ * Fix: Radio button shadows had a box around them in some browsers
817
+ * Fix: Don't mark an entry as a duplicate when the second entry includes more fields than the first
818
+ * Code: Move deprecated code to its own folder
819
+
820
+ = 3.04.02 =
821
+ * New: When HTML5 is used, auto add the http in a url field if it is omitted by the user
822
+
823
+ = 3.04.01 =
824
+ * New: When a form includes a user ID field, include helpers in the Advanced tab to get data from the user profile for use in emails and other form actions.
825
+ * Code: Refactor and clean up the code for the Advanced tab in the form settings sidebar
826
+ * Code: Add frm_advanced_helpers hook to move some Advanced shortcode examples to Pro
827
+ * Code: Add frm_field_code_tab hook to add extra shortcodes in the customization sidebar for a single field
828
+ * Update translations
829
+
830
+ = 3.04 =
831
+ * New: Add option to duplicate a form action
832
+ * New: Add option to turn form actions on or off
833
+ * New: Add frm_is_multiple_select hook
834
+
835
+ = 3.03.03 =
836
+ * Improve the appearance of the import/export page
837
+ * Move the admin menu position below the post comments
838
+ * Remove unused CSS including CSS for login forms in the user registration plugin
839
+ * Override theme styling for box shadows on inputs
840
+ * Add a new migrator class that will serve as a base for migrations from other form builder plugins
841
+ * Add a prepare_field_value function for altering the value show inside a form field that can be overridden in extension classes for fields
842
+
843
+ = 3.03.02 =
844
+ * Fix: When syntax highlighting was turned off in the user profile, the custom CSS box didn't appear.
845
+ * Fix: Allow 'aside' tags in the form widget. Don't remove it when sanitizing.
846
+ * Fix: When a form includes a reCaptcha, the loading indicator on the submit button wasn't triggered on submit.
847
+ * Fix: The reCaptcha label was orphaned and didn't pass WCAG compliance. This fix applies to new reCaptcha fields. For existing fields, delete it and add it again.
848
+ * Fix: Automatically scroll the form builder window when a field is dragged and dropped in the form.
849
+ * Fix: Use a percentage for left labels instead of a fixed with to ensure the margin isn't too big for small spaces.
850
+
851
+ = 3.03.01 =
852
+ * Fix: Allow the section html in the form widget. Don't remove it when sanitizing.
853
+ * Fix: Show the scrollbar for the list of fields in Chrome on the form builder. Some devices don't allow scrolling without it.
854
+
855
+ = 3.03 =
856
+ * Fix: Custom css like #frm_field_196_container > label was being sanitized and preventing the > from working correctly
857
+ * Fix: Allow <i icon="something"> to pass sanitization in checkbox and radio field options
858
+ * Fix: A warning message in the form style builder was sometimes appearing multiple times and not closing
859
+ * Move datepicker css and images to Pro form builder
860
+
861
+ = 3.02.02 =
862
+ * Update PO file for translation
863
+
864
+ = 3.02.01 =
865
+ * Fix: Allow the heading class and ids to stay for the sidebar form widget. The headings were missing a class and not the same as other headings in some themes.
866
+ * Fix: If all form templates are deleted, keep the 'templates' nav item so new templates can still be created.
867
+ * Fix: When creating a new form, don't include trashed form templates in the form template options
868
+ * Fix: Remove outdated sslverify references
869
+ * Fix: The sample form for the form styler didn't have a great layout when CSS grids were turned on
870
+
871
+ = 3.02 =
872
+ * New: Add support for WordPress export and erase personal data options for easier GDPR support
873
+ * Fix: HTML was getting stripped in field labels when a form was edited on the form builder page
874
+ * Fix: If a field option includes HTML, allow the HTML rather than sanitizing it with entities
875
+ * Fix: When the 'add option' button on the form builder is clicked multiple times, add the options correctly if the previous option isn't yes showing in the form maker
876
+ * Fix: The HTML for the link to the user profile was showing in the sidebar when editing or viewing an entry
877
+ * Code change: Move input classes into the field object class so it can be more easily overridden and amended. The FrmFieldType->get_input_class() function can be overridden in sub classes
878
+
879
+ = 3.01.03 =
880
+ * Fix: Add responsive styling for the .frm_four_col class when grids are disabled
881
+ * Fix: Fix number field HTML5 min, max, and step. This code was still in the pro form builder
882
+ * Fix: More escaping for translated strings, and whitelist false positives for code security tools
883
+ * Fix: When form builder is loaded with ajax, prevent errors when the default value is an array
884
+ * Fix: Add a nonce check when updating settings for a form
885
+ * Removed: Get rid of the start tour. We will add this back in a less annoying way.
886
+
887
+ = 3.01.02 =
888
+ * New: Add frm_sanitize_shortcodes hook. This hook allows shortcodes in field values to be processed rather than shown on the page.
889
+ * Fix: Stylesheets weren't saving correctly when multiple styles were used for forms
890
+
891
+ = 3.01.01 =
892
+ * New: Replace the jQuery colorpicker with the WordPress colorpicker in the visual form styler
893
+ * New: Process shortcodes in the redirect url after form submission
894
+ * New: frm_override_default_styles and frm_default_style_settings hooks
895
+ * Fix: Prevent shortcodes inside field values from being processed in more places including the redirect url. This is a security precaution.
896
+ * Fix: A default contact form was being added with each update. This update ensures the contact form is only generated once.
897
+ * Fix: Allow the visual form styler to show instant changes to the sample contact form since server limits of url size were being hit in some cases.
898
+ * Fix: HTML was being stripped from some form field settings on the form creator page like validation messages
899
+
900
+ = 3.01 =
901
+ * New: Added frm_js_location hook for saving the combined javascript file in a different location
902
+ * New: Added frm_include_field_in_content hook for excluding fields in the default email message
903
+ * Tweak: Process shortcodes inside the form validation messages
904
+ * Tweak: Reduce page load time by not autoloading the saved form styling from the database. In most cases, this data is saved in the CSS file, and doesn't need to be retrieved from the database.
905
+ * Fix: The Invisible reCaptcha wasn't being validated correctly in contact forms when the Pro version was not running.
906
+ * Fix: Run the server-side form validation on a number field that uses 0 for the minimum value. This was being skipped.
907
+ * Fix: Show the label above a dropdown field if the label position is set to inside since dropdown placeholders are not yet supported. Plus, don't show the Inside label position option for any fields that don't allow placeholders.
908
+ * Fix: If there is an error during a database update, make sure it can try again in the future
909
+ * Fix: Prevent more conflicts with Divi when editing some posts with forms
910
+ * Fix: Form fields without CSS grids were not aligning correctly with left, right, or inline labels
911
+
912
+ = 3.0.06 =
913
+ * New: Include the option to duplicate a form in the free form maker
914
+ * Fix: If the reply to address in the email is not specified, use only the from email without the from name to increase receivability
915
+ * Fix: Improve form styling without CSS grids when using left, right, and inline labels
916
+ * Fix: Make the frmFrontForm.fieldValueChanged function public in the javascript so it can be triggered by scripts in other plugins
917
+
918
+ = 3.0.05 =
919
+ * Fix: The visual form styler didn't look good when CSS grids were turned off
920
+ * Fix: Prevent past database migrations from being run again. This was making some field sizes much larger.
921
+ * Fix: If field sizes are extra long, reverse them because it most likely happened in the last release.
922
+ * Fix: Sort by a number field on the entries page was ordering by text instead of number
923
+ * Fix: The export page was showing weird styling for the form selector on some sites
924
+ * Fix: If CSS grids are off, don't force the width to 100% for form fields like before
925
+
926
+ = 3.0.04 =
927
+ * Fix required validation: URL and number fields were requiring a value when the field was not required
928
+ * Fix double recaptcha validation which was causing it to fail validation
929
+
930
+ = 3.0.03 =
931
+ * Enhancement: Use relative path in the form css now that the css is inside the plugin. Now font icons will continue working without a style save when the site url is changed.
932
+ * Fix: Save a different stylesheet file for each site in a network to prevent them from saving over eachother
933
+ * Fix: Use auto field height when grids are off to prevent tiny form fields on some sites
934
+ * Fix: Correctly set default email message to 100% width
935
+ * Fix: Fields with a layout class and labels set to right or left were not aligned right with CSS grids off
936
+ * Fix: Some field shortcodes weren't being processed when the whitespace was abnormal from some cases of copy/paste
937
+ * Fix: Set the width of the box with field types on form builder page a bit differently to prevent it from being too small when the page includes a lot of admin notices at the top
938
+ * Remove a few 100% translations from the plugin so WordPress can handle it
939
+
940
+ = 3.0.02 =
941
+ * Tweak: Move the forms css inside the plugin rather than saving it in the uploads folder so it will always be reset after updates
942
+ * New: Add frm_fields_container_class hook for changing the new form container class attributes
943
+ * Fix: More form styling fixes for css grids. Fixes cover layouts with frm_alignright and smoother responsive layouts.
944
+ * Fix: Combine the old and new form css, and include the old layout CSS by default
945
+ * Fix: Trigger the activation install right when the plugin is installed
946
+ * Fix: Don't add label position styling to fields that don't include the option to change the label position
947
+ * Fix: Correctly limit the number of fields returned when using the FrmField::get_all_for_form function with a limit set
948
+
949
+ = 3.0.01 =
950
+ * Fix: Trigger style update when a form is loaded instead of only when an admin page is visited
951
+ * Fix: A few various form styling and layout fixes
952
+ * Fix: Prevent screenreader text for accessibility from showing on sites with older cached css
953
+ * Fix: Prevent conflict with Divi when a form shortcode with a recaptcha is included in page editor
954
+ * Fix: Use 'readfile' instead of 'include' for css files for extra safety precautions
955
+ * Fix: Load the field options before frm_new_fields_vars hook for reverse compatibility
956
+
957
+ = 3.0 =
958
+ * Move features into the free form builder: redirect and show page after save, javascript validation, field format options with HTML5 pattern validation, and phone number, number, user ID, hidden field, and HTML fields
959
+ * Possibly breaking change: Remove code that has been deprecated since before v2.02
960
+ * Save a combined js file to use on the front-end with a fallback if the file fails to generate. This file is updated when the plugin is activated or updated.
961
+ * A UI pick-me-up in preparation of things to come in 4.0.
962
+ * New: Use CSS grids for better layouts. If you would like your column layouts to show in Internet Explorer, you'll need to turn on the old styling in the Formidable -> Global settings. The grids use a 12-column layout with classes that range from frm1 (1 column of 12) to frm12 (span all 12 columns). (Thanks for the feedback from our feedback group!)
963
+ * New: Search for fields by name, id, and key in the customization panel
964
+ * Improved RTL styling in backend
965
+ * Enhancement: Add frm_rtl class to forms with styles set to RTL for easier styling.
966
+ * Enhancement: Customize the invalid message when a custom format is set on text fields
967
+ * Better a11y/WCAG support: hidden labels where required, "for" tag on most labels, and link the field to its description for screenreaders.
968
+ * Move form shortcodes from the sidebar to the form settings page
969
+ * Change "field options" to "field settings" on the form builder page
970
+ * Update the Print styling for the entries page
971
+ * Remove frm_text_block class and do it by default. Radio buttons and checkboxes with wrapping text should look good by default.
972
+ * Add a link in the footer to review Formidable
973
+ * New: field object class to make it easy to make new field types. We don't have docs yet, but developers can take a look at the FrmFieldType class. But we've gone to great efforts to make sure fields done the old way will continue to function.
974
+ * New hook: Add frm_output_single_style hook to add extra css into the generated stylesheet
975
+ * New hook: Add frm_before_get_form hook for enqueueing form scripts
976
+ * New hook: Add frm_enqueue_builder_scripts hook to load extra scripts on the form builder page
977
+ * New hook: Add frm_show_entry_defaults hook to add extra atts to the frm_show_entry shortcode
978
+ * Tweak: Include 'original_default' in the field array for new entries so we can compare and prevent double processing later
979
+ * Fix: quotation marks were being escaped in frm_form_attributes and frm_form_div_attributes hooks
980
+ * Removed: The preview page option in the global settings is no longer used. The form preview page is now generated.
981
+ * Removed: The placeholder fallback javascript for old versions of IE is gone. No need to give everyone extra scripts to load.
982
+ * Deprecated the accordion javascript checkbox in global settings since it isn't used by the plugin. If you had this box checked, you'll still see it. Once you uncheck it the option will no longer appear.
983
+
984
+ = 2.05.09 =
985
+ * Fix: Read only background and border colors weren't showing in the form correctly
986
+ * Fix: A PHP warning was showing with validation messages in the form
987
+
988
+ = 2.05.08 =
989
+ * Fix: Hide extra columns on the Formidable -> Entries page more accurately
990
+ * Fix: Prevent WP confirmation messages from showing when saving a form
991
+ * Fix: Some tooltips were partially covered by the admin menu
992
+
993
+ = 2.05.07 =
994
+ * New: Limit the number of field columns in the entry listing page to a max of 11 fields
995
+ * Security Fix: Fix an SQL injection vulnerability on the Form listing page on the backend. Vulnerability discovered by the static code analysis solution RIPS (www.ripstech.com)
996
+
997
+ = 2.05.06 =
998
+ * Tweak: Move database functions from FrmAppHelper to FrmDb
999
+ * Tweak: Move install/update/migrate functions from FrmDb to FrmMigrate
1000
+ * Tweak: Remove unused check_cache_and_transient function
1001
+ * Fix: Rename ja_JP translation to ja
1002
+
1003
+ = 2.05.05 =
1004
+ * Fix: When form actions were added at the same time with non-alphabetical naming, a new addon was replacing the first one
1005
+
1006
+ = 2.05.04 =
1007
+ * Tweak: Remove recaptcha and website fields from sample Contact us form template since most people don't need them
1008
+ * Fix: Updates for WP 4.9 compatibility. This includes preventing double filtering on contact form widgets and using the WordPress Codemirror scripts for the form CSS page.
1009
+ * Fix: Prevent "are you sure" message that has started occuring from WordPress when saving a WordPress form
1010
+ * Fix: Correctly validate form fields with an Inside field label when HTML5 forms are not enabled
1011
+ * Fix: Set the background color on loading form submit button. Depending on the hover button covers, the loading spinner may have been the same color as the button
1012
+ * Fix: Additional security checks when getting POST or GET values in some places
1013
+ * Fix: Return int rather than string from FrmForm::getIdByKey
1014
+
1015
+ = 2.05.03 =
1016
+ * Enhancement: Clean up BCC and CC email buttons on small screens
1017
+ * Security enhancement: Use wp_kses instead of wp_kses_post for showing entries
1018
+ * Enhancement: Add more HTML options to the wp_kses filters
1019
+ * Fix: Correctly show the list of trashed forms after one is permanently deleted
1020
+
1021
+ = 2.05.02 =
1022
+ * New: Add frm_affiliate_id hook for theme author affiliates
1023
+ * Fix: XSS vulnerability on form preview page. Don't check POST values before displaying the form
1024
+ * Enhancement: Speed up the Formidable > Entries listing page for large forms
1025
+ * Fix: Don't add slashes to default field values
1026
+ * Fix: Replace the arrows in the settings sections that disappeared in WP 4.8
1027
+
1028
+ = 2.05.01 =
1029
+ * Fix: Let the new label position option override the setting in the styles
1030
+ * Fix: Trigger an update for the styling settings so a manual save isn't required to get new updates
1031
+ * Fix: Prevent an undefined php warning when viewing the form page
1032
+
1033
+ = 2.05 =
1034
+ * New: Add option to not save IP address with entries for GDPR compliant forms
1035
+ * New: Add a new label position option: Inside. This option automatically uses the field labels as placeholders.
1036
+ * Enhancement: Prevent jumping when selecting field to edit on form builder.
1037
+ * Enhancement: Trigger frm_after_entry_processed hook after save when the action is set to show a message. This affects deleting entries automatically.
1038
+ * Enhancement: Allow text colors like "red" in frm-show-entry.
1039
+ * Enhancement: Increase minimum WP version requirement to 4.0.
1040
+ * Enhancement: Add array_key option to entry shortcode to set whether an ID or key is used when an array is returned.
1041
+ * Fix: Restore Default Plain button for filling email content.
1042
+ * Fix: Set dependency on reCaptcha script to ensure it loads after the Formidable script when defer fails.
1043
+ * Fix: Add frm_entries_list_query hook to filter queries on the Formidable -> Entries page.
1044
+ * Fix: Improve field duplication on form builder.
1045
+ * Fix: Remove deprecated notification settings on import.
1046
+ * Fix: Allow multiple invisible recaptchas to work on the same page.
1047
+ * Fix: Make sure licenses tab loads if navigating to it directly.
1048
+
1049
+ = 2.04.01 =
1050
+ * Fix: Prevent php warning when 'show' attr is missing.
1051
+
1052
+ = 2.04 =
1053
+ * New: Add FrmEntryValues and FrmFieldValue classes, which should be widely reusable.
1054
+ * New: Add ready-to-use contact form. Use it anywhere with [formidable id=contact-form]. It will only be created on new installs.
1055
+ * Enhancement: Load global settings tabs with AJAX to improve the load speed.
1056
+ * Enhancement: Add form and entry to frm_email_message filter.
1057
+ * Fix: Changed blank title processing in the form widget to match WordPress core widgets.
1058
+
1059
+ = 2.03.10 =
1060
+ * New: Add <a href="https://formidableforms.com/wordpress-anti-spam-invisible-recaptcha/">invisible recaptcha to your WordPress forms</a>
1061
+ * New: Add frm_form_div_attributes action hook
1062
+ * Enhancement: Replace is_super_admin calls per WordPress recommendations
1063
+ * Enhancement: Add duplicated field right below original instead of at the end of the form for easier drag and drop form building with long forms
1064
+ * Fix: When importing entries, save the IP from the imported CSV rather than the IP of the person running the import
1065
+ * Fix: Fix duplicate frm_verify ID HTML vaildation error in forms
1066
+ * Fix: Fix squished customization panel showing up when clicking into some field settings
1067
+ * Fix: Run frm_validate_entry when there are errors
1068
+
1069
+ = 2.03.09 =
1070
+ * New: Add frmStartFormLoading and frmEndFormLoading jQuery events.
1071
+
1072
+ = 2.03.08 =
1073
+ * New: Add frm_label_justify CSS layout class to justify text in long labels
1074
+ * Fix: Prevent XSS error messages in Chrome when saving a form on the back-end
1075
+ * Fix: Remove extra space between textarea and description.
1076
+ * Fix: Resolve errors in frm_entries_footer_scripts action call.
1077
+ * Fix: Decrease size of file path for automatic updates to avoid hitting file path limits on Windows servers.
1078
+ * Fix: Improve checkbox and radio styling with Bootstrap active.
1079
+ * Fix: Remove Bootstrap error class with js validation.
1080
+
1081
+ = 2.03.07 =
1082
+ * New: Add frm_after_import_view hook.
1083
+ * New: Add frmPageChanged, frmFormComplete, and frmFormErrors jQuery events.
1084
+ * Fix: Include full where query in cache key to avoid identical keys for different queries.
1085
+ * Fix: Show entries from all forms on the entry listing page.
1086
+ * Fix: Remove IE8-specific CSS causing errors in stylesheet.
1087
+
1088
+ = 2.03.05 =
1089
+ * New: Add <a href="https://formidableforms.com/defeat-spambots-honeypot-spam-protection/">Honeypot spam protection to your WordPress forms</a>
1090
+ * Enhancement: Add frm_form_attributes hook
1091
+ * Enhancement: Make field value dropdown code available in the free form builder plugin
1092
+ * Enhancement: Add deprecated notice for old globals such as $frm_form, $frm_entry, $frm_entry_meta, and $frmdb
1093
+ * Fix: Set default menu name to Formidable
1094
+ * Fix: Allow Date column to be toggled on form listing page
1095
+
1096
+ = 2.03.04 =
1097
+ * Fix: Allow quotes within shortcodes in email settings
1098
+ * Fix: Check if an option is "other" a little more reliably. Instead of checking for 'other' anywhere in the option key, check for other_ at the beginning.
1099
+ * Fix: Correctly use default version number for jquery ui URL if query string is not included
1100
+ * Fix: Increase room for ids in the database. Increase from 11 to 20 to match the WordPress DB fields
1101
+ * Fix: Resolve a conflict with themes adding display:block; as the default for all input elements that is causing checkboxes and radio buttons to look bad
1102
+ * Code: Email code refactoring
1103
+
1104
+ = 2.03.03 =
1105
+ * Fix: Update the minified JS to match the non-minified version. This fixes issues with calculations.
1106
+ * Fix: Allow the first form action label to be clickable
1107
+
1108
+ = 2.03.02 =
1109
+ * Fix: javascript error in Safari in form builder
1110
+ * Fix: Prevent null values from leaving a white space on the entries listing page
1111
+ * Fix: Form shortcode parameters were also affecting the forms in a widget
1112
+ * Fix: Prevent action trigger options from getting cut off at the bottom of the page
1113
+
1114
+ = 2.03.01 =
1115
+ * Fix: Some colors were not being used correctly in the visual form styler settings
1116
+
1117
+ = 2.03 =
1118
+ * New: Add a combined list of all entries on the Formidable -> Entries page instead of defaulting to the first form
1119
+ * New: Replace submit input with button HTML for new forms. This allows us to show the loading indicator on top of the button instead of outside. This applies to new forms only. Existing forms will need the submit button HTML adjusted to see this new styling. But we decided it was best for reverse compatibility if we don't change it automatically
1120
+ * New: Add frm_after_title hook for inserting content between the title and form fields
1121
+ * Enhancement: Speed up adding and editing field options and conditional logic in the form builder
1122
+ * Enhancement: Don't save the field options until the whole form is saved
1123
+ * Tweak: Pass error array in frm_get_paged_fields instead of true/false. If you are using the frm_get_paged_fields hook, it's possible your code may need to be adjusted.
1124
+ * Fix: styling issue when select field moves when changing between a blank and not blank option
1125
+ * Fix: Make sure "Activate" button for add-ons is specific to subsite in multisite network
1126
+ * Removed: pro fields and styling options from the visual styler, extra pro version css, and registering pro scripts. We don't need unused options.
1127
+
1128
+ = 2.02.13 =
1129
+ * New: Add frm_send_separate_emails filter. If there are multiple emails in the "to" box, this hook will send one email per address.
1130
+ * Fixed: Prevent field option reset when a style is included with the imported form
1131
+
1132
+ = 2.02.12 =
1133
+ * Fixed: PHP 7.1 illegal string offset warnings addressed.
1134
+
1135
+ = 2.02.11 =
1136
+ * New: Added frm_create_default_email_action hook to prevent default email action creation.
1137
+ * New: Added frm_inline_submit CSS Layout Class to use in the form generator.
1138
+ * Improved: Include IP for checking comment blacklist.
1139
+ * Improved: Load minified themepicker js and placeholder js when possible.
1140
+ * Improved: Better spam checking with Akismet.
1141
+ * Improved: Update placeholder JS for old browsers to v2.3.1.
1142
+ * Fixed: Don’t force fields created by a add-on to a text field when Pro is not installed.
1143
+ * Fixed: Style success message text color now applies to nested paragraph tags.
1144
+ * Fixed: Prevent PHP warning messages some sites are seeing during cache key retrieval.
1145
+ * Fixed: -1 offset in frm_scroll_offset hook now stops auto-scrolling.
1146
+ * Fixed: Invalid Portuguese translation for field is invalid message.
1147
+ * Fixed: A few HTML errors on form Settings page are resolved.
1148
+ * Fixed: Set default margin on checkbox and radio divs. This resolves conflicts with Bootstrap styling and frm_two_col and frm_three_col classes.
1149
+ * Fixed: If same form is published multiple times on the same page, make sure success message shows with the right occurrence of the form. Auto-scroll to the correct form as well.
1150
+
1151
+ = 2.02.10 =
1152
+ * Add frm_form_error_class hook
1153
+ * Fix db error when updating title in some forms
1154
+ * Fix unclickable keys in Customization Panel
1155
+ * Fix print styling on entries page
1156
+ * Clear entry cache after delete all entries
1157
+
1158
+ = 2.02.09 =
1159
+ * Add frm_before_install hook
1160
+ * Trigger a database update to flush permalinks
1161
+ * Fix PHP 5.4 syntax error
1162
+
1163
+ = 2.02.08 =
1164
+ * Fix recaptcha error (change default to normal)
1165
+ * Prevent double submit clicks
1166
+ * Make sure recaptcha English language setting applies
1167
+ * Add placeholder color CSS
1168
+ * Add frm_after_import_form action hook
1169
+ * Add frm_send_email hook for stopping the email
1170
+ * Add frm_upgrade_page hook
1171
+ * Include field object in frm_prepare_data_before_db hook
1172
+ * Fix nav errors when trying to edit form that doesn't exist
1173
+ * Replace specific cache key deletion with group cache delete for more cache clearing fixes
1174
+