Formidable Forms – Form Builder for WordPress - Version 3.04.03

Version Description

  • New: Improved autoupdating and installation for form add-ons
  • Tweak: Only show the form add-ons page to those who can activate plugins
  • Fix: Radio button shadows had a box around them in some browsers
  • Fix: Don't mark an entry as a duplicate when the second entry includes more fields than the first
  • Code: Move deprecated code to its own folder
Download this release

Release Info

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

Code changes from version 3.04.02 to 3.04.03

Files changed (42) hide show
  1. changelog.txt +2373 -0
  2. classes/controllers/FrmAddonsController.php +356 -159
  3. classes/controllers/FrmAppController.php +80 -72
  4. classes/controllers/FrmEntriesController.php +16 -18
  5. classes/controllers/FrmFieldsController.php +38 -71
  6. classes/controllers/FrmFormsController.php +12 -85
  7. classes/controllers/FrmHooksController.php +2 -2
  8. classes/controllers/FrmSettingsController.php +19 -7
  9. classes/helpers/FrmAppHelper.php +33 -66
  10. classes/helpers/FrmFieldsHelper.php +42 -63
  11. classes/helpers/FrmStylesHelper.php +33 -102
  12. classes/models/FrmAddon.php +206 -51
  13. classes/models/FrmDb.php +3 -12
  14. classes/models/FrmEntry.php +17 -2
  15. classes/models/FrmEntryValidate.php +32 -57
  16. classes/models/FrmForm.php +19 -21
  17. classes/models/FrmMigrate.php +2 -0
  18. classes/models/FrmReviews.php +133 -0
  19. classes/views/addons/list.php +13 -8
  20. classes/views/addons/settings.php +3 -11
  21. classes/views/addons/upgrade_to_pro.php +4 -4
  22. classes/views/shared/errors.php +1 -1
  23. classes/views/shared/review.php +92 -0
  24. classes/views/shared/upgrade_overlay.php +15 -8
  25. css/custom_theme.css.php +2 -1
  26. css/frm_admin.css +222 -43
  27. css/frm_fonts.css +1 -1
  28. {classes/models → deprecated}/FrmDbDeprecated.php +5 -3
  29. deprecated/FrmDeprecated.php +786 -0
  30. {classes/models → deprecated}/FrmEDD_SL_Plugin_Updater.php +0 -0
  31. {classes/models → deprecated}/FrmEntryDeprecated.php +2 -0
  32. {classes/models → deprecated}/FrmEntryFormat.php +4 -1
  33. {classes/models → deprecated}/FrmEntryMetaDeprecated.php +2 -0
  34. {classes/models → deprecated}/FrmFieldDeprecated.php +2 -0
  35. {classes/models → deprecated}/FrmFormDeprecated.php +3 -1
  36. {classes/models → deprecated}/FrmPointers.php +2 -0
  37. formidable.php +17 -11
  38. js/formidable.js +1 -24
  39. js/formidable.min.js +36 -36
  40. js/formidable_admin_global.js +37 -3
  41. languages/formidable.pot +533 -490
  42. readme.txt +166 -158
changelog.txt ADDED
@@ -0,0 +1,2373 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ == Changelog ==
2
+ = 3.04.03 =
3
+ * New: Improved autoupdating and installation for form add-ons
4
+ * Tweak: Only show the form add-ons page to those who can activate plugins
5
+ * Fix: Radio button shadows had a box around them in some browsers
6
+ * Fix: Don't mark an entry as a duplicate when the second entry includes more fields than the first
7
+ * Code: Move deprecated code to its own folder
8
+
9
+ = 3.04.02 =
10
+ * New: When HTML5 is used, auto add the http in a url field if it is omitted by the user
11
+
12
+ = 3.04.01 =
13
+ * 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.
14
+ * Code: Refactor and clean up the code for the Advanced tab in the form settings sidebar
15
+ * Code: Add frm_advanced_helpers hook to move some Advanced shortcode examples to Pro
16
+ * Code: Add frm_field_code_tab hook to add extra shortcodes in the customization sidebar for a single field
17
+ * Update translations
18
+
19
+ = 3.04 =
20
+ * New: Add option to duplicate a form action
21
+ * New: Add option to turn form actions on or off
22
+ * New: Add frm_is_multiple_select hook
23
+
24
+ = 3.03.03 =
25
+ * Improve the appearance of the import/export page
26
+ * Move the admin menu position below the post comments
27
+ * Remove unused CSS including CSS for login forms in the user registration plugin
28
+ * Override theme styling for box shadows on inputs
29
+ * Add a new migrator class that will serve as a base for migrations from other form builder plugins
30
+ * Add a prepare_field_value function for altering the value show inside a form field that can be overridden in extension classes for fields
31
+
32
+ = 3.03.02 =
33
+ * Fix: When syntax highlighting was turned off in the user profile, the custom CSS box didn't appear.
34
+ * Fix: Allow 'aside' tags in the form widget. Don't remove it when sanitizing.
35
+ * Fix: When a form includes a reCaptcha, the loading indicator on the submit button wasn't triggered on submit.
36
+ * 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.
37
+ * Fix: Automatically scroll the form builder window when a field is dragged and dropped in the form.
38
+ * Fix: Use a percentage for left labels instead of a fixed with to ensure the margin isn't too big for small spaces.
39
+
40
+ = 3.03.01 =
41
+ * Fix: Allow the section html in the form widget. Don't remove it when sanitizing.
42
+ * Fix: Show the scrollbar for the list of fields in Chrome on the form builder. Some devices don't allow scrolling without it.
43
+
44
+ = 3.03 =
45
+ * Fix: Custom css like #frm_field_196_container > label was being sanitized and preventing the > from working correctly
46
+ * Fix: Allow <i icon="something"> to pass sanitization in checkbox and radio field options
47
+ * Fix: A warning message in the form style builder was sometimes appearing multiple times and not closing
48
+ * Move datepicker css and images to Pro form builder
49
+
50
+ = 3.02.02 =
51
+ * Update PO file for translation
52
+
53
+ = 3.02.01 =
54
+ * 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.
55
+ * Fix: If all form templates are deleted, keep the 'templates' nav item so new templates can still be created.
56
+ * Fix: When creating a new form, don't include trashed form templates in the form template options
57
+ * Fix: Remove outdated sslverify references
58
+ * Fix: The sample form for the form styler didn't have a great layout when CSS grids were turned on
59
+
60
+ = 3.02 =
61
+ * New: Add support for WordPress export and erase personal data options for easier GDPR support
62
+ * Fix: HTML was getting stripped in field labels when a form was edited on the form builder page
63
+ * Fix: If a field option includes HTML, allow the HTML rather than sanitizing it with entities
64
+ * 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
65
+ * Fix: The HTML for the link to the user profile was showing in the sidebar when editing or viewing an entry
66
+ * 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
67
+
68
+ = 3.01.03 =
69
+ * Fix: Add responsive styling for the .frm_four_col class when grids are disabled
70
+ * Fix: Fix number field HTML5 min, max, and step. This code was still in the pro form builder
71
+ * Fix: More escaping for translated strings, and whitelist false positives for code security tools
72
+ * Fix: When form builder is loaded with ajax, prevent errors when the default value is an array
73
+ * Fix: Add a nonce check when updating settings for a form
74
+ * Removed: Get rid of the start tour. We will add this back in a less annoying way.
75
+
76
+ = 3.01.02 =
77
+ * New: Add frm_sanitize_shortcodes hook. This hook allows shortcodes in field values to be processed rather than shown on the page.
78
+ * Fix: Stylesheets weren't saving correctly when multiple styles were used for forms
79
+
80
+ = 3.01.01 =
81
+ * New: Replace the jQuery colorpicker with the WordPress colorpicker in the visual form styler
82
+ * New: Process shortcodes in the redirect url after form submission
83
+ * New: frm_override_default_styles and frm_default_style_settings hooks
84
+ * Fix: Prevent shortcodes inside field values from being processed in more places including the redirect url. This is a security precaution.
85
+ * Fix: A default contact form was being added with each update. This update ensures the contact form is only generated once.
86
+ * 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.
87
+ * Fix: HTML was being stripped from some form field settings on the form creator page like validation messages
88
+
89
+ = 3.01 =
90
+ * New: Added frm_js_location hook for saving the combined javascript file in a different location
91
+ * New: Added frm_include_field_in_content hook for excluding fields in the default email message
92
+ * Tweak: Process shortcodes inside the form validation messages
93
+ * 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.
94
+ * Fix: The Invisible reCaptcha wasn't being validated correctly in contact forms when the Pro version was not running.
95
+ * Fix: Run the server-side form validation on a number field that uses 0 for the minimum value. This was being skipped.
96
+ * 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.
97
+ * Fix: If there is an error during a database update, make sure it can try again in the future
98
+ * Fix: Prevent more conflicts with Divi when editing some posts with forms
99
+ * Fix: Form fields without CSS grids were not aligning correctly with left, right, or inline labels
100
+
101
+ = 3.0.06 =
102
+ * New: Include the option to duplicate a form in the free form maker
103
+ * Fix: If the reply to address in the email is not specified, use only the from email without the from name to increase receivability
104
+ * Fix: Improve form styling without CSS grids when using left, right, and inline labels
105
+ * Fix: Make the frmFrontForm.fieldValueChanged function public in the javascript so it can be triggered by scripts in other plugins
106
+
107
+ = 3.0.05 =
108
+ * Fix: The visual form styler didn't look good when CSS grids were turned off
109
+ * Fix: Prevent past database migrations from being run again. This was making some field sizes much larger.
110
+ * Fix: If field sizes are extra long, reverse them because it most likely happened in the last release.
111
+ * Fix: Sort by a number field on the entries page was ordering by text instead of number
112
+ * Fix: The export page was showing weird styling for the form selector on some sites
113
+ * Fix: If CSS grids are off, don't force the width to 100% for form fields like before
114
+
115
+ = 3.0.04 =
116
+ * Fix required validation: URL and number fields were requiring a value when the field was not required
117
+ * Fix double recaptcha validation which was causing it to fail validation
118
+
119
+ = 3.0.03 =
120
+ * 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.
121
+ * Fix: Save a different stylesheet file for each site in a network to prevent them from saving over eachother
122
+ * Fix: Use auto field height when grids are off to prevent tiny form fields on some sites
123
+ * Fix: Correctly set default email message to 100% width
124
+ * Fix: Fields with a layout class and labels set to right or left were not aligned right with CSS grids off
125
+ * Fix: Some field shortcodes weren't being processed when the whitespace was abnormal from some cases of copy/paste
126
+ * 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
127
+ * Remove a few 100% translations from the plugin so WordPress can handle it
128
+
129
+ = 3.0.02 =
130
+ * Tweak: Move the forms css inside the plugin rather than saving it in the uploads folder so it will always be reset after updates
131
+ * New: Add frm_fields_container_class hook for changing the new form container class attributes
132
+ * Fix: More form styling fixes for css grids. Fixes cover layouts with frm_alignright and smoother responsive layouts.
133
+ * Fix: Combine the old and new form css, and include the old layout CSS by default
134
+ * Fix: Trigger the activation install right when the plugin is installed
135
+ * Fix: Don't add label position styling to fields that don't include the option to change the label position
136
+ * Fix: Correctly limit the number of fields returned when using the FrmField::get_all_for_form function with a limit set
137
+ * **Pro Version Forms**
138
+ * New: Show a generated screenshot of the embedded form in the form builder rather than the first few fields
139
+ * Fix: Auto updates with the nested version going from 3.0 were failing and updating to lite
140
+ * Fix: Some default values were overiding non defaults when the form was displayed. This included user ID fields and other ifelds with separate values.
141
+ * Fix: Recompile the combined javascript file any time the pro version number changes
142
+ * Fix: Embedded forms were being changed when the parent form was saved
143
+ * Fix: Dynamic fields showing the entry key were blank with [25 show=key].
144
+ * Fix: More reliably run calculations in hidden fields inside of a section on multi paged forms
145
+ * Fix: Don't apply auto layout classes to inline forms with more than 12 fields
146
+ * Fix: When checking if an inline form needs layout classes added, check for non-numeric classes like frm_half
147
+ * Fix: Prevent the comment box on the entries page from closing immediately
148
+
149
+ = 3.0.01 =
150
+ * Fix: Trigger style update when a form is loaded instead of only when an admin page is visited
151
+ * Fix: A few various form styling and layout fixes
152
+ * Fix: Prevent screenreader text for accessibility from showing on sites with older cached css
153
+ * Fix: Prevent conflict with Divi when a form shortcode with a recaptcha is included in page editor
154
+ * Fix: Use 'readfile' instead of 'include' for css files for extra safety precautions
155
+ * Fix: Load the field options before frm_new_fields_vars hook for reverse compatibility
156
+ * **Pro Version Forms**
157
+ * New: Use toggle fields in calculations and conditional logic
158
+ * Fix: Some conditional logic based on empty radio fields wasn't functioning
159
+ * Fix: Require time fields at the correct times
160
+
161
+ = 3.0 =
162
+ * 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
163
+ * Possibly breaking change: Remove code that has been deprecated since before v2.02
164
+ * 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.
165
+ * A UI pick-me-up in preparation of things to come in 4.0.
166
+ * 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!)
167
+ * New: Search for fields by name, id, and key in the customization panel
168
+ * Improved RTL styling in backend
169
+ * Enhancement: Add frm_rtl class to forms with styles set to RTL for easier styling.
170
+ * Enhancement: Customize the invalid message when a custom format is set on text fields
171
+ * Better a11y/WCAG support: hidden labels where required, "for" tag on most labels, and link the field to its description for screenreaders.
172
+ * Move form shortcodes from the sidebar to the form settings page
173
+ * Change "field options" to "field settings" on the form builder page
174
+ * Update the Print styling for the entries page
175
+ * Remove frm_text_block class and do it by default. Radio buttons and checkboxes with wrapping text should look good by default.
176
+ * Add a link in the footer to review Formidable
177
+ * 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.
178
+ * New hook: Add frm_output_single_style hook to add extra css into the generated stylesheet
179
+ * New hook: Add frm_before_get_form hook for enqueueing form scripts
180
+ * New hook: Add frm_enqueue_builder_scripts hook to load extra scripts on the form builder page
181
+ * New hook: Add frm_show_entry_defaults hook to add extra atts to the frm_show_entry shortcode
182
+ * Tweak: Include 'original_default' in the field array for new entries so we can compare and prevent double processing later
183
+ * Fix: quotation marks were being escaped in frm_form_attributes and frm_form_div_attributes hooks
184
+ * Removed: The preview page option in the global settings is no longer used. The form preview page is now generated.
185
+ * Removed: The placeholder fallback javascript for old versions of IE is gone. No need to give everyone extra scripts to load.
186
+ * 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.
187
+ * **Pro Version Forms**
188
+ * New: Move Formidable Pro to its own plugin during update or install. Wahoo!
189
+ * New: If the Pro version is installed without the lite forms, install it automatically. Prevent errors if pro is running alone or is also nested inside of lite.
190
+ * Add range slider and toggle fields
191
+ * Add visibility option to HTML and section fields
192
+ * Move repeater field to its own field button
193
+ * Combine image and URL fields
194
+ * Add readonly option to time fields
195
+ * Star rating fields: Separate from scale fields and remove the jquery rating js and replace with mostly html and css
196
+ * Show frm-stats as stars with straight html/css (no more js)
197
+ * New: Make it easier to show star values. Show the stars by default on the View entry page and show stars in a view with [25 html=1].
198
+ * New: Added param checking to inline conditionals: [if 25 equals='param' param='set-name-here'] and [if get param="level" equals="gold"]
199
+ * New: Add entry_position shortcode for incremental content in views. For example, this gives the option to show more or different information for the first entry in the view or insert ads after the third entry.
200
+ * New: Automatically adjust fields to fit equally in an inline form
201
+ * Separate Pro and Lite translations
202
+ * Enhancement: If a form creates posts and is set to not save entries, save the created post.
203
+ * Enhancement: Run form install on an API route instead of the admin ajax route and make sure there won't be multiple instances of the install running at once.
204
+ * Enhancement: Use the options instead of transients for checking for updates. Some types of caching store transients indefinitely.
205
+ * Enhancement: Get the shortcodes for a view more concisely. Check for any numeric shortcode instead of checking the database for the field ids
206
+ * Tweak: Open files in the form upload field in a new tab
207
+ * Tweak: Don't show the reports nav if the form has no entries
208
+ * Tweak: Add .do-calculation class on a form to run calculations even if they are not on the current page of the form
209
+ * Tweak: Add $atts with $atts['view'] to all pagination hooks
210
+ * Fix: calculations in hidden fields inside of sections were not calculating
211
+ * Fix: Add validation for the year range in date fields
212
+ * Fix: Don't use conditional logic in form actions when the field isn't selected
213
+ * Fix: Show address fields without <br> in dynamic fields
214
+ * Fix: Require the credit card field when editing a draft
215
+ * Fix: Only show the user login for a user id field when the display name is empty. Don't show it as a fallback for other user values.
216
+ * Fix: Return 403 instead of 401 when a file type isn't allowed to be uploaded.
217
+ * Fix: Install the wp_frm_copies table during the first multisite installation, and prevent it from checking tables before they exist.
218
+ * Fix: Do not process a shortcode that is inserted into a field.
219
+ * Fix: Conditionals that check user meta were always returning true
220
+ * Fix: Autocomplete for dynamic fields was too small
221
+ * Fix: If a field includes regex, keep the slashes when the field is duplicated
222
+ * Fix: Correctly check conditional logic when comparing 0 to blank.
223
+ * Fix: Prevent double filtering shortcodes in a nested view
224
+ * Fix: Allow a view to not be filtered on the same page as a filtered view
225
+ * Fix: Searching dynamic fields were returning extra, incorrect results
226
+ * Fix: Searching for a decimal value was dropping the value after the decimal
227
+ * Fix: Searching for a number with post entries and frm-search wasn't correctly checking the posts
228
+ * Fix: datepicker settings weren't loading correctly in an ajax form with date fields that aren't on the first form page
229
+ * Fix: Correctly hide and show fields in embedded forms with the frm-show-entry shortcode
230
+ * Fix: When a field immediately follows an embedded form, it was showing up when include_fields included the embedded form
231
+ * Removed the option to bulk create templates from forms
232
+ * Removed the list of users on the reports page for quicker report loading.
233
+
234
+ = 2.05.09 =
235
+ * Fix: Read only background and border colors weren't showing in the form correctly
236
+ * Fix: A PHP warning was showing with validation messages in the form
237
+ * **Pro Version Forms**
238
+ * Fix: Autocomplete dropdowns were looking for a space before the typed value
239
+ * Fix: /r was showing in conditional multi-line default values
240
+ * Fix: Add error styling to single option autocomplete dropdowns
241
+ * Fix: Check conditional logic on html fields inside a repeating section
242
+ * Fix: Prevent database errors on the first install in a multisite network
243
+
244
+ = 2.05.08 =
245
+ * Fix: Hide extra columns on the Formidable -> Entries page more accurately
246
+ * Fix: Prevent WP confirmation messages from showing when saving a form
247
+ * Fix: Some tooltips were partially covered by the admin menu
248
+ * **Pro Version Forms**
249
+ * Enhancement: When [auto_id start=100] is higher than the last value in the entry, use 100.
250
+ * Enhancement: Remove type="text/javascript" for new HTML5 validation requirements
251
+ * Fix: The Formidable -> Views page didn't look good on small screens
252
+ * Fix: All custom field rows were being removed in post settings when one was removed
253
+ * Fix: Lookup calculations in repeating sections were returning javascript errors
254
+
255
+ = 2.05.07 =
256
+ * New: Limit the number of field columns in the entry listing page to a max of 11 fields
257
+ * 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)
258
+ * **Pro Version Forms**
259
+ * New: Add links to edit views and post entry in the top admin bar
260
+ * Tweak: Show default val/placeholder text icons for any item in an address field and confirmation fields
261
+ * Tweak: Apply the frm_csv_sep hook when importing addresses. This allows for a difference separator to be specified for values in an address field
262
+ * Fix: View pagination was being ignored when is wasn't overridden from the view shortcode
263
+ * Fix: Prevent errors with hitting server limits for a long regex when processing shortcodes in a view with a long form
264
+ * Fix: Set dependencies on the datepicker locale js. This solves the problem with the scripts getting out of order on some sites.
265
+
266
+ = 2.05.06 =
267
+ * Tweak: Move database functions from FrmAppHelper to FrmDb
268
+ * Tweak: Move install/update/migrate functions from FrmDb to FrmMigrate
269
+ * Tweak: Remove unused check_cache_and_transient function
270
+ * Fix: Rename ja_JP translation to ja
271
+ * **Pro Version Forms**
272
+ * New: Add frm_load_ajax_field_scripts hook to allow custom field types to load scripts on the first page of the ajax form
273
+ * Tweak: Only check for shortcodes in calculations if it includes a bracket [ to reduce processing time
274
+ * Tweak: Speed up load time for long forms with field calculations by preventing the calculations from running when the total field is not on the current page.
275
+ * Fix: Better sanitizing before running view query
276
+ * Fix: Save the HTML in the "no entries" message for views
277
+ * Fix: Save all filter settings correctly in the view
278
+ * Tweak: A few adjustments for the entry shortcode array. Use the child entry id in the returned entry array and include the child form id in the entry array. This fixes issues with API entry updating.
279
+
280
+ = 2.05.05 =
281
+ * Fix: When form actions were added at the same time with non-alphabetical naming, a new addon was replacing the first one
282
+ * **Pro Version Forms**
283
+ * Fix: Show update notifications more reliably on sites that don't save the transient expiration
284
+ * Fix: Allow script and style tags in the content boxes of views
285
+
286
+ = 2.05.04 =
287
+ * Tweak: Remove recaptcha and website fields from sample Contact us form template since most people don't need them
288
+ * 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.
289
+ * Fix: Prevent "are you sure" message that has started occuring from WordPress when saving a WordPress form
290
+ * Fix: Correctly validate form fields with an Inside field label when HTML5 forms are not enabled
291
+ * 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
292
+ * Fix: Additional security checks when getting POST or GET values in some places
293
+ * Fix: Return int rather than string from FrmForm::getIdByKey
294
+ * **Pro Version Forms**
295
+ * New: Allow normal WordPress shortcodes in the field calculations box
296
+ * Fix: Strip commas during form validation in non-HTML5 number fields
297
+ * Fix: Correctly order the views dropdown in the shortcode builder
298
+
299
+ = 2.05.03 =
300
+ * Enhancement: Clean up BCC and CC email buttons on small screens
301
+ * Security enhancement: Use wp_kses instead of wp_kses_post for showing entries
302
+ * Enhancement: Add more HTML options to the wp_kses filters
303
+ * Fix: Correctly show the list of trashed forms after one is permanently deleted
304
+ * **Pro Version Forms**
305
+ * New: Add frm_xml_field_export_value hook
306
+ * Fix: PHP error when editing an entry with a date field set as the post date
307
+ * Fix: Field value formatting when exporting XML
308
+ * Fix: Allow striphtml=1 to work for array values
309
+ * Fix: Prevent confirmation field from moving down on small screens
310
+
311
+ = 2.05.02 =
312
+ * New: Add frm_affiliate_id hook for theme author affiliates
313
+ * Fix: XSS vulnerability on form preview page. Don't check POST values before displaying the form
314
+ * Enhancement: Speed up the Formidable > Entries listing page for large forms
315
+ * Fix: Don't add slashes to default field values
316
+ * Fix: Replace the arrows in the settings sections that disappeared in WP 4.8
317
+ * **Pro Version Forms**
318
+ * Enhancement: Add frmCalSeparation jQuery event for changing the comma in text calculations to something else
319
+ * Fix: Prevent more themes from overriding the progress bar styling when the option to override theme styling is checked
320
+ * Fix: More reliably hide and show the buttons for adding taxonomies and custom fields in the create post settings
321
+ * Fix: Several issues with calculations with both fields inside and outside of repeating sections. Fixed issue with conditional radio fields used in repeating calculations.
322
+ * Fix: Prevent endless loops in conditional logic when fields are dependent on each other
323
+ * Fix: Searching number field values with LIKE was causing issues
324
+ * Fix: Use secure cookies on SSL sites
325
+ * Fix: Convert dates in certain formats more realibly before save
326
+ * Fix: Correctly duplicate fields inside a repeating section
327
+
328
+ = 2.05.01 =
329
+ * Fix: Let the new label position option override the setting in the styles
330
+ * Fix: Trigger an update for the styling settings so a manual save isn't required to get new updates
331
+ * Fix: Prevent an undefined php warning when viewing the form page
332
+ * **Pro Version Forms**
333
+ * Fix: Revert the functionality behind filter=1 in views, and instead add a new filter=limited option for compatibility mode
334
+
335
+ = 2.05 =
336
+ * New: Add option to not save IP address with entries for GDPR compliant forms
337
+ * New: Add a new label position option: Inside. This option automatically uses the field labels as placeholders.
338
+ * Enhancement: Prevent jumping when selecting field to edit on form builder.
339
+ * Enhancement: Trigger frm_after_entry_processed hook after save when the action is set to show a message. This affects deleting entries automatically.
340
+ * Enhancement: Allow text colors like "red" in frm-show-entry.
341
+ * Enhancement: Increase minimum WP version requirement to 4.0.
342
+ * Enhancement: Add array_key option to entry shortcode to set whether an ID or key is used when an array is returned.
343
+ * Fix: Restore Default Plain button for filling email content.
344
+ * Fix: Set dependency on reCaptcha script to ensure it loads after the Formidable script when defer fails.
345
+ * Fix: Add frm_entries_list_query hook to filter queries on the Formidable -> Entries page.
346
+ * Fix: Improve field duplication on form builder.
347
+ * Fix: Remove deprecated notification settings on import.
348
+ * Fix: Allow multiple invisible recaptchas to work on the same page.
349
+ * Fix: Make sure licenses tab loads if navigating to it directly.
350
+ * **Pro Version Forms**
351
+ * New: Add Repeat Limit option to Repeatable Sections.
352
+ * New: Add target="_blank" option to file upload shortcodes with new_page=1 param.
353
+ * New: Add frm_before_entries_table hook to display extra content on the Formidable -> Entries page.
354
+ * New: Add frm_lookup_is_current_user_filter_needed filter to allow the options in a lookup field to be conditionally limited.
355
+ * Enhancement: Allow repeating fields to be excluded from show entry shortcode.
356
+ * Enhancement: Improve calculated fields that include fields both inside and outside a repeating section
357
+ * Enhancement: Add RTL form support for time fields.
358
+ * Enhancement: Conditionally allow int, rather than string, comparison in Lookup fields.
359
+ * Enhancement: Add frm_main_feedback hook to messages shown after draft and edit.
360
+ * Enhancement: Display zip code on the same line with city and state when an address is displayed.
361
+ * Enhancement: Improve searching Dynamic field values on Entries tab
362
+ * Fix: Improve compatibility with page builders and membership plugins. Don't run the_content filter on the View content. Instead, filter the content by calling those functions directly.
363
+ * Fix: Delete temporary files after no less than 3 hours, regardless of time zone.
364
+ * Fix: Append the media meta_query rather than replacing it. This resolves a conflict with files in WooCommerce.
365
+ * Fix: Trim logic and actual value in conditional logic comparison.
366
+ * Fix: Improve layout of confirmation field with a left label.
367
+ * Fix: Allow a default value for checkbox fields on any form page.
368
+ * Fix: Prevent Hidden fields from retaining "Clear default value when typing" setting when the field type changes.
369
+ * Fix: Prevent errors when searching Dynamic fields with frm-search bar.
370
+ * Fix: Do not send update emails when a draft is converted to an entry.
371
+ * Fix: Do not show editable entry after submitting a draft, even though users can save and continue partial submissions.
372
+ * Fix: Ensure the setting to not save credit card values is respected for draft entries too.
373
+ * Fix: Do not show full address if [x show="line_2"] is empty.
374
+ * Fix: Fix undefined index error for section ID shortcode.
375
+ * Fix: Prevent jQuery from being loaded an extra time with edit in-place.
376
+ * Fix: Correctly validate required field in embedded form on multi-page form.
377
+ * Fix: Error messages were appearing in some server configurations when credit card numbers includes spaces.
378
+
379
+ = 2.04.01 =
380
+ * Fix: Prevent php warning when 'show' attr is missing.
381
+ * **Pro Version Forms**
382
+ * Fix: Prevent get_post_field() call on null.
383
+
384
+ = 2.04 =
385
+ * New: Add FrmEntryValues and FrmFieldValue classes, which should be widely reusable.
386
+ * New: Add ready-to-use contact form. Use it anywhere with [formidable id=contact-form]. It will only be created on new installs.
387
+ * Enhancement: Load global settings tabs with AJAX to improve the load speed.
388
+ * Enhancement: Add form and entry to frm_email_message filter.
389
+ * Fix: Changed blank title processing in the form widget to match WordPress core widgets.
390
+ * **Pro Version Forms**
391
+ * New: Add FrmProEntryValues and FrmProFieldValue classes, which should be widely reusable.
392
+ * New: Add frm_validate_file and frm_response_after_upload hooks.
393
+ * Enhancement: Set license keys in wp-config.php. Use define('FRM_PRO_LICENSE', 'license-key-here');
394
+ * Enhancement: Prevent the submit button from being clicked while Lookup fields are processing.
395
+ * Fix: If a field is in a section in an embedded form, it will now be included in the default email message.
396
+ * Fix: Entry array passed to API and Zapier includes repeating fields with their own value arrays.
397
+ * Fix: Include_fields parameter applies in show entry shortcode.
398
+ * Fix: Some repeating or embedded fields were duplicated in the default emails and the show entry shortcode.
399
+ * Fix: Only show section headings in email if there are values submitted inside the section.
400
+ * Fix: Calculation error occurred when calculation contained fields inside and outside repeating section.
401
+ * Fix: Make sure [input opt=1] works when "other" options are present in radio fields.
402
+ * Fix: Prevent JS error for calc with no trigger field.
403
+ * Fix: Show loading icon when updating a field with update link.
404
+ * Fix: Allow "3" in the title of a collapsible section
405
+ * Fix: Only check get_user_locale in admin area to stay in step with WordPress.
406
+ * Fix: Keep Lookup option with special characters selected when editing entry.
407
+ * Fix: Prevent fields from returning validation errors when they're in a hidden section.
408
+ * Fix: Fix "Array" showing for the options in post status View filter.
409
+ * Fix: Filter fields autopopulated by lookup based on parent settings.
410
+ * Fix: Don't set cookie during API request.
411
+ * Fix: Fix entry ID greater than and less than filters.
412
+ * Fix: Close the file type limit selection box when clicking away.
413
+ * Fix: Remove autoclear from masks.
414
+
415
+
416
+ = 2.03.10 =
417
+ * New: Add <a href="https://formidableforms.com/wordpress-anti-spam-invisible-recaptcha/">invisible recaptcha to your WordPress forms</a>
418
+ * New: Add frm_form_div_attributes action hook
419
+ * Enhancement: Replace is_super_admin calls per WordPress recommendations
420
+ * 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
421
+ * Fix: When importing entries, save the IP from the imported CSV rather than the IP of the person running the import
422
+ * Fix: Fix duplicate frm_verify ID HTML vaildation error in forms
423
+ * Fix: Fix squished customization panel showing up when clicking into some field settings
424
+ * Fix: Run frm_validate_entry when there are errors
425
+ * **Pro Version Forms**
426
+ * New: Add format option to Text Lookup fields
427
+ * Enhancement: Make file upload errors translatable
428
+ * Enhancement: Pull translations based on the user locale in the WordPress profile
429
+ * Enhancement: Allow show=city in frm-field-value shortcode
430
+ * Fix: Immediate update dropdown appearance on the form builder page when multi-select dropdown setting is changed
431
+ * Fix: Don’t run JavaScript form validation on page load
432
+ * Fix: Don’t force form placeholders in combo fields
433
+ * Fix: Attach files from repeating sections to form emails when the option is checked
434
+ * Fix: Update rewrite endpoints when the view parameter changes to prevent 404s
435
+ * Fix: Assume equals=1 when is_draft shortcode is missing the equals parameter
436
+ * Fix: Import form data correctly into Lookup Checkbox fields
437
+
438
+ = 2.03.09 =
439
+ * New: Add frmStartFormLoading and frmEndFormLoading jQuery events.
440
+ * **Pro Version Forms**
441
+ * New: Add frm_set_and_or_for_lookup filter to allow for filtering lookups that match every value.
442
+ * Fix: Do not clear values in form fields when previous page is conditionally hidden.
443
+ * Fix: Don't include combo field description html with empty description.
444
+
445
+ = 2.03.08 =
446
+ * New: Add frm_label_justify CSS layout class to justify text in long labels
447
+ * Fix: Prevent XSS error messages in Chrome when saving a form on the back-end
448
+ * Fix: Remove extra space between textarea and description.
449
+ * Fix: Resolve errors in frm_entries_footer_scripts action call.
450
+ * Fix: Decrease size of file path for automatic updates to avoid hitting file path limits on Windows servers.
451
+ * Fix: Improve checkbox and radio styling with Bootstrap active.
452
+ * Fix: Remove Bootstrap error class with js validation.
453
+ * **Pro Version Forms**
454
+ * New: Add unique date/time validation back to time fields in your forms.
455
+ * New: Add custom jQuery events that fire before form redirect (frmBeforeFormRedirect) and after deleting/adding a row (frmAfterRemoveRow/frmAfterAddRow).
456
+ * New: Add frm_full_upload CSS Layout Class.
457
+ * Enhancement: Remove deprecated safe_mode references.
458
+ * Enhancement: Allow field descriptions to be set in all sub fields.
459
+ * Enhancement: Display a 0 in numeric calculations rather than a blank value.
460
+ * Enhancement: Add [event_date] shortcode in View sidebar.
461
+ * Enhancement: Check required fields before allowing a file to be uploaded.
462
+ * Enhancement: Add Parent Entry ID column to entry listing page.
463
+ * Enhancement: Allow Formidable forms shortcodes as auto_id prefix or suffix.
464
+ * Fix: Improve styling for Other text box in horizontal radio or checkbox field
465
+ * Fix: Switch Cancel Link back to Edit after entry is updated in-place.
466
+ * Fix: Allow quotes in update link value.
467
+ * Fix: Prevent other option from showing when using [input opt=1].
468
+ * Fix: Skip content shortcode checks that have already been run.
469
+ * Fix: Do not treat 0 value as empty in conditional shortcode.
470
+ * Fix: Calculate median properly for stats.
471
+ * Fix: Do not rely on field order to check if a field is conditionally hidden.
472
+ * Fix: Include the html to set a dynamic field to multiple on the form builder page.
473
+ * Fix: Get form and section ID correctly when existing field is dragged into a section.
474
+ * Fix: Do not replace values in fields watching Lookups on edit.
475
+
476
+ = 2.03.07 =
477
+ * New: Add frm_after_import_view hook.
478
+ * New: Add frmPageChanged, frmFormComplete, and frmFormErrors jQuery events.
479
+ * Fix: Include full where query in cache key to avoid identical keys for different queries.
480
+ * Fix: Show entries from all forms on the entry listing page.
481
+ * Fix: Remove IE8-specific CSS causing errors in stylesheet.
482
+ * **Pro Version Forms**
483
+ * New: Add frm_before_create_post hook.
484
+ * Enhancement: Add frm_final_submit class to submit button for easier form styling.
485
+ * Fix: Allow star rating statistics to work for non-scale fields.
486
+ * Fix: Add more file upload spam protection to stop spam files in your forms.
487
+ * Fix: Prevent file uploads from some specific headless browsers.
488
+ * Fix: Clear options when switching to Lookup field type to prevent conditional logic conflicts.
489
+ * Fix: Convert show=id to show=ID in user ID shortcodes to prevent error messages.
490
+ * Fix: Make sure Entry Status filter works.
491
+ * Fix: Include Lookup Checkboxes in calculations.
492
+
493
+ = 2.03.06 =
494
+ * **Pro Version Forms**
495
+ * Fix: Add nonce check for uploads
496
+ * Fix: Decrease maximum number of orphaned files that can be deleted at one time
497
+ * Fix: Carry page titles across on import
498
+
499
+ = 2.03.05 =
500
+ * New: Add <a href="https://formidableforms.com/defeat-spambots-honeypot-spam-protection/">Honeypot spam protection to your WordPress forms</a>
501
+ * Enhancement: Add frm_form_attributes hook
502
+ * Enhancement: Make field value dropdown code available in the free form builder plugin
503
+ * Enhancement: Add deprecated notice for old globals such as $frm_form, $frm_entry, $frm_entry_meta, and $frmdb
504
+ * Fix: Set default menu name to Formidable
505
+ * Fix: Allow Date column to be toggled on form listing page
506
+ * **Pro Version Forms**
507
+ * New: Add Honeypot spam protection on file uploads in your forms.
508
+ * New: Add option to get oldest or newest unique values in Views.
509
+ * New: Add custom frmDrawChart event for customizing graphs.
510
+ * Enhancement: Delete temporary files after 6 hours.
511
+ * Enhancement: Add more comparison types for Lookup field queries. Affects frm_set_comparison_type_for_lookup hook options.
512
+ * Enhancement: Add frm_pro_value_selector_options hook for customizing options available in field value dropdown.
513
+ * Enhancement: Trigger frmLookupOptionsLoaded event when options are loaded in Lookup field.
514
+ * Fix: Separate multiple files with comma for Zapier.
515
+ * Fix: Start and end date not applying to repeating date fields.
516
+ * Fix: Do not clear hidden form field in conditionally hidden Repeatable Section.
517
+ * Fix: Create queue for fields watching cascading Lookups so the value set is always the correct value.
518
+ * Fix: If a field doesn't have separate values, simplify the options array to include only the key and displayed value.
519
+ * Fix: Delete child entries when a Repeating fields are conditionally hidden and entry is updated.
520
+
521
+ = 2.03.04 =
522
+ * Fix: Allow quotes within shortcodes in email settings
523
+ * 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.
524
+ * Fix: Correctly use default version number for jquery ui URL if query string is not included
525
+ * Fix: Increase room for ids in the database. Increase from 11 to 20 to match the WordPress DB fields
526
+ * 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
527
+ * Code: Email code refactoring
528
+ * **Pro Version Forms**
529
+ * Fix: text calculations using a single dropdown time field
530
+ * Fix: issue with duplicate headings after a repeating section in the default email message and the frm-show-entry shortcode
531
+ * Fix: Prevent blank lines when headings are excluded in the default email message and the frm-show-entry shortcode
532
+ * Fix: Remove the non-functional search box from the Formidable -> Entries page for all forms
533
+ * Fix: invalid HTML when displaying paragraph field text in a Dynamic List field
534
+ * Fix: Prevent a php error message when showing an empty table from the formresults shortcode
535
+ * Fix: & was converting to &amp; in fields watching Lookups
536
+ * Fix: Remove fields within section from section's logic options to help prevent logic loops
537
+ * Fix: Time field conditional statements weren't showing content when they should
538
+ * Fix: Time Field validation was having trouble when the start or end settings didn't include the leading zero (7:30 instead of 07:30)
539
+ * Fix: Unique time fields were causing errors on submit
540
+
541
+ = 2.03.03 =
542
+ * Fix: Update the minified JS to match the non-minified version. This fixes issues with calculations.
543
+ * Fix: Allow the first form action label to be clickable
544
+
545
+ = 2.03.02 =
546
+ * Fix: javascript error in Safari in form builder
547
+ * Fix: Prevent null values from leaving a white space on the entries listing page
548
+ * Fix: Form shortcode parameters were also affecting the forms in a widget
549
+ * Fix: Prevent action trigger options from getting cut off at the bottom of the page
550
+ * **Pro Version Forms**
551
+ * New: Add an option on the Global settings page to fade in forms with conditional logic. This fixes issues on sites with javascript errors causing the form to never show.
552
+ * Tweak: don't show the section headings in email by default
553
+ * Tweak: Force Ajax submit when editing entry inline
554
+ * Enhancement: Add time range validation when submitting the form based on settings for each time field
555
+ * Fix: prevent duplicate form submissions with ajax submit
556
+ * Fix: Entries on listing page were showing a php warning for entries submitted by logged out users
557
+ * Fix: Prevent form submission while Lookups are loading options
558
+ * Fix: Prevent two common calculation errors
559
+ * Fix: Hide the child entries in repeating fields on the page that lists all entries
560
+ * Fix: After selecting a form in the view settings, it wasn't possible to show the field keys in the sidebar
561
+ * Fix: Lookup Checkboxes weren't saving in embedded form
562
+ * Fix: Lookup fields weren't getting enabled if change triggered repeatedly
563
+ * Fix: Time fields with missing settings were showing php warnings on the page
564
+ * Fix: Make rootline look nice in Edge
565
+ * Fix: Autosave values with the non-ajax autosave on page turn
566
+ * Fix: Prevent multipage forms from submitting on the first page when redirecting after submit
567
+ * Fix: "Array" was showing in the default emails for checkbox fields inside a repeating section
568
+ * Fix: Prevent autocomplete dropdown from showing twice when editing in place
569
+
570
+ = 2.03.01 =
571
+ * Fix: Some colors were not being used correctly in the visual form styler settings
572
+ * **Pro Version Forms**
573
+ * New: Added an option to use the old time field with one dropdown
574
+ * Fix: Syntax error on entry submit in older versions of PHP
575
+ * Fix: [25 show=value] was returning the displayed value instead of the saved value
576
+ * Fix: Conditional fields were showing after ajax save or ajax page turn
577
+ * Fix: Save Rich Text value when form is submitted with button and ajax
578
+ * Fix: Prevent button styling from applying to buttons inside a rich text field
579
+ * Fix: Only include one column on the entries listing page for post status
580
+ * Fix: Fields with conditional logic depending on time fields weren't showing correctly
581
+ * Fix: PM was always saving as AM in time fields
582
+ * Fix: Time fields sometimes had no minute options depending on the start time and minute step settings
583
+ * Fix: Lookup Checkboxes were not saving in embedded forms
584
+ * Fix: Removed the section descriptions and duplicate section headings in default email message
585
+ * Fix: Prevent double submissions with ajax submit enabled with redirect after submit
586
+ * Fix: Default Emails were coming through empty if the form only had embedded forms
587
+
588
+ = 2.03 =
589
+ * New: Add a combined list of all entries on the Formidable -> Entries page instead of defaulting to the first form
590
+ * 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
591
+ * New: Add frm_after_title hook for inserting content between the title and form fields
592
+ * Enhancement: Speed up adding and editing field options and conditional logic in the form builder
593
+ * Enhancement: Don't save the field options until the whole form is saved
594
+ * 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.
595
+ * Fix: styling issue when select field moves when changing between a blank and not blank option
596
+ * Fix: Make sure "Activate" button for add-ons is specific to subsite in multisite network
597
+ * Removed: pro fields and styling options from the visual styler, extra pro version css, and registering pro scripts. We don't need unused options.
598
+ * **Pro Version Forms**
599
+ * New: Add multi page progress bars and rootline to jump to different pages
600
+ * New: Add a page number parameter to the url when the form page changes
601
+ * New: Auto-save drafts on page turn when drafts are enabled in the form maker settings
602
+ * New: Add save button to back-end entries. This allows an entry to be saved from any page when editing.
603
+ * New: Break out repeating sections in the email and frm-single-entry shortcode. Now they repeat instead of separate with commas.
604
+ * New: Add options for email content/single entry shortcode: include_extras="section,page,html", include_fields="10,15", exclude_fields="10,15"
605
+ * New: Change the time field to multiple dropdowns that always save in hh:mm format. This allows for secondary sorting by time fields in views. Using h:i A for the time format in a shortcode will be forced to g:i A.
606
+ * Enhancement: Switch the unique time functionality from front-end disabling to back-end validation
607
+ * Enhancement: Hide form on page load and fade it in to prevent conditional fields flashing
608
+ * Enhancement: Order the post type dropdown by post key instead of defaulting to the order of post type creation
609
+ * Enhancement: Make the custom field options more helpful by including custom fields only for the selected post type
610
+ * Enhancement: Add .frm_loading_form class on the form tag while the form is processing
611
+ * Enhancement: Show the dropzone error message all the time instead of only on hover
612
+ * Tweak: Use css to make the conditional logic field options shorter instead of truncating in the form builder
613
+ * Tweak: Use function to convert field object to array during in_section migration.
614
+ * Tweak: Avoid errors after Lookup field is deleted and other fields watched that Lookup field.
615
+ * Fix: Do not delete values in frm_item_metas table for all fields selected in create front-end Post action (such as the conditional logic).
616
+ * Fix: Show the correct option label for a blank value. Previously option label for "0" saved value was displaying.
617
+ * Fix: Compact file upload field wasn't aligned with other fields in the row
618
+ * Fix: Evaluate date strings the same way in view filters and inline conditions for date fields
619
+ * Removed: Old auto updating code. If you are running add-ons you haven't updated since before November 2015, they will no longer auto update.
620
+
621
+ = 2.02.13 =
622
+ * New: Add frm_send_separate_emails filter. If there are multiple emails in the "to" box, this hook will send one email per address.
623
+ * Fixed: Prevent field option reset when a style is included with the imported form
624
+ * **Pro Version Forms**
625
+ * New: Add dynamic Lookup population options to paragraph fields
626
+ * New: Allow no_link=1 for [25 truncate=20 no_link=1]. By default, when a value is truncated in a view, it shows a link to show more content. This shortcode option can remove the link.
627
+ * New: Add does_not_contain filter to stats shortcode
628
+ * New: Add frm_filter_view hook for modifying View object
629
+ * New: Add frm_graph_default_colors hook
630
+ * Tweak: Replace all formidablepro.com links with formidableforms.com
631
+ * Improved: Remove arrows on read-only HTML5 number field
632
+ * Improved: Apply Formidable styling to Dynamic List fields
633
+ * Improved: Allow Lookup fields with repeating section values to filter based on parent value
634
+ * Fixed: Do not enable read-only dependent Lookup fields
635
+ * Fixed: Form scrolls correctly on page turn
636
+ * Fixed: JavaScript errors caused by file upload field in Woocommerce form
637
+ * Fixed: Allow ajax submit if there are no file fields on the page with a value
638
+ * Fixed: Correctly import address values into Address field
639
+ * Fixed: [created_at] conditionals take timezone into account
640
+ * Fixed: Do not urlencode GET variables that are set in form shortcode
641
+ * Fixed: Prevent WordPress auto paragraphs from adding unwanted paragraph tags in calendar View headings
642
+ * Fixed: Removed repeating fields from non-repeating field logic
643
+
644
+ = 2.02.12 =
645
+ * Fixed: PHP 7.1 illegal string offset warnings addressed.
646
+ * **Pro Version Forms**
647
+ * New: Add frm_order_lookup_options hook to adjust the order of options in a Lookup field.
648
+ * Fixed: JavaScript errors were occurring when illegal file type was uploaded and Woocommerce was active.
649
+ * Fixed: Make sure PDF files display correctly with show_image=1 in WP 4.7.
650
+ * Fixed: Scroll error when switching pages with Ajax submit.
651
+ * Fixed: Make sure dependent autocomplete Lookup fields aren't disabled permanently.
652
+ * Fixed: Make sure GET variables set in View shortcodes work correctly.
653
+
654
+ = 2.02.11 =
655
+ * New: Added frm_create_default_email_action hook to prevent default email action creation.
656
+ * New: Added frm_inline_submit CSS Layout Class to use in the form generator.
657
+ * Improved: Include IP for checking comment blacklist.
658
+ * Improved: Load minified themepicker js and placeholder js when possible.
659
+ * Improved: Better spam checking with Akismet.
660
+ * Improved: Update placeholder JS for old browsers to v2.3.1.
661
+ * Fixed: Don’t force fields created by a add-on to a text field when Pro is not installed.
662
+ * Fixed: Style success message text color now applies to nested paragraph tags.
663
+ * Fixed: Prevent PHP warning messages some sites are seeing during cache key retrieval.
664
+ * Fixed: -1 offset in frm_scroll_offset hook now stops auto-scrolling.
665
+ * Fixed: Invalid Portuguese translation for field is invalid message.
666
+ * Fixed: A few HTML errors on form Settings page are resolved.
667
+ * Fixed: Set default margin on checkbox and radio divs. This resolves conflicts with Bootstrap styling and frm_two_col and frm_three_col classes.
668
+ * 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.
669
+ * **Pro Version Forms**
670
+ * New: Add time_ago=2 and time_ago=3 to created_at shortcode options. The number used here will determine how many time levels are shown, e.g. time_ago=1 will show “2 years”, time_ago=2 will show “2 years 3 months”, time_ago=3 will show "2 years 3 months 15 days”.
671
+ * New: Allow time comparisons with NOW, e.g. [if x less_than="NOW"]Show this content[/if x]
672
+ * New: Added author_link parameter to userID shortcode options. [25 show=author_link] will include a link to the WordPress author page.
673
+ * New: Added frm_allow_date_mismatch hook to improve validation for certain date formats. This may be needed if you are using a custom format in your date fields that include non-English text.
674
+ * New: Added greater than or equal to and less than or equal to filter to stats and graphs.
675
+ * Improved: Added comma between values in text calculation when multiple values come from the same field.
676
+ * Improved: RTL indented sub-category styling for checkboxes and radio buttons.
677
+ * Improved: Include the hidden Dropzone field inside the form instead of in the footer.
678
+ * Improved: Remove entry div from the page after fadeout when deleting an entry.
679
+ * Improved: Order post type dropdown in Create Post action by post key.
680
+ * Improved: Allow repeating fields to be selected in a field's Lookup population options.
681
+ * Improved: Repeating entry keys are now randomly generated.
682
+ * Improved: Allow dynamic default value shortcodes in calculation box.
683
+ * Fixed: Do not filter shortcodes submitted in entry when editing the entry. Process external shortcodes before replacing [input].
684
+ * Fixed: The default value is now set correctly in dependent Lookup radio and checkbox fields.
685
+ * Fixed: Style font now applies to section headings.
686
+ * Fixed: Unnecessary urlencode removed from $_GET variable. Allows searching with + symbol in query string now.
687
+ * Fixed: Endless loop prevented when new child form is given same ID as parent from XML.
688
+ * Fixed: Allow updating of read-only dropdown in back-end Entries.
689
+ * Fixed: Lookup field options wouldn't update while dropdown was open in Chrome on Windows. Dropdown is now disabled until options are completely loaded.
690
+ * Fixed: Ensure that autocomplete text shows in dropdown when theme styling is overridden in Style.
691
+ * Fixed: UserID field now autopopulates correctly when creating an entry in the WordPress dashboard.
692
+ * Fixed: Errors on entries page when file didn't exist.
693
+ * Fixed: The include_zero parameter in graphs caused errors with certain WordPress date formats. This now works with any date format.
694
+ * Fixed: Using "hours" in a Creation Date View filter would result in erroneous results.
695
+ * Fixed: Data was duplicated in the frm_item_metas and post meta or taxonomies table. It is now only present in the post meta or taxonomies table.
696
+ * Fixed: Do not force html=1 on file upload field in frm-field-value shortcode.
697
+ * Fixed: Prevent errors when a hidden field or text field is used for post status.
698
+
699
+ = 2.02.10 =
700
+ * Add frm_form_error_class hook
701
+ * Fix db error when updating title in some forms
702
+ * Fix unclickable keys in Customization Panel
703
+ * Fix print styling on entries page
704
+ * Clear entry cache after delete all entries
705
+ * **Pro Form Features**
706
+ * Add frm_time_ago_levels hook for drilling down time_ago
707
+ * Fix adding new file after removal when editing
708
+ * In multi-site, only copy forms if copy form setting is checked
709
+ * Make sure detaillink works if View is on home page
710
+
711
+ = 2.02.09 =
712
+ * Add frm_before_install hook
713
+ * Trigger a database update to flush permalinks
714
+ * Fix PHP 5.4 syntax error
715
+ * **Pro Form Features**
716
+ * Fix single post page content
717
+
718
+ = 2.02.08 =
719
+ * Fix recaptcha error (change default to normal)
720
+ * Prevent double submit clicks
721
+ * Make sure recaptcha English language setting applies
722
+ * Add placeholder color CSS
723
+ * Add frm_after_import_form action hook
724
+ * Add frm_send_email hook for stopping the email
725
+ * Add frm_upgrade_page hook
726
+ * Include field object in frm_prepare_data_before_db hook
727
+ * Fix nav errors when trying to edit form that doesn't exist
728
+ * Replace specific cache key deletion with group cache delete for more cache clearing fixes
729
+ * **Pro Form Features**
730
+ * Added pretty URLs to views
731
+ * Added month and year labels in credit card dropdowns
732
+ * Show user options for admin when editing user-limited dynamic field
733
+ * Added frm_load_dropzone hook for disabling dropzone
734
+ * Added frm_dynamic_field_user hook for dynamic fields.
735
+ * Load pro translations in plugin instead of allowing translations from wp.org to trump
736
+ * Fix error when editing a multi-page form with blank repeating section on separate page
737
+ * Add space next to collapsible section icons
738
+ * Fix required file error when file is present
739
+ * Fix clearing dependent autocomplete dropdown in repeating sections
740
+ * Update EDD updater
741
+
742
+ = 2.02.07 =
743
+ * Improve cache clearing in order to make Formidable compatible with persistent object caching
744
+ * Add vertical-align:baseline to radio and checkboxes to prevent styling conflicts
745
+ * Add hook for invalid form entry error message
746
+ * Add form id to 'frm_include_meta_keys' hook
747
+ * Fix IE11 and Edge form builder issues with editing field options
748
+ * Allow localhost to pass URL validation
749
+ * Remove frm_field_input_html calls for fields on form builder page
750
+ * **Pro Forms Features**
751
+ * Add option to send emails on import
752
+ * Allow default style to export with form
753
+ * Fix form importing with a style (make sure style is selected in form's settings)
754
+ * Fix exporting Views without form
755
+ * Fix adding subfield types in Chrome
756
+ * Make sure "Remove" link still shows when frm_compact is used in file upload field
757
+ * Make sure actions only trigger on import when import is selected
758
+ * Check if transient timeout has been deleted to prevent expired update links
759
+ * Fix conditional logic in a section after removing and re-adding a row
760
+ * Make sure repeating section is cleared after a form is submitted
761
+ * Move repeating section form to trash when parent is trashed
762
+ * Make sure collapsible icon uses section color
763
+ * Fix errors when "Show page content" is selected in form's settings
764
+ * If repeating form entries page is accessed directly, go to parent's entries page
765
+ * Fix editing entries with file upload in repeating section
766
+ * Allow translation of more file upload messages and no results message in autocomplete dropdown
767
+ * Fix donut graphs
768
+ * Fix PHP 5.2 graph errors
769
+ * Adjust lowercase value sorting in Lookup fields
770
+ * Fix auto_id errors with WPML
771
+ * Prevent multiple View filters from being added during migration
772
+ * Fix Phone Number mask on ajax submission form
773
+ * Fix exclude_fields option with editlink
774
+ * Fix truncating in place so it doesn't cut words in half
775
+ * Make sure autocomplete, multi-select, and read-only attributes are included for category dropdowns
776
+ * Remove "Unique" option from userID fields
777
+ * Fix hidden row_ids field name (in repeating section)
778
+ * Make sure character limit, read-only, etc do not apply on form builder page
779
+ * Make sure second and third level Lookup fields correctly limit options to the current user
780
+ * Fix HTML validation errors for checkboxes in repeating fields
781
+
782
+ = 2.02.06 =
783
+ * Prevent styling conflict with field buttons on form builder
784
+ * **Pro Forms Features**
785
+ * Add styling for left and right labels in combo fields
786
+ * Fix PHP 5.2 error in graphs controller
787
+ * Add taxonomy support to graphs and stats
788
+ * A couple other graph fixes
789
+ * Fix entry_id and created_at issue with stats
790
+ * Fix lowercase text sorting in Lookup fields
791
+ * Make sure conditional logic works on embedded form fields when editing
792
+ * Fix conditional logic dependent on hidden embedded form field
793
+ * Make sure time field displays correctly by default with frm-field-value shortcode
794
+ * Add Format option to Text fields
795
+
796
+ = 2.02.05 =
797
+ * Clear caching when updating styling settings
798
+ * Add frm_field_div_classes hook
799
+ * Remove deprecated safe_mode check
800
+ * Warning added for invalid height/padding styling combination
801
+ * **Pro Forms Features**
802
+ * Added several new graph types and options
803
+ * Prevent repeating field value duplication when saving drafts
804
+ * Add migration to remove duplicated repeating section data
805
+ * Show child forms in CSV export options
806
+ * Allow 2 decimal places for max file size
807
+ * Fix frm-stats y=""
808
+ * Allow time fields to be used in calculations
809
+ * Add a Country label option for Address fields
810
+ * Remove a few graph filters
811
+ * Make sure address fields display error messages
812
+ * Make sure category fields keep value when saving a draft
813
+ * Other bug fixes
814
+
815
+ = 2.02.04 =
816
+ * Add field description margin option
817
+ * Fixes for submitting forms in <IE10
818
+ * **Pro Forms Features**
819
+ * Prevent star styling conflict with some themes
820
+ * Fix conditional logic dependent on numeric checkboxes
821
+ * Allow arrays in Lookup checkbox field default value
822
+ * Make sure Lookup fields load correctly with ajax in repeating section on form builder
823
+ * Fix field errors showing on dependent Dynamic fields
824
+ * Only validate on change when js validation is on
825
+ * Make sure address field errors show up correctly
826
+ * Include confirmation field classes for old HTML
827
+ * Make repeating fields work with frm_date_field_js hook
828
+ * Don't show long decimal for allowed file size
829
+ * Fix conditional logic with ampersands
830
+ * Fix left label with autocomplete dropdown
831
+ * Don't allow switching between sections and HTML field types
832
+ * Fix JS error when multi-select logic field has no options selected
833
+ * Make sure WP errors are returned correctly in file upload field
834
+ * Allow use of show_image, add_link, and show_filename with frm-field-value
835
+ * Don't show date pop-up for read-only date field
836
+ * Fix ordering by number fields mapped to a custom field
837
+
838
+
839
+ = 2.02.03 =
840
+ * Update translations
841
+ * **Pro Forms Features**
842
+ * Fix file upload field display with an ID ending in 0
843
+ * Fix file upload fields in a repeating section when editing entries
844
+ * Don't trigger update on all repeating Lookup fields when new row is added
845
+ * Don't clear Lookup dropdown values when editing
846
+ * Fix showing the error message on confirmation fields
847
+ * Fix conditional shortcodes for embedded file upload fields
848
+ * Make sure visible repeating dependent Dynamic field values are not cleared
849
+
850
+ = 2.02.02 =
851
+ * Fix clicking the undo link after bulk trash forms
852
+ * Add submitFormManual function for custom scripts
853
+ * HTML5 error fields now have styling
854
+ * **Pro Forms Features**
855
+ * Fix conditional logic on radio fields in an embedded form
856
+ * Add download link to files in uploader
857
+ * Fix undefined message in Address fields
858
+ * Make sure new file upload field works in repeating sections
859
+ * Show credit card errors
860
+ * Make sure date fields show the correct format in repeating sections when editing
861
+ * Make sure incorporated upload importer works correctly
862
+ * Fix file upload field on multi-page ajax submission form
863
+ * Exclude credit cards and passwords from default email
864
+ * Fix phone number field JS issues in firefox
865
+ * Add loading text to Lookup fields
866
+ * Improve reverse compatibility for file upload field ID shortcode
867
+ * Allow specific user ID and entry ID searching in form entries tab
868
+
869
+ = 2.02.01 =
870
+ * **Pro Forms Features**
871
+ * Add styling for uploader with left label
872
+ * Add styling for rich text field with left label
873
+ * Make new file upload strings translatable
874
+ * Fix default date issue in Firefox
875
+ * Search post fields in admin entries tab
876
+ * Allow searching by IP address in admin entries tab
877
+ * Fixed showing default avatars if there is none selected in the form
878
+ * Fixed issue with newly uploaded files getting dropped when there are validation errors while editing an entry
879
+ * Fixed issue with showing the url of the icon instead of the uploaded file by default
880
+
881
+ = 2.02 =
882
+ * Improve user role dropdowns in global settings
883
+ * Remove some deprecated functions
884
+ * More output escaping
885
+ * Move file creation for stylesheet to its own file for an easier API
886
+ * **Pro Forms Features**
887
+ * Add drag and drop file uploading
888
+ * Add options to set the file size and count limits
889
+ * Merge the upload importer plugin into main plugin
890
+ * Filter the media library so uploads in forms can only be viewed by those with permission to edit entries
891
+ * Don't allow direct viewing of attachment pages
892
+ * Add file protection options per form to prevent direct access to files
893
+ * Add a prefix to the attachment slug to prevent the attachments from using top-level slugs that would be better used elsewhere
894
+ * Process files during validation if javascript errors on the page, or if browser doesn't support the in-place file uploader
895
+ * Include the error message at the top of the page when there are ajax validation errors
896
+ * Add frm_image_html_array hook so we can tie in with modals soon
897
+ * Add an option to use text calculations for combining values instead of requiring math operations
898
+ * Add age shortcode for use in calculations. Use [age id=25] in a calculation, where 25 is the id of the date field.
899
+ * If a calculation doesn't have any field triggers, trigger it on load
900
+ * Fixed calculations using multiselect fields across page breaks
901
+ * Fixed date calculations with an empty date field. The calculation will now wait until any date fields have been filled.
902
+ * Only use ajax validation when ajax submit is turned on to prevent double validation checks
903
+ * Allow recaptcha to be dragged into section
904
+ * Fixed issue with html showing in rich text
905
+ * Fixed filtering conditionals from parent form inside of a foreach loop
906
+ * Change default sep for images displayed in View
907
+ * Don't force links when displaying a non-image file
908
+ * Make sure repeating fields watching Lookups keep custom value
909
+ * Fix undefined index error with date field calendar style setting
910
+ * Make sure page size and limit work together well in Views
911
+ * Don't run date calculations until all dates are selected
912
+ * Allow address field labels to be edited when field is initially added
913
+ * Fix single row Lookup field checkboxes styling
914
+
915
+ = 2.01.03 =
916
+ * **Pro Forms Features**
917
+ * Make sure HTML entities don't show in rich text fields
918
+
919
+ = 2.01.02 =
920
+ * Increased minimum required WordPress version to 3.8
921
+ * Added frm_skip_form_action hook. This hook can be used to change whether the action is skipped or not
922
+ * Added border radius settings to success and error messages
923
+ * Fixed issue allowing a trashed form shortcode to still show the form
924
+ * Fixed issue causing &amp; to show instead of & when editing paragraph fields
925
+ * Removes French and Swedish translations since they are complete online
926
+ * Update for better cache deletion in WP 4.0+
927
+ * Allow a specific field type to change the value for emails and entry array
928
+ * Prevent errors with Redis cache plugin
929
+ * Improve styling for submit buttons on mobile devices
930
+ * Don't let imported style override default
931
+ * Add frm_clean_[field-type-here]_field_options_before_update hook
932
+ * Fix &, >, and other character comparison issues
933
+ * **Pro Forms Features:**
934
+ * Added frm_combo_dropdown_label filter. This hook can be used to add a label to the blank option in combo field dropdowns (state, and country, Credit card month, year)
935
+ * Added frm_use_embedded_form_actions hook. If this hook is used to return the value "true", form actions for embedded forms will be fired
936
+ * Make sure the view page number is not 0
937
+ * When getting the entry array, address fields will no longer be sent as an array
938
+ * Don't load more than 500 options in a lookup field on the form builder page
939
+ * Fixed rich text fields with in place edit
940
+ * Fixed javascript error when submitting an entry from the back-end
941
+ * Use the correct calendar locale when editing an entry from the back-end
942
+ * Fixed issue with the unique message being replaced if it was the same as the global unique message
943
+ * Fixed issue with dependent dynamic field change events not getting triggered
944
+ * Exclude password and credit card fields from the default email message
945
+ * Add views parameter to frm-search shortcode
946
+ * Fix error that appeared when using a date field in a calculation in multi-page form
947
+ * Fix issue with switching from a dropdown to a Lookup field
948
+ * Fix issue with loading icon replacing Lookup field options
949
+ * Set confirmation field description correctly
950
+ * Allow post fields in form action conditional logic
951
+ * Set default value correctly when address field is shown
952
+ * Don't let spaces break conditional logic
953
+ * Fix JS error after in-place edit
954
+ * Fix PHP warning message for Lookup fields
955
+ * Fix ambiguous form ID SQL error
956
+ * Don't require credit card fields when editing
957
+ * Make sure ampersand doesn't break Lookup fields
958
+ * Add autopopulate option to Image URL, time, and hidden fields
959
+ * Add hook to allow LIKE comparison with Lookup fields
960
+
961
+ = 2.01.01 =
962
+ * Use a different email regex to allow more characters, and longer TLDs
963
+ * Only load custom styles on the styler. Don't include it on the manage styles, or custom css tabs. Bad custom css can make the page uneditable.
964
+ * Fix issue preventing the option to Allow the multiple recaptchas to be turned off
965
+ * Fixed issue with white space allowed in field options when bulk editing
966
+ * Use javascript instead of jQuery to scroll after submit
967
+ * Add missing styling to make inline labels work with checkbox/radio fields
968
+ * **Pro Forms Features:**
969
+ * Add checkbox option to Lookup fields
970
+ * Hide empty radio/checkbox Lookup fields
971
+ * Allow autocomplete Lookup fields to populate text fields
972
+ * Add filter for setting field type used for logic 'frm_logic_FIELDTYPE_input_type'
973
+ * Prevent duplicate submissions during in-place-edit or ajax-loaded forms
974
+ * Make sure post fields show up correctly on edit
975
+ * Always show the number range options in a number field
976
+ * Fixed issue with dynamic list fields not saving a value when the visibility is set to administrator
977
+ * check for __frmDatepicker before using it. This resolves issues when using a date field with custom code.
978
+ * Strip slashes shown in an entry right after POSTing
979
+ * If a field in calculation is missing, don't break the js
980
+ * Prevent conditional loops with dropdown fields
981
+ * Fixed issue with Dynamic fields not showing up when expected, and when editing 3+ level Dynamic fields
982
+ * Remove the country field when the "other" address option is selected
983
+ * Fixed issue with required Address field on conditionally hidden page. They were still required, even when skipped.
984
+ * Fixed star fields on multi-paged ajax forms. Going back a page was showing radio buttons.
985
+ * Fixed issue with small autocomplete field, when it is hidden on page load.
986
+ * Fixed issue that allowed conditional fields to show right after hitting "save draft"
987
+ * Fixed default values inside of conditional logic
988
+ * Fixed issue preventing "none" from being selected for the date styling in the styles
989
+
990
+ = 2.01.0 =
991
+ * Allow shortcodes for the submit button label
992
+ * Increase the timeout for activating a license
993
+ * Add a couple static functions to use in add-ons with form actions
994
+ * Don't show templates on the add-ons page
995
+ * Add frm_switch_field_types hook for specifying which fields can be switched to/from
996
+ * Add Authorize, Stripe, WOO, and copy icons
997
+ * Some back-end styling improvements
998
+ * Additional bug fixes
999
+ * **Pro Forms Feature:**
1000
+ * Add new "Lookup" field type
1001
+ * Add "Lookup value" option to several field types
1002
+ * Add clear on focus and default blank option to Address fields
1003
+ * Move form submit js to js file
1004
+ * Add repeating field args to new and edit fields hooks
1005
+ * Refactor conditional logic
1006
+ * Improve and limit post redirection
1007
+ * Cut down on View query size when no field filters are set
1008
+ * Additional bug fixes
1009
+
1010
+ = 2.0.25 =
1011
+ * Add an option to allow multiple recaptchas. This is off by default to avoid new conflicts.
1012
+ * Use the recaptcha size setting when displaying multiple recaptchas per page.
1013
+ * Add frm_after_field_is_imported and frm_prepare_single_field_for_duplication hooks
1014
+ * Add property="stylesheet" to the stylehsheets when HTML5 is enabled
1015
+ * **Pro Forms Features**
1016
+ * Redirect to post when View detail page is linked to post
1017
+ * Make sure entry ID is unique filter does not get used
1018
+ * Make sure limit applies to a View's pagination
1019
+ * Add dynamic field to frm_data_sort hook
1020
+ * Add a message when the file upload field is included before a page break
1021
+ * Fix the issue with the frm_first class applying to the confirmation field
1022
+ * Remove the invalid email message used when the email confirmation doesn't match
1023
+
1024
+ = 2.0.24 =
1025
+ * Add option to use the dark reCaptcha
1026
+ * Show a helpful error message when recaptcha communication fails
1027
+ * Fix the clear on focus setting to not switch to the default blank
1028
+ * **Pro Forms Features:**
1029
+ * Validate recaptcha during the javascript validation checks
1030
+ * Make sure required credit card fields are required
1031
+ * Add option to removes names from credit card fields to prevent the values from being posted to the server (most secure)
1032
+ * Don't require address fields when conditionally hidden
1033
+ * Exclude linked dynamic fields from calculation fields dropdown since they aren't functional
1034
+ * Improve third-party shortcode filtering in Views
1035
+ * Ignore View filters with no value selected for where field
1036
+ * Fix the file upload background color setting
1037
+ * Include a flag on the field to indicate if it is inside a section or not
1038
+
1039
+ = 2.0.23 =
1040
+ * Add support for multiple reCaptchas on a page
1041
+ * Make sure the screen options for the form listings only shows when needed
1042
+ * Make sure a value is selected when it includes an &
1043
+ * Load grid CSS on the back-end entries and form builder pages
1044
+ * Allow transparent background color on fields and form
1045
+ * Don't update clear on click options until whole form is saved
1046
+ * Don't force an array to be a string before going through get_display_value function
1047
+ * Added frm_trigger_create_action hook to alter action triggering
1048
+ * Added frm_csv_format hook for changing the exported CSV format
1049
+ * Added frm_is_field_required hook for allowing a field to be conditionally required
1050
+ * Added frm_field_options_to_update hook for setting more field options to update
1051
+ * Added frm_display_FIELDTYPE_value_custom hook
1052
+ * Added frm_get_FIELDTYPE_display_value
1053
+ * Added frm_csv_field_columns hook. Once the columns are added, if a field value is an array, it will automatically fill added csv columns
1054
+ * **Pro Forms Features:**
1055
+ * Added straight up client-side validation
1056
+ * Added Credit card and Address field types. Enable the Credit card field with add_filter( 'frm_include_credit_card', '__return_true' );
1057
+ * Allow actions to be triggered when a draft is saved
1058
+ * Allow free text in user id field filtering in views
1059
+ * Improved the unique filter in Views
1060
+ * Add Entry ID filter to all existing single entry Views instead of always checking for the entry param in the url
1061
+ * Allow "any" for the number step
1062
+ * Updated Chosen script to 1.5.1
1063
+ * Correctly check for multisite sitewide activation
1064
+ * Fixed the problem with the file upload attachment option not staying checked
1065
+ * Fixed filtering by entry ID and fields together in Views
1066
+ * Make sure the limit setting doesn't affect calendar Views, and show empty calendar for Calendar views with no entries
1067
+ * Make sure closing shortcodes in After Content are filtered
1068
+ * Make sure Dynamic List fields show up in default html email
1069
+ * Make sure we are jumping to the first field in the form after validation instead of the field with the lowest id
1070
+ * Fix field ID issue in repeating sections across pages
1071
+
1072
+ = 2.0.22 =
1073
+ * Add an upgrade banner when affiliate links are active
1074
+ * Add permission checks in addition to nonce for several actions for extra security
1075
+ * Don't allow javascript to be saved in field choices
1076
+ * Include the admin_url params inside the function to resolve a conflict with WPML
1077
+ * Prevent XML breaking with US character
1078
+ * Fix rand() error with float some users are seeing with PHP7
1079
+ * **Pro Forms Features:**
1080
+ * Add the option to automatically delete files when a file is replaced, and and entry is deleted
1081
+ * Allow a prefix and/or suffix along with the [auto_id] shortcode
1082
+ * Add is_draft shortcode for views. This allows [is_draft], [if is_draft equals="1"]-draft-[/if is_draft], and [if is_draft equals="0"]-complete-[/if is_draft]
1083
+ * Add frm_no_entries_message filter to adjust the output when there are no entries found
1084
+ * Add frm_search_for_dynamic_text hook for searching numeric values in Dynamic fields
1085
+ * Add the saved value into the array and json response. The entries fetched using FrmEntriesController::show_entry_shortcode were only returning the displayed value. This adds the saved value to the array as well. This covers user id, dynamic fields, radio, dropdown, and checkbox fields anytime the saved and displayed values are different.
1086
+ * Add filter on add/remove fields to allow translations
1087
+ * Default new number fields to use "any" step
1088
+ * Fix conditional logic dependent on a paragraph field
1089
+ * Fix date fields inside form loaded with in-place-edit
1090
+
1091
+ = 2.0.21 =
1092
+ * Add a timestamp to the css file instead of plugin version number to improve issues with styling caching
1093
+ * Add pro tips & upgrade calls
1094
+ * Fix bug with importing old forms with no custom style
1095
+ * **Pro Forms Features:**
1096
+ * Remove autoinsertion options from the view settings. Any views that were set to be inserted automatically will have their shortcodes saved onto that page.
1097
+ * Allow the delete link to work after an ajax load
1098
+ * Apply styling settings to HTML fields
1099
+ * Randomize entry key on CSV import
1100
+ * Make sure the old transient doesn't delay automatic update
1101
+ * Allow forced plugin update check if it hasn't been forced before
1102
+ * Fix CSV import form dropdown with only 1 item
1103
+ * Fix bug with importing data in embed form fields
1104
+ * Fix time_ago issue with blank value
1105
+ * Fix missing pro license message to link to global settings
1106
+ * Fix a fatal error when a non-Site Admin visits the Global settings page in multisite
1107
+
1108
+ = 2.0.20 =
1109
+ * Added more styling options: box-shadow, font-weight, Form Title, and Form Description
1110
+ * Fixed a couple issues with activating and deactivating licences
1111
+ * A few improvements for importing styles
1112
+ * Add a hook for approved theme authors to add affiliate links. If the free version is packaged with a theme, the theme author can get commissions on upgrades.
1113
+ * **Pro Forms Features:**
1114
+ * Added Parent entry ID to view filters
1115
+ * Added a button to autofill addon licenses
1116
+ * Improve accuracy of time_ago for leap years
1117
+
1118
+ = 2.0.19 =
1119
+ * Add CSV export to free version
1120
+ * Add page with list of add-ons
1121
+ * Set up base for allowing affiliate links inside the free version
1122
+ * **Pro Forms Features:**
1123
+ * Updating improvements
1124
+ * Add show_image=1 and add_link=1 to file upload field shortcode
1125
+ * Show draft, pending, and private posts for creator and admin in frm-entry-links shortcode
1126
+ * Make sure Number fields perform calc when shown
1127
+ * Deprecate the frm_csv_field_ids filter
1128
+ * Fix graph bug
1129
+ * Fix Dynamic Field filtering in Views
1130
+ * Fix JavaScript error in repeating section
1131
+ * Fix showing errors in collapsible sections
1132
+ * Hide the end divider field when needed
1133
+ * Fix inline label for Dynamic dropdowns
1134
+ * Make LIKE logic case-insensitive in field ID shortcode
1135
+ * Make sure multiple file upload fields save on edit when all files are removed
1136
+ * Fix conditional logic issues with extra white space
1137
+ * Fix LIKE conditional logic issues with arrays and number values
1138
+ * Fix calcs with edit in-place
1139
+ * Include embedded fields in CSV export
1140
+
1141
+ = 2.0.18 =
1142
+ * PHP 7 updates
1143
+ * Add frm_field_extra_html hook
1144
+ * Prevent specific html entity from breaking email message
1145
+ * Add filter for removing wpautop from form success message
1146
+ * Fix HTML error on form builder page
1147
+ * Change the "Licenses" submenu to "Plugin Licenses"
1148
+ * **Pro Forms Features:**
1149
+ * Allow ? and * in Phone Number Format
1150
+ * Remove child form from export options
1151
+ * Fix LIKE conditional logic bug
1152
+ * Some auto-update adjustments
1153
+ * Add frm_search_any_terms filter
1154
+ * Fix file upload issue in CSV export
1155
+ * Fix issue with duplicate classes in HTML field
1156
+ * Fix filtering with user_id=current in graphs
1157
+ * Fix Dynamic List field with value like 9.99
1158
+ * Make sure userID field doesn't lose value when conditionally hidden/shown
1159
+
1160
+ = 2.0.17 =
1161
+ * **Pro Forms Features:**
1162
+ * Fix post update bug
1163
+
1164
+ = 2.0.16 =
1165
+ * Escape font family correctly for quotation marks
1166
+ * Only check for updates every 24 hours
1167
+ * Allow emails to be separated by a space
1168
+ * Prevent old versions of Akismet from causing errors
1169
+ * Add unit tests for XML import
1170
+ * Styling updates for WP 4.4
1171
+ * Save form action settings even if they aren't in the default options
1172
+ * More contrast on form builder page
1173
+ * Use normal font weight for from builder
1174
+ * **Pro Forms Features:**
1175
+ * Allow Styles to be duplicated
1176
+ * Allow the form key in the CSV download url
1177
+ * Make like/not like conditional logic not case-sensitive
1178
+ * Fix multiple conditional logics on a Dynamic field
1179
+ * Fix XML import with repeating fields
1180
+ * Fix notice for old dfe fields
1181
+ * Make sure integer is being used for auto_id
1182
+ * Fix read-only dependent Dynamic field with a default value
1183
+ * Fix conditional radio button default value issue
1184
+ * Fixes for conditional logic on sections
1185
+ * Fix autoupdating for add-ons
1186
+ * Show a message if no license has been entered for an add-on
1187
+
1188
+ = 2.0.15 =
1189
+ * Send plugin updates through formidableforms.com
1190
+ * Update Swedish translation
1191
+ * Use media_buttons hook instead of deprecated media_buttons_context hook
1192
+ * Unit test updates
1193
+ * Fix Portuguese translation error
1194
+ * Allow more characters in field description
1195
+ * Prevent plugin styling conflict with user roles dropdown
1196
+ * Fix installing when the plugin is activated
1197
+ * Get rid of ambiguity in FrmField::getAll function
1198
+ * Fix the plugin url when used in the mu-plugins folder
1199
+ * Make selected values show on form builder page before refresh
1200
+ * Minor styling changes to frm_total class
1201
+ * Update stylesheet after import
1202
+ * Make long text wrap in Chrome cb/radio fields
1203
+ * Add 'compact' option to Recaptcha
1204
+ * **Pro Forms Features:**
1205
+ * Fix conditional logic bug
1206
+ * Fix calculations in repeating sections with visibility admin
1207
+ * Fix dynamic list fields in repeating sections
1208
+ * Fix JS error when removing row w/ read only field
1209
+ * Add JavaScript hook for removeRow function
1210
+ * Fix error for ordering view by time
1211
+ * Fix error with no posted values in embedded forms
1212
+ * Escape CSV cells with ' if they start with = (this is to prevent a vulnerability in Excel)
1213
+ * Prevent array keys from being appended to user meta vals
1214
+ * Switch autoupdating to EDD at formidableforms.com
1215
+ * Prevent frm_display_id from switching when View is updated
1216
+ * Fix multi-file upload display for embedded forms
1217
+ * Allow text value to autopopulate dynamic fields
1218
+ * Make embedded fields show up in View filters
1219
+ * Don't let userID field affect css class in repeating section
1220
+ * Don't check for shortcodes if no brackets are present
1221
+ * A few auto updating fixes for multisite
1222
+ * Switch [foreach 25] when form is duplicated
1223
+
1224
+
1225
+ = 2.0.14 =
1226
+ * Stripslashes in Other field
1227
+ * Prevent collapse icon from being inserted inside of section
1228
+ * Make sure roles dropdowns show correctly after clicking update (in Global Settings)
1229
+ * Make form listing and entry listing pages responsive
1230
+ * Don't truncate form name in excerpt mode
1231
+ * Fix validating embedded forms
1232
+ * Fix filtering by repeating fields in Dynamic Views > Detail Page
1233
+ * Fix dependent Dynamic autocomplete fields with default values
1234
+ * Fix logic on embedded forms and multiselect dd
1235
+ * Some readonly field fixes
1236
+ * Read-only improvements for multiselect dropdown
1237
+ * Improve JavaScript for multiple forms on a page
1238
+ * Use the minified css for jQuery UI styling
1239
+ * Allow view filtering with time fields using NOW
1240
+ * Allow times to be formatted with [25 format='g:i A']
1241
+
1242
+ = 2.0.13 =
1243
+ * Allow recaptcha to be conditionally hidden on previous pages of form
1244
+ * Fix error with embedded form on a conditionally hidden page
1245
+ * Show the editlink after an entry is edited in place
1246
+ * Make sure collapsible section icons show regardless of characters in the section title
1247
+ * Don't require conditionally hidden dynamic category fields
1248
+ * Add fields attribute to [editlink] shortcode
1249
+ * Fix calculations using repeating checkboxes
1250
+ * Prevent double click on Add button in repeating section
1251
+ * Clear conditionally hidden fields even if they aren't visible
1252
+ * Make sure pro form templates get imported in multisite
1253
+ * Use separate values by default for post status fields
1254
+ * Make sure the separate values option is allows for post status fields
1255
+ * Show the frmcal-week-end class consistently
1256
+ * Fix default values in repeating Dynamic fields
1257
+ * Make Private Views show up in shortcode builder
1258
+ * Don't do calculations in conditionally hidden repeating fields
1259
+ * Do calcs in repeating fields when adding a row
1260
+ * Improve JS for IE8
1261
+ * Fix unique time error
1262
+ * Fix default date in jQuery calendar
1263
+ * Allow entry key with frm-field-value shortcode
1264
+ * Fix unique time error
1265
+ * Improve calculations across page breaks
1266
+ * Prevent clearing default values when hiding/showing sections
1267
+ * Run calculations in collapsible sections
1268
+ * Fix duplicating regular sections
1269
+ * Add post ID View filter
1270
+ * Fix empty graphs
1271
+ * Allow frm-entry-update-field, editlink, and deletelink inside foreach loop
1272
+ * Fix importing parent_form_id on child forms
1273
+ * Allow css file updating if FTP creds are present
1274
+ * A few jshint fixes
1275
+ * Add 'frm_ajax_url' hook
1276
+ * Allow layout classes to be used with submit button
1277
+ * Remove frm_last class
1278
+ * Prevent get_filesystem_method error in multisite after update
1279
+ * Conditionally use ssl for the ajax url for form submission
1280
+
1281
+
1282
+ = 2.0.12 =
1283
+ * Add option to center form on page
1284
+ * Improve styling classes for more consistency across different field classes, and make all classes responsive
1285
+ * Added a few more styling classes: frm_three_fourths, frm_two_fifths, frm_three_fifths
1286
+ * Remove in-place-editing from the field keys on the form builder page
1287
+ * Add 'frm_after_update_field_name' hook for changing a field name during editing
1288
+ * Update Bootstrap multiselect to v0.9.13
1289
+ * Add license page to prepare for add-ons. Big things are coming.
1290
+ * Fix: Prevent loading icon from being huge in some themes
1291
+ * Fix: When the jQuery UI css is loaded by another plugin on the form builder page, the required icon looked the same whether required or not. This styling conflict is resolved.
1292
+ * Fix: Make sure the form description size can be changed in the styling settings.
1293
+ * **Pro Forms Features:**
1294
+ * Views can now be filtered by fields in the repeating sections.
1295
+ * Added [parent_id] shortcode for use in views. This shortcode will only have a value when the displaying entries in repeating sections.
1296
+ * Allow views to be created using the repeated entries. Since each repeating row is an entry in a hidden form, we can allow views to be created using those repeating rows for more flexability.
1297
+ * Added order parameter to frm-entry-links
1298
+ * Allow options in a post status field to come from the form builder. The options should have separate values and the saved values can include 'publish', 'draft', 'private', 'scheduled'.
1299
+ * Remove the option to lock field and form keys. This is more of a hassle than a feature.
1300
+ * Allow the entry key to be used with the frm-field-value shortcode instead of forcing the entry
1301
+ * Replaced inline 50px height for image fields with .frm_image_from_url class for easier control
1302
+ * Improve file upload field in Chrome to prevent extra space from showing.
1303
+ * Added 'frm_save_post_name' filter. This can be used for custom form actions that create posts.
1304
+ * Added 'frm_display_data_opts' filter.
1305
+ * Prevent frm_display_id custom field from saving when a field is selected in the create post settings instead of customized content
1306
+ * Fix: When forms were submitted without ajax, the redirect wasn't working consistently.
1307
+ * Fix: The shortcodes weren't processing in the message shown after an entry is updated.
1308
+ * Fix: When we prevented the PayPal action from triggering on import, we stopped all actions. This is now fixed so an action can be set (in the code) to be triggered on import. Posts will now be created on import again.
1309
+ * Fix: The dynamic list field was showing the entry ID in the entries tab instead of the value.
1310
+ * Fix: The Add row button wasn't showing in a repeating section when returning to edit an entry if there were more than two rows in the section.
1311
+ * Fix: Improve dropping a field between two sections.
1312
+ * Fix: Remove nonce check for frm-entry-update-field shortode. Page caching gives front-end nonce checks issues.
1313
+ * Fix: We changed the parameters sent to the frm_after_update_field hook without realizing it. The 'field_id' attribute was sometimes an object, but was previously always an integer. This has been updated for reverse compatibility, and 'field' has been added with the full field object.
1314
+ * Fix: If you put -100 for the start date in a date field, -100 would show in the date field instead of 1915. This is now working correctly for dynamic values like this with three digits.
1315
+ * Fix: When filtering a view with a Dynamic field, NOT EQUAL TO will work correctly.
1316
+ * Fix: Double quotes were causing trouble when included inside an error message returned by the frm_validate_field_entry hook
1317
+ * Fix: Graphs using x_axis and start_date were having trouble
1318
+ * Fix: The js error after selecting an option in autocomplete field is fixed when there are calculations in the form.
1319
+
1320
+ = 2.0.11 =
1321
+ * Fix issue with clearing array keys when sanitizing an array when displaying entry values
1322
+ * When the email "reply to" value uses the "from" setting, only use the email address without the name
1323
+ * Switch the form action events to dropdown instead of checkboxes
1324
+ * Shrink the reCaptcha on small screens
1325
+ * Add font-weight 100-900 options to styler
1326
+ * Add frm_email_message filter
1327
+ * Fixes for javascript errors while form building in IE8
1328
+ * Only load font.css for the admin bar when user can edit forms
1329
+ * Add frm_include_form_tag filter for using div instead of form tag
1330
+ * Add frm_show_submit_button filter for hiding and showing the submit button
1331
+ * Fix date calculations using date formats that begin with the year
1332
+ * Allow classes to be included on a hidden input
1333
+ * Process the entry a little sooner (wp_loaded instead of wp)
1334
+ * Add frm_capitalize layout class
1335
+ * Make frm_customize class work for more field types
1336
+ * **Pro Forms Features:**
1337
+ * Set new views to private by default
1338
+ * Allow clickable=1 in the frm-show-entry shortcode
1339
+ * Make sure to show the Add row button for repeating sections in IE9
1340
+ * Correctly require a password before showing password protected views
1341
+ * Add update_single_field function for easier updating of a single field
1342
+ * Add frm_datepicker_formats hook for adding format additional options on the Formidable -> global settings page
1343
+ * Add frm_csv_row hook for adding data to a row in the CSV
1344
+ * Keep the Pending status selected after save in the post settings
1345
+ * Add frm_is_dynamic_field_empty filter for overriding whether a dependent dynamic field is available for validation or if the value should be cleared
1346
+ * Improve dragging and dropping large sections of fields
1347
+ * Don't trigger form actions while importing
1348
+ * Make sure $entry_ids is still intact for the frm_after_content hook
1349
+ * Replace m/d/Y format option
1350
+ * Fix updating a field with the frm-entry-update-field shortcode
1351
+ * Work on calculating different combinations of fields inside and outside a repeating section
1352
+ * Only return unique values when a list field is displayed based on checkboxes
1353
+ * Fix searching entries with a trailing space
1354
+ * Fix truncating in the dynamic content
1355
+
1356
+ = 2.0.10 =
1357
+ * Add frm_action_triggers hook for adding custom triggers into the actions
1358
+ * Add frm_{action name here}_action_options hook so any action can be altered
1359
+ * Prevent extra form actions when a form is duplicated
1360
+ * Load correct version of formidable.js based on wp-config debugging constant (Thanks @naomicbush for the contributions!)
1361
+ * Revert get_sortable_columns changes for < WP 4.0 support
1362
+ * **Pro Forms Features:**
1363
+ * Allow calculations inside repeating sections and embedded forms
1364
+ * Set default values for conditional checkboxes and radio fields and inside conditional sections
1365
+ * A few changes to the way section fields create divs
1366
+
1367
+ = 2.0.09 =
1368
+ * Add frm_time_to_check duplicate entries filter
1369
+ * Allow custom JavaScript validation
1370
+ * Add frm_do_html_shortcodes fiter
1371
+ * Fix the duplicate entry check
1372
+ * Include get_columns function in list tables for 4.3
1373
+ * Use relative URLs in the stylesheet
1374
+ * Make frm_fifth classes responsive
1375
+ * Allow 0 to be saved in a checkbox field
1376
+ * Fix saving forms as drafts
1377
+ * **Pro Forms Features:**
1378
+ * Reduce database calls for Views
1379
+ * Allow format for default [time] and [date] shortcodes ie [time format='H:i A' round=5]
1380
+ * Include Dynamic List fields in calculation options
1381
+ * Make file upload fields more responsive
1382
+ * Improve repeating section styling
1383
+ * Improve calculation triggering when fields involved are conditionally hidden
1384
+ * Don't clear readonly fields or default values when hidden conditionally
1385
+ * Don't trigger dynamic field values if there is other logic telling the field to be hidden
1386
+ * Include Indonesian option for datepicker
1387
+ * Allow the post author to be changed by the user ID field on edit
1388
+ * Trigger calculations at the time a conditional field is shown
1389
+ * Keep the value submitted in a dynamic list field
1390
+ * Fix graphs that show multiple fields and define the x-axis
1391
+ * Allow graphs to be included in the success message after ajax submit
1392
+ * Conditionally show the max character setting in number fields based on whether HTML5 is enabled
1393
+ * Allow scale fields to work in calculations across multiple pages
1394
+ * Turn off ajax submit if repeating section includes a file
1395
+ * Fix entry creation date format on import
1396
+ * Fix filtering by a checkbox field in the frm-stats shortcode
1397
+ * Fix logic for third-level fields with conditional logic inside a repeating section
1398
+ * Make sure conditional logic only affects the newly added row when triggered after a row is added
1399
+ * Make sure orphaned data is deleted when switching divider to repeating/non-repeating
1400
+ * Allow drafts=both with user_id filter in View shortcode
1401
+ * Fix conditionally required fields when option includes quote
1402
+ * Fix date field errors on multi-page form that submits with Ajax
1403
+ * Prevent the JetPack conflict with the shortcodes module
1404
+ * Fix sorting in dependent Dynamic fields
1405
+ * Registration add-on login form styling
1406
+ * Fix inline scale field labels
1407
+ * Fix spacing issue with repeating section grid
1408
+ * Fix truncation with special characters
1409
+ * Fix importing repeating sections and embedded forms
1410
+ * Fix readonly checkboxes in calculations
1411
+ * Don't show empty custom field rows in the post settings
1412
+ * A few fixes to the formresults shortcode including the file display
1413
+ * Fix error when duplicating a section without any included fields
1414
+ * Fix timezones for searching by entry creation and updated dates in a view
1415
+
1416
+ = 2.0.08 =
1417
+ * Fix security vulnerability allowing shortcodes to be excuted inside a form https://research.g0blin.co.uk/?p=618&d=i4ziyggqao0oz0L0vpUTd8KZwrO2P9Mw
1418
+ * Added frm_filter_final_form hook. This will need to be used to cover shortcodes that span multiple blocks of field HTML since we can't do a general shortcode replacement on the rendered form
1419
+ * Revert change that prevented scripts from firing in the form success message
1420
+ * Fix timestamp timezone on view/edit entry page
1421
+ * Added frm_entries_{$col_name}_column hook to allow custom columns on the entries listing page
1422
+ * Pro: Allow the last page of a form to be conditional
1423
+ * Pro: When a field is conditionally hidden, clear the value and trigger calculations and child logic
1424
+ * Pro: Improved accuracy of calculations using the other option, and across page breaks
1425
+ * Pro: Added frm_calendar_day_names hook for displaying the full weekday name in calendar view
1426
+ * Pro: Allow a comma-separated list of ids when filtering by entry id in the view settings
1427
+ * Pro: Include the remove link on multiple file uploads
1428
+ * Pro: Display a view row correctly right after a quick-edit
1429
+ * Pro: Delete views when their form is permanently deleted
1430
+ * Pro: Only show the ID column in google table when specified
1431
+ * Pro: Fix boolean values in google entry table
1432
+ * Pro: Reduce the memory usage when exporting a CSV by preventing entry caching
1433
+ * Pro: Fix dependent taxonomies
1434
+ * Pro: Fix the graph tooltips and wrap the text on graphs so it doesn't go beyond the width of the graph
1435
+ * Pro: Allow the frm_user_can_edit hook to fire when loading a form with the entry id in the form shortcode
1436
+ * Pro: Fix backslash removal in the phone format option when the form is saved
1437
+ * Pro: Make sure validation is always performed even if there are only radio fields on the page, before showing a message that the entry failed
1438
+ * Pro: Fix Dynamic List fields dependent on Dynamic checkboxes
1439
+ * Pro: Keep the user on the last page when a draft is saved and there is only one field on the last page
1440
+ * Pro: Export the category name in the CSV instead of the id
1441
+ * Pro: Save user ID even if it's in a conditional section/page
1442
+
1443
+ = 2.0.07 =
1444
+ * Don't escape urls in ajax
1445
+ * Correctly save all the options on the form settings page
1446
+
1447
+ = 2.0.06 =
1448
+ * Fix an XSS vulnerability in the lite version. When the pro version is active, the vulnerability was resolved.
1449
+ * Increased security
1450
+ * Fix the shortcode display on form listing page
1451
+ * Add frm_helper_shortcode filter
1452
+ * Prevent javascript error on form settings page when WooThemes Helper plugin is active
1453
+ * Prevent conflict from unknown plugin/theme that was modifying the post excerpt in form actions, which prevented them from showing
1454
+ * Only scroll to the errored field and success message if they are not already in view
1455
+ * Make sure admins always have permission to view menus
1456
+ * Pro: Fix datepicker field when the jQuery CSS is set to load on all pages
1457
+ * Pro: Added frm_footer_scripts hook
1458
+ * Pro: Don't autoselect 0 in scale fields
1459
+
1460
+ = 2.0.05 =
1461
+ * Remove deprecated jQuery toggle() calls
1462
+ * Add html ids to hidden fields
1463
+ * Make sure the entry name doesn't exceed allowed database field size
1464
+ * Adjust user agent displayed values
1465
+ * Update Bootstrap javascript to v3.3.4
1466
+ * Clear more caching for forms, fields, and entries when changes are made
1467
+ * Lite only: Remove the entry search box on the entries page since the functionality is in pro
1468
+ * Pro: Fix issue with the CSV export on the Import/Export page
1469
+ * Pro: Allow for FRMRULES to be on the page multiple times for ajax-loaded forms
1470
+ * Pro: Add frmThemeOverride_jsErrors function hook
1471
+ * Pro: Conditionally require fields in a conditional embedded form
1472
+ * Pro: Fix date calculations and calculations across multiple pages
1473
+ * Pro: Show the user display name by default with dynamic fields using a user ID field
1474
+ * Pro: Fix read-only date fields on form submitted with ajax
1475
+ * Pro: Fix issue with browsing view revisions
1476
+ * Pro: Fix numeric phone formats without other characters
1477
+ * Pro: Update masked input js to v1.4
1478
+ * Pro: Fix issue with NaN showing instead of 0 in values without a number
1479
+ * Pro: Fix conflict with Easy Digital download auto-updating
1480
+ * Pro: Include list dynamic fields in the CSV and default email message
1481
+ * Pro: Match up logic when an option with & is selected
1482
+
1483
+ = 2.0.04 =
1484
+ * Fix XSS vulnerability from add_query_args and remove_query_args
1485
+ * Remove unneeded options from the form widget and switch old styling setting width from 400px to 100%
1486
+ * Fix the new form class box in the customizable HTML
1487
+ * Remove WP support for v3.5 and lower
1488
+ * Don't require the captcha if the keys haven't been configured
1489
+ * Styling enhancements for left and right label settings
1490
+ * Deactivate plugin after uninstall to prevent tables from being added back
1491
+ * Add frm_text_block class to Layout tab
1492
+ * Fix migration of email settigns that haven't been updated in over two years
1493
+ * Fix emailing from only a multiple word name with no email
1494
+ * Send emails for WordPress default if trying to send from Yahoo
1495
+ * Pro: Trigger calculation update each time a row is added or removed from repeating section
1496
+ * Pro: Allow phone format inside of repeating sections
1497
+ * Pro: Add allow=everyone option to frm-entry-update-field shortcode to prevent permission checking when updating a single field
1498
+ * Pro: Fix graph limit defaulting to 10 and the min and max options
1499
+ * Pro: Fix CSV download vulnerability without permission check
1500
+ * Pro: Fix searching by field on entry listing page
1501
+ * Pro: Fix exporting multiple entries with the bulk CSV export option
1502
+ * Pro: Fix Entry ID filter in views when using a comma separated list of ids
1503
+ * Pro: Fix 3+ level dynamic fields to hide the last field when the first is changed
1504
+ * Pro: Fix apostraphes in form action logic
1505
+
1506
+ = 2.0.03 =
1507
+ * Use frm_clear instead of clear to minimize conflicts
1508
+ * Add js fallback for database update on sites without CURL
1509
+ * Fix issues with emails migrating to actions in php 5.3, and t showing in some emails after updating settings
1510
+ * Pro: Add frm_date_format filter
1511
+ * Pro: If a comma separated list of dates is sent for formatting, explode it before formatting
1512
+ * Pro: Increase the backtrack limit when needed when replacing shortcodes in the view content if server has the limit below default
1513
+ * Pro: Fix issue causing csv export error
1514
+ * Pro: Fix the issue cuasing new posts to not be linked to a view if a field is selected for the post content
1515
+ * Pro: Fix issue some users are having with blank date fields
1516
+ * Pro: Fix ending collapsible sections at the end of a section instead of waiting for the next section
1517
+ * Pro: Fix firing calculations on page load when there are multiple calculations
1518
+ * Pro: Don't allow theme to affect the font size of stars
1519
+
1520
+ = 2.0.02 =
1521
+ * Make sure frm_to_email hook is reverse compatible
1522
+ * Fix php example in the shortcode examples
1523
+ * Add styling for frm_half classes combined with left or right labels
1524
+ * Add a fallback if dbDelta is missing
1525
+ * Remove inline js from the draft button in the default HTML to prevent 404/403 errors on some servers. This change only applies to new forms
1526
+ * Move the legend tag into the customizable HTML, but without a migration so it won't be added to existing forms
1527
+ * Move the "before fields" HTML into the fieldset to it will be parallell with the "After fields" HTML
1528
+ * Make sure partial form transients aren't saved for long forms. Make sure it's all or nothing.
1529
+ * Make sure the parent_form_id column was added, and try to add it again if it's not there
1530
+ * Pro: Allow [25 show=count]. This shortcode will return a count of items instead of the items themselves. Intended for use with a repeating section field, but would work with anything.
1531
+ * Pro: Fix filtering by text from a dynamic field
1532
+ * Pro: Make sure conditional logic doesn't apply to fields that follow a section with logic
1533
+ * Pro: Make sure any post fields used in custom code are included when the post is created
1534
+ * Pro: Load the datepicker localization file from the new hosted location
1535
+ * Pro: Rework the CSV export generation with lower memory usage and more hooks for easily removing columns
1536
+ * Pro: Fix exporting checkbox fields inside a CSV
1537
+ * Pro: Update the pagination for Genesis the '...'
1538
+ * Pro: Hopefully fix the missing date format issue some users are running into with the datepicker. Unverified since we couldn't replicate.
1539
+ * Pro: When creating a new view, make sure the filter and order rows include the fields from the selected form
1540
+
1541
+ = 2.0.01 =
1542
+ * Break transients into chunks for large forms ( > 200 fields )
1543
+ * Remove the upgrade link and perform the upgrade automatically
1544
+ * Allow upgrades to be done automatically in WordPress multisite with the 'Upgrade Network' option
1545
+ * Updated translations
1546
+ * Only add one line in the email headers for cc and bcc
1547
+ * Added frm_include_meta_keys hook for including the previously included meta values referenced by field key
1548
+ * Delete transients with uninstall
1549
+ * Make sure the legend stays hidden after opening form in a popup
1550
+ * Pro: Fixed issue with losing conditional logic on fields loaded with ajax on the form builder page
1551
+ * Pro: Fixed the auto field reordering when adding end sections to old forms
1552
+ * Pro: Fixed the daily entries graph on the reports page
1553
+ * Pro: Allow the post author to be overridden with hooks
1554
+ * Pro: Fixed the [get-param] shortcode for reverse compatibility
1555
+
1556
+ = 2.0 =
1557
+ * Move visual form styler into the free WordPress form plugin
1558
+ * Added multiple emails to free version
1559
+ * Added BCC, CC, and reply to options to emails
1560
+ * Replaced the reCaptcha with the new no-captcha recaptcha
1561
+ * Allow multiple roles to be selected for the permissions on the global settings page
1562
+ * Updated the UI
1563
+ * Added a trash can for forms as well as draft forms
1564
+ * Extra security with sanitizing output and prepare database queries extra just to be sure
1565
+ * Switch to frm_first frm_last frm_half classes for more flexibility
1566
+ * Added more responsiveness to the styling classes
1567
+ * Change the field width option from characters to pixels
1568
+ * Change the user browser info into a more easily readable format, and include it in the lite version
1569
+ * Add (hidden) legend tag for accessibility
1570
+ * Fix preview page with 2015 theme
1571
+ * Reduce duplicate entry check to 1 minute
1572
+ * Remove a bunch of upgrade messages in the lite version
1573
+ * Reduce size of indexed db columns for utf8mb4 in WordPress 4.2
1574
+ * Fixed a SQL vulnerability. Thanks @KacperSzurek for finding it!
1575
+ * Pro: Added multiple form styling templates, more styling options, and updated the default styling
1576
+ * Pro: Added repeatable fields and embedded forms
1577
+ * Pro: Created form actions and consolidated notifications and add-ons
1578
+ * Pro: All form actions can use conditional logic
1579
+ * Pro: Added confirmation fields
1580
+ * Pro: Added read-only radio and check box fields
1581
+ * Pro: View pagination will automatically take on Genesis theme styling
1582
+ * Pro: Entire sections can be moved and duplicated
1583
+ * Pro: Add frm_repeat_start_rows filter to allow the form to start with multiple rows in a repeating section
1584
+ * Pro: Make the query work for custom code returning a string query on the frm_where_filter hook for reverse compatibility
1585
+ * Pro: Escape all quotes in CSV
1586
+ * Pro: Don't require dynamic fields with no options
1587
+ * Pro: Remove stray div in the calendar view
1588
+ * Pro: Remove 'no files selected' text if files are selected
1589
+ * Pro: Add decimal option to calculations
1590
+ * Pro: Add starts with, ends with, and group by options in View filters
1591
+ * Pro: Add IP option to view filters
1592
+ * Pro: Added entry ID to view order options
1593
+ * Pro: Added hooks: frm_selectable_dates, frm_main_feedback, frm_allowed_times, frm_view_order, frm_csv_headers, frm_map_csv_field
1594
+ * Pro: Allow min or max in the graph shortcode to be equal to 0
1595
+ * Pro: Keep users on current page when they click "Save Draft"
1596
+ * Pro: Add pending for post status options in the post settings
1597
+ * Pro: Include JS with form when editing in place
1598
+ * Pro: Fix displaying stats accuracy with partial stars
1599
+ * Pro: Enqueued scripts right before they are printed for easier integration with more popup plugins
1600
+ * Pro: Allow slashes in Phone Number Format option
1601
+ * Pro: Allow default templates to be deleted
1602
+ * Pro: Reduce the baseline memory load
1603
+ * Pro: Load the form styling on view pages when set to only load styling on applicable pages
1604
+ * Pro: Change deletelink so it deletes with ajax
1605
+ * Pro: Add [user_role] shortcode for current user's role
1606
+ * Pro: Add read-only option to Dynamic fields
1607
+ * Pro: Add single row and multiple row options to Dynamic Radio and Checkbox fields
1608
+ * Pro: Allow arrays in View filters
1609
+ * Pro: Allow drafts to be searched with the frm-search form
1610
+ * Pro: Fix sql error when searching by Hebrew characters
1611
+ * Pro: Allow the use of field keys in the frm-stats shortcode
1612
+ * Pro: Force tooltip wrapping in graphs
1613
+ * Pro: Improve frm_total class for number fields
1614
+ * Lots of other small features, bug fixes, and code cleanup. Too many little features to list!
1615
+
1616
+ = 1.07.12 =
1617
+ * Add a bunch more caching
1618
+ * Scroll to field on click in form builder
1619
+
1620
+ = 1.07.11 =
1621
+ * Added hook: frm_check_blacklist for disabling the comment blacklist spam check
1622
+ * Make nonce id unique per form
1623
+ * Make sure there is at least one word before truncation
1624
+ * Pro: Check conditional logic when importing dependent data from entries data
1625
+ * Pro: Added number field min and max settings to php validation
1626
+ * Pro: Added dynamic height to the chosen search field
1627
+ * Pro: Allow HTML in the message for the frm-entry-update-field shortcode
1628
+ * Pro: Added title parameter to frm-entry-update-field, frm-entry-edit-link, and frm-entry-delete-link
1629
+ * Pro: Added end_date parameter to frm-stats shortcode
1630
+ * Pro: Added hook: frm_display_value_atts
1631
+ * Pro: Added hook: frm_after_duplicate_entry
1632
+ * Pro: Added hook: frm_show_it
1633
+ * Pro: Add nonce check for importing entries
1634
+ * Pro: Fixed display of files with an icon when editing an entry
1635
+
1636
+ = 1.07.10 =
1637
+ * Improve ajax form load speed on form builder page
1638
+ * Added 4.0 compatibility for deprecated like_escape function
1639
+ * Remove label html in radio and checkbox fields when label=0 is used on the [input] tag in the customizable HTML
1640
+ * Fix Akismet integration for current version of Akismet
1641
+ * Added Italian translation
1642
+ * Added a few ajax nonce checks but don't require valid nonce for logged-out users for caching reasons
1643
+ * Allow data-something="value" inside the [input] short code
1644
+ * Pro: Allow [default-message] to have short code parameters to set rtl (direction=rtl), font size (font_size="14px"), and styling (text_color="000" border_width="1px" border_color="000" bg_color="fff" alt_bg_color="eee").
1645
+ * Pro: Added frm_html_scoll_box class for scrolling content in an HTML field
1646
+ * Pro: Allow recurring entries using values like "Third Wednesday of [frmcal-date]"
1647
+ * Pro: Allow comma separated view filters for entry key and id
1648
+ * Pro: Allow drafts=both in view short code and form results short code
1649
+ * Pro: Added created_at and updated_at support to the frm-stats short code
1650
+ * Pro: Added column separation option to csv export
1651
+ * Pro: Added hook: frm_csv_column_sep for changing the , separation between columns in csv
1652
+ * Pro: Added hook: frm_csv_field_ids to specify fields to export in CSV
1653
+ * Pro: Added hook: frm_filter_where_val and frm_filter_dfe_where_val for filtering only the value instead of the full WHERE statement
1654
+ * Pro: Added hook: frm_rte_options for adding options to the TinyMce editor
1655
+ * Pro: Added hook: frm_show_form_after_edit to show or hide the form differently from create
1656
+ * Pro: Added hook: frm_scroll_offset to change the point of scroll after submit to allow for static headers
1657
+ * Pro: Added hook: frm_ajax_load_styles for allowing additional styles on ajax loaded form pages
1658
+ * Pro: Added hook: frm_create_cookies for preventing cookie creation
1659
+ * Pro: Added hook: frm_filter_auto_content to prevent filtering on auto-inserted views
1660
+ * Pro: Added hook: frm_file_icon to change what is displayed for a upload field when editing
1661
+ * Pro: Import CSV values for a taxonomy field correctly when the term name is in the CSV instead of requiring the ID
1662
+ * Pro: Import CSV dates correctly in entries if format has been changed to a day-first format
1663
+ * Pro: Added Post ID into the view filtering options
1664
+ * Pro: Added support for multiselect drop downs in calculations
1665
+ * Pro: Updated the way templates are fetched for wpmu copying
1666
+ * Pro: Show any additional info on the entry view page that is stored in the entry description
1667
+ * Pro: Update to Chosen 1.1.0
1668
+ * Pro: Allow comma-separated values to populate a checkbox field
1669
+ * Pro: Make fields and exclude_fields parameter work with multi-page forms (required fields are still a limitation)
1670
+ * Pro: Allow drafts=1 or drafts=both in stats shortcode
1671
+ * Pro: Allow field keys in stats filtering
1672
+ * Miscellaneous bug fixes
1673
+
1674
+ = 1.07.09 =
1675
+ * Added hook: frm_bulk_field_choices for adding custom prepopulated options
1676
+ * Cleanup styling on bulk option popup
1677
+ * Fixed submission error affecting some sites
1678
+ * PRO: Don't reload javascripts after ajax submit
1679
+ * PRO: Improve no conflict styling mode
1680
+ * PRO: Fixed cascading calculations
1681
+ * PRO: Allow HTML for the label and cancel links in the edit link shortcodes
1682
+
1683
+ = 1.07.08 =
1684
+ * Check the words on the WordPress blacklist before submitting an entry
1685
+ * PRO: Added server dynamic default value for getting values from the PHP SERVER array like the current url
1686
+ * PRO: Added hook: frm_csv_sep for changing , to a different separator for checkbox fields
1687
+ * PRO: Exclude child categories in regular dropdown fields
1688
+ * PRO: Added drafts parameter to formresults shortcode
1689
+ * PRO: Added x_order parameter to graph shortcode and modified graphs to work correctly with checkboxes
1690
+ * PRO: Added hook: frm_delete_message to customize the message shown after an entry is deleted
1691
+ * PRO: Added != option to frm-stats shortcode options
1692
+ * PRO: Added repeating events
1693
+ * PRO: Improved database call for Views.
1694
+ * PRO: Added a no conflict styling mode for overriding theme styling in the styling settings
1695
+
1696
+ = 1.07.07 =
1697
+ * Added clarity to message in license box when pro is not installed
1698
+ * Added Spanish and Serbian translations. Thank you Ognjen Djuraskovic!
1699
+ * Fixed XML form export in free version
1700
+ * PRO: Added import_csv function back in with deprecated message and fallback
1701
+ * PRO: Improved conditional statement replacing
1702
+ * PRO: Minimize search form HTML
1703
+ * PRO: Prevent comments on the view entry page from being deleted when the entry is updated
1704
+ * PRO: Only run before delete entry hook on delete all button if posts are turned on
1705
+ * PRO: Switch out ids for dependent fields after importing forms
1706
+ * PRO: Added x_axis=month and x_axis=quarter option to graph shortcode
1707
+
1708
+ = 1.07.06 =
1709
+ * Return graceful error message if no DOMDocument enabled
1710
+ * Allow fields to be updated via XML import by field key for non-templates
1711
+ * Added minimize=1 option to the [formidable] short code to minimize the form HTML to prevent wpautop interference
1712
+ * Correctly return fallbacks on a couple deprecated functions
1713
+ * PRO: Allow field keys in the frm-stats shortcode for fieldid=value
1714
+ * PRO: Fixed attaching file upload to entries when using single files
1715
+
1716
+ = 1.07.05 =
1717
+ * Added XML import/export
1718
+ * Moved more email settings and bulk form delete to free version
1719
+ * Added form edit links to admin bar
1720
+ * Removed .required class from required form inputs to minimize conflicts
1721
+ * Revert to random entry keys now that data from entries values can be used in filtering views
1722
+ * Encode email subject with frm_encode_subject hook to prevent encoding
1723
+ * PRO: Allow entries to be edited via csv import when entry ID is included
1724
+ * PRO: Expanded conditional logic for email notifications
1725
+ * PRO: Allow the frm-field-value shortcode to get the entry ID from the URL. [frm-field-value field_id=x entry_id=id]. Replace "id" with the name of the parameter in your URL
1726
+ * PRO: Added separate set of confirmation options for editing
1727
+ * PRO: Added option to disable visual tab on each view
1728
+ * PRO: Added 'action' parameter back to the frm_redirect_url hook
1729
+ * PRO: Added drafts parameter to view shortcode to show draft entries. [display-frm-data id=40 drafts=1]
1730
+ * PRO: Switched star ratings to icon font
1731
+ * PRO: Added multiple="multiple" into multiple file upload fields
1732
+ * PRO: Allow field keys in the exlude_fields shortcode option
1733
+ * PRO: Allow updated-at, created-at, updated-by to by used in conditional statements
1734
+ * PRO: Added update message and button to global default messages
1735
+ * PRO: Added progress bar to csv import
1736
+ * PRO: Added hook: frm_csv_line_break filter for changing line breaks in csv export
1737
+ * PRO: Change the updated_at and updated_by values when a field is changed with the edit field link
1738
+ * PRO: Fixed adding new conditional logic to newly added notifications
1739
+ * PRO: Allow "GROUP BY" addition to form in frm_where_filter by rearranging SQL
1740
+ * PRO: Don't apply custom display filters to single post page
1741
+ * PRO: Fixed showing only file name in views
1742
+ * PRO: Removed Pretty Link plugin integration to be placed in an add-on
1743
+ * PRO: Added delete_link and confirm parameter to formresults shortcode
1744
+ * PRO: Added entry_id, x_title, y_title, start_date, and tooltip_label to graph shortcode options
1745
+ * PRO: Allow data from entries fields to be used as x_axis in graphs
1746
+ * PRO: Allow field keys in graph shortcode
1747
+ * PRO: Add height and line-height to Global Settings
1748
+ * PRO: Filter the empty_msg for Views
1749
+ * PRO: Added draft status to csv export/import
1750
+ * PRO: Check for valid file type when saving a draft
1751
+ * PRO: Added sorting on entry listing table for non-post fields
1752
+ * PRO: Fixed form pagination with errors and no ajax validation
1753
+ * PRO: Changed image to a link when editing an entry with an image
1754
+ * PRO: Moved the frm_setup_new_fields_vars hook to fire later when dynamically getting options from a dependent data from entries field
1755
+ * PRO: Added frm_get_categories hook
1756
+ * PRO: Added frm_jquery_themes hook for creating custom jQuery calendar themes
1757
+ * PRO: Added frm_no_data_graph hook for customizing "No Data" message for graphs
1758
+
1759
+ = 1.07.04 =
1760
+ * Minor back-end styling fixes
1761
+ * PRO: Added frm_show_delete_all hook to hide the "delete all entries" button, and show by default for those with back-end entry editing capabilities
1762
+ * PRO: Fixed inserting conditional examples from the sidebar box
1763
+ * PRO: Fixed viewing single post with some view configurations
1764
+ * PRO: Fixed detailed view for calendar displays when entries are not posts
1765
+ * PRO: Fixed conditional logic on page load for radio buttons
1766
+ * PRO: Make sure entries aren't deleted in another form if using the form switcher right after deleting all entries in a form
1767
+ * PRO: Fixed error when saving a field with conditional logic with no field selected
1768
+ * PRO: Allow subscribers and below to add custom taxonomies to posts
1769
+ * PRO: Fixed conditional data from entries fields across multiple pages in an ajax form
1770
+
1771
+ = 1.07.03 =
1772
+ * Removed auto updating from free version
1773
+ * PRO: Added secondary ordering options in Views
1774
+ * PRO: Allow newly added custom fields on the "Create posts" tab to be selected from existing options
1775
+ * PRO: Allow html=1 and show_filename=1 to be used together for showing a filename linking to the file
1776
+ * PRO: If not using show_filename=1, default to show the file type icon or non-image file types
1777
+ * PRO: Fixed ordering in a view set to show a single entry
1778
+ * PRO: Fixed adding new filters to views
1779
+ * PRO: Allow a low-level user to edit entries submitted by another user when the setting is turned on, even if they have not submitted an entry themselves
1780
+ * PRO: Fixed data from entries fields across multiple pages
1781
+ * PRO: Added [updated-by] shortcode for use in views
1782
+ * PRO: Send the detail page of a view through any set filters
1783
+ * PRO: In a view, use limit over page size if limit is lower
1784
+ * PRO: Fixed going backwards in a multi-paged form, when 2 or more pages are skipped at a time
1785
+
1786
+ = 1.07.02 =
1787
+ * Added form switcher to nav and other UI enhancements
1788
+ * Remove slashes from a single entry retrieved from cache
1789
+ * Remove slashes added by ajax before saving to db
1790
+ * Fixed naming so plugin info and change log links are correct on plugins page
1791
+ * Updated default submit button HTML to include [frmurl] for a dynamic url
1792
+ * Added nonce fields and checking for increased security
1793
+ * Switched to placeholder with IE fallback for those using HTML5
1794
+ * Updated duplicate entry checking for more accuracy
1795
+ * Improved long form load time and usability
1796
+ * Added French translation
1797
+ * Removed unnecessary definitions: FRM_IMAGES_URL, IS_WPMU, FRMPRO_IMAGES_URL
1798
+ * Dropped support for < jQuery 1.7 (< WP 3.3)
1799
+ * Added frm_radio_class, frm_checkbox_class, and frm_submit_button_class hooks
1800
+ * Moved radio and checkbox inputs inside the label tags
1801
+ * Updated default styling
1802
+ * Added frm_text_block and frm_clearfix styling classes
1803
+ * Added force_balance_tags on the in-place-editing fields on the form builder page to prevent issues with adding bad HTML
1804
+ * PRO: Switch field IDs in email settings in duplicated form
1805
+ * PRO: Added option to save drafts in forms. Users can save and continue partial subissions on the front-end.
1806
+ * PRO: Added phone format option, including an input mask if format is not a regular expression
1807
+ * PRO: Added exclude_fields to the form shortcode. Ex [formidable id=2 exclude_fields="25,26"]
1808
+ * PRO: Added styling reset button on styling page
1809
+ * PRO: Switch "Custom Display" terminology to "View"
1810
+ * PRO: Allow any values in the form shortcode to set $_GET values. [formidable id=x get="something"]. Then use [get param="get"] in a field
1811
+ * PRO: Allow the field value to be used to filter data from entries values in custom displays, statistics, and graphs
1812
+ * PRO: Increased CSV export efficiency
1813
+ * PRO: Allow for quotation marks in values used to get stats in the frm-stats shortcode
1814
+ * PRO: Fixed entry listing widget to get values from stats for more accuracy
1815
+ * PRO: Updated form template export to include all form settings
1816
+ * PRO: Drop WP_List_Table fallback for < WP 3.1
1817
+ * PRO: Make custom display pagination unique to allow multiple paginated displays on a single page
1818
+ * PRO: Remove WPML-related translating options, and move to the add-on
1819
+ * PRO: Added [entry_count] for use in custom displays
1820
+ * PRO: Allow a blank option for multiselect data from entries fields when set to autocomplete
1821
+ * PRO: Adjust imported created and updated times from server setting to UTC
1822
+ * PRO: Switch time field generation from javascript to php
1823
+ * PRO: Allow [if created-at less_than="-1 month"]
1824
+ * PRO: Added frm_default_field_opts hook
1825
+ * PRO: Added frm_send_to_not_email hook for notifications that are triggered on non-emails
1826
+ * PRO: Updated file uploading progress bar with frm_uploading_files hook added to text
1827
+ * PRO: Only show "create entry in form" box if user has permission to create entries
1828
+ * PRO: Removed icons from error message
1829
+ * PRO: Fixed collapsable entry list bullets
1830
+ * PRO: Fixed dependent multi-select data from entries fields on edit
1831
+ * PRO: Added frm_back_button_class hook
1832
+ * PRO: Fixed quotation marks in conditional logic
1833
+ * PRO: Allow filtering by a field value in graphs
1834
+ * PRO: Make x_axis=created_at work in graphs
1835
+ * PRO: Added if statements to Default HTML button in email message
1836
+ * PRO: Added show_filename option to file upload fields
1837
+ * PRO: Allow dropdown data from entries fields to be set as read only
1838
+
1839
+ = 1.07.01 =
1840
+ * Added for attribute to labels for newly created fields
1841
+ * Fixed issue with slashes showing in content if retrieved from cache
1842
+ * Prevent multiple checks for updates when pro is authorized, but free version is installed
1843
+ * Added frm_form_fields_class hook
1844
+ * PRO: Fixed days events are shown on the calendar with months starting on Sunday and week start day set to Monday
1845
+ * PRO: Added option to not load a JQuery UI stylesheet
1846
+ * PRO: Added "Entry ID" option to the back-end entry search options
1847
+ * PRO: Added frm_csv_filename hook for changing the csv file name
1848
+ * PRO: Allow siteurl and sitename in after content box in custom display
1849
+ * PRO: Allow autocomplete selection to be unselected on front-end
1850
+ * PRO: Fixed conditional validation for fields in a conditional section heading beyond page 1
1851
+
1852
+ = 1.07.0 =
1853
+ * Submit build form in one input with ajax to prevent max_input_vars limitations
1854
+ * Load fields on the build page with ajax for long forms and other form builder page optimization
1855
+ * Added submit button to customizable HTML
1856
+ * Added clickable styling classes to form builder sidebar
1857
+ * Create entry key from first required text field
1858
+ * Set the default name of a field to the field type instead of "Untitled"
1859
+ * Added minified version of formidable.js
1860
+ * Added warning message if a non-unique value is added as a field value
1861
+ * Removed messages for strict standards
1862
+ * Fixed inline and left labels for checkboxes
1863
+ * PRO: Added back button on multi-paged forms
1864
+ * PRO: Added conditional logic on page breaks for skipping pages
1865
+ * PRO: Added loading indicator by submit button and on dependent data from entries fields
1866
+ * PRO: Switched out username and passwords for license numbers
1867
+ * PRO: Updated timestamp in CSV to adjust for WordPress timezone selection
1868
+ * PRO: Updated value in CSV for file upload fields
1869
+ * PRO: Include comments in the CSV export
1870
+ * PRO: Made dynamic default values clickable on form builder page
1871
+ * PRO: Added column in CSV for value for fields that are set to use separate values
1872
+ * PRO: Allow for quotation marks in field labels for the CSV export
1873
+ * PRO: Added frm_import_val hook for CSV importing
1874
+ * PRO: Removed border styling from the container around radio and checkbox fields
1875
+ * PRO: Added frm_order_display hook
1876
+ * PRO: Added utf8 support to sanitize_url=1 option
1877
+ * PRO: Added "confirm" option to frm-entry-links shortocode that is used before an entry is deleted
1878
+ * PRO: Copy conditional logic and field calculations into duplicated forms
1879
+ * PRO: Allow clickable=1 and images to be used with Google formresults shortcode
1880
+ * PRO: Allow [25 show="user_email"] for data from entries fields to get user info from the user ID from the linked form, and [25 show="30" show_info="user_email"] to get values from a field linked through 2 data from entries fields
1881
+ * PRO: Allow tags fields to be used with hierarchal taxonomies
1882
+ * PRO: No longer require fields in a conditionally hidden section heading
1883
+ * PRO: Added option for frmThemeOverride_frmAfterSubmit function for custom javascript after ajax submit
1884
+ * PRO: Updated star rating javascript version
1885
+ * PRO: Check field key when creating a form from a template to see if the trailing "2" can be removed
1886
+ * PRO: Don't show custom display content for password protected posts until allowed
1887
+ * PRO: Switch the cancel link to edit link after a form is submitted with in-place-edit and ajax
1888
+ * PRO: Switched front-end ajax to use hooks (frm_ajax_{controller}_{action})
1889
+ * PRO: Call ajax later on the init hook to prevent php notices when WooCommerce is active
1890
+ * PRO: Delete entries on the same page as the frm-entry-links shortcode, and added a confirmation message: confirm="Are you sure?"
1891
+ * PRO: Correctly check if jQuery on() function exists
1892
+ * PRO: Fixed calendar display for months starting on Sunday when the week start day is set to Monday
1893
+ * PRO: Removed "custom display" from the post type options on the "create posts" settings tab
1894
+ * PRO: Allow multiple values to be imported into an entry via csv in a multi-select dropdown field
1895
+
1896
+ = 1.06.11 =
1897
+ * Added styling classes: two thirds, scroll box, columns (frm_first_two_thirds, frm_last_two_thirds, frm_scroll_box, frm_total, frm_two_col, frm_three_col, frm_four_col, )
1898
+ * Added container in default html for new check box and radio fields
1899
+ * PRO: Added a print link on the view entry page in the back-end
1900
+ * PRO: Added support for category stats in the frm-stats shortcode
1901
+ * PRO: Allow the edit link to dynamically get the id of the entry when used on a post page. Ex: [frm-entry-edit-link id=current label="Edit" page_id=92]
1902
+ * PRO: Allow non-admin users to see the user ID drop down in the back-end when they have permission to edit entries from the back-end
1903
+ * PRO: Added frm_data_sort hook for sorting data from entries options
1904
+ * PRO: Allow dropdown fields to be selected as the post title
1905
+ * PRO: Switched data from entries drop downs to use field key in the html id instead of the field id for consistency
1906
+ * PRO: When importing templates, use the path shown in the box whether it has been saved or not
1907
+ * PRO: Fixed admin-only fields to still save to created post
1908
+ * PRO: Fixed issue preventing required multiple file upload fields from being required
1909
+ * PRO: Updated input mask script to 1.3.1
1910
+ * PRO: Added hooks for entries in the admin: frm_row_actions, frm_edit_entry_publish_box, frm_show_entry_publish_box, frm_edit_entry_sidebar
1911
+
1912
+ = 1.06.10 =
1913
+ * Allow the usage of any html attributes inside the [input] tag in the customizable HTML
1914
+ * PRO: Added "Chosen" autocomplete to dropdown fields
1915
+ * PRO: Added automatic width option to data from entries fields
1916
+ * PRO: Extended the "admin only" field option to all user roles, or only logged-in or logged-out users
1917
+ * PRO: Added multiple-select to data from entries dropdowns
1918
+ * PRO: Added more info to the form settings sidebar
1919
+ * PRO: Resolved conflict between ajax submit and plugins/themes with whitespace in php files
1920
+ * PRO: Fixed form template export to properly serialize and escape for multiple choice fields
1921
+
1922
+ = 1.06.09 =
1923
+ * DROPPED PHP4 SUPPORT. Do not update if you run PHP4.
1924
+ * Added the "create template" link into the free version
1925
+ * Added quotes around the menu position number to minimize menu position conflicts with other plugins
1926
+ * Moved all stripslashes to the point the data is retrieved from the database
1927
+ * Switched the field options bulk edit to use the admin ajax url to minimize plugin conflicts
1928
+ * Changed all occurrences of .live() to .on() for jQuery 1.9 compatibility
1929
+ * PRO: Added AJAX form submit
1930
+ * PRO: Dropped Open Flash Chart support due to security vulnerabilities
1931
+ * PRO: Added multiple option to dropdown fields
1932
+ * PRO: Added unique error message into global and field settings
1933
+ * PRO: Added option to limit by ranges in the frm-stats shortcode. Ex: [frm-stats id=50 '-1 month'<45<'-3 days']
1934
+ * PRO: Automatically strip javascript before displaying entries through a custom display
1935
+ * PRO: Added striphtml=1 and keepjs=1 options for use in custom displays
1936
+ * PRO: Added option to get the field description with [125 show="description"]
1937
+ * PRO: Added separate value column on entries page
1938
+ * PRO: Added link to delete entry only and leave post
1939
+ * PRO: Added box for custom css in the styling settings
1940
+ * PRO: Added buttons to insert default HTML or plain text for those who wish to modify the default message without starting from scratch
1941
+ * PRO: Added link to uploaded files in the entry edit form
1942
+ * PRO: Added "like" and "not like" options to the conditional logic for hiding and showing fields
1943
+ * PRO: Switched section headings to use h3 tags by default instead of h2
1944
+ * PRO: Migrated "Allow Only One Entry for Each" fields to the unique checkbox on each field
1945
+ * PRO: Allow for multiple uses of frm-entry-update-field for the same field and entry
1946
+ * PRO: Allow external short codes in the email recipients box
1947
+ * PRO: Allow the frm-search shortcode to be used in text widgets
1948
+ * PRO: Switched conditional fields to show and hide instead of fadeIn and fadeOut
1949
+ * PRO: Switched rich text fields to default to TinyMCE
1950
+ * PRO: Correctly send emails to [admin_email], and allow the same email address to receive multiple notifications from the same form
1951
+ * PRO: Filter shortcodes in success message when the form is limited to one entry per user and editable
1952
+ * PRO: Correctly show the taxonomy name even if it is not linked to a post
1953
+ * PRO: Fixed read-only option to work with dropdown fields
1954
+ * PRO: Fixed post password setting
1955
+ * PRO: Fixed post content replacement when entry is updated instead of only on creation
1956
+ * PRO: Fixed frm-stats shortcode to allow field keys when using the value option
1957
+ * PRO: Fixed custom displays getting used if they are in the trash
1958
+ * PRO: Fixed custom display pages to not include the unfiltered post content when there are no entries to display
1959
+ * PRO: Fixed the bulk delete option showing for users without permission to delete in the bulk actions dropdown on the admin entry listing page
1960
+ * PRO: Fixed the delete link in entry edit links shortcode to prevent it from going to a blank form when using the page_id param
1961
+ * PRO: Fixed calendar to show the correct number of extra boxes when not starting on Sunday
1962
+ * PRO: Fixed repeated, inline conditional logic in custom displays
1963
+ * PRO: Fixed option to copy forms to other sites in multi-site installs, so they will no longer be copied when the box is unchecked
1964
+ * PRO: Fixed admin-only fields to not validate for users who can't see the field
1965
+
1966
+ = 1.06.08 =
1967
+ * Changed class names on action links on the form listing table to prevent conflicts with themes and other plugins
1968
+ * PRO: Filter shortcodes if any in the login message
1969
+ * PRO: Fixed order of fields shown in default email notification
1970
+ * PRO: Keep files attached to the post when editing the entry and using multiple file upload option
1971
+ * PRO: Attach file uploads to WP post even if the upload field is not set as a custom field
1972
+ * PRO: Fixed bug forcing site name and admin email as the email "from" info when a custom name/email is selected
1973
+ * PRO: Send a notification even if the notification before it is empty
1974
+ * PRO: Fixed conditional logic on email notifications to make sure they are stopped when they should be
1975
+ * PRO: Automatically send emails to the saved value of a field when used in the "Email recipients" box without requiring show=field_value
1976
+
1977
+ = 1.06.07 =
1978
+ * Added mb_split fallback for servers without mbstring installed
1979
+ * Changed menu position to prevent override from other plugins and themes
1980
+ * PRO: Fixed issue with the form shortcode showing if using multiple forms with default values on the same page
1981
+ * PRO: Fixed javascript error in frm-entry-update-field shortcode
1982
+ * PRO: Send the "read more" link to the single entry page instead of showing in-place for dynamic displays
1983
+
1984
+ = 1.06.06 =
1985
+ * Removed generic classes from input fields like "text" and "date"
1986
+ * Correctly jump down to form with error messages
1987
+ * Added frm_setup_new_entry hook for overriding defaults for all fields in one hook when presenting a blank form
1988
+ * Added "This field cannot be blank" message to global settings
1989
+ * Changed substr to mb_substr for language-safe truncation
1990
+ * WP 3.5 compatibility
1991
+ * Fixed conflict with W3TC that was adding slashes into options on the form settings page
1992
+ * Show a message on the form builder page if a reCaptcha is included in the form, but not set up
1993
+ * Switch from add_object_page to add_menu_page to prevent menu position conflicts
1994
+ * (Free only) Allow emails to be sent from the admin email instead of forcing an email address from the submitted entry
1995
+ * PRO: Added multiple-image upload
1996
+ * PRO: Added unlimited emails per form and conditional routing
1997
+ * PRO: Use the "customized content" box to save the actual content if no field is selected for the post content
1998
+ * PRO: Added frm-field-value shortcode to get the value of a field in another form. [frm-field-value field_id=25 user_id=current entry_id=140 ip=1]
1999
+ * PRO: Added frm-show-entry shortcode to show an entry in the same formats as the default email message. [frm-show-entry id=100 plain_text=1 user_info=1]
2000
+ * PRO: Added frm_set_get shortcode to artificially set $_GET values for use in custom displays or dynamic defaults values. [frm-set-get any_param="any value" another="value 2"] This can be fetched with [get param="any_param"] [get param="another"]
2001
+ * PRO: Extended conditional logic for displaying fields to include text, number, email, website, and time fields
2002
+ * PRO: Added support for the [frm-search] shortcode into the [formresults] table
2003
+ * PRO: Updated NicEdit
2004
+ * PRO: If http isn't included in a url or image field, automatically add it during validation
2005
+ * PRO: Added "wrap" parameter to the frm-graph shortcode to wrap the text in long questions
2006
+ * PRO: Added localization to custom display calendar to start on day of the week selected in WordPress settings
2007
+ * PRO: Added entry updated dates to custom display shortcodes
2008
+ * PRO: Correctly check uniqueness of post fields when there are no other error messages
2009
+ * PRO: If using a number field with the value "0" that is linked through a data from entries field, show 0 instead of nothing
2010
+ * PRO: Update for more accurate checking for hierarchal taxonomies when saving posts
2011
+ * PRO: Evaluate numbers as numeric instead of a string for conditional logic for hiding and showing fields
2012
+ * PRO: Fix to allow tags fields and other fields in the same form that are mapped to the same taxonomy
2013
+ * PRO: Fixed conditional logic to work correctly when dependent on the value "0"
2014
+ * PRO: Fixed display of shortcodes inside the before or after content areas of the custom display if nesting [get param=something]
2015
+ * PRO: Fixed calculations for multiple-paged calculations with checkbox fields that may not be checked
2016
+ * PRO: Fixed checkbox fields linked through another field to display properly in a custom display
2017
+ * PRO: Fixed separate values to work with sending to email addresses
2018
+ * PRO: Show a max of 500 options in a data from entries field in the admin to prevent server limits from making the form inaccessible
2019
+ * PRO: Make sure the graphs printed from the reports page are not split when printing
2020
+ * PRO: Fixed the link to show more text in the custom display to show the text in place or link to the single page correctly depending on the custom display type
2021
+ * PRO: Removed "just show it" data from entries fields in the email checkbox settings
2022
+ * PRO: Remove post custom fields from database if blank
2023
+ * PRO: Fixed frm-stats shortcode to work with post custom fields combined with the value parameter
2024
+ * PRO: Fixed div nesting issue when using collapsible section headings followed by non-collapsible sections headings
2025
+ * PRO: Removed separate values checkbox for post status and taxonomy fields
2026
+ * PRO: Fixed double filtering forms if inserted in the dynamic box of a custom display used for posts
2027
+ * PRO: Fixed page size and limit overriding single entry displays
2028
+
2029
+ = 1.06.05 =
2030
+ * Fixed WP 3.4 layout issues with missing sidebars
2031
+ * Added responsive css for WP 3.4 to keep the form builder sidebar box showing on small screens
2032
+ * Updated the delete option trash can to appear more easily
2033
+ * Use absolute path for php includes() and requires() to prevent them from using files from other plugins or themes
2034
+ * Updated translations
2035
+ * PRO: Prevent wp_redirect from stripping square brackets from urls
2036
+ * PRO: Fixed calculations for fields hidden in a collapsible section
2037
+ * PRO: Fixed delete link to work on pages without forms
2038
+ * PRO: Added support to import checkbox field values in multiple columns
2039
+
2040
+ = 1.06.04 =
2041
+ * Moved form processing to avoid multiple submissions when some plugins are activated and remove the page before redirection
2042
+ * Removed BuddyPress filters from the email notifications to avoid forcing them to send from noreply@domain.com
2043
+ * Allow blank required indicator and to email in forms
2044
+ * Fix to allow access to form, entry, and display pages for WordPress versions < 3.1
2045
+ * Fixed default checkbox or radio field values for fields with separate option values
2046
+ * Corrected Arkansas abbreviation in templates and bulk edit options
2047
+ * Fixed display of radio field values from fields with separate values
2048
+ * PRO: Added custom display content box into "create posts" settings tab
2049
+ * PRO: Added options to auto-create fields for post status and post categories/taxonomies
2050
+ * PRO: Added link to de-authorize a site to use your Pro credentials
2051
+ * PRO: Added meta box on posts with link to automatically create a form entry linked to the post
2052
+ * PRO: Hide pro credentials settings form when pro is active
2053
+ * PRO: Fixed redirect URL to correctly replace shortcodes for forms set to not save any entries
2054
+ * PRO: Fixed regular dropdown field taxonomies to trigger conditional logic and use the auto width option
2055
+ * PRO: Allow searching by user login when selecting a user ID field to search by on the admin entries page
2056
+ * PRO: Updated the auto_id default value to continue functioning correctly even if there are non-numeric values in entries
2057
+ * PRO: Added an index.php file into the uploads/formidable folder to prevent file browsing for those without an htaccess file
2058
+ * PRO: Allow field IDs as dynamic default values ie [25]. This will ONLY work when the value has just been posted.
2059
+ * PRO: Added the display object into the args array to pass to the frm_where_filter hook
2060
+ * PRO: Allow for negative numbers in calculations
2061
+ * PRO: Allow for unlimited GET parameter setting in the custom display shortcode. [display-frm-data id=2 whatever=value whatever2=value2]
2062
+ * PRO: Switched phone field to HTML5 "tel" input type
2063
+ * PRO: Added a frm_cookie_expiration hook to change the cookie expiration time
2064
+ * PRO: Added cookie expiration option
2065
+ * PRO: Added frm_used_dates hook for blocked out dates in unique datepickers
2066
+ * PRO: Added frm_redirect_url hook
2067
+ * PRO: Fixed forms submit button labels for forms in add entry mode that follow a form in edit mode on the same page
2068
+ * PRO: Fixed CSV import for delimiters other than a comma
2069
+ * PRO: Added three icons to the error icon setting
2070
+ * PRO: Fixed duplicate deletion messages when using [deletelink] in the form customizable HTML
2071
+ * PRO: Updated calculations and conditional logic to work across multi-paged forms
2072
+ * PRO: Added basic support for data from entries csv import
2073
+ * PRO: Show image for data from entries fields using upload fields
2074
+
2075
+ = 1.06.03 =
2076
+ * Added option to not store entries in the database from a specific form
2077
+ * Added option to skip Akismet spam check for logged in users
2078
+ * The forms, entries, and custom display page columns that are shown and entries per page are now customizable for those running at least v3.1 of WordPress
2079
+ * Added a css class option to the field options with predefined CSS classes for multi-column forms: frm_first_half, frm_last_half, frm_first_third, frm_third, frm_last_third, frm_first_fourth, frm_fourth, frm_last_fourth, frm_first_inline, frm_inline, frm_last_inline, frm_full, frm_grid_first, frm_grid, frm_grid_odd
2080
+ * Added the option to add a class to an input. In the customizable HTML, change [input] to [input class="your_class_here"]
2081
+ * Added "inline" option to label position options to have a label to the left without the width restriction
2082
+ * Switched the "action" parameter to "frm_action" to prevent conflicts. If no "frm_action" value is present, "action" will still be used
2083
+ * Updated form templates (including the contact us form template) with new styling classes
2084
+ * Show quotation marks instead of entities in the site name in email notifications
2085
+ * Added Polish translation
2086
+ * PRO: Removed a vulnerable Open Flash Charts file. If you do not update, be sure to REMOVE THIS FILE! (pro/js/ofc-library/ofc_upload_image.php)
2087
+ * PRO: Added option to use a separate value for the radio, checkbox, and select choices
2088
+ * PRO: Added option to use dynamic default values for radio, checkbox, dropdown, and user ID fields
2089
+ * PRO: Added option to use Google charts and automatically fall back to them on mobile devices [frm-graph id=x type=bar google=1]
2090
+ * PRO: Added data from entry field support to graphs
2091
+ * PRO: Added option to use Google tables for easy pagination and sorting [formresults id=x google=1]
2092
+ * PRO: Added edit link option to formresults shortcode. [formresults id=x edit_link="Edit" page_id=5]
2093
+ * PRO: Added date support to built-in calculations for date1-date2 types of calculations
2094
+ * PRO: Added checking for disabled used dates for fields set as post fields in date picker for dates marked as unique
2095
+ * PRO: Added not_like, less_than, and greater_than options to conditional custom display statements. Ex [if 25 not_like="hello"]...[/if 25]
2096
+ * PRO: Allow [if created-at less_than='-1 month'] type of statements in the custom display for date fields, created-at, and updated-at
2097
+ * PRO: Added option to display the field label in custom displays. Ex [25 show="field_label"]
2098
+ * PRO: Added option to turn off auto paragraphs for paragraph fields. Ex [25 wpautop=0]
2099
+ * PRO: Added options to custom display shortcode: [display-frm-data id=5 get="whatever" get_value="value"]. This allows the use of [get param="whatever"] in the custom display.
2100
+ * PRO: Updated the frm-entry-links shortcode to use show_delete with type=list
2101
+ * PRO: Updated custom display where options to fetch entries more accurately when "not like" and "not equal to" are used
2102
+ * PRO: Fixed image upload naming for uploads with numeric names like 1.png
2103
+ * PRO: Fixed issue with multiple editable forms on the same page when one is set to only allow one entry per user
2104
+ * PRO: Added a check for automatically inserted custom displays to make sure we are in the loop to avoid the need for increasing the insert position setting
2105
+ * PRO: Show the post type label in the post type dropdown instead of the singular label to avoid blank options for custom post types without a singular name defined
2106
+ * PRO: Switched out the case-sensitive sorting in data from entries fields
2107
+ * PRO: If a custom display has detail link parameters defined, ONLY allow those parameters
2108
+ * PRO: Added an input mask option available via the $frm_input_masks global and 'frm_input_masks' hook
2109
+ * PRO: Added type=maximum and type=minimum to the frm-stats shortcode
2110
+ * PRO: Month and year dropdowns added to custom display calendar, along with a few styling changes
2111
+ * PRO: Get the custom display calendar month and day names from WordPress
2112
+ * PRO: Allow dynamic default values in HTML field type
2113
+ * PRO: Get post status options from WordPress function instead of a copy
2114
+ * PRO: Check the default [auto_id] value after submit to make sure it's still unique
2115
+ * PRO: If the "round" parameter is used in the frm-stats shortcode, floating zeros will be kept
2116
+ * PRO: If greater than or less than options are used with a number field in a custom display, treat them as numbers instead of regular text
2117
+ * PRO: Allow user logins for the user_id parameter in the frm-graph, frm-stats, and display-frm-data shortcodes
2118
+ * PRO: Fixed the date format d-mm-yyyy to work correctly in the date field
2119
+ * PRO: Added timeout to redirect so users will see the redirect message for a few seconds before being redirected
2120
+ * PRO: Allow decimal values in graphs instead of forcing integers
2121
+ * PRO: Updated the time field to use a true select box instead of a text field
2122
+ * PRO: Removed included swfobject and json2 javascripts to use the included WordPress versions
2123
+ * PRO: Added 'frm_graph_value' filters to change the value used in the graphs
2124
+ * PRO: Populate strings to be translated without requiring a visit to the WPML plugin
2125
+ * PRO: If the where options in a custom display include a GET or POST value that is an array, translate the search to check each value instead of searching for a comma-separated value in one record.
2126
+ * PRO: Added entry key and entry ID to the where options in custom displays
2127
+ * PRO: Added HTML classes on the search form, so if themes include styling for the WP search form, it will be applied to the [frm-search] as well
2128
+ * PRO: Allow multiple data from entries fields to be searched using the frm-search shortcode instead of only one
2129
+ * PRO: Fixed update checking to not cause a slow down if the formidableforms.com server is down
2130
+ * PRO: Updated the user_id parameter for the display-frm-data shortcode to be used even if there's no user ID field selected in the where options for that custom display
2131
+ * PRO: Added DOING_AJAX flags for WPML compatibility
2132
+ * PRO: Added time_ago=1 option for displaying dates. Ex: [created-at time_ago=1] or [25 time_ago=1]
2133
+ * PRO: Updated file upload process to change the file path before uploading instead of moving the files afterwards
2134
+
2135
+ = 1.06.02 =
2136
+ * Fixed selection of dropdowns on the form maker page in Chrome
2137
+ * Added WPML integration. Requires the add-on available from WPML. Pro version includes a quick translation page.
2138
+ * Added option to use the custom menu name site wide in multi-site installs
2139
+ * Added 'frm_use_wpautop' filter for disabling all built-in occurrences of auto paragraphs (form description, HTML fields, and displaying paragraph fields)
2140
+ * Only show the form icon button on the edit post page for users with permission to view forms
2141
+ * Changed .form-required class to .frm_required_field
2142
+ * Start with label in edit mode after adding a new field
2143
+ * Added required indicator to styling
2144
+ * Don't allow whitespace to pass required field validation
2145
+ * PRO: Added option to restrict the file types uploaded in file upload fields
2146
+ * PRO: Added export to XML and export to CSV to bulk action dropdowns
2147
+ * PRO: Added [user_id] dynamic default value
2148
+ * PRO: Allow dynamic dates in the frm-graph shortcode. Ex [frm-graph id=x x_axis="created_at" x_start="-1 month"]
2149
+ * PRO: Added bar_flat to the graphs. Ex [frm-graph id=x type="bar_flat"]
2150
+ * PRO: Dynamically hide some x-axis labels if there are too many for the width of the graph. Note: Does not work with percentage widths
2151
+ * PRO: Added the option to select an end date in calendar custom displays for displaying multiple day events
2152
+ * PRO: Added 'frm_show_entry_dates' filter for customizing which dates an entry should show on
2153
+ * PRO: Disabled used dates in date picker for dates marked as unique
2154
+ * PRO: Added option to search by entry creation date on admin entries listing page
2155
+ * PRO: Added windows-1251 option for CSV export format
2156
+ * PRO: Added the class parameter to the edit-in-place cancel link
2157
+ * PRO: Improved CSV import to work better with large files
2158
+ * PRO: Make a guess at which fields should match up on CSV import
2159
+ * PRO: Added option to resend the email notifications when entry is updated. (This will be expanded when conditional email routing is added.)
2160
+ * PRO: Don't send autoresponder message when importing
2161
+ * PRO: Allow an entry id in the frm-stats shortcode. Ex [frm-stats id=25 entry_id=100]. Display a star vote as stars for a single entry in a custom display with [frm-stats id=25 type=star entry_id=[id]]
2162
+ * PRO: Allow multiple star ratings for the same field on the same page
2163
+ * PRO: Fixed post options that would not deselect
2164
+ * PRO: Fixed issue causing the wrong conditional logic row to sometimes be removed
2165
+ * PRO: Fixed bug preventing hidden fields from saving as a post field
2166
+ * PRO: Fixed required tags fields to not return errors when not blank
2167
+ * PRO: Fixed bug preventing some javascripts and stylesheets from getting loaded on admin pages if the menu title was changed
2168
+ * PRO: Fixed graphs to show x_axis dates in the correct order if 2011 and 2012 dates are in the same graph
2169
+ * PRO: Corrected WP multisite table name for the table to copy forms and custom displays
2170
+ * PRO: Fixed issue with graphs showing in front of dropdown menus in Chrome
2171
+ * PRO: Fixed bug in custom displays causing the wrong entries to be returned when a post category field is set to NOT show a certain category
2172
+ * PRO: Fixed bug with multiple paged forms that was sometimes causing the next page to show even if errors were present on previous page
2173
+ * PRO: Allow entries to be correctly editing from the backend by a user other than the one who created it, when data from entries field options are set to be limited to only the user currently filling out the form
2174
+ * PRO: Updated conditional logic for those who set up the logic before v1.6 and haven't clicked the update button in their forms
2175
+ * PRO: Corrected file upload naming for the various sizes of an upload with the same name as an existing upload
2176
+
2177
+ = 1.06.01 =
2178
+ * Added option to customize the admin menu name
2179
+ * Added instructions to publish forms if no entries exist
2180
+ * Free only: Fixed form maker settings page to allow tabs to work
2181
+ * Free only: Updated styling to align multiple checkboxes/radio buttons when the label is aligned left
2182
+ * PRO: Fixed issue with the default value getting lost from a hidden field when updating from the form settings page
2183
+ * PRO: Fixed conditionally hidden fields that are already considered hidden if inside a collapsible section
2184
+ * PRO: Fixed graphs using x_axis=created_at and user_id=x
2185
+ * PRO: Fixed multiple paged forms with more than two pages
2186
+ * PRO: Validate HTML for checkbox taxonomies
2187
+
2188
+ = 1.06 =
2189
+ * User Interface improvements to form builder
2190
+ * Increased security, speed, and optimization
2191
+ * Moved the "automatic width" check box for drop-down select fields to free form builder plugin
2192
+ * Moved email "From/Reply to" options to free WordPress form builder plugin
2193
+ * Fixed form preview page for form templates
2194
+ * Added German translation (Andre Lisbert)
2195
+ * Added ajax to uninstall button
2196
+ * Correctly filter external shortcodes in the form success message
2197
+ * Show error messages at the top if they are not for fields in the form (ie Akismet errors)
2198
+ * Updated bulk edit options to change the dropdown in the form builder at the time the options are submitted
2199
+ * Fixed default values set to clear on click to work with values that include hard returns
2200
+ * Free only: Fixed hidden label CSS
2201
+ * PRO: Extended the conditional field smart logic
2202
+ * PRO: Added graphs for fields over time, and other customizing options: x_axis, x_start, x_end, min, max, grid_color, show_key, and include_zero
2203
+ * PRO: Moved post creation settings from individual fields to the forms settings page
2204
+ * PRO: Added option in WP 3.3 to use Tiny MCE as the rich text editor
2205
+ * PRO: Added "format" option to date fields. Example [25 format='Y-m-d']
2206
+ * PRO: Added star rating option to scale fields
2207
+ * PRO: Added star type to [frm-stats] shortcode to display the average in star format. Example [frm-stats id=5 type=star]
2208
+ * PRO: Added option to format individual radio and checkbox fields in one or multiple rows
2209
+ * PRO: Added server-side validation for dates inserted into date fields
2210
+ * PRO: Allow multiple fields for the same taxonomy/category
2211
+ * PRO: Allow a taxonomy/category to be selected for data from entries fields. This makes cascading category fields possible.
2212
+ * PRO: Added [post_author_email] dynamic default value
2213
+ * PRO: Added a frm_notification_attachment hook
2214
+ * PRO: Added clickable and user_id options to the formresults shortcode. ex [formresults id=x clickable=1 user_id=current]
2215
+ * PRO: Improved field calculations to extract a price from the end of an option
2216
+ * PRO: Added the option to specify how many decimal places to show, and what characters to use for the decimal and thousands separator. For example, to format USD:
2217
+ $[25 decimal=2 dec_point='.' thousands_sep=',']
2218
+ * PRO: Added a message before the user is redirected, along with a filter to change it (frm_redirect_msg).
2219
+ * PRO: Added a button to delete ALL entries in a form at the bottom of the entries page
2220
+ * PRO: Added a password field type
2221
+ * PRO: Conditionally remove HTML5 validation of form if default values are present
2222
+ * PRO: Added like parameter for inline conditions in custom displays. Example: [if 25 like="hello"]That field said hello[/if 25]
2223
+ * PRO: Allow contact form fields set as custom post fields to be used for sorting custom displays
2224
+ * PRO: Updated import to create the posts at the time of import
2225
+ * PRO: Unattach images from a post if they are replaced
2226
+ * PRO: Leave the date format in yyyy-dd-mm format in the CSV export
2227
+ * PRO: Allow importing into checkbox fields
2228
+ * PRO: Added option to use previously uploaded CSV for import so new upload isn't required when reimporting
2229
+ * PRO: Added option to change the text on the submit button in the frm-search shortcode. Example [frm-search label="Search"]
2230
+ * PRO: Fixed bug preventing a field dependent on another data from entries field from updating
2231
+ * PRO: Fixed bug affecting pages with multiple editable forms on the same page that caused the first form to always be submitted
2232
+ * PRO: Updated the truncate option to not require full words if truncating 10 or less characters
2233
+ * PRO: Fixed bug preventing front-end entry deletion when the form was editable and limited to one per user
2234
+ * PRO: Fixed bug preventing checkbox selections from showing in custom email notifications if a checkbox contained a quotation mark
2235
+ * PRO: Prevent the uploading files message from showing if no files were selected
2236
+ * PRO: Check a default value when using dynamic default values in the check box options
2237
+ * PRO: Fixed bug preventing a newly created post from getting assigned to the user selected in the user ID dropdown if the selected user was not the user submitting the entry or was created with the registration add-on in the same form
2238
+ * PRO: Fixed bug preventing Data from entries "just show it" fields from showing a value in admin listing and view entry pages
2239
+ * PRO: Fixed bug causing the options to be empty if the data from entries options are limited to the current user and the form they are pulled from are creating posts
2240
+ * PRO: Fixed empty results in the [formresults] table for contact forms that create posts
2241
+ * PRO: When a blog is deleted in WP multi-site, delete database table rows related to copying contact forms from that blog
2242
+ * PRO: Don't strip out desired backslashes
2243
+ * PRO: Updated to latest version of form datepicker javascript
2244
+
2245
+ = 1.05.05 =
2246
+ * Added Dutch translation (Eric Horstman)
2247
+ * Fixed "Customize Form HTML" link issues some users were having
2248
+ * PRO: Load jQuery UI javascript for form datepicker
2249
+ * PRO: Fixed custom display "where" options to work with multiple where rows
2250
+
2251
+ = 1.05.04 =
2252
+ * Bulk edit and add radio, select, and check box choices
2253
+ * Added option to turn off HTML5 use in front-end contact forms
2254
+ * Added option to turn off contact form user tracking
2255
+ * Scroll form field choices in the form edit page if radio, check box, or select fields have more than 10 choices
2256
+ * Free only: Removed export template link since the functionality behind it is only in Pro version
2257
+ * PRO: Added CSV form entry import
2258
+ * PRO: Added file icons when editing an entry with a non-image file type attached
2259
+ * PRO: Added functionality for time fields set as unique so time options will be removed after a date is selected
2260
+ * PRO: Check wp_query if no matching GET or POST variable in the get shortcode
2261
+ * PRO: Switch taxonomy lists to links in custom displays
2262
+ * PRO: Added functionality for a where option to be set to a taxonomy name ie [get param=tag]
2263
+ * PRO: Added functionality for a taxonomy to work with equals and not_equal in custom displays
2264
+ * PRO: Removed ajax error checking on the captcha field to fix the incorrect response messages
2265
+ * PRO: Fixed dependent data from entries form fields to show the selected values on validation error and on edit
2266
+ * PRO: Added `[frm-entry-update-field]` shortcode to update a single field in an entry with an ajax link
2267
+ * PRO: Added global styling option to set newly-added select form fields to an automatic width
2268
+ * PRO: Fixed calendar to allow fields mapped to a post to be used as the date field
2269
+ * PRO: Fixed conditionally hidden field options to work with post category and post status fields
2270
+ * PRO: Fixed custom displays to work automatically with pages instead of just post and custom post types (CPTs)
2271
+ * PRO: Added functionality to frm-stats shortcode to work with posts and adds where options in key/id=value pairs. ex: [frm-stats id=x 25=hello] where 25 is the field ID and "Hello" is the value the other field in the form should have in order to display
2272
+ * PRO: Updated form datepicker and timepicker to latest versions
2273
+ * PRO: Fixed bug preventing images from saving correctly if the form is set to create a post and the upload field is not set as a post field
2274
+ * PRO: Added an "Insert Position" option to the custom display. This will prevent the custom display from being loaded multiple times per page, but will allow users to set when it shows up for themes like Thesis
2275
+ * PRO: Fixed number field to work with decimals and when ordering descending
2276
+ * PRO: Added a limit to the number of entries that show in the entry drop-down in places like the custom display page to prevent memory errors
2277
+ * PRO: Fixed field options to work better with symbols like &reg; in graphs
2278
+ * PRO: Automatically open collapsible heading if there is a form error message inside it
2279
+ * PRO: Added type=deviation to the frm-stats shortcode. Example: [frm-stats id=x type=deviation]
2280
+ * PRO: Updated calculations to work with radio, scale, and drop-down fields
2281
+ * PRO: Fixed default values for check boxes
2282
+ * PRO: Added CSV export format option
2283
+ * PRO: Fixed scale field reports to show all options
2284
+
2285
+ = 1.05.03 =
2286
+ * Updated user role options to work more reliably with WP 3.1
2287
+ * Added functionality for "Fit Select Boxes into SideBar" checkbox and field size in the free contact form widget
2288
+ * Moved reCaptcha error message to individual field options
2289
+ * Updated referring URL and added tracking throughout the visit
2290
+ * PRO: Added "clickable" option for use in custom displays to make email addresses and URLs into links. ex `[25 clickable=1]`
2291
+ * PRO: Added option to select the taxonomy type
2292
+ * PRO: Updated contact form styling to work better in IE
2293
+ * PRO: Updated emails to work with Data from entries checkbox fields
2294
+ * PRO: Updated dependent Data from entries fields to work with checkboxes
2295
+ * PRO: Adjusted [date] and [time] values to adjust for WordPress timezone settings
2296
+ * PRO: Updated the way conditionally hidden fields save in the admin to prevent lingering dependencies
2297
+ * PRO: Fixed link to duplicate entries in form maker
2298
+ * PRO: Updated file upload indicator to show up sooner
2299
+ * PRO: Added ajax delete to [deletelink] shortcode
2300
+ * PRO: Updated admin only fields to show for administrators on front-end forms
2301
+ * PRO: Added more attributes to the [display-frm-data] shortcode: limit="5", page_size="5", order_by="rand" or field ID, order="DESC" or "ASC"
2302
+ * PRO: Fixed custom display bulk delete
2303
+ * PRO: Updated WPMU/multisite form copy features to work with WP 3.0+
2304
+ * PRO: Switched the email form "add/or" drop-down to check boxes
2305
+ * PRO: Added box for message to be displayed if there are no entries for a custom display
2306
+ * PRO: Added ajax edit options with [frm-entry-edit-link id=x label=Edit cancel=Cancel class='add_classes' page_id= prefix='frm_edit_' form_id=>y]. Also works with [editlink location=front] in custom displays.
2307
+ * PRO: Moved styling options into a tab on the settings page
2308
+ * PRO: Added limited "data from entries" options to the custom display "where" row. Entry keys or IDs can be used
2309
+ * PRO: Added unique validation for fields set as post fields
2310
+ * PRO: Removed error messages for required fields hidden via the shortcode options
2311
+ * PRO: Only return [deletelink] if user has permission to delete the form entry
2312
+ * PRO: Added order options to WordPress event calendars
2313
+ * PRO: Updated custom display ordering to order correctly when using a 12 hour time field
2314
+ * PRO: Added taxonomy options to the "Tags" field
2315
+ * PRO: Added HTML escaping to text fields to allow HTML entities to remain as entities when editing
2316
+ * PRO: Added functionality to use taxonomy fields in where options in custom displays
2317
+ * PRO: Added option to use [get param=CUSTOM] in custom displays
2318
+
2319
+ = 1.05.02 =
2320
+ * Fixed issue with PHP4 that was causing the field options to get cleared out and only show a "0" or "<" instead of the field
2321
+ * Prevent javascript from getting loaded twice
2322
+ * Updated stylesheets for better looking left aligned field labels. In the Pro version, setting the global labels to one location and setting a single field to another will keep the field description and error messages aligned.
2323
+ * PRO: Fixed issue causing form to be hidden on front-end edit if it was set not to show with the success message
2324
+ * PRO: Show the linked image instead of the url when a file is linked in a "just show it" data from entries field
2325
+ * PRO: Added functionality for ordering by post fields in a custom display
2326
+
2327
+ = 1.05.01 =
2328
+ * PRO: Fix custom display settings for posts/custom posts
2329
+
2330
+ = 1.05.0 =
2331
+ * Moved a contact form widget from Pro to the free version
2332
+ * Updated some form templates with fields aligned in a row. First and last name are on one line in the contact form template.
2333
+ * Moved error messages underneath input fields
2334
+ * Added option to display labels "hidden" instead of just none. This makes aligning fields in a row with only one label easier
2335
+ * Additional XHTML compliance for multiple forms on one
2336
+ * Removed the HTML5 required attribute (temporarily)
2337
+ * Corrected the label position styling in the regular version
2338
+ * A little UI clean up
2339
+ * Added hook for recaptcha customizations
2340
+ * PRO: Added front-end custom post type support. Create front-end CPT posts. Most field types will integrate out-of-the-box with the Advanced Custom Fields (ACF) WordPress plugin.
2341
+ * PRO: Added hierarchy to post categories
2342
+ * PRO: Added a loading indicator while files are uploading
2343
+ * PRO: Added a `[default-message]` shortcode for use in the email message. Now you can add to the default message without completely replacing it
2344
+ * PRO: Added default styling to the formresults shortcode, as well as additional shortcode options: `[formresults id=x style=1 no_entries="No Entries Found" fields="25,26,27"]`
2345
+ * PRO: Added localizations options to calendar
2346
+ * PRO: Fixed collapsible Section headings to work with updated form builder HTML
2347
+ * PRO: Added functionality to admin search to check data from entries fields
2348
+ * PRO: Added start and end time options for time fields
2349
+ * PRO: Added 'type' to `[frm-graph]` shortcode to force 'pie' or 'bar': `[frm-graph id=x type=pie]`
2350
+ * PRO: Added post_id option to the `[frm-search]` shortcode. This will set the action link for the search form. Ex: `[frm-search post_id=3]`
2351
+ * PRO: Fixed `[frm-search]` shortcode for use on dynamic custom displays. If searching on a detailed entry page, the search will return to the listing page.
2352
+ * PRO: Updated post fields to work in "data from entries" fields
2353
+
2354
+ = 1.04.06 =
2355
+ * Additional back-end XHTML compliance
2356
+ * PRO: Fixed conditionally hidden fields bug some users were experiencing
2357
+
2358
+ = 1.04.05 =
2359
+ * Added duplicate entry checks for form submissions
2360
+ * Added a checkbox on form creator to mark form fields required
2361
+ * Moved the duplicate form field option into the free form builder
2362
+ * Show the contact form success message even if the form isn't displayed with it
2363
+ * Added option to not use dynamic stylesheet loading
2364
+ * PRO: Added option to resend form email notification and autoresponders
2365
+ * PRO: Fixes for editing forms with unique fields
2366
+ * PRO: Fixes for editing multi-page forms with validation errors
2367
+ * PRO: Fixes for multiple multi-step forms on the same page
2368
+ * PRO: Added linked fields into the field drop-downs for inserting shortcodes and sending emails
2369
+ * PRO: Added powerful calculated fields in forms
2370
+ * PRO: Allow hidden fields to be edited from the WordPress admin
2371
+ * PRO: Allow sections of fields to be hidden conditionally with the Section Header fields
2372
+ * PRO: Added user_id option to the `[frm-graph]` shortcode
2373
+ * PRO: Updated the custom display settings interface
classes/controllers/FrmAddonsController.php CHANGED
@@ -3,7 +3,11 @@
3
  class FrmAddonsController {
4
 
5
  public static function menu() {
6
- add_submenu_page( 'formidable', 'Formidable | ' . __( 'AddOns', 'formidable' ), __( 'AddOns', 'formidable' ), 'frm_view_forms', 'formidable-addons', 'FrmAddonsController::list_addons' );
 
 
 
 
7
 
8
  if ( ! FrmAppHelper::pro_is_installed() ) {
9
  add_submenu_page( 'formidable', 'Formidable | ' . __( 'Upgrade to Pro', 'formidable' ), __( 'Upgrade to Pro', 'formidable' ), 'frm_view_forms', 'formidable-pro-upgrade', 'FrmAddonsController::upgrade_to_pro' );
@@ -14,6 +18,10 @@ class FrmAddonsController {
14
  $installed_addons = apply_filters( 'frm_installed_addons', array() );
15
 
16
  $addons = self::get_api_addons();
 
 
 
 
17
  self::prepare_addons( $addons );
18
 
19
  $pricing = FrmAppHelper::admin_upgrade_link( 'addons' );
@@ -29,57 +37,51 @@ class FrmAddonsController {
29
  }
30
 
31
  ksort( $plugins );
32
- $allow_autofill = self::allow_autofill();
33
 
34
  include( FrmAppHelper::plugin_path() . '/classes/views/addons/settings.php' );
35
  }
36
 
37
- /**
38
- * Don't allow subsite addon licenses to be fetched
39
- * unless the current user has super admin permissions
40
- *
41
- * @since 2.03.10
42
- */
43
- private static function allow_autofill() {
44
- $allow_autofill = FrmAppHelper::pro_is_installed();
45
- if ( $allow_autofill && is_multisite() ) {
46
- $sitewide_activated = get_site_option( 'frmpro-wpmu-sitewide' );
47
- if ( $sitewide_activated ) {
48
- $allow_autofill = current_user_can( 'setup_network' );
49
- }
50
- }
51
- return $allow_autofill;
52
- }
53
-
54
  private static function get_api_addons() {
55
- $addons = array();
56
- $url = 'https://formidableforms.com/wp-json/s11edd/v1/updates/';
57
- if ( FrmAppHelper::pro_is_installed() ) {
58
- $edd_update = new FrmProEddController();
59
- $license = $edd_update->get_license();
60
- if ( ! empty( $license ) ) {
61
- $url .= '?l=' . urlencode( base64_encode( $license ) );
62
- }
63
  }
64
 
65
- $response = wp_remote_get( $url );
66
- if ( is_array( $response ) && ! is_wp_error( $response ) ) {
67
- $addons = $response['body'];
68
- }
69
 
70
- if ( ! empty( $addons ) ) {
71
- $addons = json_decode( $addons, true );
72
- $skip_categories = array( 'WordPress Form Templates', 'WordPress Form Style Templates' );
73
  foreach ( $addons as $k => $addon ) {
74
- $cats = array_intersect( $skip_categories, $addon['categories'] );
75
- if ( empty( $addon['excerpt'] ) || ! empty( $cats ) ) {
76
  unset( $addons[ $k ] );
77
  }
78
  }
79
- return $addons;
80
  }
81
 
82
- $addons = array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  'formidable-pro' => array(
84
  'title' => 'Formidable Pro',
85
  'link' => 'pricing/',
@@ -149,10 +151,273 @@ class FrmAddonsController {
149
  'excerpt' => 'Allow users to text their votes for polls created by Formidable Forms, or send SMS notifications when entries are submitted or updated.',
150
  ),
151
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
  return $addons;
154
  }
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  private static function prepare_addons( &$addons ) {
157
  $activate_url = '';
158
  if ( current_user_can( 'activate_plugins' ) ) {
@@ -163,32 +428,28 @@ class FrmAddonsController {
163
  foreach ( $loop_addons as $id => $addon ) {
164
  if ( is_numeric( $id ) ) {
165
  $slug = str_replace( array( '-wordpress-plugin', '-wordpress' ), '', $addon['slug'] );
166
- self::prepare_folder_name( $addon );
167
  } else {
168
  $slug = $id;
 
 
 
 
 
 
169
  }
170
- if ( isset( $addon['file'] ) ) {
171
- $base_file = $addon['file'];
172
- } else {
173
- $base_file = 'formidable-' . $slug;
174
- }
175
- $file = WP_PLUGIN_DIR . '/' . $base_file;
176
 
177
- $addon['installed'] = is_dir( $file );
178
  $addon['activate_url'] = '';
179
- if ( $addon['installed'] && ! empty( $activate_url ) ) {
180
- if ( file_exists( $file . '/' . $base_file . '.php' ) ) {
181
- $file_name = $base_file . '/' . $base_file . '.php';
182
- if ( ! is_plugin_active( $file_name ) ) {
183
- $addon['activate_url'] = add_query_arg(
184
- array(
185
- '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $file_name ),
186
- 'plugin' => $file_name,
187
- ),
188
- $activate_url
189
- );
190
- }
191
- }
192
  }
193
 
194
  if ( ! isset( $addon['docs'] ) ) {
@@ -206,18 +467,6 @@ class FrmAddonsController {
206
  }
207
  }
208
 
209
- /**
210
- * @since 3.04.02
211
- */
212
- private static function prepare_folder_name( &$addon ) {
213
- if ( isset( $addon['url'] ) ) {
214
- $url = explode( '?', $addon['url'] );
215
- $file = explode( '/', $url[0] );
216
- $file = end( $file );
217
- $addon['file'] = str_replace( '-' . $addon['version'] . '.zip', '', $file );
218
- }
219
- }
220
-
221
  /**
222
  * @since 3.04.02
223
  */
@@ -260,58 +509,6 @@ class FrmAddonsController {
260
  }
261
  }
262
 
263
- public static function get_licenses() {
264
- $allow_autofill = self::allow_autofill();
265
- $required_role = $allow_autofill ? 'setup_network' : 'frm_change_settings';
266
- FrmAppHelper::permission_check( $required_role );
267
- check_ajax_referer( 'frm_ajax', 'nonce' );
268
-
269
- if ( is_multisite() && get_site_option( 'frmpro-wpmu-sitewide' ) ) {
270
- $license = get_site_option( 'frmpro-credentials' );
271
- } else {
272
- $license = get_option( 'frmpro-credentials' );
273
- }
274
-
275
- if ( $license && is_array( $license ) && isset( $license['license'] ) ) {
276
- $url = 'https://formidableforms.com/frm-edd-api/licenses?l=' . urlencode( base64_encode( $license['license'] ) );
277
- $licenses = self::send_api_request(
278
- $url,
279
- array(
280
- 'name' => 'frm_api_licence',
281
- 'expires' => 60 * 60 * 5,
282
- )
283
- );
284
- echo json_encode( $licenses );
285
- }
286
-
287
- wp_die();
288
- }
289
-
290
- private static function send_api_request( $url, $transient = array() ) {
291
- $data = get_transient( $transient['name'] );
292
- if ( $data !== false ) {
293
- return $data;
294
- }
295
-
296
- $arg_array = array(
297
- 'body' => array(
298
- 'url' => home_url(),
299
- ),
300
- 'timeout' => 15,
301
- 'user-agent' => 'Formidable/' . FrmAppHelper::$plug_version . '; ' . home_url(),
302
- );
303
-
304
- $response = wp_remote_post( $url, $arg_array );
305
- $body = wp_remote_retrieve_body( $response );
306
- $data = false;
307
- if ( ! is_wp_error( $response ) && ! is_wp_error( $body ) ) {
308
- $data = json_decode( $body, true );
309
- set_transient( $transient['name'], $data, $transient['expires'] );
310
- }
311
-
312
- return $data;
313
- }
314
-
315
  public static function upgrade_to_pro() {
316
  $pro_pricing = self::prepare_pro_info();
317
 
@@ -347,42 +544,6 @@ class FrmAddonsController {
347
  );
348
  }
349
 
350
- /**
351
- * Add a filter to shorten the EDD filename for Formidable plugin, and add-on, updates
352
- *
353
- * @since 2.03.08
354
- *
355
- * @param boolean $return
356
- * @param string $package
357
- *
358
- * @return boolean
359
- */
360
- public static function add_shorten_edd_filename_filter( $return, $package ) {
361
- if ( strpos( $package, '/edd-sl/package_download/' ) !== false && strpos( $package, 'formidableforms.com' ) !== false ) {
362
- add_filter( 'wp_unique_filename', 'FrmAddonsController::shorten_edd_filename', 10, 2 );
363
- }
364
-
365
- return $return;
366
- }
367
-
368
- /**
369
- * Shorten the EDD filename for automatic updates
370
- * Decreases size of file path so file path limit is not hit on Windows servers
371
- *
372
- * @since 2.03.08
373
- *
374
- * @param string $filename
375
- * @param string $ext
376
- *
377
- * @return string
378
- */
379
- public static function shorten_edd_filename( $filename, $ext ) {
380
- $filename = substr( $filename, 0, 50 ) . $ext;
381
- remove_filter( 'wp_unique_filename', 'FrmAddonsController::shorten_edd_filename', 10 );
382
-
383
- return $filename;
384
- }
385
-
386
  /**
387
  * @since 3.04.02
388
  */
@@ -482,4 +643,40 @@ class FrmAddonsController {
482
  wp_die();
483
  }
484
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
  }
3
  class FrmAddonsController {
4
 
5
  public static function menu() {
6
+ if ( ! current_user_can( 'activate_plugins' ) ) {
7
+ return;
8
+ }
9
+
10
+ add_submenu_page( 'formidable', 'Formidable | ' . __( 'Add-Ons', 'formidable' ), __( 'Add-Ons', 'formidable' ), 'frm_view_forms', 'formidable-addons', 'FrmAddonsController::list_addons' );
11
 
12
  if ( ! FrmAppHelper::pro_is_installed() ) {
13
  add_submenu_page( 'formidable', 'Formidable | ' . __( 'Upgrade to Pro', 'formidable' ), __( 'Upgrade to Pro', 'formidable' ), 'frm_view_forms', 'formidable-pro-upgrade', 'FrmAddonsController::upgrade_to_pro' );
18
  $installed_addons = apply_filters( 'frm_installed_addons', array() );
19
 
20
  $addons = self::get_api_addons();
21
+ $errors = self::get_error_from_response( $addons );
22
+ if ( isset( $addons['error'] ) ) {
23
+ unset( $addons['error'] );
24
+ }
25
  self::prepare_addons( $addons );
26
 
27
  $pricing = FrmAppHelper::admin_upgrade_link( 'addons' );
37
  }
38
 
39
  ksort( $plugins );
 
40
 
41
  include( FrmAppHelper::plugin_path() . '/classes/views/addons/settings.php' );
42
  }
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  private static function get_api_addons() {
45
+ $license = '';
46
+ $edd_update = self::get_pro_updater();
47
+ if ( ! empty( $edd_update ) ) {
48
+ $license = $edd_update->license;
 
 
 
 
49
  }
50
 
51
+ $addons = self::get_addon_info( $license );
 
 
 
52
 
53
+ if ( empty( $addons ) ) {
54
+ $addons = self::fallback_plugin_list();
55
+ } else {
56
  foreach ( $addons as $k => $addon ) {
57
+ if ( empty( $addon['excerpt'] ) && $k !== 'error' ) {
 
58
  unset( $addons[ $k ] );
59
  }
60
  }
 
61
  }
62
 
63
+ return $addons;
64
+ }
65
+
66
+ /**
67
+ * @since 3.04.03
68
+ */
69
+ public static function get_pro_updater() {
70
+ if ( FrmAppHelper::pro_is_installed() && is_callable( 'FrmProAppHelper::get_updater' ) ) {
71
+ return FrmProAppHelper::get_updater();
72
+ }
73
+
74
+ return false;
75
+ }
76
+
77
+ /**
78
+ * If the API is unable to connect, show something on the addons page
79
+ *
80
+ * @since 3.04.03
81
+ * @return array
82
+ */
83
+ private static function fallback_plugin_list() {
84
+ return array(
85
  'formidable-pro' => array(
86
  'title' => 'Formidable Pro',
87
  'link' => 'pricing/',
151
  'excerpt' => 'Allow users to text their votes for polls created by Formidable Forms, or send SMS notifications when entries are submitted or updated.',
152
  ),
153
  );
154
+ }
155
+
156
+ /**
157
+ * If Pro is missing but has been authenticated, include a download URL
158
+ *
159
+ * @since 3.04.03
160
+ * @return string
161
+ */
162
+ public static function get_pro_download_url() {
163
+ $pro_cred_store = 'frmpro-credentials';
164
+ $pro_wpmu_store = 'frmpro-wpmu-sitewide';
165
+ if ( is_multisite() && get_site_option( $pro_wpmu_store ) ) {
166
+ $creds = get_site_option( $pro_cred_store );
167
+ } else {
168
+ $creds = get_option( $pro_cred_store );
169
+ }
170
+
171
+ if ( empty( $creds ) || ! is_array( $creds ) || ! isset( $creds['license'] ) ) {
172
+ return '';
173
+ }
174
+
175
+ $license = $creds['license'];
176
+ if ( empty( $license ) ) {
177
+ return '';
178
+ }
179
+
180
+ if ( strpos( $license, '-' ) ) {
181
+ // this is a fix for licenses saved in the past
182
+ $license = strtoupper( $license );
183
+ }
184
+
185
+ $downloads = self::get_addon_info( $license );
186
+ $pro = isset( $downloads['93790'] ) ? $downloads['93790'] : array();
187
+
188
+ return isset( $pro['url'] ) ? $pro['url'] : '';
189
+ }
190
+
191
+ /**
192
+ * @since 3.04.03
193
+ * @return array
194
+ */
195
+ public static function get_addon_info( $license = '' ) {
196
+ $addons = array();
197
+ $url = 'https://formidableforms.com/wp-json/s11edd/v1/updates/';
198
+ if ( ! empty( $license ) ) {
199
+ $url .= '?l=' . urlencode( base64_encode( $license ) );
200
+ }
201
+
202
+ $addons = self::get_cached_addons( $license );
203
+ if ( ! empty( $addons ) ) {
204
+ return $addons;
205
+ }
206
+
207
+ $response = wp_remote_get( $url );
208
+ if ( is_array( $response ) && ! is_wp_error( $response ) ) {
209
+ $addons = $response['body'];
210
+ if ( ! empty( $addons ) ) {
211
+ $addons = json_decode( $addons, true );
212
+
213
+ $skip_categories = array( 'WordPress Form Templates', 'WordPress Form Style Templates' );
214
+ foreach ( $addons as $k => $addon ) {
215
+ if ( ! isset( $addon['categories'] ) ) {
216
+ continue;
217
+ }
218
+ $cats = array_intersect( $skip_categories, $addon['categories'] );
219
+ if ( ! empty( $cats ) ) {
220
+ unset( $addons[ $k ] );
221
+ }
222
+ }
223
+
224
+ self::set_cached_addons( $addons, $license );
225
+ }
226
+ }
227
 
228
  return $addons;
229
  }
230
 
231
+ /**
232
+ * @since 3.04.03
233
+ * @return array
234
+ */
235
+ private static function get_cached_addons( $license = '' ) {
236
+ $cache_key = self::get_cache_key( $license );
237
+ $cache = get_option( $cache_key );
238
+
239
+ if ( empty( $cache ) || empty( $cache['timeout'] ) || current_time( 'timestamp' ) > $cache['timeout'] ) {
240
+ return false; // Cache is expired
241
+ }
242
+
243
+ return json_decode( $cache['value'], true );
244
+ }
245
+
246
+ /**
247
+ * @since 3.04.03
248
+ */
249
+ private static function set_cached_addons( $addons, $license = '' ) {
250
+ $cache_key = self::get_cache_key( $license );
251
+ $data = array(
252
+ 'timeout' => strtotime( '+6 hours', current_time( 'timestamp' ) ),
253
+ 'value' => json_encode( $addons ),
254
+ );
255
+
256
+ update_option( $cache_key, $data, 'no' );
257
+ }
258
+
259
+ /**
260
+ * @since 3.04.03
261
+ */
262
+ public static function reset_cached_addons( $license = '' ) {
263
+ delete_option( self::get_cache_key( $license ) );
264
+ }
265
+
266
+ /**
267
+ * @since 3.04.03
268
+ * @return string
269
+ */
270
+ public static function get_cache_key( $license ) {
271
+ return 'frm_addons_l' . ( empty( $license ) ? '' : md5( $license ) );
272
+ }
273
+
274
+ /**
275
+ * @since 3.04.03
276
+ * @return array
277
+ */
278
+ public static function error_for_license( $license ) {
279
+ $errors = array();
280
+ if ( ! empty( $license ) ) {
281
+ $addons = self::get_addon_info( $license );
282
+ $errors = self::get_error_from_response( $addons );
283
+ }
284
+ return $errors;
285
+ }
286
+
287
+ /**
288
+ * @since 3.04.03
289
+ * @return array
290
+ */
291
+ private static function get_error_from_response( $addons ) {
292
+ $errors = array();
293
+ if ( isset( $addons['error'] ) ) {
294
+ $errors[] = $addons['error']['message'];
295
+ do_action( 'frm_license_error', $addons['error'] );
296
+ }
297
+ return $errors;
298
+ }
299
+
300
+ /**
301
+ * @since 3.04.03
302
+ */
303
+ public static function check_update( $transient ) {
304
+ if ( ! is_object( $transient ) ) {
305
+ $transient = new stdClass;
306
+ }
307
+
308
+ $installed_addons = apply_filters( 'frm_installed_addons', array() );
309
+ if ( empty( $installed_addons ) ) {
310
+ return $transient;
311
+ }
312
+
313
+ $version_info = self::fill_update_addon_info( $installed_addons );
314
+
315
+ $transient->last_checked = time();
316
+
317
+ $wp_plugins = get_plugins();
318
+
319
+ foreach ( $version_info as $id => $plugin ) {
320
+ $plugin = (object) $plugin;
321
+
322
+ if ( ! isset( $plugin->new_version ) || ! isset( $plugin->package ) ) {
323
+ continue;
324
+ }
325
+
326
+ $folder = $plugin->plugin;
327
+ if ( empty( $folder ) ) {
328
+ continue;
329
+ }
330
+
331
+ $wp_plugin = isset( $wp_plugins[ $folder ] ) ? $wp_plugins[ $folder ] : array();
332
+ $wp_version = isset( $wp_plugin['Version'] ) ? $wp_plugin['Version'] : '1.0';
333
+
334
+ if ( version_compare( $wp_version, $plugin->new_version, '<' ) ) {
335
+ $slug = explode( '/', $folder );
336
+ $plugin->slug = $slug[0];
337
+ $transient->response[ $folder ] = $plugin;
338
+ }
339
+
340
+ $transient->checked[ $folder ] = $wp_version;
341
+
342
+ }
343
+
344
+ return $transient;
345
+ }
346
+
347
+ /**
348
+ * @since 3.04.03
349
+ *
350
+ * @param array $installed_addons
351
+ *
352
+ * @return array
353
+ */
354
+ private static function fill_update_addon_info( $installed_addons ) {
355
+ $checked_licenses = array();
356
+ $version_info = array();
357
+
358
+ foreach ( $installed_addons as $addon ) {
359
+ if ( $addon->store_url !== 'https://formidableforms.com' ) {
360
+ // check if this is a third-party addon
361
+ continue;
362
+ }
363
+
364
+ $new_license = $addon->license;
365
+ if ( empty( $new_license ) || in_array( $new_license, $checked_licenses ) ) {
366
+ continue;
367
+ }
368
+
369
+ $checked_licenses[] = $new_license;
370
+
371
+ if ( empty( $version_info ) ) {
372
+ $version_info = self::get_addon_info( $new_license );
373
+ continue;
374
+ }
375
+
376
+ $plugin = self::get_addon_for_license( $version_info, $addon );
377
+ if ( empty( $plugin ) ) {
378
+ continue;
379
+ }
380
+
381
+ $download_id = isset( $plugin['id'] ) ? $plugin['id'] : 0;
382
+ if ( ! empty( $download_id ) && ! isset( $version_info[ $download_id ]['package'] ) ) {
383
+ // if this addon is using its own license, get the update url
384
+ $addon_info = self::get_addon_info( $new_license );
385
+
386
+ $version_info[ $download_id ] = $addon_info[ $download_id ];
387
+ if ( isset( $addon_info['error'] ) ) {
388
+ $version_info[ $download_id ]['error'] = array(
389
+ 'message' => $addon_info['error']['message'],
390
+ 'code' => $addon_info['error']['code'],
391
+ );
392
+ }
393
+ }
394
+ }
395
+
396
+ return $version_info;
397
+ }
398
+
399
+ /**
400
+ * @since 3.04.03
401
+ * @param array $addons
402
+ * @param object $license The FrmAddon object
403
+ * @return array
404
+ */
405
+ public static function get_addon_for_license( $addons, $license ) {
406
+ $download_id = $license->download_id;
407
+ $plugin = array();
408
+ if ( empty( $download_id ) ) {
409
+ foreach ( $addons as $addon ) {
410
+ if ( strtolower( $license->plugin_name ) == strtolower( $addon['title'] ) ) {
411
+ return $addon;
412
+ }
413
+ }
414
+ } elseif ( isset( $addons[ $download_id ] ) ) {
415
+ $plugin = $addons[ $download_id ];
416
+ }
417
+
418
+ return $plugin;
419
+ }
420
+
421
  private static function prepare_addons( &$addons ) {
422
  $activate_url = '';
423
  if ( current_user_can( 'activate_plugins' ) ) {
428
  foreach ( $loop_addons as $id => $addon ) {
429
  if ( is_numeric( $id ) ) {
430
  $slug = str_replace( array( '-wordpress-plugin', '-wordpress' ), '', $addon['slug'] );
431
+ $file_name = $addon['plugin'];
432
  } else {
433
  $slug = $id;
434
+ if ( isset( $addon['file'] ) ) {
435
+ $base_file = $addon['file'];
436
+ } else {
437
+ $base_file = 'formidable-' . $slug;
438
+ }
439
+ $file_name = $base_file . '/' . $base_file . '.php';
440
  }
 
 
 
 
 
 
441
 
442
+ $addon['installed'] = file_exists( WP_PLUGIN_DIR . '/' . $file_name );
443
  $addon['activate_url'] = '';
444
+
445
+ if ( $addon['installed'] && ! empty( $activate_url ) && ! is_plugin_active( $file_name ) ) {
446
+ $addon['activate_url'] = add_query_arg(
447
+ array(
448
+ '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $file_name ),
449
+ 'plugin' => $file_name,
450
+ ),
451
+ $activate_url
452
+ );
 
 
 
 
453
  }
454
 
455
  if ( ! isset( $addon['docs'] ) ) {
467
  }
468
  }
469
 
 
 
 
 
 
 
 
 
 
 
 
 
470
  /**
471
  * @since 3.04.02
472
  */
509
  }
510
  }
511
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
512
  public static function upgrade_to_pro() {
513
  $pro_pricing = self::prepare_pro_info();
514
 
544
  );
545
  }
546
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
547
  /**
548
  * @since 3.04.02
549
  */
643
  wp_die();
644
  }
645
  }
646
+
647
+ /**
648
+ * @since 2.03.08
649
+ * @deprecated 3.04.03
650
+ * @codeCoverageIgnore
651
+ *
652
+ * @param boolean $return
653
+ * @param string $package
654
+ *
655
+ * @return boolean
656
+ */
657
+ public static function add_shorten_edd_filename_filter( $return, $package ) {
658
+ return FrmDeprecated::add_shorten_edd_filename_filter( $return, $package );
659
+ }
660
+
661
+ /**
662
+ * @since 2.03.08
663
+ * @deprecated 3.04.03
664
+ * @codeCoverageIgnore
665
+ *
666
+ * @param string $filename
667
+ * @param string $ext
668
+ *
669
+ * @return string
670
+ */
671
+ public static function shorten_edd_filename( $filename, $ext ) {
672
+ return FrmDeprecated::shorten_edd_filename( $filename, $ext );
673
+ }
674
+
675
+ /**
676
+ * @deprecated 3.04.03
677
+ * @codeCoverageIgnore
678
+ */
679
+ public static function get_licenses() {
680
+ FrmDeprecated::get_licenses();
681
+ }
682
  }
classes/controllers/FrmAppController.php CHANGED
@@ -30,7 +30,7 @@ class FrmAppController {
30
  * @since 3.0
31
  */
32
  private static function is_white_page() {
33
- $is_white_page = ( FrmAppHelper::is_admin_page( 'formidable' ) || FrmAppHelper::is_admin_page( 'formidable-entries' ) || FrmAppHelper::is_admin_page( 'formidable-pro-upgrade' ) );
34
  if ( ! $is_white_page ) {
35
  $screen = get_current_screen();
36
  $is_white_page = ( $screen && $screen->id === 'edit-frm_display' );
@@ -118,6 +118,7 @@ class FrmAppController {
118
 
119
  public static function pro_get_started_headline() {
120
  self::maybe_show_upgrade_bar();
 
121
 
122
  // Don't display this error as we're upgrading the thing, or if the user shouldn't see the message
123
  if ( 'upgrade-plugin' == FrmAppHelper::simple_get( 'action', 'sanitize_title' ) || ! current_user_can( 'update_plugins' ) ) {
@@ -125,26 +126,34 @@ class FrmAppController {
125
  }
126
 
127
  $pro_installed = is_dir( WP_PLUGIN_DIR . '/formidable-pro' );
 
 
 
 
128
 
129
- if ( get_site_option( 'frmpro-authorized' ) && ! is_callable( 'load_formidable_pro' ) ) {
130
- FrmAppHelper::load_admin_wide_js();
131
 
132
- // user is authorized, but running free version
 
 
 
 
 
 
 
133
 
134
- if ( $pro_installed ) {
135
- // if pro version is installed, include link to activate it
136
- $inst_install_url = wp_nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=formidable-pro/formidable-pro.php' ), 'activate-plugin_formidable-pro/formidable-pro.php' );
137
- } else {
138
  $inst_install_url = 'https://formidableforms.com/knowledgebase/install-formidable-forms/?utm_source=WordPress&utm_medium=get-started&utm_campaign=liteplugin';
139
  }
 
140
  ?>
141
- <div class="error" class="frm_previous_install">
142
  <?php
143
  echo apply_filters( // WPCS: XSS ok.
144
  'frm_pro_update_msg',
145
  sprintf(
146
  esc_html__( 'This site has been previously authorized to run Formidable Forms. %1$sInstall Formidable Pro%2$s or %3$sdeauthorize%4$s this site to continue running the free version and remove this message.', 'formidable' ),
147
- '<br/><a href="' . esc_url( $inst_install_url ) . '" target="_blank">',
148
  '</a>',
149
  '<a href="#" class="frm_deauthorize_link">',
150
  '</a>'
@@ -152,18 +161,13 @@ class FrmAppController {
152
  esc_url( $inst_install_url )
153
  );
154
  ?>
 
155
  </div>
156
  <?php
157
- }
158
  }
159
 
160
  private static function maybe_show_upgrade_bar() {
161
- $page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
162
- if ( strpos( $page, 'formidable' ) !== 0 ) {
163
- return;
164
- }
165
-
166
- if ( FrmAppHelper::pro_is_installed() ) {
167
  return;
168
  }
169
 
@@ -181,6 +185,29 @@ class FrmAppController {
181
  }
182
  }
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  /**
185
  * @since 3.04.02
186
  */
@@ -352,31 +379,6 @@ class FrmAppController {
352
  load_plugin_textdomain( 'formidable', false, FrmAppHelper::plugin_folder() . '/languages/' );
353
  }
354
 
355
- /**
356
- * Filter shortcodes in text widgets
357
- *
358
- * @deprecated 2.5.4
359
- * @codeCoverageIgnore
360
- */
361
- public static function widget_text_filter( $content ) {
362
- _deprecated_function( __METHOD__, '2.5.4' );
363
- $regex = '/\[\s*(formidable|display-frm-data|frm-stats|frm-graph|frm-entry-links|formresults|frm-search)\s+.*\]/';
364
- return preg_replace_callback( $regex, 'FrmAppHelper::widget_text_filter_callback', $content );
365
- }
366
-
367
- /**
368
- * Deprecated in favor of wpmu_upgrade_site
369
- *
370
- * @deprecated 2.3
371
- * @codeCoverageIgnore
372
- */
373
- public static function front_head() {
374
- _deprecated_function( __FUNCTION__, '2.3' );
375
- if ( is_multisite() && self::needs_update() ) {
376
- self::install();
377
- }
378
- }
379
-
380
  /**
381
  * Check if the styles are updated when a form is loaded on the front-end
382
  *
@@ -451,17 +453,6 @@ class FrmAppController {
451
  wp_die();
452
  }
453
 
454
- /**
455
- * @deprecated 3.0.04
456
- * @codeCoverageIgnore
457
- */
458
- public static function activation_install() {
459
- _deprecated_function( __METHOD__, '3.0.04', 'FrmAppController::install' );
460
- FrmDb::delete_cache_and_transient( 'frm_plugin_version' );
461
- FrmFormActionsController::actions_init();
462
- self::install();
463
- }
464
-
465
  public static function install() {
466
  $frmdb = new FrmMigrate();
467
  $frmdb->upgrade();
@@ -490,23 +481,6 @@ class FrmAppController {
490
  return $tables;
491
  }
492
 
493
- /**
494
- * Routes for wordpress pages -- we're just replacing content
495
- *
496
- * @deprecated 3.0
497
- * @codeCoverageIgnore
498
- */
499
- public static function page_route( $content ) {
500
- _deprecated_function( __METHOD__, '3.0' );
501
- global $post;
502
-
503
- if ( $post && isset( $_GET['form'] ) ) {
504
- $content = FrmFormsController::page_preview();
505
- }
506
-
507
- return $content;
508
- }
509
-
510
  public static function deauthorize() {
511
  FrmAppHelper::permission_check( 'frm_change_settings' );
512
  check_ajax_referer( 'frm_ajax', 'nonce' );
@@ -539,7 +513,41 @@ class FrmAppController {
539
  * @codeCoverageIgnore
540
  */
541
  public static function get_form_shortcode( $atts ) {
542
- _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form_shortcode()' );
543
- return FrmFormsController::get_form_shortcode( $atts );
544
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
545
  }
30
  * @since 3.0
31
  */
32
  private static function is_white_page() {
33
+ $is_white_page = ( FrmAppHelper::is_admin_page( 'formidable' ) || FrmAppHelper::is_admin_page( 'formidable-entries' ) || FrmAppHelper::is_admin_page( 'formidable-pro-upgrade' ) || FrmAppHelper::is_admin_page( 'formidable-addons' ) );
34
  if ( ! $is_white_page ) {
35
  $screen = get_current_screen();
36
  $is_white_page = ( $screen && $screen->id === 'edit-frm_display' );
118
 
119
  public static function pro_get_started_headline() {
120
  self::maybe_show_upgrade_bar();
121
+ self::review_request();
122
 
123
  // Don't display this error as we're upgrading the thing, or if the user shouldn't see the message
124
  if ( 'upgrade-plugin' == FrmAppHelper::simple_get( 'action', 'sanitize_title' ) || ! current_user_can( 'update_plugins' ) ) {
126
  }
127
 
128
  $pro_installed = is_dir( WP_PLUGIN_DIR . '/formidable-pro' );
129
+ $authorized = get_site_option( 'frmpro-authorized' ) && ! is_callable( 'load_formidable_pro' );
130
+ if ( ! $authorized ) {
131
+ return;
132
+ }
133
 
134
+ FrmAppHelper::load_admin_wide_js();
 
135
 
136
+ // user is authorized, but running free version
137
+ $download_url = '';
138
+ if ( $pro_installed ) {
139
+ // if pro version is installed, include link to activate it
140
+ $inst_install_url = wp_nonce_url( self_admin_url( 'plugins.php?action=activate&plugin=formidable-pro/formidable-pro.php' ), 'activate-plugin_formidable-pro/formidable-pro.php' );
141
+ } else {
142
+ $inst_install_url = '#';
143
+ $download_url = FrmAddonsController::get_pro_download_url();
144
 
145
+ if ( empty( $download_url ) ) {
 
 
 
146
  $inst_install_url = 'https://formidableforms.com/knowledgebase/install-formidable-forms/?utm_source=WordPress&utm_medium=get-started&utm_campaign=liteplugin';
147
  }
148
+ }
149
  ?>
150
+ <div class="error frm_previous_install">
151
  <?php
152
  echo apply_filters( // WPCS: XSS ok.
153
  'frm_pro_update_msg',
154
  sprintf(
155
  esc_html__( 'This site has been previously authorized to run Formidable Forms. %1$sInstall Formidable Pro%2$s or %3$sdeauthorize%4$s this site to continue running the free version and remove this message.', 'formidable' ),
156
+ '<br/><a href="' . esc_url( $inst_install_url ) . '" id="frm_install_link" target="_blank" data-prourl="' . esc_url( $download_url ) . '">',
157
  '</a>',
158
  '<a href="#" class="frm_deauthorize_link">',
159
  '</a>'
161
  esc_url( $inst_install_url )
162
  );
163
  ?>
164
+ <div id="frm_install_message" class="hidden frm_hidden"></div>
165
  </div>
166
  <?php
 
167
  }
168
 
169
  private static function maybe_show_upgrade_bar() {
170
+ if ( ! FrmAppHelper::is_formidable_admin() || FrmAppHelper::pro_is_installed() ) {
 
 
 
 
 
171
  return;
172
  }
173
 
185
  }
186
  }
187
 
188
+ /**
189
+ * Add admin notices as needed for reviews
190
+ *
191
+ * @since 3.04.03
192
+ */
193
+ private static function review_request() {
194
+ $reviews = new FrmReviews();
195
+ $reviews->review_request();
196
+ }
197
+
198
+ /**
199
+ * Save the request to hide the review
200
+ *
201
+ * @since 3.04.03
202
+ */
203
+ public static function dismiss_review() {
204
+ FrmAppHelper::permission_check( 'frm_change_settings' );
205
+ check_ajax_referer( 'frm_ajax', 'nonce' );
206
+
207
+ $reviews = new FrmReviews();
208
+ $reviews->dismiss_review();
209
+ }
210
+
211
  /**
212
  * @since 3.04.02
213
  */
379
  load_plugin_textdomain( 'formidable', false, FrmAppHelper::plugin_folder() . '/languages/' );
380
  }
381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  /**
383
  * Check if the styles are updated when a form is loaded on the front-end
384
  *
453
  wp_die();
454
  }
455
 
 
 
 
 
 
 
 
 
 
 
 
456
  public static function install() {
457
  $frmdb = new FrmMigrate();
458
  $frmdb->upgrade();
481
  return $tables;
482
  }
483
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
  public static function deauthorize() {
485
  FrmAppHelper::permission_check( 'frm_change_settings' );
486
  check_ajax_referer( 'frm_ajax', 'nonce' );
513
  * @codeCoverageIgnore
514
  */
515
  public static function get_form_shortcode( $atts ) {
516
+ return FrmDeprecated::get_form_shortcode( $atts );
 
517
  }
518
+
519
+ /**
520
+ * @deprecated 2.5.4
521
+ * @codeCoverageIgnore
522
+ */
523
+ public static function widget_text_filter( $content ) {
524
+ return FrmDeprecated::widget_text_filter( $content );
525
+ }
526
+
527
+ /**
528
+ * Deprecated in favor of wpmu_upgrade_site
529
+ *
530
+ * @deprecated 2.3
531
+ * @codeCoverageIgnore
532
+ */
533
+ public static function front_head() {
534
+ FrmDeprecated::front_head();
535
+ }
536
+
537
+
538
+ /**
539
+ * @deprecated 3.0.04
540
+ * @codeCoverageIgnore
541
+ */
542
+ public static function activation_install() {
543
+ FrmDeprecated::activation_install();
544
+ }
545
+
546
+ /**
547
+ * @deprecated 3.0
548
+ * @codeCoverageIgnore
549
+ */
550
+ public static function page_route( $content ) {
551
+ return FrmDeprecated::page_route( $content );
552
+ }
553
  }
classes/controllers/FrmEntriesController.php CHANGED
@@ -551,24 +551,6 @@ class FrmEntriesController {
551
  return $form_ids;
552
  }
553
 
554
- /**
555
- * @deprecated 1.07.05
556
- * @codeCoverageIgnore
557
- */
558
- public static function show_form( $id = '', $key = '', $title = false, $description = false ) {
559
- _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::show_form()' );
560
- return FrmFormsController::show_form( $id, $key, $title, $description );
561
- }
562
-
563
- /**
564
- * @deprecated 1.07.05
565
- * @codeCoverageIgnore
566
- */
567
- public static function get_form( $filename, $form, $title, $description ) {
568
- _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form()' );
569
- return FrmFormsController::get_form( $form, $title, $description );
570
- }
571
-
572
  public static function process_entry( $errors = '', $ajax = false ) {
573
  $form_id = FrmAppHelper::get_post_param( 'form_id', '', 'absint' );
574
  if ( FrmAppHelper::is_admin() || empty( $_POST ) || empty( $form_id ) || ! isset( $_POST['item_key'] ) ) {
@@ -731,4 +713,20 @@ class FrmEntriesController {
731
 
732
  include( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/sidebar-shared.php' );
733
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
734
  }
551
  return $form_ids;
552
  }
553
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
554
  public static function process_entry( $errors = '', $ajax = false ) {
555
  $form_id = FrmAppHelper::get_post_param( 'form_id', '', 'absint' );
556
  if ( FrmAppHelper::is_admin() || empty( $_POST ) || empty( $form_id ) || ! isset( $_POST['item_key'] ) ) {
713
 
714
  include( FrmAppHelper::plugin_path() . '/classes/views/frm-entries/sidebar-shared.php' );
715
  }
716
+
717
+ /**
718
+ * @deprecated 1.07.05
719
+ * @codeCoverageIgnore
720
+ */
721
+ public static function show_form( $id = '', $key = '', $title = false, $description = false ) {
722
+ return FrmDeprecated::show_form( $id, $key, $title, $description );
723
+ }
724
+
725
+ /**
726
+ * @deprecated 1.07.05
727
+ * @codeCoverageIgnore
728
+ */
729
+ public static function get_form( $filename, $form, $title, $description ) {
730
+ return FrmDeprecated::get_form( $filename, $form, $title, $description );
731
+ }
732
  }
classes/controllers/FrmFieldsController.php CHANGED
@@ -98,40 +98,6 @@ class FrmFieldsController {
98
  return $field;
99
  }
100
 
101
- /**
102
- * @deprecated 3.0
103
- * @codeCoverageIgnore
104
- */
105
- public static function edit_name( $field = 'name', $id = '' ) {
106
- _deprecated_function( __FUNCTION__, '3.0' );
107
-
108
- FrmAppHelper::permission_check( 'frm_edit_forms' );
109
- check_ajax_referer( 'frm_ajax', 'nonce' );
110
-
111
- if ( empty( $field ) ) {
112
- $field = 'name';
113
- }
114
-
115
- if ( empty( $id ) ) {
116
- $id = FrmAppHelper::get_post_param( 'element_id', '', 'sanitize_title' );
117
- $id = str_replace( 'field_label_', '', $id );
118
- }
119
-
120
- $value = FrmAppHelper::get_post_param( 'update_value', '', 'wp_kses_post' );
121
- $value = trim( $value );
122
- if ( trim( strip_tags( $value ) ) === '' ) {
123
- // set blank value if there is no content
124
- $value = '';
125
- }
126
-
127
- FrmField::update( $id, array( $field => $value ) );
128
-
129
- do_action( 'frm_after_update_field_' . $field, compact( 'id', 'value' ) );
130
-
131
- echo stripslashes( wp_kses_post( $value ) ); // WPCS: XSS ok.
132
- wp_die();
133
- }
134
-
135
  public static function update_ajax_option() {
136
  FrmAppHelper::permission_check( 'frm_edit_forms' );
137
  check_ajax_referer( 'frm_ajax', 'nonce' );
@@ -188,27 +154,6 @@ class FrmFieldsController {
188
  wp_die();
189
  }
190
 
191
- /**
192
- * Load a single field in the form builder along with all needed variables
193
- *
194
- * @deprecated 3.0
195
- * @codeCoverageIgnore
196
- *
197
- * @param int $field_id
198
- * @param array $values
199
- * @param int $form_id
200
- *
201
- * @return array
202
- */
203
- public static function include_single_field( $field_id, $values, $form_id = 0 ) {
204
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldsController::load_single_field' );
205
-
206
- $field = FrmFieldsHelper::setup_edit_vars( FrmField::getOne( $field_id ) );
207
- self::load_single_field( $field, $values, $form_id );
208
-
209
- return $field;
210
- }
211
-
212
  /**
213
  * @since 3.0
214
  *
@@ -319,22 +264,6 @@ class FrmFieldsController {
319
  wp_die();
320
  }
321
 
322
- /**
323
- * @deprecated 2.3
324
- * @codeCoverageIgnore
325
- */
326
- public static function edit_option() {
327
- _deprecated_function( __FUNCTION__, '2.3' );
328
- }
329
-
330
- /**
331
- * @deprecated 2.3
332
- * @codeCoverageIgnore
333
- */
334
- public static function delete_option() {
335
- _deprecated_function( __FUNCTION__, '2.3' );
336
- }
337
-
338
  public static function import_choices() {
339
  FrmAppHelper::permission_check( 'frm_edit_forms', 'hide' );
340
 
@@ -765,4 +694,42 @@ class FrmFieldsController {
765
 
766
  return $opt;
767
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
768
  }
98
  return $field;
99
  }
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  public static function update_ajax_option() {
102
  FrmAppHelper::permission_check( 'frm_edit_forms' );
103
  check_ajax_referer( 'frm_ajax', 'nonce' );
154
  wp_die();
155
  }
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  /**
158
  * @since 3.0
159
  *
264
  wp_die();
265
  }
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  public static function import_choices() {
268
  FrmAppHelper::permission_check( 'frm_edit_forms', 'hide' );
269
 
694
 
695
  return $opt;
696
  }
697
+
698
+ /**
699
+ * @deprecated 3.0
700
+ * @codeCoverageIgnore
701
+ */
702
+ public static function edit_name( $field = 'name', $id = '' ) {
703
+ FrmDeprecated::edit_name( $field, $id );
704
+ }
705
+
706
+ /**
707
+ * @deprecated 3.0
708
+ * @codeCoverageIgnore
709
+ *
710
+ * @param int $field_id
711
+ * @param array $values
712
+ * @param int $form_id
713
+ *
714
+ * @return array
715
+ */
716
+ public static function include_single_field( $field_id, $values, $form_id = 0 ) {
717
+ return FrmDeprecated::include_single_field( $field_id, $values, $form_id );
718
+ }
719
+
720
+ /**
721
+ * @deprecated 2.3
722
+ * @codeCoverageIgnore
723
+ */
724
+ public static function edit_option() {
725
+ FrmDeprecated::deprecated( __METHOD__, '2.3' );
726
+ }
727
+
728
+ /**
729
+ * @deprecated 2.3
730
+ * @codeCoverageIgnore
731
+ */
732
+ public static function delete_option() {
733
+ FrmDeprecated::deprecated( __METHOD__, '2.3' );
734
+ }
735
  }
classes/controllers/FrmFormsController.php CHANGED
@@ -1011,52 +1011,6 @@ class FrmFormsController {
1011
  return $errors;
1012
  }
1013
 
1014
- /**
1015
- * @deprecated 1.07.05
1016
- * @codeCoverageIgnore
1017
- */
1018
- public static function add_default_templates( $path, $default = true, $template = true ) {
1019
- _deprecated_function( __FUNCTION__, '1.07.05', 'FrmXMLController::add_default_templates()' );
1020
-
1021
- $path = untrailingslashit( trim( $path ) );
1022
- $templates = glob( $path . '/*.php' );
1023
-
1024
- for ( $i = count( $templates ) - 1; $i >= 0; $i-- ) {
1025
- $filename = str_replace( '.php', '', str_replace( $path . '/', '', $templates[ $i ] ) );
1026
- $template_query = array( 'form_key' => $filename );
1027
- if ( $template ) {
1028
- $template_query['is_template'] = 1;
1029
- }
1030
- if ( $default ) {
1031
- $template_query['default_template'] = 1;
1032
- }
1033
- $form = FrmForm::getAll( $template_query, '', 1 );
1034
-
1035
- $values = FrmFormsHelper::setup_new_vars();
1036
- $values['form_key'] = $filename;
1037
- $values['is_template'] = $template;
1038
- $values['status'] = 'published';
1039
- if ( $default ) {
1040
- $values['default_template'] = 1;
1041
- }
1042
-
1043
- include( $templates[ $i ] );
1044
-
1045
- //get updated form
1046
- if ( isset( $form ) && ! empty( $form ) ) {
1047
- $old_id = $form->id;
1048
- $form = FrmForm::getOne( $form->id );
1049
- } else {
1050
- $old_id = false;
1051
- $form = FrmForm::getAll( $template_query, '', 1 );
1052
- }
1053
-
1054
- if ( $form ) {
1055
- do_action( 'frm_after_duplicate_form', $form->id, (array) $form, array( 'old_id' => $old_id ) );
1056
- }
1057
- }
1058
- }
1059
-
1060
  public static function route() {
1061
  $action = isset( $_REQUEST['frm_action'] ) ? 'frm_action' : 'action';
1062
  $vars = array();
@@ -1697,19 +1651,20 @@ class FrmFormsController {
1697
  return isset( $atts['minimize'] ) && ! empty( $atts['minimize'] );
1698
  }
1699
 
 
 
 
 
 
 
 
 
1700
  /**
1701
  * @deprecated 3.0
1702
  * @codeCoverageIgnore
1703
  */
1704
  public static function bulk_create_template( $ids ) {
1705
- _deprecated_function( __METHOD__, '3.0', 'FrmForm::duplicate( $id, true, true )' );
1706
- FrmAppHelper::permission_check( 'frm_edit_forms' );
1707
-
1708
- foreach ( $ids as $id ) {
1709
- FrmForm::duplicate( $id, true, true );
1710
- }
1711
-
1712
- return __( 'Form template was Successfully Created', 'formidable' );
1713
  }
1714
 
1715
  /**
@@ -1717,10 +1672,7 @@ class FrmFormsController {
1717
  * @codeCoverageIgnore
1718
  */
1719
  public static function register_pro_scripts() {
1720
- _deprecated_function( __FUNCTION__, '2.03', 'FrmProEntriesController::register_scripts' );
1721
- if ( FrmAppHelper::pro_is_installed() ) {
1722
- FrmProEntriesController::register_scripts();
1723
- }
1724
  }
1725
 
1726
  /**
@@ -1728,10 +1680,7 @@ class FrmFormsController {
1728
  * @codeCoverageIgnore
1729
  */
1730
  public static function edit_key() {
1731
- _deprecated_function( __METHOD__, '3.0' );
1732
- $values = self::edit_in_place_value( 'form_key' );
1733
- echo wp_kses( stripslashes( FrmForm::get_key_by_id( $values['form_id'] ) ), array() );
1734
- wp_die();
1735
  }
1736
 
1737
  /**
@@ -1739,28 +1688,6 @@ class FrmFormsController {
1739
  * @codeCoverageIgnore
1740
  */
1741
  public static function edit_description() {
1742
- _deprecated_function( __METHOD__, '3.0' );
1743
- $values = self::edit_in_place_value( 'description' );
1744
- echo wp_kses_post( FrmAppHelper::use_wpautop( stripslashes( $values['description'] ) ) );
1745
- wp_die();
1746
- }
1747
-
1748
- /**
1749
- * @deprecated 3.0
1750
- * @codeCoverageIgnore
1751
- */
1752
- private static function edit_in_place_value( $field ) {
1753
- _deprecated_function( __METHOD__, '3.0' );
1754
- check_ajax_referer( 'frm_ajax', 'nonce' );
1755
- FrmAppHelper::permission_check( 'frm_edit_forms', 'hide' );
1756
-
1757
- $form_id = FrmAppHelper::get_post_param( 'form_id', '', 'absint' );
1758
- $value = FrmAppHelper::get_post_param( 'update_value', '', 'wp_filter_post_kses' );
1759
-
1760
- $values = array( $field => trim( $value ) );
1761
- FrmForm::update( $form_id, $values );
1762
- $values['form_id'] = $form_id;
1763
-
1764
- return $values;
1765
  }
1766
  }
1011
  return $errors;
1012
  }
1013
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1014
  public static function route() {
1015
  $action = isset( $_REQUEST['frm_action'] ) ? 'frm_action' : 'action';
1016
  $vars = array();
1651
  return isset( $atts['minimize'] ) && ! empty( $atts['minimize'] );
1652
  }
1653
 
1654
+ /**
1655
+ * @deprecated 1.07.05
1656
+ * @codeCoverageIgnore
1657
+ */
1658
+ public static function add_default_templates( $path, $default = true, $template = true ) {
1659
+ FrmDeprecated::add_default_templates( $path, $default, $template );
1660
+ }
1661
+
1662
  /**
1663
  * @deprecated 3.0
1664
  * @codeCoverageIgnore
1665
  */
1666
  public static function bulk_create_template( $ids ) {
1667
+ return FrmDeprecated::bulk_create_template( $ids );
 
 
 
 
 
 
 
1668
  }
1669
 
1670
  /**
1672
  * @codeCoverageIgnore
1673
  */
1674
  public static function register_pro_scripts() {
1675
+ FrmDeprecated::register_pro_scripts();
 
 
 
1676
  }
1677
 
1678
  /**
1680
  * @codeCoverageIgnore
1681
  */
1682
  public static function edit_key() {
1683
+ FrmDeprecated::edit_key();
 
 
 
1684
  }
1685
 
1686
  /**
1688
  * @codeCoverageIgnore
1689
  */
1690
  public static function edit_description() {
1691
+ FrmDeprecated::edit_description();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1692
  }
1693
  }
classes/controllers/FrmHooksController.php CHANGED
@@ -85,10 +85,11 @@ class FrmHooksController {
85
  add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
86
  add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
87
  add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
 
88
 
89
  // Addons Controller
90
  add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
91
- add_filter( 'upgrader_pre_download', 'FrmAddonsController::add_shorten_edd_filename_filter', 10, 4 );
92
 
93
  // Entries Controller
94
  add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
@@ -137,7 +138,6 @@ class FrmHooksController {
137
  // Addons
138
  add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
139
  add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
140
- add_action( 'wp_ajax_frm_fill_licenses', 'FrmAddonsController::get_licenses' );
141
  add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
142
 
143
  // Fields Controller
85
  add_action( 'admin_init', 'FrmAppController::admin_init', 11 );
86
  add_filter( 'plugin_action_links_' . FrmAppHelper::plugin_folder() . '/formidable.php', 'FrmAppController::settings_link' );
87
  add_filter( 'admin_footer_text', 'FrmAppController::set_footer_text' );
88
+ add_action( 'wp_ajax_frm_dismiss_review', 'FrmAppController::dismiss_review' );
89
 
90
  // Addons Controller
91
  add_action( 'admin_menu', 'FrmAddonsController::menu', 100 );
92
+ add_filter( 'pre_set_site_transient_update_plugins', 'FrmAddonsController::check_update' );
93
 
94
  // Entries Controller
95
  add_action( 'admin_menu', 'FrmEntriesController::menu', 12 );
138
  // Addons
139
  add_action( 'wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
140
  add_action( 'wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
 
141
  add_action( 'wp_ajax_frm_install_addon', 'FrmAddonsController::ajax_install_addon' );
142
 
143
  // Fields Controller
classes/controllers/FrmSettingsController.php CHANGED
@@ -33,12 +33,24 @@ class FrmSettingsController {
33
  private static function get_settings_tabs() {
34
  $sections = array();
35
  if ( apply_filters( 'frm_include_addon_page', false ) ) {
36
- $sections['licenses'] = array(
37
- 'class' => 'FrmAddonsController',
38
- 'function' => 'license_settings',
39
- 'name' => __( 'Plugin Licenses', 'formidable' ),
40
- 'ajax' => true,
41
- );
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
43
  $sections = apply_filters( 'frm_add_settings_section', $sections );
44
 
@@ -149,7 +161,7 @@ class FrmSettingsController {
149
  public static function settings_cta_dismiss() {
150
  FrmAppHelper::permission_check( 'frm_change_settings' );
151
 
152
- update_option( 'frm_lite_settings_upgrade', time() );
153
 
154
  wp_send_json_success();
155
  }
33
  private static function get_settings_tabs() {
34
  $sections = array();
35
  if ( apply_filters( 'frm_include_addon_page', false ) ) {
36
+ // if no addons need a license, skip this page
37
+ $show_licenses = false;
38
+ $installed_addons = apply_filters( 'frm_installed_addons', array() );
39
+ foreach ( $installed_addons as $installed_addon ) {
40
+ if ( ! $installed_addon->is_parent_licence && $installed_addon->plugin_name != 'Formidable Pro' ) {
41
+ $show_licenses = true;
42
+ break;
43
+ }
44
+ }
45
+
46
+ if ( $show_licenses ) {
47
+ $sections['licenses'] = array(
48
+ 'class' => 'FrmAddonsController',
49
+ 'function' => 'license_settings',
50
+ 'name' => __( 'Plugin Licenses', 'formidable' ),
51
+ 'ajax' => true,
52
+ );
53
+ }
54
  }
55
  $sections = apply_filters( 'frm_add_settings_section', $sections );
56
 
161
  public static function settings_cta_dismiss() {
162
  FrmAppHelper::permission_check( 'frm_change_settings' );
163
 
164
+ update_option( 'frm_lite_settings_upgrade', time(), 'no' );
165
 
166
  wp_send_json_success();
167
  }
classes/helpers/FrmAppHelper.php CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
11
  /**
12
  * @since 2.0
13
  */
14
- public static $plug_version = '3.04.02';
15
 
16
  /**
17
  * @since 1.07.02
@@ -409,15 +409,6 @@ class FrmAppHelper {
409
  }
410
  }
411
 
412
- /**
413
- * @deprecated 3.01
414
- * @codeCoverageIgnore
415
- */
416
- public static function sanitize_array( &$values ) {
417
- _deprecated_function( __METHOD__, '3.01', 'FrmAppHelper::sanitize_value' );
418
- self::sanitize_value( 'wp_kses_post', $values );
419
- }
420
-
421
  /**
422
  * Sanitize the value, and allow some HTML
423
  * @since 2.0
@@ -634,17 +625,6 @@ class FrmAppHelper {
634
  return ( true === $value || 1 == $value || 'true' == $value || 'yes' == $value );
635
  }
636
 
637
- /**
638
- * Used to filter shortcode in text widgets
639
- *
640
- * @deprecated 2.5.4
641
- * @codeCoverageIgnore
642
- */
643
- public static function widget_text_filter_callback( $matches ) {
644
- _deprecated_function( __METHOD__, '2.5.4' );
645
- return do_shortcode( $matches[0] );
646
- }
647
-
648
  public static function get_pages() {
649
  $query = array(
650
  'post_type' => 'page',
@@ -1810,8 +1790,24 @@ class FrmAppHelper {
1810
  }
1811
 
1812
  /**
1813
- * Prepare and save settings in styles and actions
1814
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1815
  * @param array $settings
1816
  * @param string $group
1817
  *
@@ -1820,29 +1816,19 @@ class FrmAppHelper {
1820
  * @codeCoverageIgnore
1821
  */
1822
  public static function save_settings( $settings, $group ) {
1823
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1824
- return FrmDb::save_settings( $settings, $group );
1825
  }
1826
 
1827
  /**
1828
- * Since actions are JSON encoded, we don't want any filters messing with it.
1829
- * Remove the filters and then add them back in case any posts or views are
1830
- * also being imported.
1831
- *
1832
- * Used when saving form actions and styles
1833
- *
1834
  * @since 2.0.4
1835
  * @deprecated 2.05.06
1836
  * @codeCoverageIgnore
1837
  */
1838
  public static function save_json_post( $settings ) {
1839
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1840
- return FrmDb::save_json_post( $settings );
1841
  }
1842
 
1843
  /**
1844
- * Check cache before fetching values and saving to cache
1845
- *
1846
  * @since 2.0
1847
  * @deprecated 2.05.06
1848
  * @codeCoverageIgnore
@@ -1854,8 +1840,7 @@ class FrmAppHelper {
1854
  * @return mixed $results The cache or query results
1855
  */
1856
  public static function check_cache( $cache_key, $group = '', $query = '', $type = 'get_var', $time = 300 ) {
1857
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1858
- return FrmDb::check_cache( $cache_key, $group, $query, $type, $time );
1859
  }
1860
 
1861
  /**
@@ -1863,19 +1848,15 @@ class FrmAppHelper {
1863
  * @codeCoverageIgnore
1864
  */
1865
  public static function set_cache( $cache_key, $results, $group = '', $time = 300 ) {
1866
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1867
- FrmDb::set_cache( $cache_key, $results, $group, $time );
1868
  }
1869
 
1870
  /**
1871
- * Keep track of the keys cached in each group so they can be deleted
1872
- * in Redis and Memcache
1873
  * @deprecated 2.05.06
1874
  * @codeCoverageIgnore
1875
  */
1876
  public static function add_key_to_group_cache( $key, $group ) {
1877
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1878
- FrmDb::add_key_to_group_cache( $key, $group );
1879
  }
1880
 
1881
  /**
@@ -1883,8 +1864,7 @@ class FrmAppHelper {
1883
  * @codeCoverageIgnore
1884
  */
1885
  public static function get_group_cached_keys( $group ) {
1886
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1887
- return FrmDb::get_group_cached_keys( $group );
1888
  }
1889
 
1890
  /**
@@ -1894,8 +1874,7 @@ class FrmAppHelper {
1894
  * @return mixed The cached value or false
1895
  */
1896
  public static function check_cache_and_transient( $cache_key ) {
1897
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1898
- return FrmDb::check_cache( $cache_key );
1899
  }
1900
 
1901
  /**
@@ -1905,8 +1884,7 @@ class FrmAppHelper {
1905
  * @param string $cache_key
1906
  */
1907
  public static function delete_cache_and_transient( $cache_key, $group = 'default' ) {
1908
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1909
- FrmDb::delete_cache_and_transient( $cache_key, $group );
1910
  }
1911
 
1912
  /**
@@ -1917,13 +1895,10 @@ class FrmAppHelper {
1917
  * @param string $group The name of the cache group
1918
  */
1919
  public static function cache_delete_group( $group ) {
1920
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1921
- FrmDb::cache_delete_group( $group );
1922
  }
1923
 
1924
  /**
1925
- * Added for < WP 4.0 compatability
1926
- *
1927
  * @since 1.07.10
1928
  * @deprecated 2.05.06
1929
  * @codeCoverageIgnore
@@ -1932,8 +1907,7 @@ class FrmAppHelper {
1932
  * @return string The escaped value
1933
  */
1934
  public static function esc_like( $term ) {
1935
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1936
- return FrmDb::esc_like( $term );
1937
  }
1938
 
1939
  /**
@@ -1942,18 +1916,15 @@ class FrmAppHelper {
1942
  * @codeCoverageIgnore
1943
  */
1944
  public static function esc_order( $order_query ) {
1945
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1946
- return FrmDb::esc_order( $order_query );
1947
  }
1948
 
1949
  /**
1950
- * Make sure this is ordering by either ASC or DESC
1951
  * @deprecated 2.05.06
1952
  * @codeCoverageIgnore
1953
  */
1954
  public static function esc_order_by( &$order_by ) {
1955
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1956
- FrmDb::esc_order_by( $order_by );
1957
  }
1958
 
1959
  /**
@@ -1962,19 +1933,16 @@ class FrmAppHelper {
1962
  * @codeCoverageIgnore
1963
  */
1964
  public static function esc_limit( $limit ) {
1965
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1966
- return FrmDb::esc_limit( $limit );
1967
  }
1968
 
1969
  /**
1970
- * Get an array of values ready to go through $wpdb->prepare
1971
  * @since 2.0
1972
  * @deprecated 2.05.06
1973
  * @codeCoverageIgnore
1974
  */
1975
  public static function prepare_array_values( $array, $type = '%s' ) {
1976
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1977
- return FrmDb::prepare_array_values( $array, $type );
1978
  }
1979
 
1980
  /**
@@ -1982,7 +1950,6 @@ class FrmAppHelper {
1982
  * @codeCoverageIgnore
1983
  */
1984
  public static function prepend_and_or_where( $starts_with = ' WHERE ', $where = '' ) {
1985
- _deprecated_function( __METHOD__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
1986
- return FrmDb::prepend_and_or_where( $starts_with, $where );
1987
  }
1988
  }
11
  /**
12
  * @since 2.0
13
  */
14
+ public static $plug_version = '3.04.03';
15
 
16
  /**
17
  * @since 1.07.02
409
  }
410
  }
411
 
 
 
 
 
 
 
 
 
 
412
  /**
413
  * Sanitize the value, and allow some HTML
414
  * @since 2.0
625
  return ( true === $value || 1 == $value || 'true' == $value || 'yes' == $value );
626
  }
627
 
 
 
 
 
 
 
 
 
 
 
 
628
  public static function get_pages() {
629
  $query = array(
630
  'post_type' => 'page',
1790
  }
1791
 
1792
  /**
1793
+ * Used to filter shortcode in text widgets
1794
  *
1795
+ * @deprecated 2.5.4
1796
+ * @codeCoverageIgnore
1797
+ */
1798
+ public static function widget_text_filter_callback( $matches ) {
1799
+ return FrmDeprecated::widget_text_filter_callback( $matches );
1800
+ }
1801
+
1802
+ /**
1803
+ * @deprecated 3.01
1804
+ * @codeCoverageIgnore
1805
+ */
1806
+ public static function sanitize_array( &$values ) {
1807
+ FrmDeprecated::sanitize_array( $values );
1808
+ }
1809
+
1810
+ /**
1811
  * @param array $settings
1812
  * @param string $group
1813
  *
1816
  * @codeCoverageIgnore
1817
  */
1818
  public static function save_settings( $settings, $group ) {
1819
+ return FrmDeprecated::save_settings( $settings, $group );
 
1820
  }
1821
 
1822
  /**
 
 
 
 
 
 
1823
  * @since 2.0.4
1824
  * @deprecated 2.05.06
1825
  * @codeCoverageIgnore
1826
  */
1827
  public static function save_json_post( $settings ) {
1828
+ return FrmDeprecated::save_json_post( $settings );
 
1829
  }
1830
 
1831
  /**
 
 
1832
  * @since 2.0
1833
  * @deprecated 2.05.06
1834
  * @codeCoverageIgnore
1840
  * @return mixed $results The cache or query results
1841
  */
1842
  public static function check_cache( $cache_key, $group = '', $query = '', $type = 'get_var', $time = 300 ) {
1843
+ return FrmDeprecated::check_cache( $cache_key, $group, $query, $type, $time );
 
1844
  }
1845
 
1846
  /**
1848
  * @codeCoverageIgnore
1849
  */
1850
  public static function set_cache( $cache_key, $results, $group = '', $time = 300 ) {
1851
+ return FrmDeprecated::set_cache( $cache_key, $results, $group, $time );
 
1852
  }
1853
 
1854
  /**
 
 
1855
  * @deprecated 2.05.06
1856
  * @codeCoverageIgnore
1857
  */
1858
  public static function add_key_to_group_cache( $key, $group ) {
1859
+ FrmDeprecated::add_key_to_group_cache( $key, $group );
 
1860
  }
1861
 
1862
  /**
1864
  * @codeCoverageIgnore
1865
  */
1866
  public static function get_group_cached_keys( $group ) {
1867
+ return FrmDeprecated::get_group_cached_keys( $group );
 
1868
  }
1869
 
1870
  /**
1874
  * @return mixed The cached value or false
1875
  */
1876
  public static function check_cache_and_transient( $cache_key ) {
1877
+ return FrmDeprecated::check_cache( $cache_key );
 
1878
  }
1879
 
1880
  /**
1884
  * @param string $cache_key
1885
  */
1886
  public static function delete_cache_and_transient( $cache_key, $group = 'default' ) {
1887
+ FrmDeprecated::delete_cache_and_transient( $cache_key, $group );
 
1888
  }
1889
 
1890
  /**
1895
  * @param string $group The name of the cache group
1896
  */
1897
  public static function cache_delete_group( $group ) {
1898
+ FrmDeprecated::cache_delete_group( $group );
 
1899
  }
1900
 
1901
  /**
 
 
1902
  * @since 1.07.10
1903
  * @deprecated 2.05.06
1904
  * @codeCoverageIgnore
1907
  * @return string The escaped value
1908
  */
1909
  public static function esc_like( $term ) {
1910
+ return FrmDeprecated::esc_like( $term );
 
1911
  }
1912
 
1913
  /**
1916
  * @codeCoverageIgnore
1917
  */
1918
  public static function esc_order( $order_query ) {
1919
+ return FrmDeprecated::esc_order( $order_query );
 
1920
  }
1921
 
1922
  /**
 
1923
  * @deprecated 2.05.06
1924
  * @codeCoverageIgnore
1925
  */
1926
  public static function esc_order_by( &$order_by ) {
1927
+ FrmDeprecated::esc_order_by( $order_by );
 
1928
  }
1929
 
1930
  /**
1933
  * @codeCoverageIgnore
1934
  */
1935
  public static function esc_limit( $limit ) {
1936
+ return FrmDeprecated::esc_limit( $limit );
 
1937
  }
1938
 
1939
  /**
 
1940
  * @since 2.0
1941
  * @deprecated 2.05.06
1942
  * @codeCoverageIgnore
1943
  */
1944
  public static function prepare_array_values( $array, $type = '%s' ) {
1945
+ return FrmDeprecated::prepare_array_values( $array, $type );
 
1946
  }
1947
 
1948
  /**
1950
  * @codeCoverageIgnore
1951
  */
1952
  public static function prepend_and_or_where( $starts_with = ' WHERE ', $where = '' ) {
1953
+ return FrmDeprecated::prepend_and_or_where( $starts_with, $where );
 
1954
  }
1955
  }
classes/helpers/FrmFieldsHelper.php CHANGED
@@ -321,24 +321,6 @@ class FrmFieldsHelper {
321
  }
322
  }
323
 
324
- /**
325
- * @deprecated 3.0
326
- * @codeCoverageIgnore
327
- *
328
- * @param string $html
329
- * @param array $field
330
- * @param array $errors
331
- * @param object $form
332
- * @param array $args
333
- *
334
- * @return string
335
- */
336
- public static function replace_shortcodes( $html, $field, $errors = array(), $form = false, $args = array() ) {
337
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::prepare_field_html' );
338
- $field_obj = FrmFieldFactory::get_field_type( $field['type'], $field );
339
- return $field_obj->prepare_field_html( compact( 'errors', 'form' ) );
340
- }
341
-
342
  /**
343
  * @since 3.0
344
  *
@@ -390,24 +372,6 @@ class FrmFieldsHelper {
390
  return ! in_array( $type, array( 'select', 'radio', 'checkbox', 'hidden', 'file' ) );
391
  }
392
 
393
- /**
394
- * @deprecated 3.0
395
- * @codeCoverageIgnore
396
- */
397
- public static function remove_inline_conditions( $no_vars, $code, $replace_with, &$html ) {
398
- _deprecated_function( __FUNCTION__, '3.0', 'FrmShortcodeHelper::remove_inline_conditions' );
399
- FrmShortcodeHelper::remove_inline_conditions( $no_vars, $code, $replace_with, $html );
400
- }
401
-
402
- /**
403
- * @deprecated 3.0
404
- * @codeCoverageIgnore
405
- */
406
- public static function get_shortcode_tag( $shortcodes, $short_key, $args ) {
407
- _deprecated_function( __FUNCTION__, '3.0', 'FrmShortcodeHelper::get_shortcode_tag' );
408
- return FrmShortcodeHelper::get_shortcode_tag( $shortcodes, $short_key, $args );
409
- }
410
-
411
  public static function get_checkbox_id( $field, $opt_key ) {
412
  $id = $field['id'];
413
  if ( isset( $field['in_section'] ) && $field['in_section'] ) {
@@ -416,14 +380,6 @@ class FrmFieldsHelper {
416
  return 'frm_checkbox_' . $id . '-' . $opt_key;
417
  }
418
 
419
- /**
420
- * @deprecated 3.0
421
- * @codeCoverageIgnore
422
- */
423
- public static function display_recaptcha( $field ) {
424
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldCaptcha::field_input' );
425
- }
426
-
427
  public static function show_single_option( $field ) {
428
  if ( ! is_array( $field['options'] ) ) {
429
  return;
@@ -1356,32 +1312,55 @@ class FrmFieldsHelper {
1356
  * @deprecated 3.0
1357
  * @codeCoverageIgnore
1358
  */
1359
- public static function get_default_field_opts( $type, $field = null, $limit = false ) {
1360
- if ( $limit ) {
1361
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldHelper::get_default_field_options' );
1362
- $field_options = self::get_default_field_options( $type );
1363
- } else {
1364
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldHelper::get_default_field' );
1365
- $field_options = self::get_default_field( $type );
1366
- }
1367
 
1368
- return $field_options;
 
 
 
 
 
1369
  }
1370
 
1371
  /**
1372
- * @deprecated 2.02.07
1373
  * @codeCoverageIgnore
1374
  */
1375
- public static function dropdown_categories( $args ) {
1376
- _deprecated_function( __FUNCTION__, '2.02.07', 'FrmProPost::get_category_dropdown' );
 
1377
 
1378
- if ( FrmAppHelper::pro_is_installed() ) {
1379
- $args['location'] = 'front';
1380
- $dropdown = FrmProPost::get_category_dropdown( $args['field'], $args );
1381
- } else {
1382
- $dropdown = '';
1383
- }
 
 
 
 
 
 
 
 
 
1384
 
1385
- return $dropdown;
 
 
 
 
 
 
 
 
 
 
 
 
 
1386
  }
1387
  }
321
  }
322
  }
323
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
324
  /**
325
  * @since 3.0
326
  *
372
  return ! in_array( $type, array( 'select', 'radio', 'checkbox', 'hidden', 'file' ) );
373
  }
374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  public static function get_checkbox_id( $field, $opt_key ) {
376
  $id = $field['id'];
377
  if ( isset( $field['in_section'] ) && $field['in_section'] ) {
380
  return 'frm_checkbox_' . $id . '-' . $opt_key;
381
  }
382
 
 
 
 
 
 
 
 
 
383
  public static function show_single_option( $field ) {
384
  if ( ! is_array( $field['options'] ) ) {
385
  return;
1312
  * @deprecated 3.0
1313
  * @codeCoverageIgnore
1314
  */
1315
+ public static function display_recaptcha() {
1316
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldCaptcha::field_input' );
1317
+ }
 
 
 
 
 
1318
 
1319
+ /**
1320
+ * @deprecated 3.0
1321
+ * @codeCoverageIgnore
1322
+ */
1323
+ public static function remove_inline_conditions( $no_vars, $code, $replace_with, &$html ) {
1324
+ FrmDeprecated::remove_inline_conditions( $no_vars, $code, $replace_with, $html );
1325
  }
1326
 
1327
  /**
1328
+ * @deprecated 3.0
1329
  * @codeCoverageIgnore
1330
  */
1331
+ public static function get_shortcode_tag( $shortcodes, $short_key, $args ) {
1332
+ return FrmDeprecated::get_shortcode_tag( $shortcodes, $short_key, $args );
1333
+ }
1334
 
1335
+ /**
1336
+ * @deprecated 3.0
1337
+ * @codeCoverageIgnore
1338
+ *
1339
+ * @param string $html
1340
+ * @param array $field
1341
+ * @param array $errors
1342
+ * @param object $form
1343
+ * @param array $args
1344
+ *
1345
+ * @return string
1346
+ */
1347
+ public static function replace_shortcodes( $html, $field, $errors = array(), $form = false, $args = array() ) {
1348
+ return FrmDeprecated::replace_shortcodes( $html, $field, $errors, $form, $args );
1349
+ }
1350
 
1351
+ /**
1352
+ * @deprecated 3.0
1353
+ * @codeCoverageIgnore
1354
+ */
1355
+ public static function get_default_field_opts( $type, $field = null, $limit = false ) {
1356
+ return FrmDeprecated::get_default_field_opts( $type, $field, $limit );
1357
+ }
1358
+
1359
+ /**
1360
+ * @deprecated 2.02.07
1361
+ * @codeCoverageIgnore
1362
+ */
1363
+ public static function dropdown_categories( $args ) {
1364
+ return FrmDeprecated::dropdown_categories( $args );
1365
  }
1366
  }
classes/helpers/FrmStylesHelper.php CHANGED
@@ -1,106 +1,6 @@
1
  <?php
2
  class FrmStylesHelper {
3
 
4
- /**
5
- * @deprecated 3.02.03
6
- * @codeCoverageIgnore
7
- */
8
- public static function jquery_themes() {
9
- _deprecated_function( __METHOD__, '3.02.03', 'FrmProStylesController::jquery_themes' );
10
-
11
- $themes = array(
12
- 'ui-lightness' => 'UI Lightness',
13
- 'ui-darkness' => 'UI Darkness',
14
- 'smoothness' => 'Smoothness',
15
- 'start' => 'Start',
16
- 'redmond' => 'Redmond',
17
- 'sunny' => 'Sunny',
18
- 'overcast' => 'Overcast',
19
- 'le-frog' => 'Le Frog',
20
- 'flick' => 'Flick',
21
- 'pepper-grinder' => 'Pepper Grinder',
22
- 'eggplant' => 'Eggplant',
23
- 'dark-hive' => 'Dark Hive',
24
- 'cupertino' => 'Cupertino',
25
- 'south-street' => 'South Street',
26
- 'blitzer' => 'Blitzer',
27
- 'humanity' => 'Humanity',
28
- 'hot-sneaks' => 'Hot Sneaks',
29
- 'excite-bike' => 'Excite Bike',
30
- 'vader' => 'Vader',
31
- 'dot-luv' => 'Dot Luv',
32
- 'mint-choc' => 'Mint Choc',
33
- 'black-tie' => 'Black Tie',
34
- 'trontastic' => 'Trontastic',
35
- 'swanky-purse' => 'Swanky Purse',
36
- );
37
-
38
- $themes = apply_filters( 'frm_jquery_themes', $themes );
39
- return $themes;
40
- }
41
-
42
- /**
43
- * @deprecated 3.02.03
44
- * @codeCoverageIgnore
45
- */
46
- public static function jquery_css_url( $theme_css ) {
47
- _deprecated_function( __METHOD__, '3.02.03', 'FrmProStylesController::jquery_css_url' );
48
-
49
- if ( $theme_css == -1 ) {
50
- return;
51
- }
52
-
53
- if ( ! $theme_css || $theme_css == '' || $theme_css == 'ui-lightness' ) {
54
- $css_file = FrmAppHelper::plugin_url() . '/css/ui-lightness/jquery-ui.css';
55
- } elseif ( preg_match( '/^http.?:\/\/.*\..*$/', $theme_css ) ) {
56
- $css_file = $theme_css;
57
- } else {
58
- $uploads = self::get_upload_base();
59
- $file_path = '/formidable/css/' . $theme_css . '/jquery-ui.css';
60
- if ( file_exists( $uploads['basedir'] . $file_path ) ) {
61
- $css_file = $uploads['baseurl'] . $file_path;
62
- } else {
63
- $css_file = FrmAppHelper::jquery_ui_base_url() . '/themes/' . $theme_css . '/jquery-ui.min.css';
64
- }
65
- }
66
-
67
- return $css_file;
68
- }
69
-
70
- /**
71
- * @deprecated 3.02.03
72
- * @codeCoverageIgnore
73
- */
74
- public static function enqueue_jquery_css() {
75
- _deprecated_function( __METHOD__, '3.02.03', 'FrmProStylesController::enqueue_jquery_css' );
76
-
77
- $form = self::get_form_for_page();
78
- $theme_css = FrmStylesController::get_style_val( 'theme_css', $form );
79
- if ( $theme_css != -1 ) {
80
- wp_enqueue_style( 'jquery-theme', self::jquery_css_url( $theme_css ), array(), FrmAppHelper::plugin_version() );
81
- }
82
- }
83
-
84
- /**
85
- * @deprecated 3.02.03
86
- * @codeCoverageIgnore
87
- */
88
- public static function get_form_for_page() {
89
- _deprecated_function( __METHOD__, '3.02.03' );
90
-
91
- global $frm_vars;
92
- $form_id = 'default';
93
- if ( ! empty( $frm_vars['forms_loaded'] ) ) {
94
- foreach ( $frm_vars['forms_loaded'] as $form ) {
95
- if ( is_object( $form ) ) {
96
- $form_id = $form->id;
97
- break;
98
- }
99
- }
100
- }
101
- return $form_id;
102
- }
103
-
104
  public static function get_upload_base() {
105
  $uploads = wp_upload_dir();
106
  if ( is_ssl() && ! preg_match( '/^https:\/\/.*\..*$/', $uploads['baseurl'] ) ) {
@@ -429,7 +329,38 @@ class FrmStylesHelper {
429
  * @codeCoverageIgnore
430
  */
431
  public static function get_sigle_label_postitions() {
432
- _deprecated_function( __METHOD__, '3.01', 'FrmStylesHelper::get_single_label_positions' );
433
- return FrmStylesHelper::get_single_label_positions();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
434
  }
435
  }
1
  <?php
2
  class FrmStylesHelper {
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  public static function get_upload_base() {
5
  $uploads = wp_upload_dir();
6
  if ( is_ssl() && ! preg_match( '/^https:\/\/.*\..*$/', $uploads['baseurl'] ) ) {
329
  * @codeCoverageIgnore
330
  */
331
  public static function get_sigle_label_postitions() {
332
+ return FrmDeprecated::get_single_label_positions();
333
+ }
334
+
335
+ /**
336
+ * @deprecated 3.02.03
337
+ * @codeCoverageIgnore
338
+ */
339
+ public static function jquery_themes() {
340
+ return FrmDeprecated::jquery_themes();
341
+ }
342
+
343
+ /**
344
+ * @deprecated 3.02.03
345
+ * @codeCoverageIgnore
346
+ */
347
+ public static function jquery_css_url( $theme_css ) {
348
+ return FrmDeprecated::jquery_css_url( $theme_css );
349
+ }
350
+
351
+ /**
352
+ * @deprecated 3.02.03
353
+ * @codeCoverageIgnore
354
+ */
355
+ public static function enqueue_jquery_css() {
356
+ FrmDeprecated::enqueue_jquery_css();
357
+ }
358
+
359
+ /**
360
+ * @deprecated 3.02.03
361
+ * @codeCoverageIgnore
362
+ */
363
+ public static function get_form_for_page() {
364
+ return FrmDeprecated::get_form_for_page();
365
  }
366
  }
classes/models/FrmAddon.php CHANGED
@@ -14,7 +14,9 @@ class FrmAddon {
14
  public $option_name;
15
  public $version;
16
  public $author = 'Strategy11';
17
- private $license;
 
 
18
  protected $get_beta = false;
19
 
20
  public function __construct() {
@@ -57,35 +59,101 @@ class FrmAddon {
57
  $this->is_license_revoked();
58
  $license = $this->license;
59
 
60
- if ( empty( $license ) ) {
61
- add_action( 'after_plugin_row_' . plugin_basename( $this->plugin_file ), array( $this, 'show_license_message' ), 10, 2 );
62
- } else {
63
 
64
- // setup the updater
65
- $api_data = array(
66
- 'version' => $this->version,
67
- 'license' => $license,
68
- 'author' => $this->author,
69
- 'beta' => $this->get_beta,
70
- );
71
- if ( is_numeric( $this->download_id ) ) {
72
- $api_data['item_id'] = $this->download_id;
73
- }
74
 
75
- $edd = new FrmEDD_SL_Plugin_Updater( $this->store_url, $this->plugin_file, $api_data );
76
- if ( 'formidable/formidable.php' === $this->plugin_folder ) {
77
- remove_filter( 'plugins_api', array( $edd, 'plugins_api_filter' ), 10, 3 );
78
  }
79
 
80
  add_filter( 'site_transient_update_plugins', array( &$this, 'clear_expired_download' ) );
81
  }
82
  }
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  public function get_license() {
 
 
 
 
 
85
  $license = trim( get_option( $this->option_name . 'key' ) );
86
  if ( empty( $license ) ) {
87
  $license = $this->activate_defined_license();
88
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  return $license;
90
  }
91
 
@@ -136,29 +204,75 @@ class FrmAddon {
136
  return get_option( $this->option_name . 'active' );
137
  }
138
 
 
 
 
 
 
 
 
 
 
 
139
  public function clear_license() {
140
  delete_option( $this->option_name . 'active' );
141
  delete_option( $this->option_name . 'key' );
142
  delete_site_option( $this->transient_key() );
143
  delete_option( $this->transient_key() );
144
- delete_transient( 'frm_api_licence' );
145
  }
146
 
147
  public function set_active( $is_active ) {
148
  update_option( $this->option_name . 'active', $is_active );
149
- delete_transient( 'frm_api_licence' );
150
  FrmAppHelper::save_combined_js();
151
  }
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  public function show_license_message( $file, $plugin ) {
154
- $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
155
- echo '<tr class="plugin-update-tr active"><td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange"><div class="update-message">';
 
 
 
 
 
 
 
 
 
 
 
 
156
 
157
- /* translators: %1$s: Plugin name, %2$s: Start link HTML, %3$s: end link HTML */
158
- printf( esc_html__( 'Your %1$s license key is missing. Please add it on the %2$slicenses page%3$s.', 'formidable' ), esc_html( $this->plugin_name ), '<a href="' . esc_url( admin_url( 'admin.php?page=formidable-settings&t=licenses_settings' ) ) . '">', '</a>' );
159
- $id = sanitize_title( $plugin['Name'] );
160
- echo '<script type="text/javascript">var d = document.getElementById("' . esc_attr( $id ) . '");if ( d !== null ){ d.className = d.className + " update"; }</script>';
161
- echo '</div></td></tr>';
 
162
  }
163
 
164
  public function clear_expired_download( $transient ) {
@@ -172,26 +286,14 @@ class FrmAddon {
172
  unset( $transient->response[ $this->plugin_folder ] );
173
  }
174
  } elseif ( isset( $transient->response ) && isset( $transient->response[ $this->plugin_folder ] ) ) {
175
- $cache_key = $this->version_cache_key();
176
- $version_info = get_option( $cache_key );
177
 
178
- $this->clear_old_plugin_version( $version_info );
179
-
180
- if ( is_array( $version_info ) && isset( $version_info['value'] ) ) {
181
- $version_info = json_decode( $version_info['value'] );
182
- $version_info->new_version = trim( $version_info->new_version, 'p' );
183
- }
184
-
185
- if ( false !== $version_info && version_compare( $version_info->new_version, $this->version, '>' ) ) {
186
- $transient->response[ $this->plugin_folder ] = $version_info;
187
- } else {
188
- delete_option( $cache_key );
189
  if ( ! $this->has_been_cleared() ) {
190
- // if the transient has expired, clear the update and trigger it again
191
  $this->cleared_plugins();
192
  $this->manually_queue_update();
193
  }
194
-
195
  unset( $transient->response[ $this->plugin_folder ] );
196
  }
197
  }
@@ -199,13 +301,53 @@ class FrmAddon {
199
  return $transient;
200
  }
201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
  /**
204
- * @since 2.05.05
 
 
205
  */
206
- private function version_cache_key() {
207
- $slug = basename( $this->plugin_file, '.php' );
208
- return md5( serialize( $slug . $this->version . $this->license . $this->get_beta ) );
 
 
 
 
 
 
 
 
 
 
 
209
  }
210
 
211
  /**
@@ -215,12 +357,25 @@ class FrmAddon {
215
  * @since 2.05.05
216
  */
217
  private function clear_old_plugin_version( &$version_info ) {
218
- if ( false !== $version_info ) {
219
- $timeout = ( isset( $version_info['timeout'] ) && ! empty( $version_info['timeout'] ) ) ? $version_info['timeout'] : 0;
220
- if ( empty( $timeout ) || current_time( 'timestamp' ) > $timeout ) {
221
- $version_info = false; // Cache is expired
222
- } elseif ( ( ! is_array( $version_info ) || ! isset( $version_info['value'] ) ) ) {
223
- $version_info = false; // the value isn't formated as expected
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  }
225
  }
226
  }
14
  public $option_name;
15
  public $version;
16
  public $author = 'Strategy11';
17
+ public $is_parent_licence = false;
18
+ private $is_expired_addon = false;
19
+ public $license;
20
  protected $get_beta = false;
21
 
22
  public function __construct() {
59
  $this->is_license_revoked();
60
  $license = $this->license;
61
 
62
+ add_action( 'after_plugin_row_' . plugin_basename( $this->plugin_file ), array( $this, 'maybe_show_license_message' ), 10, 2 );
 
 
63
 
64
+ if ( ! empty( $license ) ) {
 
 
 
 
 
 
 
 
 
65
 
66
+ if ( 'formidable/formidable.php' !== $this->plugin_folder ) {
67
+ add_filter( 'plugins_api', array( &$this, 'plugins_api_filter' ), 10, 3 );
 
68
  }
69
 
70
  add_filter( 'site_transient_update_plugins', array( &$this, 'clear_expired_download' ) );
71
  }
72
  }
73
 
74
+ /**
75
+ * Updates information on the "View version x.x details" page with custom data.
76
+ *
77
+ * @uses api_request()
78
+ *
79
+ * @param mixed $_data
80
+ * @param string $_action
81
+ * @param object $_args
82
+ * @return object $_data
83
+ */
84
+ public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
85
+
86
+ if ( $_action != 'plugin_information' ) {
87
+ return $_data;
88
+ }
89
+
90
+ $slug = basename( $this->plugin_file, '.php' );
91
+ if ( ! isset( $_args->slug ) || $_args->slug != $slug ) {
92
+ return $_data;
93
+ }
94
+
95
+ $item_id = $this->download_id;
96
+ if ( empty( $item_id ) ) {
97
+ $_data = array(
98
+ 'name' => $this->plugin_name,
99
+ 'excerpt' => '',
100
+ 'changelog' => 'See the full changelog at <a href="' . esc_url( $this->store_url . '/changelog/' ) . '"></a>',
101
+ 'banners' => array(
102
+ 'high' => '',
103
+ 'low' => 'https://ps.w.org/formidable/assets/banner-1544x500.png',
104
+ ),
105
+ );
106
+ } else {
107
+ $plugins = FrmAddonsController::get_addon_info( $this->license );
108
+ $_data = $plugins[ $item_id ];
109
+ }
110
+
111
+ $_data['sections'] = array(
112
+ 'description' => $_data['excerpt'],
113
+ 'changelog' => $_data['changelog'],
114
+ );
115
+ $_data['author'] = '<a href="' . esc_url( $this->store_url ) . '">' . esc_html( $this->author ) . '</a>';
116
+ $_data['homepage'] = $this->store_url;
117
+
118
+ return (object) $_data;
119
+ }
120
+
121
  public function get_license() {
122
+ $license = $this->maybe_get_pro_license();
123
+ if ( ! empty( $license ) ) {
124
+ return $license;
125
+ }
126
+
127
  $license = trim( get_option( $this->option_name . 'key' ) );
128
  if ( empty( $license ) ) {
129
  $license = $this->activate_defined_license();
130
  }
131
+
132
+ return $license;
133
+ }
134
+
135
+ /**
136
+ * @since 3.04.03
137
+ */
138
+ protected function maybe_get_pro_license() {
139
+ // prevent a loop if $this is the pro plugin
140
+ $get_license = FrmAppHelper::pro_is_installed() && is_callable( 'FrmProAppHelper::get_updater' ) && $this->plugin_name != 'Formidable Pro';
141
+
142
+ if ( ! $get_license ) {
143
+ return false;
144
+ }
145
+
146
+ $frmpro_updater = FrmAddonsController::get_pro_updater();
147
+ $license = $frmpro_updater->license;
148
+ if ( empty( $license ) ) {
149
+ return false;
150
+ }
151
+
152
+ $this->get_api_info( $license );
153
+ if ( ! $this->is_parent_licence ) {
154
+ $license = false;
155
+ }
156
+
157
  return $license;
158
  }
159
 
204
  return get_option( $this->option_name . 'active' );
205
  }
206
 
207
+ /**
208
+ * @since 3.04.03
209
+ * @param array error
210
+ */
211
+ public function maybe_clear_license( $error ) {
212
+ if ( $error['code'] === 'disabled' && $error['license'] === $this->license ) {
213
+ $this->clear_license();
214
+ }
215
+ }
216
+
217
  public function clear_license() {
218
  delete_option( $this->option_name . 'active' );
219
  delete_option( $this->option_name . 'key' );
220
  delete_site_option( $this->transient_key() );
221
  delete_option( $this->transient_key() );
222
+ $this->delete_cache();
223
  }
224
 
225
  public function set_active( $is_active ) {
226
  update_option( $this->option_name . 'active', $is_active );
227
+ $this->delete_cache();
228
  FrmAppHelper::save_combined_js();
229
  }
230
 
231
+ /**
232
+ * @since 3.04.03
233
+ */
234
+ protected function delete_cache() {
235
+ delete_transient( 'frm_api_licence' );
236
+ delete_option( FrmAddonsController::get_cache_key( $this->license ) );
237
+ }
238
+
239
+ /**
240
+ * The Pro version includes the show_license_message function.
241
+ * We need an extra check before we allow it to show a message.
242
+ *
243
+ * @since 3.04.03
244
+ */
245
+ public function maybe_show_license_message( $file, $plugin ) {
246
+ if ( $this->is_expired_addon || isset( $plugin['package'] ) ) {
247
+ // let's not show a ton of duplicate messages
248
+ return;
249
+ }
250
+
251
+ $this->show_license_message( $file, $plugin );
252
+ }
253
+
254
  public function show_license_message( $file, $plugin ) {
255
+ $message = '';
256
+ if ( empty( $this->license ) ) {
257
+ /* translators: %1$s: Plugin name, %2$s: Start link HTML, %3$s: end link HTML */
258
+ $message = sprintf( esc_html__( 'Your %1$s license key is missing. Please add it on the %2$slicenses page%3$s.', 'formidable' ), esc_html( $this->plugin_name ), '<a href="' . esc_url( admin_url( 'admin.php?page=formidable-settings&t=licenses_settings' ) ) . '">', '</a>' );
259
+ } else {
260
+ $errors = FrmAddonsController::error_for_license( $this->license );
261
+ if ( ! empty( $errors ) ) {
262
+ $message = reset( $errors );
263
+ }
264
+ }
265
+
266
+ if ( empty( $message ) ) {
267
+ return;
268
+ }
269
 
270
+ $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
271
+ $id = sanitize_title( $plugin['Name'] ) . '-next';
272
+ echo '<tr class="plugin-update-tr active" id="' . esc_attr( $id ) . '"><td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange"><div class="update-message notice error inline notice-error notice-alt"><p>';
273
+ echo FrmAppHelper::kses( $message, 'a' ); // WPCS: XSS ok.
274
+ echo '<script type="text/javascript">var d = document.getElementById("' . esc_attr( $id ) . '").previousSibling;if ( d !== null ){ d.className = d.className + " update"; }</script>';
275
+ echo '</p></div></td></tr>';
276
  }
277
 
278
  public function clear_expired_download( $transient ) {
286
  unset( $transient->response[ $this->plugin_folder ] );
287
  }
288
  } elseif ( isset( $transient->response ) && isset( $transient->response[ $this->plugin_folder ] ) ) {
289
+ $this->prepare_update_details( $transient->response[ $this->plugin_folder ] );
 
290
 
291
+ // if the transient has expired, clear the update and trigger it again
292
+ if ( $transient->response[ $this->plugin_folder ] === false ) {
 
 
 
 
 
 
 
 
 
293
  if ( ! $this->has_been_cleared() ) {
 
294
  $this->cleared_plugins();
295
  $this->manually_queue_update();
296
  }
 
297
  unset( $transient->response[ $this->plugin_folder ] );
298
  }
299
  }
301
  return $transient;
302
  }
303
 
304
+ /**
305
+ * Check if the plugin information is correct to allow an update
306
+ *
307
+ * @since 3.04.03
308
+ * @param object $transient - the current plugin info saved for update
309
+ */
310
+ private function prepare_update_details( &$transient ) {
311
+ $version_info = $transient;
312
+ $has_beta_url = isset( $version_info->beta ) && ! empty( $version_info->beta );
313
+ if ( $this->get_beta && ! $has_beta_url ) {
314
+ $version_info = (object) $this->get_api_info( $this->license );
315
+ }
316
+
317
+ if ( isset( $version_info->new_version ) && ! empty( $version_info->new_version ) ) {
318
+ $this->clear_old_plugin_version( $version_info );
319
+ if ( $version_info === false ) { // was cleared with timeout
320
+ $transient = false;
321
+ } else {
322
+ $this->maybe_use_beta_url( $version_info );
323
+ $version_info->new_version = trim( $version_info->new_version, 'p' );
324
+
325
+ if ( version_compare( $version_info->new_version, $this->version, '>' ) ) {
326
+ $transient = $version_info;
327
+ }
328
+ }
329
+ }
330
+ }
331
 
332
  /**
333
+ * Get the API info for this plugin
334
+ *
335
+ * @since 3.04.03
336
  */
337
+ protected function get_api_info( $license ) {
338
+ $addons = FrmAddonsController::get_addon_info( $license );
339
+ $addon = FrmAddonsController::get_addon_for_license( $addons, $this );
340
+
341
+ // if there is no download url, this license does not apply to the addon
342
+ if ( isset( $addon['package'] ) ) {
343
+ $this->is_parent_licence = true;
344
+ } elseif ( isset( $addons['error'] ) ) {
345
+ // if the license is expired, we must assume all add-ons were packaged
346
+ $this->is_parent_licence = true;
347
+ $this->is_expired_addon = true;
348
+ }
349
+
350
+ return $addon;
351
  }
352
 
353
  /**
357
  * @since 2.05.05
358
  */
359
  private function clear_old_plugin_version( &$version_info ) {
360
+ $timeout = ( isset( $version_info->timeout ) && ! empty( $version_info->timeout ) ) ? $version_info->timeout : 0;
361
+ if ( ! empty( $timeout ) && time() > $timeout ) {
362
+ $version_info = false; // Cache is expired
363
+ FrmAddonsController::reset_cached_addons( $this->license );
364
+ }
365
+ }
366
+
367
+ /**
368
+ * The beta url is always included if the download has a beta.
369
+ * Check if the beta should be downloaded.
370
+ *
371
+ * @since 3.04.03
372
+ */
373
+ private function maybe_use_beta_url( &$version_info ) {
374
+ if ( $this->get_beta && isset( $version_info->beta ) && ! empty( $version_info->beta ) ) {
375
+ $version_info->new_version = $version_info->beta['version'];
376
+ $version_info->package = $version_info->beta['package'];
377
+ if ( isset( $version_info->plugin ) && ! empty( $version_info->plugin ) ) {
378
+ $version_info->plugin = $version_info->beta['plugin'];
379
  }
380
  }
381
  }
classes/models/FrmDb.php CHANGED
@@ -695,10 +695,7 @@ class FrmDb {
695
  * @codeCoverageIgnore
696
  */
697
  public function upgrade() {
698
- _deprecated_function( __METHOD__, '2.05.06', 'FrmMigrate::upgrade' );
699
-
700
- $db = new FrmMigrate();
701
- $db->upgrade();
702
  }
703
 
704
  /**
@@ -706,10 +703,7 @@ class FrmDb {
706
  * @codeCoverageIgnore
707
  */
708
  public function collation() {
709
- _deprecated_function( __METHOD__, '2.05.06', 'FrmMigrate::collation' );
710
-
711
- $db = new FrmMigrate();
712
- return $db->collation();
713
  }
714
 
715
  /**
@@ -717,9 +711,6 @@ class FrmDb {
717
  * @codeCoverageIgnore
718
  */
719
  public function uninstall() {
720
- _deprecated_function( __METHOD__, '2.05.06', 'FrmMigrate::uninstall' );
721
-
722
- $db = new FrmMigrate();
723
- $db->uninstall();
724
  }
725
  }
695
  * @codeCoverageIgnore
696
  */
697
  public function upgrade() {
698
+ FrmDeprecated::upgrade();
 
 
 
699
  }
700
 
701
  /**
703
  * @codeCoverageIgnore
704
  */
705
  public function collation() {
706
+ return FrmDeprecated::collation();
 
 
 
707
  }
708
 
709
  /**
711
  * @codeCoverageIgnore
712
  */
713
  public function uninstall() {
714
+ FrmDeprecated::uninstall();
 
 
 
715
  }
716
  }
classes/models/FrmEntry.php CHANGED
@@ -69,7 +69,7 @@ class FrmEntry {
69
  foreach ( $entry_exists as $entry_exist ) {
70
  $is_duplicate = true;
71
 
72
- //add more checks here to make sure it's a duplicate
73
  $metas = FrmEntryMeta::get_entry_meta_info( $entry_exist );
74
  $field_metas = array();
75
  foreach ( $metas as $meta ) {
@@ -78,11 +78,26 @@ class FrmEntry {
78
 
79
  // If prev entry is empty and current entry is not, they are not duplicates
80
  $filtered_vals = array_filter( $values['item_meta'] );
 
81
  if ( empty( $field_metas ) && ! empty( $filtered_vals ) ) {
82
  return false;
83
  }
84
 
85
- $diff = array_diff_assoc( $field_metas, array_map( 'maybe_serialize', $values['item_meta'] ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  foreach ( $diff as $field_id => $meta_value ) {
87
  if ( ! empty( $meta_value ) ) {
88
  $is_duplicate = false;
69
  foreach ( $entry_exists as $entry_exist ) {
70
  $is_duplicate = true;
71
 
72
+ // make sure it's a duplicate
73
  $metas = FrmEntryMeta::get_entry_meta_info( $entry_exist );
74
  $field_metas = array();
75
  foreach ( $metas as $meta ) {
78
 
79
  // If prev entry is empty and current entry is not, they are not duplicates
80
  $filtered_vals = array_filter( $values['item_meta'] );
81
+ $field_metas = array_filter( $field_metas );
82
  if ( empty( $field_metas ) && ! empty( $filtered_vals ) ) {
83
  return false;
84
  }
85
 
86
+ // compare serialized values and not arrays
87
+ $new_meta = array_map( 'maybe_serialize', $filtered_vals );
88
+
89
+ if ( $field_metas === $new_meta ) {
90
+ $is_duplicate = true;
91
+ break;
92
+ }
93
+
94
+ if ( count( $field_metas ) !== count( $new_meta ) ) {
95
+ // TODO: compare values saved in the post also
96
+ $is_duplicate = false;
97
+ continue;
98
+ }
99
+
100
+ $diff = array_diff_assoc( $field_metas, $new_meta );
101
  foreach ( $diff as $field_id => $meta_value ) {
102
  if ( ! empty( $meta_value ) ) {
103
  $is_duplicate = false;
classes/models/FrmEntryValidate.php CHANGED
@@ -134,49 +134,6 @@ class FrmEntryValidate {
134
  }
135
  }
136
 
137
- /**
138
- * @deprecated 3.0
139
- * @codeCoverageIgnore
140
- */
141
- public static function validate_url_field( &$errors, $field, $value, $args ) {
142
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
143
-
144
- if ( $value == '' || ! in_array( $field->type, array( 'website', 'url' ) ) ) {
145
- return;
146
- }
147
-
148
- self::validate_field_types( $errors, $field, $value, $args );
149
- }
150
-
151
- /**
152
- * @deprecated 3.0
153
- * @codeCoverageIgnore
154
- */
155
- public static function validate_email_field( &$errors, $field, $value, $args ) {
156
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
157
-
158
- if ( $field->type != 'email' ) {
159
- return;
160
- }
161
-
162
- self::validate_field_types( $errors, $field, $value, $args );
163
- }
164
-
165
- /**
166
- * @deprecated 3.0
167
- * @codeCoverageIgnore
168
- */
169
- public static function validate_number_field( &$errors, $field, $value, $args ) {
170
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
171
-
172
- //validate the number format
173
- if ( $field->type != 'number' ) {
174
- return;
175
- }
176
-
177
- self::validate_field_types( $errors, $field, $value, $args );
178
- }
179
-
180
  public static function validate_phone_field( &$errors, $field, $value, $args ) {
181
  if ( $field->type == 'phone' || ( $field->type == 'text' && FrmField::is_option_true_in_object( $field, 'format' ) ) ) {
182
 
@@ -249,20 +206,6 @@ class FrmEntryValidate {
249
  return $pattern;
250
  }
251
 
252
- /**
253
- * @deprecated 3.0
254
- * @codeCoverageIgnore
255
- */
256
- public static function validate_recaptcha( &$errors, $field, $args ) {
257
- _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
258
-
259
- if ( $field->type != 'captcha' ) {
260
- return;
261
- }
262
-
263
- self::validate_field_types( $errors, $field, '', $args );
264
- }
265
-
266
  /**
267
  * check for spam
268
  * @param boolean $exclude
@@ -429,4 +372,36 @@ class FrmEntryValidate {
429
  unset( $key, $value );
430
  }
431
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  }
134
  }
135
  }
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  public static function validate_phone_field( &$errors, $field, $value, $args ) {
138
  if ( $field->type == 'phone' || ( $field->type == 'text' && FrmField::is_option_true_in_object( $field, 'format' ) ) ) {
139
 
206
  return $pattern;
207
  }
208
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
209
  /**
210
  * check for spam
211
  * @param boolean $exclude
372
  unset( $key, $value );
373
  }
374
  }
375
+
376
+ /**
377
+ * @deprecated 3.0
378
+ * @codeCoverageIgnore
379
+ */
380
+ public static function validate_url_field( &$errors, $field, $value, $args ) {
381
+ FrmDeprecated::validate_url_field( $errors, $field, $value, $args );
382
+ }
383
+
384
+ /**
385
+ * @deprecated 3.0
386
+ * @codeCoverageIgnore
387
+ */
388
+ public static function validate_email_field( &$errors, $field, $value, $args ) {
389
+ FrmDeprecated::validate_email_field( $errors, $field, $value, $args );
390
+ }
391
+
392
+ /**
393
+ * @deprecated 3.0
394
+ * @codeCoverageIgnore
395
+ */
396
+ public static function validate_number_field( &$errors, $field, $value, $args ) {
397
+ FrmDeprecated::validate_number_field( $errors, $field, $value, $args );
398
+ }
399
+
400
+ /**
401
+ * @deprecated 3.0
402
+ * @codeCoverageIgnore
403
+ */
404
+ public static function validate_recaptcha( &$errors, $field, $args ) {
405
+ FrmDeprecated::validate_recaptcha( $errors, $field, $args );
406
+ }
407
  }
classes/models/FrmForm.php CHANGED
@@ -488,18 +488,6 @@ class FrmForm {
488
  return (int) FrmDb::get_var( 'frm_forms', array( 'form_key' => sanitize_title( $key ) ) );
489
  }
490
 
491
- /**
492
- * @deprecated 3.0
493
- * @codeCoverageIgnore
494
- *
495
- * @param string $key
496
- * @return int form id
497
- */
498
- public static function getIdByKey( $key ) {
499
- _deprecated_function( __METHOD__, '3.0', 'FrmForm::get_id_by_key' );
500
- return self::get_id_by_key( $key );
501
- }
502
-
503
  /**
504
  * @since 3.0
505
  * @param int $id
@@ -517,15 +505,6 @@ class FrmForm {
517
  return $key;
518
  }
519
 
520
- /**
521
- * @deprecated 3.0
522
- * @codeCoverageIgnore
523
- */
524
- public static function getKeyById( $id ) {
525
- _deprecated_function( __METHOD__, '3.0', 'FrmForm::get_key_by_id' );
526
- return self::get_key_by_id( $id );
527
- }
528
-
529
  /**
530
  * If $form is numeric, get the form object
531
  * @param object|int $form
@@ -877,4 +856,23 @@ class FrmForm {
877
  $form = $atts['form'];
878
  return isset( $form->options[ $atts['option'] ] ) ? $form->options[ $atts['option'] ] : $atts['default'];
879
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
880
  }
488
  return (int) FrmDb::get_var( 'frm_forms', array( 'form_key' => sanitize_title( $key ) ) );
489
  }
490
 
 
 
 
 
 
 
 
 
 
 
 
 
491
  /**
492
  * @since 3.0
493
  * @param int $id
505
  return $key;
506
  }
507
 
 
 
 
 
 
 
 
 
 
508
  /**
509
  * If $form is numeric, get the form object
510
  * @param object|int $form
856
  $form = $atts['form'];
857
  return isset( $form->options[ $atts['option'] ] ) ? $form->options[ $atts['option'] ] : $atts['default'];
858
  }
859
+
860
+ /**
861
+ * @deprecated 3.0
862
+ * @codeCoverageIgnore
863
+ *
864
+ * @param string $key
865
+ * @return int form id
866
+ */
867
+ public static function getIdByKey( $key ) {
868
+ return FrmFormDeprecated::getIdByKey( $key );
869
+ }
870
+
871
+ /**
872
+ * @deprecated 3.0
873
+ * @codeCoverageIgnore
874
+ */
875
+ public static function getKeyById( $id ) {
876
+ return FrmFormDeprecated::getKeyById( $id );
877
+ }
878
  }
classes/models/FrmMigrate.php CHANGED
@@ -224,6 +224,8 @@ class FrmMigrate {
224
 
225
  delete_option( 'frm_options' );
226
  delete_option( 'frm_db_version' );
 
 
227
 
228
  //delete roles
229
  $frm_roles = FrmAppHelper::frm_capabilities();
224
 
225
  delete_option( 'frm_options' );
226
  delete_option( 'frm_db_version' );
227
+ delete_option( 'frm_install_running' );
228
+ delete_option( 'frm_lite_settings_upgrade' );
229
 
230
  //delete roles
231
  $frm_roles = FrmAppHelper::frm_capabilities();
classes/models/FrmReviews.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class FrmReviews {
4
+
5
+ private $option_name = 'frm_reviewed';
6
+
7
+ private $review_status = array();
8
+
9
+ /**
10
+ * Add admin notices as needed for reviews
11
+ *
12
+ * @since 3.04.03
13
+ */
14
+ public function review_request() {
15
+
16
+ // Only show the review request to high-level users on Formidable pages
17
+ if ( ! current_user_can( 'frm_change_settings' ) || ! FrmAppHelper::is_formidable_admin() ) {
18
+ return;
19
+ }
20
+
21
+ // Verify that we can do a check for reviews
22
+ $this->set_review_status();
23
+
24
+ // Check if it has been dismissed or if we can ask later
25
+ $dismissed = $this->review_status['dismissed'];
26
+ if ( $dismissed === 'later' && $this->review_status['asked'] < 3 ) {
27
+ $dismissed = false;
28
+ }
29
+
30
+ $week_ago = ( $this->review_status['time'] + WEEK_IN_SECONDS ) <= time();
31
+
32
+ if ( empty( $dismissed ) && $week_ago ) {
33
+ $this->review();
34
+ }
35
+ }
36
+
37
+ /**
38
+ * When was the review request last dismissed?
39
+ *
40
+ * @since 3.04.03
41
+ */
42
+ private function set_review_status() {
43
+ $user_id = get_current_user_id();
44
+ $review = get_user_meta( $user_id, $this->option_name, true );
45
+ $default = array(
46
+ 'time' => time(),
47
+ 'dismissed' => false,
48
+ 'asked' => 0,
49
+ );
50
+
51
+ if ( empty( $review ) ) {
52
+ // Set the review request to show in a week
53
+ update_user_meta( $user_id, $this->option_name, $default );
54
+ }
55
+
56
+ $review = array_merge( $default, (array) $review );
57
+ $review['asked'] = (int) $review['asked'];
58
+ $this->review_status = $review;
59
+ }
60
+
61
+ /**
62
+ * Maybe show review request
63
+ *
64
+ * @since 3.04.03
65
+ * @param int $asked
66
+ */
67
+ private function review() {
68
+
69
+ // show the review request 3 times, depending on the number of entries
70
+ $show_intervals = array( 50, 200, 500 );
71
+ $asked = $this->review_status['asked'];
72
+
73
+ if ( ! isset( $show_intervals[ $asked ] ) ) {
74
+ return;
75
+ }
76
+
77
+ $entries = FrmEntry::getRecordCount();
78
+ $count = $show_intervals[ $asked ];
79
+ $user = wp_get_current_user();
80
+
81
+ // Only show review request if the site has collected enough entries
82
+ if ( $entries < $count ) {
83
+ // check the entry count again in a week
84
+ $this->review_status['time'] = time();
85
+ update_user_meta( $user->ID, $this->option_name, $this->review_status );
86
+ return;
87
+ }
88
+
89
+ if ( $entries <= 100 ) {
90
+ // round to the nearest 10
91
+ $entries = floor( $entries / 10 ) * 10;
92
+ } else {
93
+ // round to the nearest 50
94
+ $entries = floor( $entries / 50 ) * 50;
95
+ }
96
+ $name = $user->first_name;
97
+ if ( ! empty( $name ) ) {
98
+ $name = ' ' . $name;
99
+ }
100
+
101
+ // We have a candidate! Output a review message.
102
+ include( FrmAppHelper::plugin_path() . '/classes/views/shared/review.php' );
103
+ }
104
+
105
+ /**
106
+ * Save the request to hide the review
107
+ *
108
+ * @since 3.04.03
109
+ */
110
+ public function dismiss_review() {
111
+ FrmAppHelper::permission_check( 'frm_change_settings' );
112
+ check_ajax_referer( 'frm_ajax', 'nonce' );
113
+
114
+ $user_id = get_current_user_id();
115
+ $review = get_user_meta( $user_id, $this->option_name, true );
116
+ if ( empty( $review ) ) {
117
+ $review = array();
118
+ }
119
+
120
+ if ( isset( $review['dismissed'] ) && $review['dismissed'] === 'done' ) {
121
+ // if feedback was submitted, don't update it again when the review is dismissed
122
+ wp_die();
123
+ }
124
+
125
+ $dismissed = FrmAppHelper::get_post_param( 'link', 'no', 'sanitize_text_field' );
126
+ $review['time'] = time();
127
+ $review['dismissed'] = $dismissed === 'done' ? true : 'later';
128
+ $review['asked'] = isset( $review['asked'] ) ? $review['asked'] + 1 : 1;
129
+
130
+ update_user_meta( $user_id, $this->option_name, $review );
131
+ wp_die();
132
+ }
133
+ }
classes/views/addons/list.php CHANGED
@@ -1,10 +1,18 @@
 
1
  <div class="wrap">
2
- <h1><?php esc_html_e( 'Formidable AddOns', 'formidable' ) ?></h1>
 
 
3
 
4
  <div id="the-list" class="frm-addons">
5
  <?php foreach ( $addons as $slug => $addon ) { ?>
6
  <div class="plugin-card plugin-card-<?php echo esc_attr( $slug ); ?> frm-no-thumb frm-addon-<?php echo esc_attr( $addon['status']['type'] ); ?>">
7
  <div class="plugin-card-top">
 
 
 
 
 
8
  <h2>
9
  <?php echo esc_html( $addon['title'] ) ?>
10
  </h2>
@@ -25,20 +33,16 @@
25
  ?>
26
  </span>
27
  <?php if ( $addon['status']['type'] === 'installed' ) { ?>
28
- <a href="<?php echo esc_url( $addon['activate_url'] ) ?>" class="button activate-now frm_button <?php echo esc_attr( empty( $addon['activate_url'] ) ? 'frm_hidden' : '' ); ?>">
29
  <?php esc_html_e( 'Activate', 'formidable' ); ?>
30
  </a>
31
  <?php } elseif ( isset( $addon['url'] ) && ! empty( $addon['url'] ) ) { ?>
32
- <a class="frm-install-addon button frm_button" rel="<?php echo esc_attr( $addon['url'] ); ?>" aria-label="<?php esc_attr_e( 'Install', 'formidable' ); ?>">
33
  <?php esc_html_e( 'Install', 'formidable' ); ?>
34
  </a>
35
  <span class="spinner"></span>
36
- <?php } elseif ( FrmAppHelper::pro_is_installed() ) { ?>
37
- <a class="install-now button frm_button" href="<?php echo esc_url( $pricing ); ?>" target="_blank" aria-label="<?php esc_attr_e( 'Get Started', 'formidable' ); ?>">
38
- <?php esc_html_e( 'Get Started', 'formidable' ); ?>
39
- </a>
40
  <?php } else { ?>
41
- <a class="install-now button frm_button" href="<?php echo esc_url( $pricing ); ?>" target="_blank" aria-label="<?php esc_attr_e( 'Upgrade Now', 'formidable' ); ?>">
42
  <?php esc_html_e( 'Upgrade Now', 'formidable' ); ?>
43
  </a>
44
  <?php } ?>
@@ -47,3 +51,4 @@
47
  <?php } ?>
48
  </div>
49
  </div>
 
1
+ <div class="frm_wrap" id="frm-addons-page">
2
  <div class="wrap">
3
+ <h1><?php esc_html_e( 'Formidable Add-Ons', 'formidable' ); ?></h1>
4
+
5
+ <?php include( FrmAppHelper::plugin_path() . '/classes/views/shared/errors.php' ); ?>
6
 
7
  <div id="the-list" class="frm-addons">
8
  <?php foreach ( $addons as $slug => $addon ) { ?>
9
  <div class="plugin-card plugin-card-<?php echo esc_attr( $slug ); ?> frm-no-thumb frm-addon-<?php echo esc_attr( $addon['status']['type'] ); ?>">
10
  <div class="plugin-card-top">
11
+ <?php if ( strtotime( $addon['released'] ) > strtotime( '-90 days' ) ) { ?>
12
+ <div class="frm_ribbon">
13
+ <span>New</span>
14
+ </div>
15
+ <?php } ?>
16
  <h2>
17
  <?php echo esc_html( $addon['title'] ) ?>
18
  </h2>
33
  ?>
34
  </span>
35
  <?php if ( $addon['status']['type'] === 'installed' ) { ?>
36
+ <a href="<?php echo esc_url( $addon['activate_url'] ) ?>" class="button button-primary activate-now <?php echo esc_attr( empty( $addon['activate_url'] ) ? 'frm_hidden' : '' ); ?>">
37
  <?php esc_html_e( 'Activate', 'formidable' ); ?>
38
  </a>
39
  <?php } elseif ( isset( $addon['url'] ) && ! empty( $addon['url'] ) ) { ?>
40
+ <a class="frm-install-addon button button-primary" rel="<?php echo esc_attr( $addon['url'] ); ?>" aria-label="<?php esc_attr_e( 'Install', 'formidable' ); ?>">
41
  <?php esc_html_e( 'Install', 'formidable' ); ?>
42
  </a>
43
  <span class="spinner"></span>
 
 
 
 
44
  <?php } else { ?>
45
+ <a class="install-now button button-primary" href="<?php echo esc_url( $pricing ); ?>" target="_blank" aria-label="<?php esc_attr_e( 'Upgrade Now', 'formidable' ); ?>">
46
  <?php esc_html_e( 'Upgrade Now', 'formidable' ); ?>
47
  </a>
48
  <?php } ?>
51
  <?php } ?>
52
  </div>
53
  </div>
54
+ </div>
classes/views/addons/settings.php CHANGED
@@ -3,18 +3,14 @@
3
 
4
  <?php
5
 
6
- $any_unauthorized = false;
7
  foreach ( $plugins as $slug => $plugin ) {
8
- if ( $slug == 'formidable_pro' ) {
9
  continue;
10
  }
11
 
12
- $license = get_option( 'edd_' . $slug . '_license_key' );
13
- $status = get_option( 'edd_' . $slug . '_license_active' );
14
  $activate = ( false !== $license && $status == 'valid' ) ? 'deactivate' : 'activate';
15
- if ( $activate == 'activate' ) {
16
- $any_unauthorized = true;
17
- }
18
  $icon_class = ( empty( $license ) ) ? 'frm_hidden' : '';
19
  ?>
20
 
@@ -35,8 +31,4 @@
35
 
36
  </div>
37
  <?php } ?>
38
- <?php if ( $any_unauthorized && $allow_autofill ) { ?>
39
- <div class="clear"></div>
40
- <p><a href="#" class="edd_frm_fill_license button-secondary"><?php esc_html_e( 'Autofill Licenses', 'formidable' ) ?></a></p>
41
- <?php } ?>
42
  </div>
3
 
4
  <?php
5
 
 
6
  foreach ( $plugins as $slug => $plugin ) {
7
+ if ( $slug == 'formidable_pro' || $plugin->is_parent_licence ) {
8
  continue;
9
  }
10
 
11
+ $license = $plugin->license;
12
+ $status = get_option( $plugin->option_name . 'active' );
13
  $activate = ( false !== $license && $status == 'valid' ) ? 'deactivate' : 'activate';
 
 
 
14
  $icon_class = ( empty( $license ) ) ? 'frm_hidden' : '';
15
  ?>
16
 
31
 
32
  </div>
33
  <?php } ?>
 
 
 
 
34
  </div>
classes/views/addons/upgrade_to_pro.php CHANGED
@@ -57,11 +57,11 @@
57
  <td>Elite Support</td>
58
  </tr>
59
  <tr>
60
- <th>Included AddOns</th>
61
  <td>None</td>
62
- <td><a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'upgrade' ) ) ); ?>" target="_blank">Premium Addons</a></td>
63
- <td><a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'upgrade' ) ) ); ?>" target="_blank">Advanced Addons</a></td>
64
- <td><a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'upgrade' ) ) ); ?>" target="_blank">Enterprise Addons</a></td>
65
  </tr>
66
  </tbody>
67
  </table>
57
  <td>Elite Support</td>
58
  </tr>
59
  <tr>
60
+ <th>Included Add-Ons</th>
61
  <td>None</td>
62
+ <td><a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'upgrade' ) ) ); ?>" target="_blank">Premium Add-Ons</a></td>
63
+ <td><a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'upgrade' ) ) ); ?>" target="_blank">Advanced Add-Ons</a></td>
64
+ <td><a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'upgrade' ) ) ); ?>" target="_blank">Enterprise Add-Ons</a></td>
65
  </tr>
66
  </tbody>
67
  </table>
classes/views/shared/errors.php CHANGED
@@ -12,7 +12,7 @@ if ( isset( $message ) && '' !== $message ) {
12
 
13
  if ( isset( $errors ) && is_array( $errors ) && count( $errors ) > 0 ) {
14
  ?>
15
- <div class="error" role="alert">
16
  <ul id="frm_errors">
17
  <?php
18
  foreach ( $errors as $error ) {
12
 
13
  if ( isset( $errors ) && is_array( $errors ) && count( $errors ) > 0 ) {
14
  ?>
15
+ <div class="error frm_error_style inline" role="alert">
16
  <ul id="frm_errors">
17
  <?php
18
  foreach ( $errors as $error ) {
classes/views/shared/review.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="notice notice-info is-dismissible frm-review-notice">
2
+ <div class="frm-satisfied">
3
+ <p>
4
+ <?php printf( esc_html__( 'Congratulations%1$s! You have collected %2$d form submissions.', 'formidable' ), esc_html( $name ), absint( $entries ) ); ?><br/><br/>
5
+ <?php esc_html_e( 'Are you enjoying Formidable Forms?', 'formidable' ); ?>
6
+ </p>
7
+ <br/>
8
+ <a href="#" class="frm_reverse_button frm_animate_bg show-frm-feedback" data-link="feedback">
9
+ <?php esc_html_e( 'Not Really', 'formidable' ); ?>
10
+ </a>
11
+ <a href="#" class="frm_orange_button frm_animate_bg show-frm-feedback" data-link="review">
12
+ <?php esc_html_e( 'Yes!', 'formidable' ); ?>
13
+ </a>
14
+ </div>
15
+ <div class="frm-review-request frm_hidden">
16
+ <p><?php esc_html_e( 'Awesome! Could you do me a BIG favor and give Formidable Forms a review to help me grow my little business and boost our motivation?', 'formidable' ); ?></p>
17
+ <p>- Steph Wells<br/>
18
+ <span><?php esc_html_e( 'Founder and Lead Developer of Formidable Forms', 'formidable' ); ?><span>
19
+ </p>
20
+ <a href="#" class="frm-dismiss-review-notice frm_reverse_button" data-link="no" target="_blank" rel="noopener noreferrer">
21
+ <?php esc_html_e( 'No thanks, maybe later', 'formidable' ); ?>
22
+ </a>
23
+ <a href="https://wordpress.org/support/plugin/formidable/reviews/?filter=5#new-post" class="frm-dismiss-review-notice frm-review-out frm_orange_button" data-link="yes" target="_blank" rel="noopener">
24
+ <?php esc_html_e( 'Ok, you deserve it', 'formidable' ); ?>
25
+ </a>
26
+ <a href="#" class="frm-dismiss-review-notice" data-link="done" target="_blank" rel="noopener noreferrer">
27
+ <?php esc_html_e( 'I already did', 'formidable' ); ?>
28
+ </a>
29
+ </div>
30
+ <div class="frm-feedback-request frm_hidden">
31
+ <p><?php esc_html_e( 'Sorry to hear you aren\'t enjoying building with Formidable. We would love a chance to improve. Could you take a minute and let us know what we can do better?', 'formidable' ); ?></p>
32
+
33
+ <div id="frmapi-feedback" class="frmapi-form" data-url="https://community.formidableforms.com/wp-json/frm/v2/forms/feedback?return=html">
34
+ <span class="spinner frm_visible_spinner"></span>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <script type="text/javascript">
39
+ jQuery( document ).ready( function( $ ) {
40
+ $(document).on( 'click', '.frm-dismiss-review-notice, .frm-review-notice .notice-dismiss', function( event ) {
41
+
42
+ if ( ! $( this ).hasClass( 'frm-review-out' ) ) {
43
+ event.preventDefault();
44
+ }
45
+ var link = $( this ).data('link');
46
+ if ( typeof link === 'undefined' ) {
47
+ link = 'no';
48
+ }
49
+
50
+ frmDismissReview( link );
51
+ $( '.frm-review-notice' ).remove();
52
+ } );
53
+
54
+ $(document).on('click', '.frm-feedback-request button', function() {
55
+ frmDismissReview( 'done' );
56
+ } );
57
+
58
+ $('.show-frm-feedback').click( function( e ){
59
+ e.preventDefault();
60
+ var link = $(this).data('link');
61
+ var className = '.frm-' + link + '-request';
62
+ jQuery('.frm-satisfied').hide();
63
+ jQuery(className).show();
64
+
65
+ if ( className === '.frm-feedback-request' ) {
66
+ var frmapi = $('#frmapi-feedback');
67
+ frmapiGetData( frmapi );
68
+ }
69
+ });
70
+ } );
71
+
72
+ function frmDismissReview( link ) {
73
+ jQuery.post( ajaxurl, {
74
+ action: 'frm_dismiss_review',
75
+ link: link,
76
+ nonce: '<?php echo esc_html( wp_create_nonce( 'frm_ajax' ) ); ?>'
77
+ } );
78
+ }
79
+
80
+ function frmapiGetData( frmcont ) {
81
+ jQuery.ajax({
82
+ dataType:'json',
83
+ url:frmcont.data('url'),
84
+ success:function(json){
85
+ var form = json.renderedHtml;
86
+ form = form.replace(/<script\b[^<]*(community.formidableforms.com\/wp-includes\/js\/jquery\/jquery)[^<]*><\/script>/gi, '' );
87
+ form = form.replace(/<link\b[^>]*(formidableforms.css)[^>]*>/gi, '' );
88
+ frmcont.html(form);
89
+ }
90
+ });
91
+ }
92
+ </script>
classes/views/shared/upgrade_overlay.php CHANGED
@@ -8,7 +8,7 @@
8
  <h2>
9
  <?php
10
  printf(
11
- esc_html__( '%s are a Pro feature', 'formidable' ),
12
  '<span class="frm_feature_label"></span>'
13
  );
14
  ?>
@@ -17,21 +17,28 @@
17
  <p>
18
  <?php
19
  if ( $is_pro ) {
20
- $message = __( '%s are not installed on this site. Please see the addons that are included with your plan.', 'formidable' );
21
  } else {
22
  $message = __( '%s are not available on your plan. Please upgrade to PRO to unlock more awesome features.', 'formidable' );
23
  }
24
  printf( esc_html( $message ), '<span class="frm_feature_label"></span>' );
25
  ?>
26
  </p>
27
- <a href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( 'builder-upgrade' ) ); ?>" class="button button-primary" target="_blank" rel="noopener noreferrer">
 
 
 
 
 
28
  <?php esc_html_e( 'Upgrade to Pro', 'formidable' ); ?>
29
- </a>
30
- <p>
31
- <a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'builder-upgrade', 'knowledgebase/install-formidable-forms/' ) ) ); ?>" target="_blank" class="frm-link-secondary">
32
- <?php esc_html_e( 'Already purchased?', 'formidable' ); ?>
33
  </a>
34
- </p>
 
 
 
 
 
 
35
  </div>
36
  </div>
37
  </div>
8
  <h2>
9
  <?php
10
  printf(
11
+ esc_html__( '%s are not installed', 'formidable' ),
12
  '<span class="frm_feature_label"></span>'
13
  );
14
  ?>
17
  <p>
18
  <?php
19
  if ( $is_pro ) {
20
+ $message = __( 'Please see the add-ons that are included with your plan.', 'formidable' );
21
  } else {
22
  $message = __( '%s are not available on your plan. Please upgrade to PRO to unlock more awesome features.', 'formidable' );
23
  }
24
  printf( esc_html( $message ), '<span class="frm_feature_label"></span>' );
25
  ?>
26
  </p>
27
+ <?php if ( $is_pro ) { ?>
28
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=formidable-addons' ) ); ?>" class="button button-primary">
29
+ <?php esc_html_e( 'See My Add-Ons', 'formidable' ); ?>
30
+ </a>
31
+ <?php } else { ?>
32
+ <a href="<?php echo esc_url( FrmAppHelper::admin_upgrade_link( 'builder-upgrade' ) ); ?>" class="button button-primary" target="_blank" rel="noopener noreferrer">
33
  <?php esc_html_e( 'Upgrade to Pro', 'formidable' ); ?>
 
 
 
 
34
  </a>
35
+
36
+ <p>
37
+ <a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( FrmAppHelper::admin_upgrade_link( 'builder-upgrade', 'knowledgebase/install-formidable-forms/' ) ) ); ?>" target="_blank" class="frm-link-secondary">
38
+ <?php esc_html_e( 'Already purchased?', 'formidable' ); ?>
39
+ </a>
40
+ </p>
41
+ <?php } ?>
42
  </div>
43
  </div>
44
  </div>
css/custom_theme.css.php CHANGED
@@ -332,15 +332,16 @@ a.frm_save_draft{
332
 
333
  .with_frm_style .frm_radio input[type=radio]{
334
  -webkit-appearance:radio;
 
335
  }
336
 
337
  .with_frm_style .frm_checkbox input[type=checkbox]{
338
  -webkit-appearance:checkbox;
 
339
  }
340
 
341
  .with_frm_style .frm_radio input[type=radio],
342
  .with_frm_style .frm_checkbox input[type=checkbox]{
343
- border-radius:initial;
344
  flex: none;
345
  display:inline-block;
346
  margin:4px 5px 0 0;
332
 
333
  .with_frm_style .frm_radio input[type=radio]{
334
  -webkit-appearance:radio;
335
+ border-radius:50%;
336
  }
337
 
338
  .with_frm_style .frm_checkbox input[type=checkbox]{
339
  -webkit-appearance:checkbox;
340
+ border-radius:initial;
341
  }
342
 
343
  .with_frm_style .frm_radio input[type=radio],
344
  .with_frm_style .frm_checkbox input[type=checkbox]{
 
345
  flex: none;
346
  display:inline-block;
347
  margin:4px 5px 0 0;
css/frm_admin.css CHANGED
@@ -121,35 +121,6 @@ td.column-title .frm_actions_dropdown{
121
  float:left;
122
  }
123
 
124
- .post-type-frm_display .wrap .add-new-h2,
125
- .frm_wrap .add-new-h2{
126
- font-size:12px;
127
- border: 1px solid #f37656;
128
- color: #f37656;
129
- line-height: 1.4;
130
- font-weight: 600;
131
- margin: 1px 0 0 10px;
132
- padding: 1px 4px;
133
- vertical-align: top;
134
- -webkit-border-radius: 10px;
135
- border-radius: 2px;
136
- text-transform:lowercase;
137
- position:initial;
138
- vertical-align: middle;
139
- background:transparent;
140
- }
141
-
142
- .post-type-frm_display .wrap .add-new-h2:hover,
143
- .post-type-frm_display .wrap .add-new-h2:active,
144
- .post-type-frm_display .wrap .add-new-h2:focus,
145
- .frm_wrap .add-new-h2:hover,
146
- .frm_wrap .add-new-h2:active,
147
- .frm_wrap .add-new-h2:focus{
148
- color: #fff;
149
- background:#f37656;
150
- border: 1px solid #f37656;
151
- }
152
-
153
  ul.frm_form_nav {
154
  margin:0;
155
  float:left;
@@ -408,24 +379,138 @@ ul.frm_form_nav > li{
408
  margin-left: 5px;
409
  }
410
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
411
  #frm_upgrade_modal .button,
412
- .frm-white-body .frm_wrap .button,
413
- .frm-white-body .frm_wrap button{
 
 
 
 
 
 
 
 
414
  text-shadow:none;
415
  box-shadow:none;
416
- border-radius:2px;
417
  border-color:#e5e5e5;
418
  font-size: 1.1em;
 
419
  }
420
 
 
 
 
 
 
 
 
 
 
 
 
421
  .wrap .frm_pricing a.button-primary,
422
  .toplevel_page_formidable #frm_upgrade_modal .button-primary,
423
  .toplevel_page_formidable .frm_wrap button.button-primary{
424
- border-color: #da791d;
425
  background: #f37656;
426
  color:#fff;
427
  }
428
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  #frm-preview-action{
430
  float:right;
431
  }
@@ -449,6 +534,55 @@ input.frm_insert_in_template{
449
  font-weight:normal
450
  }
451
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
452
  /* Generic Classes */
453
  .frm_invisible{
454
  visibility:hidden;
@@ -654,21 +788,49 @@ form .form-field.frm_field_loading{
654
  padding: 5px 12px;
655
  }
656
 
 
 
657
  div.frm_updated_message{
658
- border-radius:2px;
659
  border: 1px solid #D6E9C6;
660
  background-color: #DFF0D8;
661
  color: #468847;
662
  padding: 10px 15px;
663
  font-size:14px;
664
- margin:5px 15px 10px;
665
  }
666
 
667
- .frm_license_box .frm_error_style{
668
- margin-left:0;
669
- margin-right:0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
670
  }
671
 
 
 
 
 
 
 
 
672
  .update-nag.frm-update-to-pro{
673
  border:none;
674
  border-bottom: 1px solid #d55a1e;
@@ -737,10 +899,22 @@ div.frm_updated_message{
737
  width: 31.3%;
738
  margin:0 3% 30px 0;
739
  clear:none;
 
 
 
740
  }
741
 
742
  .frm-addons .plugin-card-top{
743
- height:200px;
 
 
 
 
 
 
 
 
 
744
  }
745
 
746
  .frm-addons .plugin-card:nth-child(3n+3) {
@@ -752,8 +926,10 @@ div.frm_updated_message{
752
  }
753
 
754
  .frm-addons .plugin-card-bottom {
755
- padding:20px;
756
  text-align:center;
 
 
757
  }
758
 
759
  .frm-addons .plugin-card-bottom,
@@ -767,6 +943,7 @@ div.frm_updated_message{
767
 
768
  .frm-addons .addon-status {
769
  float:left;
 
770
  }
771
 
772
  .frm-addon-active .button {
@@ -938,7 +1115,7 @@ div.frm_updated_message{
938
  }
939
 
940
  a.frm-option-icon:before{
941
- color: #0073aa;
942
  font-size: 22px;
943
  width: 22px;
944
  height: 22px;
@@ -2752,11 +2929,11 @@ ul .frm_col_two{float:right;}
2752
  border: 1px solid #5b9dd9;
2753
  color:#1c94c4;
2754
  display:block;
2755
- border-radius: 2px;
2756
  }
2757
 
2758
  .frm_code_list.frm_grid_container a:hover{
2759
- background-color:#0073aa;
2760
  color:#fbfdff;
2761
  }
2762
 
@@ -2879,6 +3056,8 @@ li.frm_noallow.button.frm_show_upgrade {
2879
  #frm_upgrade_modal .dismiss {
2880
  padding: 5px;
2881
  color: #c4c4c4;
 
 
2882
  }
2883
 
2884
  #frm_upgrade_modal .dashicons-lock{
121
  float:left;
122
  }
123
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  ul.frm_form_nav {
125
  margin:0;
126
  float:left;
379
  margin-left: 5px;
380
  }
381
 
382
+ /* Buttons */
383
+
384
+ .frm_orange_button,
385
+ .frm_reverse_button,
386
+ .post-type-frm_display .wrap .add-new-h2,
387
+ .frm_wrap .add-new-h2{
388
+ font-size:12px;
389
+ border: 1px solid #f37656;
390
+ color: #f37656;
391
+ line-height: 1.4;
392
+ font-weight: 600;
393
+ padding: 1px 4px;
394
+ -webkit-border-radius: 4px;
395
+ border-radius: 4px;
396
+ background:transparent;
397
+ }
398
+
399
+ .post-type-frm_display .wrap .add-new-h2,
400
+ .frm_wrap .add-new-h2{
401
+ margin: 1px 0 0 10px;
402
+ vertical-align: top;
403
+ text-transform:lowercase;
404
+ position:initial;
405
+ vertical-align: middle;
406
+ }
407
+
408
+ .frm_reverse_button:hover,
409
+ .frm_reverse_button:active,
410
+ .frm_reverse_button:focus,
411
+ .post-type-frm_display .wrap .add-new-h2:hover,
412
+ .post-type-frm_display .wrap .add-new-h2:active,
413
+ .post-type-frm_display .wrap .add-new-h2:focus,
414
+ .frm_wrap .add-new-h2:hover,
415
+ .frm_wrap .add-new-h2:active,
416
+ .frm_wrap .add-new-h2:focus{
417
+ color: #fff;
418
+ background:#f37656;
419
+ border: 1px solid #f37656;
420
+ }
421
+
422
+ .frm_reverse_button{
423
+ font-size: 1.1em;
424
+ transition: all .2s ease;
425
+ }
426
+
427
+ .frm_orange_button,
428
+ .wrap .frm_pricing a.button-primary,
429
+ .toplevel_page_formidable #frm_upgrade_modal .button-primary,
430
  #frm_upgrade_modal .button,
431
+ #form_global_settings .button-primary,
432
+ #form_global_settings .button-secondary,
433
+ .wp-core-ui.frm-white-body .button-primary,
434
+ .wp-core-ui.frm-white-body .button-secondary,
435
+ .wp-core-ui.frm-white-body .button,
436
+ .wp-core-ui.frm-white-body button,
437
+ .frm-white-body .button-primary,
438
+ .frm-white-body .button-secondary,
439
+ .frm-white-body .button,
440
+ .frm-white-body button{
441
  text-shadow:none;
442
  box-shadow:none;
443
+ border-radius:4px;
444
  border-color:#e5e5e5;
445
  font-size: 1.1em;
446
+ transition: all .2s ease;
447
  }
448
 
449
+ #frm-addons-page .button-primary,
450
+ .frm_single_entry_page .button-primary,
451
+ #form_global_settings .button-primary,
452
+ #frm_upgrade_modal .button,
453
+ .frm_wrap .preview > .button{
454
+ border-color: rgba(53,97,150,0.5) !important;
455
+ background: rgb(53,97,150);
456
+ color: #fff;
457
+ }
458
+
459
+ .frm_orange_button,
460
  .wrap .frm_pricing a.button-primary,
461
  .toplevel_page_formidable #frm_upgrade_modal .button-primary,
462
  .toplevel_page_formidable .frm_wrap button.button-primary{
463
+ border-color: #da791d !important;
464
  background: #f37656;
465
  color:#fff;
466
  }
467
 
468
+ #frm-addons-page .button-primary:hover,
469
+ #frm-addons-page .button-primary:focus,
470
+ #form_global_settings .button-primary:hover,
471
+ #form_global_settings .button-primary:focus,
472
+ #frm_upgrade_modal .button:hover,
473
+ #frm_upgrade_modal .button:focus,
474
+ .frm_wrap .preview > .button:hover,
475
+ .frm_wrap .preview > .button:focus{
476
+ border-color: rgba(130, 168, 203,0.5) !important;
477
+ background: rgb(130, 168, 203);
478
+ color: #fff;
479
+ box-shadow:none;
480
+ }
481
+
482
+ #frm-addons-page .button-primary:focus,
483
+ #form_global_settings .button-primary:focus,
484
+ #frm_upgrade_modal .button:focus,
485
+ .frm_wrap .preview > .button:focus {
486
+ border-color: rgba(53,97,150,0.5) !important;
487
+ outline:none;
488
+ }
489
+
490
+ .frm_orange_button:hover,
491
+ .frm_orange_button:focus,
492
+ .wrap .frm_pricing a.button-primary:hover,
493
+ .wrap .frm_pricing a.button-primary:focus,
494
+ .toplevel_page_formidable #frm_upgrade_modal .button-primary:hover,
495
+ .toplevel_page_formidable #frm_upgrade_modal .button-primary:focus,
496
+ .toplevel_page_formidable .frm_wrap button.button-primary:hover,
497
+ .toplevel_page_formidable .frm_wrap button.button-primary:focus{
498
+ box-shadow:none;
499
+ opacity:0.8;
500
+ }
501
+
502
+ .frm_orange_button:hover,
503
+ .frm_orange_button:focus{
504
+ border-color: #f37656 !important;
505
+ background: transparent;
506
+ color:#f37656;
507
+ opacity:1;
508
+ }
509
+
510
+ .preview .button .caret {
511
+ border-top-color: #fff;
512
+ }
513
+
514
  #frm-preview-action{
515
  float:right;
516
  }
534
  font-weight:normal
535
  }
536
 
537
+ /* Review request */
538
+ .frm-review-notice.notice{
539
+ border:1px solid #ddd;
540
+ text-align:center;
541
+ }
542
+
543
+ .frm-review-notice.notice form,
544
+ .frm-review-notice.notice p {
545
+ font-size:15px;
546
+ max-width:600px;
547
+ margin-left:auto;
548
+ margin-right:auto;
549
+ }
550
+
551
+ .frm-review-notice a{
552
+ margin:5px;
553
+ }
554
+
555
+ .frm-review-notice > div{
556
+ padding-bottom:20px;
557
+ }
558
+
559
+ .frm-review-notice .frm_reverse_button,
560
+ .frm-review-notice .frm_orange_button{
561
+ min-width:100px;
562
+ display:inline-block;
563
+ text-align:center;
564
+ padding:2px 10px;
565
+ }
566
+
567
+ .frm-review-notice p > span{
568
+ font-size:14px;
569
+ opacity:0.75;
570
+ }
571
+
572
+ #frmapi-feedback{
573
+ margin-top:30px;
574
+ }
575
+
576
+ .frm-review-notice .frm_error,
577
+ .frm-review-notice label{
578
+ color:#444;
579
+ text-align:left;
580
+ }
581
+
582
+ .frm-review-notice label{
583
+ font-size:14px;
584
+ }
585
+
586
  /* Generic Classes */
587
  .frm_invisible{
588
  visibility:hidden;
788
  padding: 5px 12px;
789
  }
790
 
791
+ .frm_message,
792
+ .frm_wrap .wrap .frm_updated_message,
793
  div.frm_updated_message{
794
+ border-radius:4px;
795
  border: 1px solid #D6E9C6;
796
  background-color: #DFF0D8;
797
  color: #468847;
798
  padding: 10px 15px;
799
  font-size:14px;
800
+ margin:5px 0 10px;
801
  }
802
 
803
+ .frm_message,
804
+ .frm_wrap div.frm_updated_message{
805
+ margin-left:25px;
806
+ margin-right:25px;
807
+ }
808
+
809
+ .frm_ribbon {
810
+ -webkit-transform: rotate(45deg);
811
+ -moz-transform: rotate(45deg);
812
+ -ms-transform: rotate(45deg);
813
+ -o-transform: rotate(45deg);
814
+ transform: rotate(45deg);
815
+ border: 25px solid transparent;
816
+ border-bottom: 25px solid #f37656;
817
+ position: absolute;
818
+ top: 3px;
819
+ right: -39px;
820
+ padding: 0 10px;
821
+ width: 65px;
822
+ color: white;
823
+ font-family: sans-serif;
824
+ size: 11px;
825
  }
826
 
827
+ .frm_ribbon span {
828
+ position: absolute;
829
+ top: 2px;
830
+ left: 25px;
831
+ font-size: 17px;
832
+ }​
833
+
834
  .update-nag.frm-update-to-pro{
835
  border:none;
836
  border-bottom: 1px solid #d55a1e;
899
  width: 31.3%;
900
  margin:0 3% 30px 0;
901
  clear:none;
902
+ border-radius: 10px;
903
+ border-color: rgb( 235, 235, 235 );
904
+ border-width: 2px;
905
  }
906
 
907
  .frm-addons .plugin-card-top{
908
+ height:175px;
909
+ }
910
+
911
+ .frm-addons .plugin-card-top h2 {
912
+ margin-top: 10px;
913
+ font-weight: 400;
914
+ }
915
+
916
+ .frm-addons .plugin-card-top p {
917
+ opacity:0.8;
918
  }
919
 
920
  .frm-addons .plugin-card:nth-child(3n+3) {
926
  }
927
 
928
  .frm-addons .plugin-card-bottom {
929
+ padding: 5px 20px 20px;
930
  text-align:center;
931
+ background: transparent;
932
+ border-top: none;
933
  }
934
 
935
  .frm-addons .plugin-card-bottom,
943
 
944
  .frm-addons .addon-status {
945
  float:left;
946
+ padding-top: 4px;
947
  }
948
 
949
  .frm-addon-active .button {
1115
  }
1116
 
1117
  a.frm-option-icon:before{
1118
+ color: rgb(53,97,150);
1119
  font-size: 22px;
1120
  width: 22px;
1121
  height: 22px;
2929
  border: 1px solid #5b9dd9;
2930
  color:#1c94c4;
2931
  display:block;
2932
+ border-radius: 4px;
2933
  }
2934
 
2935
  .frm_code_list.frm_grid_container a:hover{
2936
+ background-color:rgb(53,97,150);
2937
  color:#fbfdff;
2938
  }
2939
 
3056
  #frm_upgrade_modal .dismiss {
3057
  padding: 5px;
3058
  color: #c4c4c4;
3059
+ z-index: 100;
3060
+ position: relative;
3061
  }
3062
 
3063
  #frm_upgrade_modal .dashicons-lock{
css/frm_fonts.css CHANGED
@@ -34,7 +34,7 @@
34
  float:none;
35
  }
36
  .frm_plugin_updating{line-height:24px;}
37
- .frm_plugin_updating .frm_spinner{float:left;display:block;}
38
 
39
  .frm_hidden, input.frm_hidden{display:none;}
40
 
34
  float:none;
35
  }
36
  .frm_plugin_updating{line-height:24px;}
37
+ .frm_plugin_updating .frm_spinner{float:left;display:block;visibility:visible;}
38
 
39
  .frm_hidden, input.frm_hidden{display:none;}
40
 
{classes/models → deprecated}/FrmDbDeprecated.php RENAMED
@@ -4,6 +4,8 @@
4
  * Class FrmDbDeprecated
5
  *
6
  * @since 2.03.05
 
 
7
  */
8
  class FrmDbDeprecated {
9
 
@@ -28,7 +30,7 @@ class FrmDbDeprecated {
28
  * @deprecated 2.03.05
29
  */
30
  public function upgrade() {
31
- _deprecated_function( __FUNCTION__, '2.03.05', 'FrmDb::upgrade( $old_db_version )' );
32
 
33
  $db = new FrmMigrate();
34
  $db->upgrade();
@@ -38,7 +40,7 @@ class FrmDbDeprecated {
38
  * @deprecated 2.03.05
39
  */
40
  public function collation() {
41
- _deprecated_function( __FUNCTION__, '2.03.05', 'FrmDb::collation()' );
42
 
43
  $db = new FrmMigrate();
44
  return $db->collation();
@@ -48,7 +50,7 @@ class FrmDbDeprecated {
48
  * @deprecated 2.03.05
49
  */
50
  public function uninstall() {
51
- _deprecated_function( __FUNCTION__, '2.03.05', 'FrmDb::uninstall()' );
52
 
53
  $db = new FrmMigrate();
54
  $db->uninstall();
4
  * Class FrmDbDeprecated
5
  *
6
  * @since 2.03.05
7
+ * @deprecated 2.03.05
8
+ * @codeCoverageIgnore
9
  */
10
  class FrmDbDeprecated {
11
 
30
  * @deprecated 2.03.05
31
  */
32
  public function upgrade() {
33
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmMigrate::upgrade' );
34
 
35
  $db = new FrmMigrate();
36
  $db->upgrade();
40
  * @deprecated 2.03.05
41
  */
42
  public function collation() {
43
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmMigrate::collation' );
44
 
45
  $db = new FrmMigrate();
46
  return $db->collation();
50
  * @deprecated 2.03.05
51
  */
52
  public function uninstall() {
53
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmMigrate::uninstall' );
54
 
55
  $db = new FrmMigrate();
56
  $db->uninstall();
deprecated/FrmDeprecated.php ADDED
@@ -0,0 +1,786 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class FrmDeprecated
5
+ *
6
+ * @since 3.04.03
7
+ * @codeCoverageIgnore
8
+ */
9
+ class FrmDeprecated {
10
+
11
+ /**
12
+ * @deprecated 2.3
13
+ */
14
+ public static function deprecated( $function, $version ) {
15
+ _deprecated_function( $function, $version );
16
+ }
17
+
18
+ /**
19
+ * @deprecated 3.04.03
20
+ */
21
+ public static function get_licenses() {
22
+ _deprecated_function( __FUNCTION__, '3.04.03' );
23
+
24
+ $allow_autofill = self::allow_autofill();
25
+ $required_role = $allow_autofill ? 'setup_network' : 'frm_change_settings';
26
+ FrmAppHelper::permission_check( $required_role );
27
+ check_ajax_referer( 'frm_ajax', 'nonce' );
28
+
29
+ if ( is_multisite() && get_site_option( 'frmpro-wpmu-sitewide' ) ) {
30
+ $license = get_site_option( 'frmpro-credentials' );
31
+ } else {
32
+ $license = get_option( 'frmpro-credentials' );
33
+ }
34
+
35
+ if ( $license && is_array( $license ) && isset( $license['license'] ) ) {
36
+ $url = 'https://formidableforms.com/frm-edd-api/licenses?l=' . urlencode( base64_encode( $license['license'] ) );
37
+ $licenses = self::send_api_request(
38
+ $url,
39
+ array(
40
+ 'name' => 'frm_api_licence',
41
+ 'expires' => 60 * 60 * 5,
42
+ )
43
+ );
44
+ echo json_encode( $licenses );
45
+ }
46
+
47
+ wp_die();
48
+ }
49
+
50
+
51
+ /**
52
+ * Don't allow subsite addon licenses to be fetched
53
+ * unless the current user has super admin permissions
54
+ *
55
+ * @since 2.03.10
56
+ * @deprecated 3.04.03
57
+ */
58
+ private static function allow_autofill() {
59
+ $allow_autofill = FrmAppHelper::pro_is_installed();
60
+ if ( $allow_autofill && is_multisite() ) {
61
+ $sitewide_activated = get_site_option( 'frmpro-wpmu-sitewide' );
62
+ if ( $sitewide_activated ) {
63
+ $allow_autofill = current_user_can( 'setup_network' );
64
+ }
65
+ }
66
+ return $allow_autofill;
67
+ }
68
+
69
+ /**
70
+ * @deprecated 3.04.03
71
+ */
72
+ private static function send_api_request( $url, $transient = array() ) {
73
+ $data = get_transient( $transient['name'] );
74
+ if ( $data !== false ) {
75
+ return $data;
76
+ }
77
+
78
+ $arg_array = array(
79
+ 'body' => array(
80
+ 'url' => home_url(),
81
+ ),
82
+ 'timeout' => 15,
83
+ 'user-agent' => 'Formidable/' . FrmAppHelper::$plug_version . '; ' . home_url(),
84
+ );
85
+
86
+ $response = wp_remote_post( $url, $arg_array );
87
+ $body = wp_remote_retrieve_body( $response );
88
+ $data = false;
89
+ if ( ! is_wp_error( $response ) && ! is_wp_error( $body ) ) {
90
+ $data = json_decode( $body, true );
91
+ set_transient( $transient['name'], $data, $transient['expires'] );
92
+ }
93
+
94
+ return $data;
95
+ }
96
+
97
+ /**
98
+ * Add a filter to shorten the EDD filename for Formidable plugin, and add-on, updates
99
+ *
100
+ * @since 2.03.08
101
+ * @deprecated 3.04.03
102
+ *
103
+ * @param boolean $return
104
+ * @param string $package
105
+ *
106
+ * @return boolean
107
+ */
108
+ public static function add_shorten_edd_filename_filter( $return, $package ) {
109
+ _deprecated_function( __FUNCTION__, '3.04.03' );
110
+
111
+ if ( strpos( $package, '/edd-sl/package_download/' ) !== false && strpos( $package, 'formidableforms.com' ) !== false ) {
112
+ add_filter( 'wp_unique_filename', 'FrmDeprecated::shorten_edd_filename', 10, 2 );
113
+ }
114
+
115
+ return $return;
116
+ }
117
+
118
+ /**
119
+ * Shorten the EDD filename for automatic updates
120
+ * Decreases size of file path so file path limit is not hit on Windows servers
121
+ *
122
+ * @since 2.03.08
123
+ * @deprecated 3.04.03
124
+ *
125
+ * @param string $filename
126
+ * @param string $ext
127
+ *
128
+ * @return string
129
+ */
130
+ public static function shorten_edd_filename( $filename, $ext ) {
131
+ _deprecated_function( __FUNCTION__, '3.04.03' );
132
+
133
+ $filename = substr( $filename, 0, 50 ) . $ext;
134
+ remove_filter( 'wp_unique_filename', 'FrmDeprecated::shorten_edd_filename', 10 );
135
+
136
+ return $filename;
137
+ }
138
+
139
+ /**
140
+ * Filter shortcodes in text widgets
141
+ *
142
+ * @deprecated 2.5.4
143
+ */
144
+ public static function widget_text_filter( $content ) {
145
+ _deprecated_function( __FUNCTION__, '2.5.4' );
146
+ $regex = '/\[\s*(formidable|display-frm-data|frm-stats|frm-graph|frm-entry-links|formresults|frm-search)\s+.*\]/';
147
+ return preg_replace_callback( $regex, 'FrmAppHelper::widget_text_filter_callback', $content );
148
+ }
149
+
150
+ /**
151
+ * Used to filter shortcode in text widgets
152
+ *
153
+ * @deprecated 2.5.4
154
+ */
155
+ public static function widget_text_filter_callback( $matches ) {
156
+ _deprecated_function( __FUNCTION__, '2.5.4' );
157
+ return do_shortcode( $matches[0] );
158
+ }
159
+
160
+ /**
161
+ * Deprecated in favor of wpmu_upgrade_site
162
+ *
163
+ * @deprecated 2.3
164
+ */
165
+ public static function front_head() {
166
+ _deprecated_function( __FUNCTION__, '2.3' );
167
+ if ( is_multisite() && FrmAppController::needs_update() ) {
168
+ FrmAppController::install();
169
+ }
170
+ }
171
+
172
+ /**
173
+ * @deprecated 3.0.04
174
+ */
175
+ public static function activation_install() {
176
+ _deprecated_function( __FUNCTION__, '3.0.04', 'FrmAppController::install' );
177
+ FrmDb::delete_cache_and_transient( 'frm_plugin_version' );
178
+ FrmFormActionsController::actions_init();
179
+ FrmAppController::install();
180
+ }
181
+
182
+ /**
183
+ * Routes for wordpress pages -- we're just replacing content
184
+ *
185
+ * @deprecated 3.0
186
+ */
187
+ public static function page_route( $content ) {
188
+ _deprecated_function( __FUNCTION__, '3.0' );
189
+ global $post;
190
+
191
+ if ( $post && isset( $_GET['form'] ) ) {
192
+ $content = FrmFormsController::page_preview();
193
+ }
194
+
195
+ return $content;
196
+ }
197
+
198
+ /**
199
+ * @deprecated 1.07.05
200
+ */
201
+ public static function get_form_shortcode( $atts ) {
202
+ _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form_shortcode()' );
203
+ return FrmFormsController::get_form_shortcode( $atts );
204
+ }
205
+
206
+ /**
207
+ * @deprecated 1.07.05
208
+ */
209
+ public static function show_form( $id = '', $key = '', $title = false, $description = false ) {
210
+ _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::show_form()' );
211
+ return FrmFormsController::show_form( $id, $key, $title, $description );
212
+ }
213
+
214
+ /**
215
+ * @deprecated 1.07.05
216
+ */
217
+ public static function get_form( $filename, $form, $title, $description ) {
218
+ _deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form()' );
219
+ return FrmFormsController::get_form( $form, $title, $description );
220
+ }
221
+
222
+ /**
223
+ * @deprecated 3.0
224
+ */
225
+ public static function edit_name( $field = 'name', $id = '' ) {
226
+ _deprecated_function( __FUNCTION__, '3.0' );
227
+
228
+ FrmAppHelper::permission_check( 'frm_edit_forms' );
229
+ check_ajax_referer( 'frm_ajax', 'nonce' );
230
+
231
+ if ( empty( $field ) ) {
232
+ $field = 'name';
233
+ }
234
+
235
+ if ( empty( $id ) ) {
236
+ $id = FrmAppHelper::get_post_param( 'element_id', '', 'sanitize_title' );
237
+ $id = str_replace( 'field_label_', '', $id );
238
+ }
239
+
240
+ $value = FrmAppHelper::get_post_param( 'update_value', '', 'wp_kses_post' );
241
+ $value = trim( $value );
242
+ if ( trim( strip_tags( $value ) ) === '' ) {
243
+ // set blank value if there is no content
244
+ $value = '';
245
+ }
246
+
247
+ FrmField::update( $id, array( $field => $value ) );
248
+
249
+ do_action( 'frm_after_update_field_' . $field, compact( 'id', 'value' ) );
250
+
251
+ echo stripslashes( wp_kses_post( $value ) ); // WPCS: XSS ok.
252
+ wp_die();
253
+ }
254
+
255
+ /**
256
+ * Load a single field in the form builder along with all needed variables
257
+ *
258
+ * @deprecated 3.0
259
+ *
260
+ * @param int $field_id
261
+ * @param array $values
262
+ * @param int $form_id
263
+ *
264
+ * @return array
265
+ */
266
+ public static function include_single_field( $field_id, $values, $form_id = 0 ) {
267
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldsController::load_single_field' );
268
+
269
+ $field = FrmFieldsHelper::setup_edit_vars( FrmField::getOne( $field_id ) );
270
+ FrmFieldsController::load_single_field( $field, $values, $form_id );
271
+
272
+ return $field;
273
+ }
274
+
275
+ /**
276
+ * @deprecated 3.0
277
+ */
278
+ public static function bulk_create_template( $ids ) {
279
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmForm::duplicate( $id, true, true )' );
280
+ FrmAppHelper::permission_check( 'frm_edit_forms' );
281
+
282
+ foreach ( $ids as $id ) {
283
+ FrmForm::duplicate( $id, true, true );
284
+ }
285
+
286
+ return __( 'Form template was Successfully Created', 'formidable' );
287
+ }
288
+
289
+ /**
290
+ * @deprecated 2.03
291
+ */
292
+ public static function register_pro_scripts() {
293
+ _deprecated_function( __FUNCTION__, '2.03', 'FrmProEntriesController::register_scripts' );
294
+ if ( FrmAppHelper::pro_is_installed() ) {
295
+ FrmProEntriesController::register_scripts();
296
+ }
297
+ }
298
+
299
+ /**
300
+ * @deprecated 3.0
301
+ */
302
+ public static function edit_key() {
303
+ _deprecated_function( __FUNCTION__, '3.0' );
304
+ $values = self::edit_in_place_value( 'form_key' );
305
+ echo wp_kses( stripslashes( FrmForm::get_key_by_id( $values['form_id'] ) ), array() );
306
+ wp_die();
307
+ }
308
+
309
+ /**
310
+ * @deprecated 3.0
311
+ */
312
+ public static function edit_description() {
313
+ _deprecated_function( __FUNCTION__, '3.0' );
314
+ $values = self::edit_in_place_value( 'description' );
315
+ echo wp_kses_post( FrmAppHelper::use_wpautop( stripslashes( $values['description'] ) ) );
316
+ wp_die();
317
+ }
318
+
319
+ /**
320
+ * @deprecated 3.0
321
+ */
322
+ private static function edit_in_place_value( $field ) {
323
+ _deprecated_function( __FUNCTION__, '3.0' );
324
+ check_ajax_referer( 'frm_ajax', 'nonce' );
325
+ FrmAppHelper::permission_check( 'frm_edit_forms', 'hide' );
326
+
327
+ $form_id = FrmAppHelper::get_post_param( 'form_id', '', 'absint' );
328
+ $value = FrmAppHelper::get_post_param( 'update_value', '', 'wp_filter_post_kses' );
329
+
330
+ $values = array( $field => trim( $value ) );
331
+ FrmForm::update( $form_id, $values );
332
+ $values['form_id'] = $form_id;
333
+
334
+ return $values;
335
+ }
336
+
337
+ /**
338
+ * @deprecated 1.07.05
339
+ */
340
+ public static function add_default_templates( $path, $default = true, $template = true ) {
341
+ _deprecated_function( __FUNCTION__, '1.07.05', 'FrmXMLController::add_default_templates()' );
342
+
343
+ $path = untrailingslashit( trim( $path ) );
344
+ $templates = glob( $path . '/*.php' );
345
+
346
+ for ( $i = count( $templates ) - 1; $i >= 0; $i-- ) {
347
+ $filename = str_replace( '.php', '', str_replace( $path . '/', '', $templates[ $i ] ) );
348
+ $template_query = array( 'form_key' => $filename );
349
+ if ( $template ) {
350
+ $template_query['is_template'] = 1;
351
+ }
352
+ if ( $default ) {
353
+ $template_query['default_template'] = 1;
354
+ }
355
+ $form = FrmForm::getAll( $template_query, '', 1 );
356
+
357
+ $values = FrmFormsHelper::setup_new_vars();
358
+ $values['form_key'] = $filename;
359
+ $values['is_template'] = $template;
360
+ $values['status'] = 'published';
361
+ if ( $default ) {
362
+ $values['default_template'] = 1;
363
+ }
364
+
365
+ include( $templates[ $i ] );
366
+
367
+ //get updated form
368
+ if ( isset( $form ) && ! empty( $form ) ) {
369
+ $old_id = $form->id;
370
+ $form = FrmForm::getOne( $form->id );
371
+ } else {
372
+ $old_id = false;
373
+ $form = FrmForm::getAll( $template_query, '', 1 );
374
+ }
375
+
376
+ if ( $form ) {
377
+ do_action( 'frm_after_duplicate_form', $form->id, (array) $form, array( 'old_id' => $old_id ) );
378
+ }
379
+ }
380
+ }
381
+
382
+ /**
383
+ * @deprecated 3.01
384
+ */
385
+ public static function sanitize_array( &$values ) {
386
+ _deprecated_function( __FUNCTION__, '3.01', 'FrmAppHelper::sanitize_value' );
387
+ FrmAppHelper::sanitize_value( 'wp_kses_post', $values );
388
+ }
389
+
390
+ /**
391
+ * Prepare and save settings in styles and actions
392
+ *
393
+ * @param array $settings
394
+ * @param string $group
395
+ *
396
+ * @since 2.0.6
397
+ * @deprecated 2.05.06
398
+ */
399
+ public static function save_settings( $settings, $group ) {
400
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
401
+ return FrmDb::save_settings( $settings, $group );
402
+ }
403
+
404
+ /**
405
+ * Since actions are JSON encoded, we don't want any filters messing with it.
406
+ * Remove the filters and then add them back in case any posts or views are
407
+ * also being imported.
408
+ *
409
+ * Used when saving form actions and styles
410
+ *
411
+ * @since 2.0.4
412
+ * @deprecated 2.05.06
413
+ */
414
+ public static function save_json_post( $settings ) {
415
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
416
+ return FrmDb::save_json_post( $settings );
417
+ }
418
+
419
+ /**
420
+ * Check cache before fetching values and saving to cache
421
+ *
422
+ * @since 2.0
423
+ * @deprecated 2.05.06
424
+ *
425
+ * @param string $cache_key The unique name for this cache
426
+ * @param string $group The name of the cache group
427
+ * @param string $query If blank, don't run a db call
428
+ * @param string $type The wpdb function to use with this query
429
+ * @return mixed $results The cache or query results
430
+ */
431
+ public static function check_cache( $cache_key, $group = '', $query = '', $type = 'get_var', $time = 300 ) {
432
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
433
+ return FrmDb::check_cache( $cache_key, $group, $query, $type, $time );
434
+ }
435
+
436
+ /**
437
+ * @deprecated 2.05.06
438
+ */
439
+ public static function set_cache( $cache_key, $results, $group = '', $time = 300 ) {
440
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
441
+ FrmDb::set_cache( $cache_key, $results, $group, $time );
442
+ }
443
+
444
+ /**
445
+ * Keep track of the keys cached in each group so they can be deleted
446
+ * in Redis and Memcache
447
+ * @deprecated 2.05.06
448
+ */
449
+ public static function add_key_to_group_cache( $key, $group ) {
450
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
451
+ FrmDb::add_key_to_group_cache( $key, $group );
452
+ }
453
+
454
+ /**
455
+ * @deprecated 2.05.06
456
+ */
457
+ public static function get_group_cached_keys( $group ) {
458
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
459
+ return FrmDb::get_group_cached_keys( $group );
460
+ }
461
+
462
+ /**
463
+ * @since 2.0
464
+ * @deprecated 2.05.06
465
+ * @param string $cache_key
466
+ */
467
+ public static function delete_cache_and_transient( $cache_key, $group = 'default' ) {
468
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
469
+ FrmDb::delete_cache_and_transient( $cache_key, $group );
470
+ }
471
+
472
+ /**
473
+ * @since 2.0
474
+ * @deprecated 2.05.06
475
+ *
476
+ * @param string $group The name of the cache group
477
+ */
478
+ public static function cache_delete_group( $group ) {
479
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
480
+ FrmDb::cache_delete_group( $group );
481
+ }
482
+
483
+ /**
484
+ * Added for < WP 4.0 compatability
485
+ *
486
+ * @since 1.07.10
487
+ * @deprecated 2.05.06
488
+ *
489
+ * @param string $term The value to escape
490
+ * @return string The escaped value
491
+ */
492
+ public static function esc_like( $term ) {
493
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
494
+ return FrmDb::esc_like( $term );
495
+ }
496
+
497
+ /**
498
+ * @param string $order_query
499
+ * @deprecated 2.05.06
500
+ */
501
+ public static function esc_order( $order_query ) {
502
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
503
+ return FrmDb::esc_order( $order_query );
504
+ }
505
+
506
+ /**
507
+ * Make sure this is ordering by either ASC or DESC
508
+ * @deprecated 2.05.06
509
+ */
510
+ public static function esc_order_by( &$order_by ) {
511
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
512
+ FrmDb::esc_order_by( $order_by );
513
+ }
514
+
515
+ /**
516
+ * @param string $limit
517
+ * @deprecated 2.05.06
518
+ */
519
+ public static function esc_limit( $limit ) {
520
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
521
+ return FrmDb::esc_limit( $limit );
522
+ }
523
+
524
+ /**
525
+ * Get an array of values ready to go through $wpdb->prepare
526
+ * @since 2.0
527
+ * @deprecated 2.05.06
528
+ */
529
+ public static function prepare_array_values( $array, $type = '%s' ) {
530
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
531
+ return FrmDb::prepare_array_values( $array, $type );
532
+ }
533
+
534
+ /**
535
+ * @deprecated 2.05.06
536
+ */
537
+ public static function prepend_and_or_where( $starts_with = ' WHERE ', $where = '' ) {
538
+ _deprecated_function( __FUNCTION__, '2.05.06', 'FrmDb::' . __FUNCTION__ );
539
+ return FrmDb::prepend_and_or_where( $starts_with, $where );
540
+ }
541
+
542
+ /**
543
+ * @deprecated 2.05.06
544
+ */
545
+ public static function upgrade() {
546
+ $db = new FrmDbDeprecated();
547
+ $db->upgrade();
548
+ }
549
+
550
+ /**
551
+ * @deprecated 2.05.06
552
+ */
553
+ public static function collation() {
554
+ $db = new FrmDbDeprecated();
555
+ return $db->collation();
556
+ }
557
+
558
+ /**
559
+ * @deprecated 2.05.06
560
+ */
561
+ public static function uninstall() {
562
+ $db = new FrmDbDeprecated();
563
+ $db->uninstall();
564
+ }
565
+
566
+ /**
567
+ * @deprecated 3.0
568
+ *
569
+ * @param string $html
570
+ * @param array $field
571
+ * @param array $errors
572
+ * @param object $form
573
+ * @param array $args
574
+ *
575
+ * @return string
576
+ */
577
+ public static function replace_shortcodes( $html, $field, $errors = array(), $form = false, $args = array() ) {
578
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::prepare_field_html' );
579
+ $field_obj = FrmFieldFactory::get_field_type( $field['type'], $field );
580
+ return $field_obj->prepare_field_html( compact( 'errors', 'form' ) );
581
+ }
582
+
583
+ /**
584
+ * @deprecated 3.0
585
+ */
586
+ public static function get_default_field_opts( $type, $field = null, $limit = false ) {
587
+ if ( $limit ) {
588
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldHelper::get_default_field_options' );
589
+ $field_options = FrmFieldsHelper::get_default_field_options( $type );
590
+ } else {
591
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldHelper::get_default_field' );
592
+ $field_options = FrmFieldsHelper::get_default_field( $type );
593
+ }
594
+
595
+ return $field_options;
596
+ }
597
+
598
+ /**
599
+ * @deprecated 2.02.07
600
+ */
601
+ public static function dropdown_categories( $args ) {
602
+ _deprecated_function( __FUNCTION__, '2.02.07', 'FrmProPost::get_category_dropdown' );
603
+
604
+ if ( FrmAppHelper::pro_is_installed() ) {
605
+ $args['location'] = 'front';
606
+ $dropdown = FrmProPost::get_category_dropdown( $args['field'], $args );
607
+ } else {
608
+ $dropdown = '';
609
+ }
610
+
611
+ return $dropdown;
612
+ }
613
+
614
+ /**
615
+ * @deprecated 3.0
616
+ */
617
+ public static function remove_inline_conditions( $no_vars, $code, $replace_with, &$html ) {
618
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmShortcodeHelper::remove_inline_conditions' );
619
+ FrmShortcodeHelper::remove_inline_conditions( $no_vars, $code, $replace_with, $html );
620
+ }
621
+
622
+ /**
623
+ * @deprecated 3.0
624
+ */
625
+ public static function get_shortcode_tag( $shortcodes, $short_key, $args ) {
626
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmShortcodeHelper::get_shortcode_tag' );
627
+ return FrmShortcodeHelper::get_shortcode_tag( $shortcodes, $short_key, $args );
628
+ }
629
+
630
+ /**
631
+ * @deprecated 3.01
632
+ */
633
+ public static function get_sigle_label_postitions() {
634
+ _deprecated_function( __FUNCTION__, '3.01', 'FrmStylesHelper::get_single_label_positions' );
635
+ return FrmStylesHelper::get_single_label_positions();
636
+ }
637
+
638
+ /**
639
+ * @deprecated 3.02.03
640
+ */
641
+ public static function jquery_themes() {
642
+ _deprecated_function( __FUNCTION__, '3.02.03', 'FrmProStylesController::jquery_themes' );
643
+
644
+ $themes = array(
645
+ 'ui-lightness' => 'UI Lightness',
646
+ 'ui-darkness' => 'UI Darkness',
647
+ 'smoothness' => 'Smoothness',
648
+ 'start' => 'Start',
649
+ 'redmond' => 'Redmond',
650
+ 'sunny' => 'Sunny',
651
+ 'overcast' => 'Overcast',
652
+ 'le-frog' => 'Le Frog',
653
+ 'flick' => 'Flick',
654
+ 'pepper-grinder' => 'Pepper Grinder',
655
+ 'eggplant' => 'Eggplant',
656
+ 'dark-hive' => 'Dark Hive',
657
+ 'cupertino' => 'Cupertino',
658
+ 'south-street' => 'South Street',
659
+ 'blitzer' => 'Blitzer',
660
+ 'humanity' => 'Humanity',
661
+ 'hot-sneaks' => 'Hot Sneaks',
662
+ 'excite-bike' => 'Excite Bike',
663
+ 'vader' => 'Vader',
664
+ 'dot-luv' => 'Dot Luv',
665
+ 'mint-choc' => 'Mint Choc',
666
+ 'black-tie' => 'Black Tie',
667
+ 'trontastic' => 'Trontastic',
668
+ 'swanky-purse' => 'Swanky Purse',
669
+ );
670
+
671
+ $themes = apply_filters( 'frm_jquery_themes', $themes );
672
+ return $themes;
673
+ }
674
+
675
+ /**
676
+ * @deprecated 3.02.03
677
+ */
678
+ public static function enqueue_jquery_css() {
679
+ _deprecated_function( __FUNCTION__, '3.02.03', 'FrmProStylesController::enqueue_jquery_css' );
680
+
681
+ $form = self::get_form_for_page();
682
+ $theme_css = FrmStylesController::get_style_val( 'theme_css', $form );
683
+ if ( $theme_css != -1 ) {
684
+ wp_enqueue_style( 'jquery-theme', self::jquery_css_url( $theme_css ), array(), FrmAppHelper::plugin_version() );
685
+ }
686
+ }
687
+
688
+ /**
689
+ * @deprecated 3.02.03
690
+ */
691
+ public static function jquery_css_url( $theme_css ) {
692
+ _deprecated_function( __FUNCTION__, '3.02.03', 'FrmProStylesController::jquery_css_url' );
693
+
694
+ if ( $theme_css == -1 ) {
695
+ return;
696
+ }
697
+
698
+ if ( ! $theme_css || $theme_css == '' || $theme_css == 'ui-lightness' ) {
699
+ $css_file = FrmAppHelper::plugin_url() . '/css/ui-lightness/jquery-ui.css';
700
+ } elseif ( preg_match( '/^http.?:\/\/.*\..*$/', $theme_css ) ) {
701
+ $css_file = $theme_css;
702
+ } else {
703
+ $uploads = FrmStylesHelper::get_upload_base();
704
+ $file_path = '/formidable/css/' . $theme_css . '/jquery-ui.css';
705
+ if ( file_exists( $uploads['basedir'] . $file_path ) ) {
706
+ $css_file = $uploads['baseurl'] . $file_path;
707
+ } else {
708
+ $css_file = FrmAppHelper::jquery_ui_base_url() . '/themes/' . $theme_css . '/jquery-ui.min.css';
709
+ }
710
+ }
711
+
712
+ return $css_file;
713
+ }
714
+
715
+ /**
716
+ * @deprecated 3.02.03
717
+ */
718
+ public static function get_form_for_page() {
719
+ _deprecated_function( __FUNCTION__, '3.02.03' );
720
+
721
+ global $frm_vars;
722
+ $form_id = 'default';
723
+ if ( ! empty( $frm_vars['forms_loaded'] ) ) {
724
+ foreach ( $frm_vars['forms_loaded'] as $form ) {
725
+ if ( is_object( $form ) ) {
726
+ $form_id = $form->id;
727
+ break;
728
+ }
729
+ }
730
+ }
731
+ return $form_id;
732
+ }
733
+
734
+ /**
735
+ * @deprecated 3.0
736
+ */
737
+ public static function validate_url_field( &$errors, $field, $value, $args ) {
738
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
739
+
740
+ if ( $value == '' || ! in_array( $field->type, array( 'website', 'url' ) ) ) {
741
+ return;
742
+ }
743
+
744
+ FrmEntryValidate::validate_field_types( $errors, $field, $value, $args );
745
+ }
746
+
747
+ /**
748
+ * @deprecated 3.0
749
+ */
750
+ public static function validate_email_field( &$errors, $field, $value, $args ) {
751
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
752
+
753
+ if ( $field->type != 'email' ) {
754
+ return;
755
+ }
756
+
757
+ FrmEntryValidate::validate_field_types( $errors, $field, $value, $args );
758
+ }
759
+
760
+ /**
761
+ * @deprecated 3.0
762
+ */
763
+ public static function validate_number_field( &$errors, $field, $value, $args ) {
764
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
765
+
766
+ //validate the number format
767
+ if ( $field->type != 'number' ) {
768
+ return;
769
+ }
770
+
771
+ FrmEntryValidate::validate_field_types( $errors, $field, $value, $args );
772
+ }
773
+
774
+ /**
775
+ * @deprecated 3.0
776
+ */
777
+ public static function validate_recaptcha( &$errors, $field, $args ) {
778
+ _deprecated_function( __FUNCTION__, '3.0', 'FrmFieldType::validate' );
779
+
780
+ if ( $field->type != 'captcha' ) {
781
+ return;
782
+ }
783
+
784
+ FrmEntryValidate::validate_field_types( $errors, $field, '', $args );
785
+ }
786
+ }
{classes/models → deprecated}/FrmEDD_SL_Plugin_Updater.php RENAMED
File without changes
{classes/models → deprecated}/FrmEntryDeprecated.php RENAMED
@@ -2,6 +2,8 @@
2
 
3
  /**
4
  * @since 2.03.05
 
 
5
  */
6
  class FrmEntryDeprecated {
7
 
2
 
3
  /**
4
  * @since 2.03.05
5
+ * @deprecated 2.03.05
6
+ * @codeCoverageIgnore
7
  */
8
  class FrmEntryDeprecated {
9
 
{classes/models → deprecated}/FrmEntryFormat.php RENAMED
@@ -1,5 +1,8 @@
1
  <?php
2
-
 
 
 
3
  class FrmEntryFormat {
4
 
5
  /***********************************************************************
1
  <?php
2
+ /**
3
+ * @deprecated 2.04
4
+ * @codeCoverageIgnore
5
+ */
6
  class FrmEntryFormat {
7
 
8
  /***********************************************************************
{classes/models → deprecated}/FrmEntryMetaDeprecated.php RENAMED
@@ -2,6 +2,8 @@
2
 
3
  /**
4
  * @since 2.03.05
 
 
5
  */
6
  class FrmEntryMetaDeprecated {
7
 
2
 
3
  /**
4
  * @since 2.03.05
5
+ * @deprecated 2.03.05
6
+ * @codeCoverageIgnore
7
  */
8
  class FrmEntryMetaDeprecated {
9
 
{classes/models → deprecated}/FrmFieldDeprecated.php RENAMED
@@ -2,6 +2,8 @@
2
 
3
  /**
4
  * @since 2.03.05
 
 
5
  */
6
  class FrmFieldDeprecated {
7
 
2
 
3
  /**
4
  * @since 2.03.05
5
+ * @deprecated 2.03.05
6
+ * @codeCoverageIgnore
7
  */
8
  class FrmFieldDeprecated {
9
 
{classes/models → deprecated}/FrmFormDeprecated.php RENAMED
@@ -2,6 +2,8 @@
2
 
3
  /**
4
  * @since 2.03.05
 
 
5
  */
6
  class FrmFormDeprecated {
7
 
@@ -109,7 +111,7 @@ class FrmFormDeprecated {
109
  * @deprecated 2.03.05
110
  */
111
  public static function getIdByKey( $key ) {
112
- _deprecated_function( __FUNCTION__, '2.03.05', 'FrmForm::getIdByKey' );
113
 
114
  return FrmForm::get_id_by_key( $key );
115
  }
2
 
3
  /**
4
  * @since 2.03.05
5
+ * @deprecated 2.03.05
6
+ * @codeCoverageIgnore
7
  */
8
  class FrmFormDeprecated {
9
 
111
  * @deprecated 2.03.05
112
  */
113
  public static function getIdByKey( $key ) {
114
+ _deprecated_function( __FUNCTION__, '2.03.05', 'FrmForm::get_id_by_key' );
115
 
116
  return FrmForm::get_id_by_key( $key );
117
  }
{classes/models → deprecated}/FrmPointers.php RENAMED
@@ -2,6 +2,8 @@
2
 
3
  /**
4
  * This class handles the pointers used in the introduction tour.
 
 
5
  */
6
  class FrmPointers {
7
 
2
 
3
  /**
4
  * This class handles the pointers used in the introduction tour.
5
+ * @deprecated 3.01.03
6
+ * @codeCoverageIgnore
7
  */
8
  class FrmPointers {
9
 
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: 3.04.02
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
@@ -65,18 +65,24 @@ function frm_forms_autoloader( $class_name ) {
65
  * @since 3.0
66
  */
67
  function frm_class_autoloader( $class_name, $filepath ) {
68
- $filepath .= '/classes';
 
69
 
70
- if ( preg_match( '/^.+Helper$/', $class_name ) ) {
71
- $filepath .= '/helpers/';
72
- } else if ( preg_match( '/^.+Controller$/', $class_name ) ) {
73
- $filepath .= '/controllers/';
74
- } else if ( preg_match( '/^.+Factory$/', $class_name ) ) {
75
- $filepath .= '/factories/';
76
  } else {
77
- $filepath .= '/models/';
78
- if ( strpos( $class_name, 'Field' ) && ! file_exists( $filepath . $class_name . '.php' ) ) {
79
- $filepath .= 'fields/';
 
 
 
 
 
 
 
 
 
80
  }
81
  }
82
 
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
+ Version: 3.04.03
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
65
  * @since 3.0
66
  */
67
  function frm_class_autoloader( $class_name, $filepath ) {
68
+ $deprecated = array( 'FrmEntryFormat', 'FrmPointers', 'FrmEDD_SL_Plugin_Updater' );
69
+ $is_deprecated = in_array( $class_name, $deprecated ) || preg_match( '/^.+Deprecate/', $class_name );
70
 
71
+ if ( $is_deprecated ) {
72
+ $filepath .= '/deprecated/';
 
 
 
 
73
  } else {
74
+ $filepath .= '/classes/';
75
+ if ( preg_match( '/^.+Helper$/', $class_name ) ) {
76
+ $filepath .= 'helpers/';
77
+ } else if ( preg_match( '/^.+Controller$/', $class_name ) ) {
78
+ $filepath .= 'controllers/';
79
+ } else if ( preg_match( '/^.+Factory$/', $class_name ) ) {
80
+ $filepath .= 'factories/';
81
+ } else {
82
+ $filepath .= 'models/';
83
+ if ( strpos( $class_name, 'Field' ) && ! file_exists( $filepath . $class_name . '.php' ) ) {
84
+ $filepath .= 'fields/';
85
+ }
86
  }
87
  }
88
 
js/formidable.js CHANGED
@@ -138,8 +138,6 @@ function frmFrontFormJS(){
138
  errors = checkNumberField( field, errors );
139
  } else if ( field.type === 'email' ) {
140
  errors = checkEmailField( field, errors, emailFields );
141
- } else if (field.type === 'password') {
142
- errors = checkPasswordField(field, errors);
143
  } else if ( field.pattern !== null ) {
144
  errors = checkPatternField( field, errors );
145
  }
@@ -183,8 +181,6 @@ function frmFrontFormJS(){
183
  errors = checkEmailField( field, errors, emailFields );
184
  } else if ( field.type === 'number' ) {
185
  errors = checkNumberField( field, errors );
186
- } else if (field.type === 'password') {
187
- errors = checkPasswordField( field, errors );
188
  } else if ( field.pattern !== null ) {
189
  errors = checkPatternField( field, errors );
190
  }
@@ -336,25 +332,6 @@ function frmFrontFormJS(){
336
  return errors;
337
  }
338
 
339
- function checkPasswordField( field, errors ) {
340
- var classes = field.className;
341
-
342
- if (classes.indexOf('frm_strong_pass') < 0) {
343
- return errors;
344
- }
345
-
346
- var text = field.value;
347
- var regEx = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*[^a-zA-Z0-9])(?=.*?[0-9]).{8,}$/;
348
- var matches = regEx.test(text); //true if matches format, false otherwise
349
-
350
- if (!matches) {
351
- var fieldID = getFieldId( field, true );
352
- errors[ fieldID ] = getFieldValidationMessage( field, 'data-invmsg' );
353
- }
354
-
355
- return errors;
356
- }
357
-
358
  function hasInvisibleRecaptcha( object ) {
359
  if ( typeof frmProForm !== 'undefined' && frmProForm.goingToPreviousPage( object ) ) {
360
  return false;
@@ -887,7 +864,7 @@ function frmFrontFormJS(){
887
  }
888
  }
889
 
890
- if ( jQuery('body').hasClass('wp-admin') ) {
891
  return;
892
  }
893
 
138
  errors = checkNumberField( field, errors );
139
  } else if ( field.type === 'email' ) {
140
  errors = checkEmailField( field, errors, emailFields );
 
 
141
  } else if ( field.pattern !== null ) {
142
  errors = checkPatternField( field, errors );
143
  }
181
  errors = checkEmailField( field, errors, emailFields );
182
  } else if ( field.type === 'number' ) {
183
  errors = checkNumberField( field, errors );
 
 
184
  } else if ( field.pattern !== null ) {
185
  errors = checkPatternField( field, errors );
186
  }
332
  return errors;
333
  }
334
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  function hasInvisibleRecaptcha( object ) {
336
  if ( typeof frmProForm !== 'undefined' && frmProForm.goingToPreviousPage( object ) ) {
337
  return false;
864
  }
865
  }
866
 
867
+ if ( jQuery('body').hasClass('wp-admin') && jQuery(object).closest('.frmapi-form').length < 1 ) {
868
  return;
869
  }
870
 
js/formidable.min.js CHANGED
@@ -1,36 +1,36 @@
1
- function frmFrontFormJS(){function e(){var a=jQuery(this),b=a.closest(".frm_inside_container").find("label.frm_primary_label");0<a.val().length?b.addClass("frm_visible"):b.removeClass("frm_visible")}function f(a,b){var c="";c=a instanceof jQuery?a.attr("name"):a.name;if(""===c)return c=a instanceof jQuery?a.data("name"):a.getAttribute("data-name"),""!==c&&c?c:0;c=c.replace("item_meta[","").replace("[]","").split("]");if(1>c.length)return 0;c=c.filter(function(a){return""!==a});var d=c[0],h=!1;if(1===
2
- c.length)return d;if("[form"===c[1]||"[row_ids"===c[1])return 0;jQuery('input[name="item_meta['+d+'][form]"]').length&&(d=c[2].replace("[",""),h=!0);"other"===d&&(d=h?c[3].replace("[",""):c[1].replace("[",""));!0===b&&(d=d===c[0]?d+"-"+c[1].replace("[",""):d+"-"+c[0]+"-"+c[1].replace("[",""));return d}function l(a,b){var c=a.getAttribute("data-frmfile");if("hidden"===a.type&&null===c)return b;var d="",h="";if("checkbox"===a.type||"radio"===a.type)c=jQuery('input[name="'+a.name+'"]').closest(".frm_required_field").find("input:checked"),
3
- jQuery(c).each(function(){d=this.value});else if("file"===a.type||c)"undefined"===typeof c&&(c=f(a,!0),c=c.replace("file","")),"undefined"===typeof b[c]&&(d=n(c)),h=c;else{c=a.className;if(-1!==c.indexOf("frm_pos_none"))return b;d=jQuery(a).val();if(null===d)d="";else if("string"!==typeof d){h=d;d="";for(var k=0;k<h.length;k++)""!==h[k]&&(d=h[k])}h=-1===c.indexOf("frm_other_input")?f(a,!0):f(a,!1);-1!==c.indexOf("frm_time_select")&&(h=h.replace("-H","").replace("-m",""));c=a.getAttribute("data-frmplaceholder");
4
- null!==c&&d===c&&(d="")}""===d&&(""===h&&(h=f(a,!0)),h in b||(b[h]=p(a,"data-reqmsg")));return b}function n(a){var b="";jQuery('input[name="file'+a+'"], input[name="file'+a+'[]"], input[name^="item_meta['+a+']"]').each(function(){""===b&&(b=this.value)});return b}function q(a,b,c){var d=a.value,h=f(a,!0);if(h in b)return b;var k=0===h.indexOf("conf_");if(""!==d||k){var g=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i,
5
- e=p(a,"data-invmsg");""!==d&&!1===g.test(d)?(b[h]=e,k&&(b[h.replace("conf_","")]="")):k&&(a=a.name.replace("conf_",""),c.filter('[name="'+a+'"]').val()!==d&&(b[h]="",b[h.replace("conf_","")]=""))}return b}function w(a,b){var c=a.value;""!==c&&!1!==isNaN(c/1)&&(c=f(a,!0),c in b||(b[c]=p(a,"data-invmsg")));return b}function x(a,b){var c=a.value,d=p(a,"pattern");if(""!==d&&""!==c){var h=f(a,!0);h in b||(d=new RegExp("^"+d+"$","i"),!1===d.test(c)&&(b[h]=p(a,"data-invmsg")))}return b}function y(a,b){if(0>
6
- a.className.indexOf("frm_strong_pass"))return b;if(!/^(?=.*?[a-z])(?=.*?[A-Z])(?=.*[^a-zA-Z0-9])(?=.*?[0-9]).{8,}$/.test(a.value)){var c=f(a,!0);b[c]=p(a,"data-invmsg")}return b}function p(a,b){var c=a.getAttribute(b);null===c&&(c="");return c}function D(a,b){"undefined"===typeof b&&jQuery(a).find('input[name="frm_action"]').val();var c=jQuery(a).find(".frm_form_field");c.addClass("frm_doing_ajax");jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:jQuery(a).serialize()+"&action=frm_entries_"+b+"&nonce="+
7
- frm_js.nonce,success:function(b){var d={content:"",errors:{},pass:!1};null===b&&(b=d);b=b.replace(/^\s+|\s+$/g,"");b=0===b.indexOf("{")?jQuery.parseJSON(b):d;if("undefined"!==typeof b.redirect)jQuery(document).trigger("frmBeforeFormRedirect",[a,b]),window.location=b.redirect;else if(""!==b.content){t(jQuery(a));-1!=frm_js.offset&&frmFrontForm.scrollMsg(jQuery(a),!1);var k=jQuery(a).find('input[name="form_id"]').val();b.content=b.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");d=jQuery(a).closest(".frm_forms");
8
- var g=jQuery(".frm_end_ajax_"+k);g.length&&(d.nextUntil(".frm_end_ajax_"+k).remove(),g.remove());d.replaceWith(b.content);d=b;if(history.pushState&&"undefined"!==typeof d.page){var e=d.page;g=encodeURI("frm_page");e=encodeURI(e);for(var f=document.location.search.substr(1).split("&"),l=f.length,m;l--;)if(m=f[l].split("="),m[0]==g){m[1]=e;f[l]=m.join("=");break}0>l&&(f[f.length]=[g,e].join("="));g=f.join("&");window.history.pushState({html:d.html},"","?"+g)}"function"===typeof frmThemeOverride_frmAfterSubmit&&
9
- (k=jQuery('input[name="frm_page_order_'+k+'"]').val(),d=jQuery(b.content).find('input[name="form_id"]').val(),frmThemeOverride_frmAfterSubmit(d,k,b.content,a));jQuery(b.content).find(".frm_message").length?jQuery(document).trigger("frmFormComplete",[a,b]):jQuery(document).trigger("frmPageChanged",[a,b])}else if(Object.keys(b.errors).length){t(jQuery(a),"enable");d=!0;z();g=!1;for(k in b.errors)e=jQuery(a).find("#frm_field_"+k+"_container"),e.length&&(e.is(":visible")||(f=e.closest(".frm_toggle_container"),
10
- f.length&&(f=f.prev(),f.hasClass("frm_trigger")||(f=f.prev(".frm_trigger")),f.click())),e.is(":visible")&&(u(e,k,b.errors),d=!1,e=jQuery(a).find("#frm_field_"+k+"_container .frm-g-recaptcha, #frm_field_"+k+"_container .g-recaptcha"),e.length&&(g=!0,e=e.data("rid"),jQuery().grecaptcha&&(e?grecaptcha.reset(e):grecaptcha.reset()))));jQuery(document).trigger("frmFormErrors",[a,b]);c.removeClass("frm_doing_ajax");A(a);!0!==g&&B(a,!1);d?a.submit():jQuery(a).prepend(b.error_message)}else E(a),B(a,!0),a.submit()},
11
- error:function(){jQuery(a).find('input[type="submit"], input[type="button"]').removeAttr("disabled");a.submit()}})}function u(a,b,c){a.length&&a.is(":visible")&&(a.addClass("frm_blank_field"),"function"===typeof frmThemeOverride_frmPlaceError?frmThemeOverride_frmPlaceError(b,c):a.append('<div class="frm_error">'+c[b]+"</div>"),jQuery(document).trigger("frmAddFieldError",[a,b,c]))}function z(){jQuery(".form-field").removeClass("frm_blank_field has-error");jQuery(".form-field .frm_error").replaceWith("");
12
- jQuery(".frm_error_style").remove()}function A(a){var b=jQuery(a).find(".frm_blank_field:first");b.length&&frmFrontForm.scrollMsg(b,a,!0)}function v(a){a.hasClass("frm_loading_form")||(a.addClass("frm_loading_form"),a.trigger("frmStartFormLoading"));a.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled","disabled")}function t(a,b,c){0<c||(a.removeClass("frm_loading_form"),a.trigger("frmEndFormLoading"),"enable"===b&&a.find('input[type="submit"], input[type="button"], button[type="submit"]').removeAttr("disabled"))}
13
- function E(a){var b=document.getElementById("frm_loading");null!==b&&(a=jQuery(a).find("input[type=file]").val(),"undefined"!==typeof a&&""!==a&&setTimeout(function(){jQuery(b).fadeIn("slow")},2E3))}function B(a,b){var c=jQuery(a).find(".frm-g-recaptcha, .g-recaptcha");c.length&&(!b||1>jQuery(a).find(".frm_next_page").length||1>jQuery(a).find(".frm_next_page").val())&&c.closest(".frm_form_field").replaceWith('<input type="hidden" name="recaptcha_checked" value="'+frm_js.nonce+'">')}function F(){C(jQuery(this),
14
- "clear")}function G(){C(jQuery(this),"replace")}function C(a,b){var c=a.data("frmval").replace(/(\n|\r\n)/g,"\r");if(""===c||"undefined"===typeof c)return!1;var d=a.val().replace(/(\n|\r\n)/g,"\r");"replace"==b?""===d&&a.addClass("frm_default").val(c):d==c&&a.removeClass("frm_default").val("")}function H(){var a=jQuery(this),b=a.data("eid"),c=a.data("fid");a.append('<span class="spinner" style="display:inline"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",
15
- entry_id:b,form_id:c,nonce:frm_js.nonce},success:function(b){a.replaceWith(b)}});return!1}function I(){var a=jQuery(this).data("frmconfirm");return confirm(a)}function J(){var a=jQuery(this).data("frmtoggle");jQuery(a).is(":visible")?jQuery(a).slideUp("fast"):jQuery(a).slideDown("fast");return!1}function K(){Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var c=this.length>>>0,d=Number(b)||0;d=0>d?Math.ceil(d):Math.floor(d);for(0>d&&(d+=c);d<c;d++)if(d in this&&this[d]===a)return d;
16
- return-1})}function L(){"function"!==typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")})}function M(){Array.prototype.filter||(Array.prototype.filter=function(a,b){if(void 0===this||null===this)throw new TypeError;var c=Object(this),d=c.length>>>0;if("function"!==typeof a)throw new TypeError;for(var e=[],f=0;f<d;f++)if(f in c){var g=c[f];a.call(b,g,f,c)&&e.push(g)}return e})}function N(){Object.keys||(Object.keys=function(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&
17
- b.push(c);return b})}var r="",m=[];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(){""===jQuery(this).val()&&jQuery(this).blur()});jQuery(document).on("focus",".frm_toggle_default",F);jQuery(document).on("blur",".frm_toggle_default",G);jQuery(".frm_toggle_default").blur();jQuery(document.getElementById("frm_resend_email")).click(H);
18
- 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",e);jQuery(document).on("click","a[data-frmconfirm]",I);jQuery("a[data-frmtoggle]").click(J);K();L();M();N()},getFieldId:function(a,b){return f(a,
19
- b)},renderRecaptcha:function(a){var b=a.getAttribute("data-size"),c={sitekey:a.getAttribute("data-sitekey"),size:b,theme:a.getAttribute("data-theme")};if("invisible"===b){var d=jQuery(a).closest("form").find('input[name="form_id"]').val();c.callback=function(a){frmFrontForm.afterRecaptcha(a,d)}}b=grecaptcha.render(a.id,c);a.setAttribute("data-rid",b)},afterSingleRecaptcha:function(a){a=jQuery(".frm-show-form .g-recaptcha").closest("form")[0];frmFrontForm.submitFormNow(a)},afterRecaptcha:function(a,
20
- b){var c=jQuery("#frm_form_"+b+"_container form")[0];frmFrontForm.submitFormNow(c)},submitForm:function(a){frmFrontForm.submitFormManual(a,this)},submitFormManual:function(a,b){if("undefined"!==typeof frmProForm&&frmProForm.goingToPreviousPage(b))var c=!1;else{var d=jQuery(b).find('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');d.length?(c=d.data("rid"),c=0===grecaptcha.getResponse(c).length?d:!1):c=!1}d=b.className.trim().split(/\s+/gi);d&&1>c.length&&!(-1<d.indexOf("frm_pro_form"))||
21
- jQuery("body").hasClass("wp-admin")||(a.preventDefault(),"undefined"!==typeof frmProForm&&"function"===typeof frmProForm.submitAllowed&&!frmProForm.submitAllowed(b))||(c.length?(v(jQuery(b)),d=c.data("rid"),grecaptcha.reset(d),grecaptcha.execute(d)):(c=frmFrontForm.validateFormSubmit(b),0===Object.keys(c).length&&(v(jQuery(b)),frmFrontForm.submitFormNow(b,d))))},submitFormNow:function(a){-1<a.className.trim().split(/\s+/gi).indexOf("frm_ajax_submit")?1>jQuery(a).find('input[type="file"]').filter(function(){return!!this.value}).length?
22
- (r=jQuery(a).find('input[name="frm_action"]').val(),frmFrontForm.checkFormErrors(a,r)):a.submit():a.submit()},validateFormSubmit:function(a){"undefined"!==typeof tinyMCE&&jQuery(a).find(".wp-editor-wrap").length&&tinyMCE.triggerSave();m=[];var b=jQuery(a).hasClass("frm_js_validate");b&&"undefined"!==typeof frmProForm&&(frmProForm.savingDraft(a)||frmProForm.goingToPreviousPage(a))&&(b=!1);b&&(frmFrontForm.getAjaxFormErrors(a),Object.keys(m).length&&frmFrontForm.addAjaxFormErrors(a));return m},getAjaxFormErrors:function(a){var b=
23
- [],c=jQuery(a).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");if(c.length)for(var d=0,e=c.length;d<e;d++)b=l(c[d],b);c=jQuery(a).find("input[type=email]").filter(":visible");d=jQuery(a).find("input,select,textarea");if(d.length){e=0;for(var f=d.length;e<f;e++){var g=d[e];""!==g.value&&"hidden"!==g.type&&("number"===g.type?b=w(g,b):"email"===g.type?b=q(g,b,c):"password"===g.type?b=y(g,b):null!==g.pattern&&
24
- (b=x(g,b)))}}c=jQuery(a).find(".frm-g-recaptcha");c.length&&(d=c.data("rid"),0===grecaptcha.getResponse(d).length&&(c=c.closest(".frm_form_field").attr("id").replace("frm_field_","").replace("_container",""),b[c]=""));m=b;if("function"===typeof frmThemeOverride_jsErrors&&(r=jQuery(a).find('input[name="frm_action"]').val(),a=frmThemeOverride_jsErrors(r,a),Object.keys(a).length))for(var n in a)m[n]=a[n];return m},addAjaxFormErrors:function(a){z();for(var b in m){var c=jQuery(a).find("#frm_field_"+b+
25
- "_container");c.length?u(c,b,m):delete m[b]}A(a)},checkFormErrors:function(a,b){D(a,b)},checkRequiredField:function(a,b){return l(a,b)},showSubmitLoading:function(a){v(a)},removeSubmitLoading:function(a,b,c){t(a,b,c)},scrollToID:function(a){a=jQuery(document.getElementById(a));frmFrontForm.scrollMsg(a,!1)},scrollMsg:function(a,b,c){if("undefined"===typeof b){if(a=jQuery(document.getElementById("frm_form_"+a+"_container")),1>a.length)return}else a="string"===typeof a?jQuery(b).find("#frm_field_"+a+
26
- "_container"):a;if(a=a.offset().top){a-=frm_js.offset;b=jQuery("html").css("margin-top");var d=jQuery("body").css("margin-top");if(b||d)a=a-parseInt(b)-parseInt(d);if(a&&window.innerHeight&&(b=document.documentElement.scrollTop||document.body.scrollTop,a>b+window.innerHeight||a<b))return"undefined"===typeof c?jQuery(window).scrollTop(a):jQuery("html,body").animate({scrollTop:a},500),!1}},fieldValueChanged:function(a){var b=frmFrontForm.getFieldId(this,!1);if(b&&"undefined"!==typeof b&&(!a.frmTriggered||
27
- a.frmTriggered!=b)&&(jQuery(document).trigger("frmFieldChanged",[this,b,a]),!0!==a.selfTriggered&&("url"===this.type&&(a=this.value,b=a.match(/^(https?|ftps?|mailto|news|feed|telnet):/),""!==this.value&&null===b&&(this.value="http://"+a)),jQuery(this).closest("form").hasClass("frm_js_validate")))){a=[];b=jQuery(this).closest(".frm_form_field");b.hasClass("frm_required_field")&&!jQuery(this).hasClass("frm_optional")&&(a=l(this,a));if(1>a.length)if("email"===this.type){var c=jQuery(this).closest("form").find("input[type=email]");
28
- a=q(this,a,c)}else"number"===this.type?a=w(this,a):"password"===this.type?a=y(this,a):null!==this.pattern&&(a=x(this,a));b.removeClass("frm_blank_field has-error");b.find(".frm_error").remove();if(0<Object.keys(a).length)for(var d in a)u(b,d,a)}},savingDraft:function(a){console.warn("DEPRECATED: function frmFrontForm.savingDraft in v3.0 use frmProForm.savingDraft");if("undefined"!==typeof frmProForm)return frmProForm.savingDraft(a)},goingToPreviousPage:function(a){console.warn("DEPRECATED: function frmFrontForm.goingToPreviousPage in v3.0 use frmProForm.goingToPreviousPage");
29
- if("undefined"!==typeof frmProForm)return frmProForm.goingToPreviousPage(a)},hideOrShowFields:function(a,b){console.warn("DEPRECATED: function frmFrontForm.hideOrShowFields in v3.0 use frmProForm.hideOrShowFields");"undefined"!==typeof frmProForm&&frmProForm.hideOrShowFields()},hidePreviouslyHiddenFields:function(){console.warn("DEPRECATED: function frmFrontForm.hidePreviouslyHiddenFields in v3.0 use frmProForm.hidePreviouslyHiddenFields");"undefined"!==typeof frmProForm&&frmProForm.hidePreviouslyHiddenFields()},
30
- checkDependentDynamicFields:function(a){console.warn("DEPRECATED: function frmFrontForm.checkDependentDynamicFields in v3.0 use frmProForm.checkDependentDynamicFields");"undefined"!==typeof frmProForm&&frmProForm.checkDependentDynamicFields(a)},checkDependentLookupFields:function(a){console.warn("DEPRECATED: function frmFrontForm.checkDependentLookupFields in v3.0 use frmProForm.checkDependentLookupFields");"undefined"!==typeof frmProForm&&frmProForm.checkDependentLookupFields(a)},loadGoogle:function(){console.warn("DEPRECATED: function frmFrontForm.loadGoogle in v3.0 use frmProForm.loadGoogle");
31
- frmProForm.loadGoogle()},removeUsedTimes:function(a,b){console.warn("DEPRECATED: function frmFrontForm.removeUsedTimes in v3.0 use frmProForm.removeUsedTimes");"undefined"!==typeof frmProForm&&frmProForm.removeUsedTimes()},escapeHtml:function(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")},invisible:function(a){jQuery(a).css("visibility","hidden")},visible:function(a){jQuery(a).css("visibility","visible")}}}
32
- var frmFrontForm=frmFrontFormJS();jQuery(document).ready(function(e){frmFrontForm.init()});function frmRecaptcha(){for(var e=jQuery(".frm-g-recaptcha"),f=0,l=e.length;f<l;f++)frmFrontForm.renderRecaptcha(e[f])}function frmAfterRecaptcha(e){frmFrontForm.afterSingleRecaptcha(e)}
33
- function frmUpdateField(e,f,l,n,q){jQuery(document.getElementById("frm_update_field_"+e+"_"+f+"_"+q)).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:e,field_id:f,value:l,nonce:frm_js.nonce},success:function(){""===n.replace(/^\s+|\s+$/g,"")?jQuery(document.getElementById("frm_update_field_"+e+"_"+f+"_"+q)).fadeOut("slow"):jQuery(document.getElementById("frm_update_field_"+e+"_"+f+"_"+q)).replaceWith(n)}})}
34
- function frmDeleteEntry(e,f){console.warn("DEPRECATED: function frmDeleteEntry in v2.0.13 use frmFrontForm.deleteEntry");jQuery(document.getElementById("frm_delete_"+e)).replaceWith('<span class="frm-loading-img" id="frm_delete_'+e+'"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_destroy",entry:e,nonce:frm_js.nonce},success:function(l){"success"===l.replace(/^\s+|\s+$/g,"")?jQuery(document.getElementById(f+e)).fadeOut("slow"):jQuery(document.getElementById("frm_delete_"+
35
- e)).replaceWith(l)}})}function frmOnSubmit(e){console.warn("DEPRECATED: function frmOnSubmit in v2.0 use frmFrontForm.submitForm");frmFrontForm.submitForm(e,this)}
36
- function frm_resend_email(e,f){console.warn("DEPRECATED: function frm_resend_email in v2.0");var l=jQuery(document.getElementById("frm_resend_email"));l.append('<span class="spinner" style="display:inline"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:e,form_id:f,nonce:frm_js.nonce},success:function(e){l.replaceWith(e)}})};
1
+ function frmFrontFormJS(){function e(){var a=jQuery(this),b=a.closest(".frm_inside_container").find("label.frm_primary_label");0<a.val().length?b.addClass("frm_visible"):b.removeClass("frm_visible")}function f(a,b){var c="";c=a instanceof jQuery?a.attr("name"):a.name;if(""===c)return c=a instanceof jQuery?a.data("name"):a.getAttribute("data-name"),""!==c&&c?c:0;c=c.replace("item_meta[","").replace("[]","").split("]");if(1>c.length)return 0;c=c.filter(function(a){return""!==a});var d=c[0],g=!1;if(1===
2
+ c.length)return d;if("[form"===c[1]||"[row_ids"===c[1])return 0;jQuery('input[name="item_meta['+d+'][form]"]').length&&(d=c[2].replace("[",""),g=!0);"other"===d&&(d=g?c[3].replace("[",""):c[1].replace("[",""));!0===b&&(d=d===c[0]?d+"-"+c[1].replace("[",""):d+"-"+c[0]+"-"+c[1].replace("[",""));return d}function h(a,b){var c=a.getAttribute("data-frmfile");if("hidden"===a.type&&null===c)return b;var d="",g="";if("checkbox"===a.type||"radio"===a.type)c=jQuery('input[name="'+a.name+'"]').closest(".frm_required_field").find("input:checked"),
3
+ jQuery(c).each(function(){d=this.value});else if("file"===a.type||c)"undefined"===typeof c&&(c=f(a,!0),c=c.replace("file","")),"undefined"===typeof b[c]&&(d=p(c)),g=c;else{c=a.className;if(-1!==c.indexOf("frm_pos_none"))return b;d=jQuery(a).val();if(null===d)d="";else if("string"!==typeof d){g=d;d="";for(var k=0;k<g.length;k++)""!==g[k]&&(d=g[k])}g=-1===c.indexOf("frm_other_input")?f(a,!0):f(a,!1);-1!==c.indexOf("frm_time_select")&&(g=g.replace("-H","").replace("-m",""));c=a.getAttribute("data-frmplaceholder");
4
+ null!==c&&d===c&&(d="")}""===d&&(""===g&&(g=f(a,!0)),g in b||(b[g]=r(a,"data-reqmsg")));return b}function p(a){var b="";jQuery('input[name="file'+a+'"], input[name="file'+a+'[]"], input[name^="item_meta['+a+']"]').each(function(){""===b&&(b=this.value)});return b}function q(a,b,c){var d=a.value,g=f(a,!0);if(g in b)return b;var k=0===g.indexOf("conf_");if(""!==d||k){var n=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/i,
5
+ e=r(a,"data-invmsg");""!==d&&!1===n.test(d)?(b[g]=e,k&&(b[g.replace("conf_","")]="")):k&&(a=a.name.replace("conf_",""),c.filter('[name="'+a+'"]').val()!==d&&(b[g]="",b[g.replace("conf_","")]=""))}return b}function x(a,b){var c=a.value;""!==c&&!1!==isNaN(c/1)&&(c=f(a,!0),c in b||(b[c]=r(a,"data-invmsg")));return b}function y(a,b){var c=a.value,d=r(a,"pattern");if(""!==d&&""!==c){var g=f(a,!0);g in b||(d=new RegExp("^"+d+"$","i"),!1===d.test(c)&&(b[g]=r(a,"data-invmsg")))}return b}function r(a,b){var c=
6
+ a.getAttribute(b);null===c&&(c="");return c}function D(a,b){"undefined"===typeof b&&jQuery(a).find('input[name="frm_action"]').val();var c=jQuery(a).find(".frm_form_field");c.addClass("frm_doing_ajax");jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:jQuery(a).serialize()+"&action=frm_entries_"+b+"&nonce="+frm_js.nonce,success:function(b){var d={content:"",errors:{},pass:!1};null===b&&(b=d);b=b.replace(/^\s+|\s+$/g,"");b=0===b.indexOf("{")?jQuery.parseJSON(b):d;if("undefined"!==typeof b.redirect)jQuery(document).trigger("frmBeforeFormRedirect",
7
+ [a,b]),window.location=b.redirect;else if(""!==b.content){u(jQuery(a));-1!=frm_js.offset&&frmFrontForm.scrollMsg(jQuery(a),!1);var k=jQuery(a).find('input[name="form_id"]').val();b.content=b.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");d=jQuery(a).closest(".frm_forms");var e=jQuery(".frm_end_ajax_"+k);e.length&&(d.nextUntil(".frm_end_ajax_"+k).remove(),e.remove());d.replaceWith(b.content);d=b;if(history.pushState&&"undefined"!==typeof d.page){var f=d.page;e=encodeURI("frm_page");
8
+ f=encodeURI(f);for(var l=document.location.search.substr(1).split("&"),h=l.length,m;h--;)if(m=l[h].split("="),m[0]==e){m[1]=f;l[h]=m.join("=");break}0>h&&(l[l.length]=[e,f].join("="));e=l.join("&");window.history.pushState({html:d.html},"","?"+e)}"function"===typeof frmThemeOverride_frmAfterSubmit&&(k=jQuery('input[name="frm_page_order_'+k+'"]').val(),d=jQuery(b.content).find('input[name="form_id"]').val(),frmThemeOverride_frmAfterSubmit(d,k,b.content,a));jQuery(b.content).find(".frm_message").length?
9
+ jQuery(document).trigger("frmFormComplete",[a,b]):jQuery(document).trigger("frmPageChanged",[a,b])}else if(Object.keys(b.errors).length){u(jQuery(a),"enable");d=!0;z();e=!1;for(k in b.errors)f=jQuery(a).find("#frm_field_"+k+"_container"),f.length&&(f.is(":visible")||(l=f.closest(".frm_toggle_container"),l.length&&(l=l.prev(),l.hasClass("frm_trigger")||(l=l.prev(".frm_trigger")),l.click())),f.is(":visible")&&(v(f,k,b.errors),d=!1,f=jQuery(a).find("#frm_field_"+k+"_container .frm-g-recaptcha, #frm_field_"+
10
+ k+"_container .g-recaptcha"),f.length&&(e=!0,f=f.data("rid"),jQuery().grecaptcha&&(f?grecaptcha.reset(f):grecaptcha.reset()))));jQuery(document).trigger("frmFormErrors",[a,b]);c.removeClass("frm_doing_ajax");A(a);!0!==e&&B(a,!1);d?a.submit():jQuery(a).prepend(b.error_message)}else E(a),B(a,!0),a.submit()},error:function(){jQuery(a).find('input[type="submit"], input[type="button"]').removeAttr("disabled");a.submit()}})}function v(a,b,c){a.length&&a.is(":visible")&&(a.addClass("frm_blank_field"),"function"===
11
+ typeof frmThemeOverride_frmPlaceError?frmThemeOverride_frmPlaceError(b,c):a.append('<div class="frm_error">'+c[b]+"</div>"),jQuery(document).trigger("frmAddFieldError",[a,b,c]))}function z(){jQuery(".form-field").removeClass("frm_blank_field has-error");jQuery(".form-field .frm_error").replaceWith("");jQuery(".frm_error_style").remove()}function A(a){var b=jQuery(a).find(".frm_blank_field:first");b.length&&frmFrontForm.scrollMsg(b,a,!0)}function w(a){a.hasClass("frm_loading_form")||(a.addClass("frm_loading_form"),
12
+ a.trigger("frmStartFormLoading"));a.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled","disabled")}function u(a,b,c){0<c||(a.removeClass("frm_loading_form"),a.trigger("frmEndFormLoading"),"enable"===b&&a.find('input[type="submit"], input[type="button"], button[type="submit"]').removeAttr("disabled"))}function E(a){var b=document.getElementById("frm_loading");null!==b&&(a=jQuery(a).find("input[type=file]").val(),"undefined"!==typeof a&&""!==a&&setTimeout(function(){jQuery(b).fadeIn("slow")},
13
+ 2E3))}function B(a,b){var c=jQuery(a).find(".frm-g-recaptcha, .g-recaptcha");c.length&&(!b||1>jQuery(a).find(".frm_next_page").length||1>jQuery(a).find(".frm_next_page").val())&&c.closest(".frm_form_field").replaceWith('<input type="hidden" name="recaptcha_checked" value="'+frm_js.nonce+'">')}function F(){C(jQuery(this),"clear")}function G(){C(jQuery(this),"replace")}function C(a,b){var c=a.data("frmval").replace(/(\n|\r\n)/g,"\r");if(""===c||"undefined"===typeof c)return!1;var d=a.val().replace(/(\n|\r\n)/g,
14
+ "\r");"replace"==b?""===d&&a.addClass("frm_default").val(c):d==c&&a.removeClass("frm_default").val("")}function H(){var a=jQuery(this),b=a.data("eid"),c=a.data("fid");a.append('<span class="spinner" style="display:inline"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:b,form_id:c,nonce:frm_js.nonce},success:function(b){a.replaceWith(b)}});return!1}function I(){var a=jQuery(this).data("frmconfirm");return confirm(a)}function J(){var a=jQuery(this).data("frmtoggle");
15
+ jQuery(a).is(":visible")?jQuery(a).slideUp("fast"):jQuery(a).slideDown("fast");return!1}function K(){Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var c=this.length>>>0,d=Number(b)||0;d=0>d?Math.ceil(d):Math.floor(d);for(0>d&&(d+=c);d<c;d++)if(d in this&&this[d]===a)return d;return-1})}function L(){"function"!==typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")})}function M(){Array.prototype.filter||(Array.prototype.filter=function(a,
16
+ b){if(void 0===this||null===this)throw new TypeError;var c=Object(this),d=c.length>>>0;if("function"!==typeof a)throw new TypeError;for(var f=[],e=0;e<d;e++)if(e in c){var h=c[e];a.call(b,h,e,c)&&f.push(h)}return f})}function N(){Object.keys||(Object.keys=function(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(c);return b})}var t="",m=[];return{init:function(){jQuery(document).off("submit.formidable",".frm-show-form");jQuery(document).on("submit.formidable",".frm-show-form",frmFrontForm.submitForm);
17
+ jQuery(".frm-show-form input[onblur], .frm-show-form textarea[onblur]").each(function(){""===jQuery(this).val()&&jQuery(this).blur()});jQuery(document).on("focus",".frm_toggle_default",F);jQuery(document).on("blur",".frm_toggle_default",G);jQuery(".frm_toggle_default").blur();jQuery(document.getElementById("frm_resend_email")).click(H);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);
18
+ 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",e);jQuery(document).on("click","a[data-frmconfirm]",I);jQuery("a[data-frmtoggle]").click(J);K();L();M();N()},getFieldId:function(a,b){return f(a,b)},renderRecaptcha:function(a){var b=a.getAttribute("data-size"),c={sitekey:a.getAttribute("data-sitekey"),size:b,theme:a.getAttribute("data-theme")};if("invisible"===b){var d=jQuery(a).closest("form").find('input[name="form_id"]').val();
19
+ c.callback=function(a){frmFrontForm.afterRecaptcha(a,d)}}b=grecaptcha.render(a.id,c);a.setAttribute("data-rid",b)},afterSingleRecaptcha:function(a){a=jQuery(".frm-show-form .g-recaptcha").closest("form")[0];frmFrontForm.submitFormNow(a)},afterRecaptcha:function(a,b){var c=jQuery("#frm_form_"+b+"_container form")[0];frmFrontForm.submitFormNow(c)},submitForm:function(a){frmFrontForm.submitFormManual(a,this)},submitFormManual:function(a,b){if("undefined"!==typeof frmProForm&&frmProForm.goingToPreviousPage(b))var c=
20
+ !1;else{var d=jQuery(b).find('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');d.length?(c=d.data("rid"),c=0===grecaptcha.getResponse(c).length?d:!1):c=!1}d=b.className.trim().split(/\s+/gi);d&&1>c.length&&!(-1<d.indexOf("frm_pro_form"))||jQuery("body").hasClass("wp-admin")&&1>jQuery(b).closest(".frmapi-form").length||(a.preventDefault(),"undefined"!==typeof frmProForm&&"function"===typeof frmProForm.submitAllowed&&!frmProForm.submitAllowed(b))||(c.length?(w(jQuery(b)),
21
+ d=c.data("rid"),grecaptcha.reset(d),grecaptcha.execute(d)):(c=frmFrontForm.validateFormSubmit(b),0===Object.keys(c).length&&(w(jQuery(b)),frmFrontForm.submitFormNow(b,d))))},submitFormNow:function(a){-1<a.className.trim().split(/\s+/gi).indexOf("frm_ajax_submit")?1>jQuery(a).find('input[type="file"]').filter(function(){return!!this.value}).length?(t=jQuery(a).find('input[name="frm_action"]').val(),frmFrontForm.checkFormErrors(a,t)):a.submit():a.submit()},validateFormSubmit:function(a){"undefined"!==
22
+ typeof tinyMCE&&jQuery(a).find(".wp-editor-wrap").length&&tinyMCE.triggerSave();m=[];var b=jQuery(a).hasClass("frm_js_validate");b&&"undefined"!==typeof frmProForm&&(frmProForm.savingDraft(a)||frmProForm.goingToPreviousPage(a))&&(b=!1);b&&(frmFrontForm.getAjaxFormErrors(a),Object.keys(m).length&&frmFrontForm.addAjaxFormErrors(a));return m},getAjaxFormErrors:function(a){var b=[],c=jQuery(a).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");
23
+ if(c.length)for(var d=0,e=c.length;d<e;d++)b=h(c[d],b);c=jQuery(a).find("input[type=email]").filter(":visible");d=jQuery(a).find("input,select,textarea");if(d.length){e=0;for(var f=d.length;e<f;e++){var n=d[e];""!==n.value&&"hidden"!==n.type&&("number"===n.type?b=x(n,b):"email"===n.type?b=q(n,b,c):null!==n.pattern&&(b=y(n,b)))}}c=jQuery(a).find(".frm-g-recaptcha");c.length&&(d=c.data("rid"),0===grecaptcha.getResponse(d).length&&(c=c.closest(".frm_form_field").attr("id").replace("frm_field_","").replace("_container",
24
+ ""),b[c]=""));m=b;if("function"===typeof frmThemeOverride_jsErrors&&(t=jQuery(a).find('input[name="frm_action"]').val(),a=frmThemeOverride_jsErrors(t,a),Object.keys(a).length))for(var p in a)m[p]=a[p];return m},addAjaxFormErrors:function(a){z();for(var b in m){var c=jQuery(a).find("#frm_field_"+b+"_container");c.length?v(c,b,m):delete m[b]}A(a)},checkFormErrors:function(a,b){D(a,b)},checkRequiredField:function(a,b){return h(a,b)},showSubmitLoading:function(a){w(a)},removeSubmitLoading:function(a,
25
+ b,c){u(a,b,c)},scrollToID:function(a){a=jQuery(document.getElementById(a));frmFrontForm.scrollMsg(a,!1)},scrollMsg:function(a,b,c){if("undefined"===typeof b){if(a=jQuery(document.getElementById("frm_form_"+a+"_container")),1>a.length)return}else a="string"===typeof a?jQuery(b).find("#frm_field_"+a+"_container"):a;if(a=a.offset().top){a-=frm_js.offset;b=jQuery("html").css("margin-top");var d=jQuery("body").css("margin-top");if(b||d)a=a-parseInt(b)-parseInt(d);if(a&&window.innerHeight&&(b=document.documentElement.scrollTop||
26
+ document.body.scrollTop,a>b+window.innerHeight||a<b))return"undefined"===typeof c?jQuery(window).scrollTop(a):jQuery("html,body").animate({scrollTop:a},500),!1}},fieldValueChanged:function(a){var b=frmFrontForm.getFieldId(this,!1);if(b&&"undefined"!==typeof b&&(!a.frmTriggered||a.frmTriggered!=b)&&(jQuery(document).trigger("frmFieldChanged",[this,b,a]),!0!==a.selfTriggered&&("url"===this.type&&(a=this.value,b=a.match(/^(https?|ftps?|mailto|news|feed|telnet):/),""!==this.value&&null===b&&(this.value=
27
+ "http://"+a)),jQuery(this).closest("form").hasClass("frm_js_validate")))){a=[];b=jQuery(this).closest(".frm_form_field");b.hasClass("frm_required_field")&&!jQuery(this).hasClass("frm_optional")&&(a=h(this,a));if(1>a.length)if("email"===this.type){var c=jQuery(this).closest("form").find("input[type=email]");a=q(this,a,c)}else"number"===this.type?a=x(this,a):null!==this.pattern&&(a=y(this,a));b.removeClass("frm_blank_field has-error");b.find(".frm_error").remove();if(0<Object.keys(a).length)for(var d in a)v(b,
28
+ d,a)}},savingDraft:function(a){console.warn("DEPRECATED: function frmFrontForm.savingDraft in v3.0 use frmProForm.savingDraft");if("undefined"!==typeof frmProForm)return frmProForm.savingDraft(a)},goingToPreviousPage:function(a){console.warn("DEPRECATED: function frmFrontForm.goingToPreviousPage in v3.0 use frmProForm.goingToPreviousPage");if("undefined"!==typeof frmProForm)return frmProForm.goingToPreviousPage(a)},hideOrShowFields:function(a,b){console.warn("DEPRECATED: function frmFrontForm.hideOrShowFields in v3.0 use frmProForm.hideOrShowFields");
29
+ "undefined"!==typeof frmProForm&&frmProForm.hideOrShowFields()},hidePreviouslyHiddenFields:function(){console.warn("DEPRECATED: function frmFrontForm.hidePreviouslyHiddenFields in v3.0 use frmProForm.hidePreviouslyHiddenFields");"undefined"!==typeof frmProForm&&frmProForm.hidePreviouslyHiddenFields()},checkDependentDynamicFields:function(a){console.warn("DEPRECATED: function frmFrontForm.checkDependentDynamicFields in v3.0 use frmProForm.checkDependentDynamicFields");"undefined"!==typeof frmProForm&&
30
+ frmProForm.checkDependentDynamicFields(a)},checkDependentLookupFields:function(a){console.warn("DEPRECATED: function frmFrontForm.checkDependentLookupFields in v3.0 use frmProForm.checkDependentLookupFields");"undefined"!==typeof frmProForm&&frmProForm.checkDependentLookupFields(a)},loadGoogle:function(){console.warn("DEPRECATED: function frmFrontForm.loadGoogle in v3.0 use frmProForm.loadGoogle");frmProForm.loadGoogle()},removeUsedTimes:function(a,b){console.warn("DEPRECATED: function frmFrontForm.removeUsedTimes in v3.0 use frmProForm.removeUsedTimes");
31
+ "undefined"!==typeof frmProForm&&frmProForm.removeUsedTimes()},escapeHtml:function(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")},invisible:function(a){jQuery(a).css("visibility","hidden")},visible:function(a){jQuery(a).css("visibility","visible")}}}var frmFrontForm=frmFrontFormJS();jQuery(document).ready(function(e){frmFrontForm.init()});
32
+ function frmRecaptcha(){for(var e=jQuery(".frm-g-recaptcha"),f=0,h=e.length;f<h;f++)frmFrontForm.renderRecaptcha(e[f])}function frmAfterRecaptcha(e){frmFrontForm.afterSingleRecaptcha(e)}
33
+ function frmUpdateField(e,f,h,p,q){jQuery(document.getElementById("frm_update_field_"+e+"_"+f+"_"+q)).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:e,field_id:f,value:h,nonce:frm_js.nonce},success:function(){""===p.replace(/^\s+|\s+$/g,"")?jQuery(document.getElementById("frm_update_field_"+e+"_"+f+"_"+q)).fadeOut("slow"):jQuery(document.getElementById("frm_update_field_"+e+"_"+f+"_"+q)).replaceWith(p)}})}
34
+ function frmDeleteEntry(e,f){console.warn("DEPRECATED: function frmDeleteEntry in v2.0.13 use frmFrontForm.deleteEntry");jQuery(document.getElementById("frm_delete_"+e)).replaceWith('<span class="frm-loading-img" id="frm_delete_'+e+'"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_destroy",entry:e,nonce:frm_js.nonce},success:function(h){"success"===h.replace(/^\s+|\s+$/g,"")?jQuery(document.getElementById(f+e)).fadeOut("slow"):jQuery(document.getElementById("frm_delete_"+
35
+ e)).replaceWith(h)}})}function frmOnSubmit(e){console.warn("DEPRECATED: function frmOnSubmit in v2.0 use frmFrontForm.submitForm");frmFrontForm.submitForm(e,this)}
36
+ function frm_resend_email(e,f){console.warn("DEPRECATED: function frm_resend_email in v2.0");var h=jQuery(document.getElementById("frm_resend_email"));h.append('<span class="spinner" style="display:inline"></span>');jQuery.ajax({type:"POST",url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:e,form_id:f,nonce:frm_js.nonce},success:function(e){h.replaceWith(e)}})};
js/formidable_admin_global.js CHANGED
@@ -1,7 +1,7 @@
1
  jQuery(document).ready(function(){
2
  var installLink = document.getElementById('frm_install_link');
3
  if(installLink !== null){
4
- jQuery(installLink).click(frm_install_now);
5
  }
6
 
7
  var deauthLink = jQuery('.frm_deauthorize_link');
@@ -15,16 +15,50 @@ jQuery(document).ready(function(){
15
  });
16
 
17
  function frm_install_now(){
18
- var $msg = jQuery(document.getElementById('frm_install_message'));
19
  $msg.html('<div class="frm_plugin_updating">'+frmGlobal.updating_msg+'<div class="spinner frm_spinner"></div></div>');
20
  jQuery.ajax({
21
  type:'POST',url:ajaxurl,
22
- data:{action:'frm_install',nonce:frmGlobal.nonce},
23
  success:function(){$msg.fadeOut('slow');}
24
  });
25
  return false;
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  function frmDeauthorizeNow(){
29
  if(!confirm(frmGlobal.deauthorize)){
30
  return false;
1
  jQuery(document).ready(function(){
2
  var installLink = document.getElementById('frm_install_link');
3
  if(installLink !== null){
4
+ jQuery(installLink).click(frmInstallPro);
5
  }
6
 
7
  var deauthLink = jQuery('.frm_deauthorize_link');
15
  });
16
 
17
  function frm_install_now(){
18
+ var $msg = jQuery(document.getElementById('frm_install_message'));
19
  $msg.html('<div class="frm_plugin_updating">'+frmGlobal.updating_msg+'<div class="spinner frm_spinner"></div></div>');
20
  jQuery.ajax({
21
  type:'POST',url:ajaxurl,
22
+ data:{action:'frm_install',nonce:frmGlobal.nonce},
23
  success:function(){$msg.fadeOut('slow');}
24
  });
25
  return false;
26
  }
27
 
28
+ function frmInstallPro( e ){
29
+ var plugin = jQuery(this).data('prourl');
30
+ if ( plugin === '' ) {
31
+ return false;
32
+ }
33
+
34
+ e.preventDefault();
35
+
36
+ var $msg = jQuery(document.getElementById('frm_install_message'));
37
+ $msg.html('<div class="frm_plugin_updating">'+frmGlobal.updating_msg+'<div class="spinner frm_spinner"></div></div>');
38
+ $msg.fadeIn('slow');
39
+
40
+ jQuery.ajax({
41
+ url: ajaxurl,
42
+ type: 'POST',
43
+ async: true,
44
+ cache: false,
45
+ dataType: 'json',
46
+ data: {
47
+ action: 'frm_install_addon',
48
+ nonce: frmGlobal.nonce,
49
+ plugin: plugin
50
+ },
51
+ success: function() {
52
+ $msg.fadeOut('slow');
53
+ $msg.parent().fadeOut('slow');
54
+ },
55
+ error: function(xhr, textStatus, e) {
56
+ $msg.fadeOut('slow');
57
+ }
58
+ });
59
+ return false;
60
+ }
61
+
62
  function frmDeauthorizeNow(){
63
  if(!confirm(frmGlobal.deauthorize)){
64
  return false;
languages/formidable.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Formidable v2.05\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2018-11-05 21:41+0000\n"
7
  "POT-Revision-Date: Tue Sep 26 2017 16:06:46 GMT-0600 (MDT)\n"
8
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
9
  "Last-Translator: \n"
@@ -27,34 +27,49 @@ msgstr ""
27
  "X-Poedit-SearchPath-0: .\n"
28
  "X-Textdomain-Support: yes"
29
 
30
- #: classes/controllers/FrmAddonsController.php:6
31
- msgid "AddOns"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  msgstr ""
33
 
34
- #: classes/controllers/FrmAddonsController.php:9
35
- #: classes/views/shared/upgrade_overlay.php:28
36
  msgid "Upgrade to Pro"
37
  msgstr ""
38
 
39
- #: classes/controllers/FrmAddonsController.php:27
40
  msgid "There are no plugins on your site that require a license"
41
  msgstr ""
42
 
43
- #: classes/controllers/FrmAddonsController.php:248
44
  msgid "Installed"
45
  msgstr ""
46
 
47
- #: classes/controllers/FrmAddonsController.php:253
48
- #: classes/helpers/FrmAppHelper.php:1704
49
  #: classes/views/styles/_field-colors.php:10
50
  msgid "Active"
51
  msgstr ""
52
 
53
- #: classes/controllers/FrmAddonsController.php:258
54
  msgid "Not Installed"
55
  msgstr ""
56
 
57
- #: classes/controllers/FrmAddonsController.php:430
58
  msgid ""
59
  "Sorry, you're site requires FTP authentication. Please install plugins "
60
  "manaully."
@@ -84,7 +99,7 @@ msgstr ""
84
  msgid "Build a Form"
85
  msgstr ""
86
 
87
- #: classes/controllers/FrmAppController.php:146
88
  #, php-format
89
  msgid ""
90
  "This site has been previously authorized to run Formidable Forms. "
@@ -92,7 +107,7 @@ msgid ""
92
  "running the free version and remove this message."
93
  msgstr ""
94
 
95
- #: classes/controllers/FrmAppController.php:525
96
  #, php-format
97
  msgid ""
98
  "Help us spread the %1$sFormidable Forms%2$s love with %3$s %5$s on WordPress."
@@ -184,11 +199,11 @@ msgstr ""
184
  msgid "No entries were specified"
185
  msgstr ""
186
 
187
- #: classes/controllers/FrmFieldsController.php:304
188
  msgid "Other"
189
  msgstr ""
190
 
191
- #: classes/controllers/FrmFieldsController.php:307
192
  msgid "New Option"
193
  msgstr ""
194
 
@@ -218,11 +233,6 @@ msgstr ""
218
  msgid "Form was Successfully Updated"
219
  msgstr ""
220
 
221
- #: classes/controllers/FrmFormsController.php:232
222
- #: classes/controllers/FrmFormsController.php:1712
223
- msgid "Form template was Successfully Created"
224
- msgstr ""
225
-
226
  #: classes/controllers/FrmFormsController.php:232
227
  msgid "Form was Successfully Copied"
228
  msgstr ""
@@ -441,20 +451,20 @@ msgstr ""
441
  msgid "No forms were specified"
442
  msgstr ""
443
 
444
- #: classes/controllers/FrmFormsController.php:1129
445
  msgid "Abnormal HTML characters prevented your form from saving correctly"
446
  msgstr ""
447
 
448
- #: classes/controllers/FrmFormsController.php:1244
449
- #: classes/controllers/FrmFormsController.php:1258
450
  msgid "Please select a valid form"
451
  msgstr ""
452
 
453
- #: classes/controllers/FrmFormsController.php:1486
454
  msgid "Please wait while you are redirected."
455
  msgstr ""
456
 
457
- #: classes/controllers/FrmFormsController.php:1520
458
  #, php-format
459
  msgid "%1$sClick here%2$s if you are not automatically redirected."
460
  msgstr ""
@@ -464,73 +474,73 @@ msgstr ""
464
  msgid "Global Settings"
465
  msgstr ""
466
 
467
- #: classes/controllers/FrmSettingsController.php:39
468
  #: classes/views/addons/settings.php:2
469
  msgid "Plugin Licenses"
470
  msgstr ""
471
 
472
- #: classes/controllers/FrmSettingsController.php:88
473
- #: classes/controllers/FrmSettingsController.php:91
474
  msgid "Settings Saved"
475
  msgstr ""
476
 
477
- #: classes/controllers/FrmSettingsController.php:124
478
  msgid "Extra form features like file uploads, pagination, etc"
479
  msgstr ""
480
 
481
- #: classes/controllers/FrmSettingsController.php:125
482
  msgid "Repeaters & cascading fields for advanced forms"
483
  msgstr ""
484
 
485
- #: classes/controllers/FrmSettingsController.php:126
486
  msgid "Flexibly view, search, edit, and delete entries anywhere"
487
  msgstr ""
488
 
489
- #: classes/controllers/FrmSettingsController.php:127
490
  msgid "Display entries with virtually limitless Formidable views"
491
  msgstr ""
492
 
493
- #: classes/controllers/FrmSettingsController.php:128
494
  msgid "Create surveys & polls"
495
  msgstr ""
496
 
497
- #: classes/controllers/FrmSettingsController.php:129
498
  msgid "WordPress user registration and login forms"
499
  msgstr ""
500
 
501
- #: classes/controllers/FrmSettingsController.php:130
502
  msgid "Create Stripe, PayPal or Authorize.net payment forms"
503
  msgstr ""
504
 
505
- #: classes/controllers/FrmSettingsController.php:131
506
  msgid "Powerful conditional logic for smart forms"
507
  msgstr ""
508
 
509
- #: classes/controllers/FrmSettingsController.php:132
510
  msgid "Integrations with 1000+ marketing & payment services"
511
  msgstr ""
512
 
513
- #: classes/controllers/FrmSettingsController.php:133
514
  msgid "Collect digital signatures"
515
  msgstr ""
516
 
517
- #: classes/controllers/FrmSettingsController.php:134
518
  msgid "Accept user-submitted content with Post submissions"
519
  msgstr ""
520
 
521
- #: classes/controllers/FrmSettingsController.php:135
522
  msgid "Email routing"
523
  msgstr ""
524
 
525
- #: classes/controllers/FrmSettingsController.php:136
526
  msgid "Create calculator forms"
527
  msgstr ""
528
 
529
- #: classes/controllers/FrmSettingsController.php:137
530
  msgid "Save draft entries and return later"
531
  msgstr ""
532
 
533
- #: classes/controllers/FrmSettingsController.php:138
534
  msgid "Analyze form data with graphs & stats"
535
  msgstr ""
536
 
@@ -640,222 +650,222 @@ msgstr ""
640
  msgid "There are no entries for that form."
641
  msgstr ""
642
 
643
- #: classes/helpers/FrmAppHelper.php:583
644
  #: classes/helpers/FrmFormsListHelper.php:108
645
  msgid "Add New"
646
  msgstr ""
647
 
648
- #: classes/helpers/FrmAppHelper.php:711
649
  msgid "View Forms and Templates"
650
  msgstr ""
651
 
652
- #: classes/helpers/FrmAppHelper.php:712
653
  msgid "Add/Edit Forms and Templates"
654
  msgstr ""
655
 
656
- #: classes/helpers/FrmAppHelper.php:713
657
  msgid "Delete Forms and Templates"
658
  msgstr ""
659
 
660
- #: classes/helpers/FrmAppHelper.php:714
661
  msgid "Access this Settings Page"
662
  msgstr ""
663
 
664
- #: classes/helpers/FrmAppHelper.php:715
665
  msgid "View Entries from Admin Area"
666
  msgstr ""
667
 
668
- #: classes/helpers/FrmAppHelper.php:716
669
  msgid "Delete Entries from Admin Area"
670
  msgstr ""
671
 
672
- #: classes/helpers/FrmAppHelper.php:723
673
  msgid "Add Entries from Admin Area"
674
  msgstr ""
675
 
676
- #: classes/helpers/FrmAppHelper.php:724
677
  msgid "Edit Entries from Admin Area"
678
  msgstr ""
679
 
680
- #: classes/helpers/FrmAppHelper.php:725
681
  msgid "View Reports"
682
  msgstr ""
683
 
684
- #: classes/helpers/FrmAppHelper.php:726
685
  msgid "Add/Edit Views"
686
  msgstr ""
687
 
688
- #: classes/helpers/FrmAppHelper.php:1325
689
  msgid "at"
690
  msgstr ""
691
 
692
- #: classes/helpers/FrmAppHelper.php:1374 classes/helpers/FrmAppHelper.php:1393
693
  msgid "seconds"
694
  msgstr ""
695
 
696
- #: classes/helpers/FrmAppHelper.php:1387
697
  msgid "year"
698
  msgstr ""
699
 
700
- #: classes/helpers/FrmAppHelper.php:1387
701
  msgid "years"
702
  msgstr ""
703
 
704
- #: classes/helpers/FrmAppHelper.php:1388
705
  msgid "month"
706
  msgstr ""
707
 
708
- #: classes/helpers/FrmAppHelper.php:1388
709
  msgid "months"
710
  msgstr ""
711
 
712
- #: classes/helpers/FrmAppHelper.php:1389
713
  msgid "week"
714
  msgstr ""
715
 
716
- #: classes/helpers/FrmAppHelper.php:1389
717
  msgid "weeks"
718
  msgstr ""
719
 
720
- #: classes/helpers/FrmAppHelper.php:1390
721
  msgid "day"
722
  msgstr ""
723
 
724
- #: classes/helpers/FrmAppHelper.php:1390
725
  msgid "days"
726
  msgstr ""
727
 
728
- #: classes/helpers/FrmAppHelper.php:1391
729
  msgid "hour"
730
  msgstr ""
731
 
732
- #: classes/helpers/FrmAppHelper.php:1391
733
  msgid "hours"
734
  msgstr ""
735
 
736
- #: classes/helpers/FrmAppHelper.php:1392
737
  msgid "minute"
738
  msgstr ""
739
 
740
- #: classes/helpers/FrmAppHelper.php:1392
741
  msgid "minutes"
742
  msgstr ""
743
 
744
- #: classes/helpers/FrmAppHelper.php:1393
745
  msgid "second"
746
  msgstr ""
747
 
748
- #: classes/helpers/FrmAppHelper.php:1485
749
  msgid "Give this action a label for easy reference."
750
  msgstr ""
751
 
752
- #: classes/helpers/FrmAppHelper.php:1486
753
  msgid ""
754
  "Add one or more recipient addresses separated by a \",\". FORMAT: Name "
755
  "<name@email.com> or name@email.com. [admin_email] is the address set in WP "
756
  "General Settings."
757
  msgstr ""
758
 
759
- #: classes/helpers/FrmAppHelper.php:1487
760
  msgid ""
761
  "Add CC addresses separated by a \",\". FORMAT: Name <name@email.com> or "
762
  "name@email.com."
763
  msgstr ""
764
 
765
- #: classes/helpers/FrmAppHelper.php:1488
766
  msgid ""
767
  "Add BCC addresses separated by a \",\". FORMAT: Name <name@email.com> or "
768
  "name@email.com."
769
  msgstr ""
770
 
771
- #: classes/helpers/FrmAppHelper.php:1489
772
  msgid ""
773
  "If you would like a different reply to address than the \"from\" address, "
774
  "add a single address here. FORMAT: Name <name@email.com> or name@email.com."
775
  msgstr ""
776
 
777
- #: classes/helpers/FrmAppHelper.php:1490
778
  msgid ""
779
  "Enter the name and/or email address of the sender. FORMAT: John Bates "
780
  "<john@example.com> or john@example.com."
781
  msgstr ""
782
 
783
- #: classes/helpers/FrmAppHelper.php:1491
784
  #, php-format
785
  msgid ""
786
  "If you leave the subject blank, the default will be used: %1$s Form "
787
  "submitted on %2$s"
788
  msgstr ""
789
 
790
- #: classes/helpers/FrmAppHelper.php:1622 classes/helpers/FrmAppHelper.php:1692
791
  msgid "Please wait while your site updates."
792
  msgstr ""
793
 
794
- #: classes/helpers/FrmAppHelper.php:1623
795
  msgid "Are you sure you want to deauthorize Formidable Forms on this site?"
796
  msgstr ""
797
 
798
- #: classes/helpers/FrmAppHelper.php:1653
799
  msgid "Remove"
800
  msgstr ""
801
 
802
- #: classes/helpers/FrmAppHelper.php:1656
803
  #: classes/helpers/FrmCSVExportHelper.php:150
804
  msgid "ID"
805
  msgstr ""
806
 
807
- #: classes/helpers/FrmAppHelper.php:1657
808
  msgid "No results match"
809
  msgstr ""
810
 
811
- #: classes/helpers/FrmAppHelper.php:1658
812
  msgid "That file looks like Spam."
813
  msgstr ""
814
 
815
- #: classes/helpers/FrmAppHelper.php:1659
816
  msgid "There is an error in the calculation in the field with key"
817
  msgstr ""
818
 
819
- #: classes/helpers/FrmAppHelper.php:1660
820
  msgid "Please complete the preceding required fields before uploading a file."
821
  msgstr ""
822
 
823
- #: classes/helpers/FrmAppHelper.php:1667
824
  msgid ""
825
  "Are you sure you want to do this? Clicking OK will delete all forms, form "
826
  "data, and all other Formidable data. There is no Undo."
827
  msgstr ""
828
 
829
- #: classes/helpers/FrmAppHelper.php:1668
830
  #: classes/views/frm-forms/add_field.php:37
831
  #: classes/views/frm-forms/add_field.php:50
832
  msgid "(Click to add description)"
833
  msgstr ""
834
 
835
- #: classes/helpers/FrmAppHelper.php:1669
836
  #: classes/views/frm-fields/single-option.php:8
837
  #: classes/views/frm-fields/single-option.php:14
838
  msgid "(Blank)"
839
  msgstr ""
840
 
841
- #: classes/helpers/FrmAppHelper.php:1670
842
  #: classes/views/frm-forms/add_field.php:17
843
  msgid "(no label)"
844
  msgstr ""
845
 
846
- #: classes/helpers/FrmAppHelper.php:1671
847
  msgid "Saving"
848
  msgstr ""
849
 
850
- #: classes/helpers/FrmAppHelper.php:1672
851
  msgid "Saved"
852
  msgstr ""
853
 
854
- #: classes/helpers/FrmAppHelper.php:1674
855
  msgid "Cancel"
856
  msgstr ""
857
 
858
- #: classes/helpers/FrmAppHelper.php:1675
859
  #: classes/helpers/FrmFormsListHelper.php:300
860
  #: classes/views/frm-forms/add_field.php:197
861
  #: classes/views/styles/_buttons.php:12
@@ -863,361 +873,361 @@ msgstr ""
863
  msgid "Default"
864
  msgstr ""
865
 
866
- #: classes/helpers/FrmAppHelper.php:1676
867
- #: classes/helpers/FrmFieldsHelper.php:1153
868
  msgid "Clear default value when typing"
869
  msgstr ""
870
 
871
- #: classes/helpers/FrmAppHelper.php:1677
872
- #: classes/helpers/FrmFieldsHelper.php:1153
873
  msgid "Do not clear default value when typing"
874
  msgstr ""
875
 
876
- #: classes/helpers/FrmAppHelper.php:1678
877
- #: classes/helpers/FrmFieldsHelper.php:1163
878
  msgid "Default value will pass form validation"
879
  msgstr ""
880
 
881
- #: classes/helpers/FrmAppHelper.php:1679
882
- #: classes/helpers/FrmFieldsHelper.php:1163
883
  msgid "Default value will NOT pass form validation"
884
  msgstr ""
885
 
886
- #: classes/helpers/FrmAppHelper.php:1680
887
  #: classes/helpers/FrmEntriesListHelper.php:257
888
  #: classes/helpers/FrmFormsHelper.php:831 classes/views/styles/show.php:64
889
  msgid "Are you sure?"
890
  msgstr ""
891
 
892
- #: classes/helpers/FrmAppHelper.php:1681
893
  msgid ""
894
  "Are you sure you want to delete this field and all data associated with it?"
895
  msgstr ""
896
 
897
- #: classes/helpers/FrmAppHelper.php:1682
898
  msgid "WARNING: This will delete all fields inside of the section as well."
899
  msgstr ""
900
 
901
- #: classes/helpers/FrmAppHelper.php:1683
902
  msgid ""
903
  "Warning: If you have entries with multiple rows, all but the first row will "
904
  "be lost."
905
  msgstr ""
906
 
907
- #: classes/helpers/FrmAppHelper.php:1685
908
  #: classes/helpers/FrmFieldsHelper.php:268
909
  msgid "The entered values do not match"
910
  msgstr ""
911
 
912
- #: classes/helpers/FrmAppHelper.php:1686
913
  msgid "Enter Email"
914
  msgstr ""
915
 
916
- #: classes/helpers/FrmAppHelper.php:1687
917
  msgid "Confirm Email"
918
  msgstr ""
919
 
920
- #: classes/helpers/FrmAppHelper.php:1688
921
  msgid ""
922
  "In certain browsers (e.g. Firefox) text will not display correctly if the "
923
  "field height is too small relative to the field padding and text size. "
924
  "Please increase your field height or decrease your field padding."
925
  msgstr ""
926
 
927
- #: classes/helpers/FrmAppHelper.php:1689
928
  msgid "Enter Password"
929
  msgstr ""
930
 
931
- #: classes/helpers/FrmAppHelper.php:1690
932
  msgid "Confirm Password"
933
  msgstr ""
934
 
935
- #: classes/helpers/FrmAppHelper.php:1691
936
  msgid "Import Complete"
937
  msgstr ""
938
 
939
- #: classes/helpers/FrmAppHelper.php:1693
940
  msgid "Warning: There is no way to retrieve unsaved entries."
941
  msgstr ""
942
 
943
- #: classes/helpers/FrmAppHelper.php:1697
944
  msgid "No new licenses were found"
945
  msgstr ""
946
 
947
- #: classes/helpers/FrmAppHelper.php:1698
948
  msgid "This calculation has at least one unmatched ( ) { } [ ]."
949
  msgstr ""
950
 
951
- #: classes/helpers/FrmAppHelper.php:1699
952
  msgid "This calculation may have shortcodes that work in Views but not forms."
953
  msgstr ""
954
 
955
- #: classes/helpers/FrmAppHelper.php:1700
956
  msgid ""
957
  "This calculation may have shortcodes that work in text calculations but not "
958
  "numeric calculations."
959
  msgstr ""
960
 
961
- #: classes/helpers/FrmAppHelper.php:1701
962
  msgid "Please enter a Repeat Limit that is greater than 1."
963
  msgstr ""
964
 
965
- #: classes/helpers/FrmAppHelper.php:1702
966
  msgid "Installing"
967
  msgstr ""
968
 
969
- #: classes/helpers/FrmAppHelper.php:1703 classes/views/addons/list.php:32
970
- #: classes/views/addons/list.php:33
971
  msgid "Install"
972
  msgstr ""
973
 
974
- #: classes/helpers/FrmAppHelper.php:1726
975
  msgid ""
976
  "You are running an outdated version of Formidable. This plugin may not work "
977
  "correctly if you do not update Formidable."
978
  msgstr ""
979
 
980
- #: classes/helpers/FrmAppHelper.php:1732
981
  msgid "English"
982
  msgstr ""
983
 
984
- #: classes/helpers/FrmAppHelper.php:1733
985
  msgid "English/Western"
986
  msgstr ""
987
 
988
- #: classes/helpers/FrmAppHelper.php:1734
989
  msgid "Afrikaans"
990
  msgstr ""
991
 
992
- #: classes/helpers/FrmAppHelper.php:1735
993
  msgid "Albanian"
994
  msgstr ""
995
 
996
- #: classes/helpers/FrmAppHelper.php:1736
997
  msgid "Arabic"
998
  msgstr ""
999
 
1000
- #: classes/helpers/FrmAppHelper.php:1737
1001
  msgid "Armenian"
1002
  msgstr ""
1003
 
1004
- #: classes/helpers/FrmAppHelper.php:1738
1005
  msgid "Azerbaijani"
1006
  msgstr ""
1007
 
1008
- #: classes/helpers/FrmAppHelper.php:1739
1009
  msgid "Basque"
1010
  msgstr ""
1011
 
1012
- #: classes/helpers/FrmAppHelper.php:1740
1013
  msgid "Bosnian"
1014
  msgstr ""
1015
 
1016
- #: classes/helpers/FrmAppHelper.php:1741
1017
  msgid "Bulgarian"
1018
  msgstr ""
1019
 
1020
- #: classes/helpers/FrmAppHelper.php:1742
1021
  msgid "Catalan"
1022
  msgstr ""
1023
 
1024
- #: classes/helpers/FrmAppHelper.php:1743
1025
  msgid "Chinese Hong Kong"
1026
  msgstr ""
1027
 
1028
- #: classes/helpers/FrmAppHelper.php:1744
1029
  msgid "Chinese Simplified"
1030
  msgstr ""
1031
 
1032
- #: classes/helpers/FrmAppHelper.php:1745
1033
  msgid "Chinese Traditional"
1034
  msgstr ""
1035
 
1036
- #: classes/helpers/FrmAppHelper.php:1746
1037
  msgid "Croatian"
1038
  msgstr ""
1039
 
1040
- #: classes/helpers/FrmAppHelper.php:1747
1041
  msgid "Czech"
1042
  msgstr ""
1043
 
1044
- #: classes/helpers/FrmAppHelper.php:1748
1045
  msgid "Danish"
1046
  msgstr ""
1047
 
1048
- #: classes/helpers/FrmAppHelper.php:1749
1049
  msgid "Dutch"
1050
  msgstr ""
1051
 
1052
- #: classes/helpers/FrmAppHelper.php:1750
1053
  msgid "English/UK"
1054
  msgstr ""
1055
 
1056
- #: classes/helpers/FrmAppHelper.php:1751
1057
  msgid "Esperanto"
1058
  msgstr ""
1059
 
1060
- #: classes/helpers/FrmAppHelper.php:1752
1061
  msgid "Estonian"
1062
  msgstr ""
1063
 
1064
- #: classes/helpers/FrmAppHelper.php:1753
1065
  msgid "Faroese"
1066
  msgstr ""
1067
 
1068
- #: classes/helpers/FrmAppHelper.php:1754
1069
  msgid "Farsi/Persian"
1070
  msgstr ""
1071
 
1072
- #: classes/helpers/FrmAppHelper.php:1755
1073
  msgid "Filipino"
1074
  msgstr ""
1075
 
1076
- #: classes/helpers/FrmAppHelper.php:1756
1077
  msgid "Finnish"
1078
  msgstr ""
1079
 
1080
- #: classes/helpers/FrmAppHelper.php:1757
1081
  msgid "French"
1082
  msgstr ""
1083
 
1084
- #: classes/helpers/FrmAppHelper.php:1758
1085
  msgid "French/Canadian"
1086
  msgstr ""
1087
 
1088
- #: classes/helpers/FrmAppHelper.php:1759
1089
  msgid "French/Swiss"
1090
  msgstr ""
1091
 
1092
- #: classes/helpers/FrmAppHelper.php:1760
1093
  msgid "German"
1094
  msgstr ""
1095
 
1096
- #: classes/helpers/FrmAppHelper.php:1761
1097
  msgid "German/Austria"
1098
  msgstr ""
1099
 
1100
- #: classes/helpers/FrmAppHelper.php:1762
1101
  msgid "German/Switzerland"
1102
  msgstr ""
1103
 
1104
- #: classes/helpers/FrmAppHelper.php:1763
1105
  msgid "Greek"
1106
  msgstr ""
1107
 
1108
- #: classes/helpers/FrmAppHelper.php:1764 classes/helpers/FrmAppHelper.php:1765
1109
  msgid "Hebrew"
1110
  msgstr ""
1111
 
1112
- #: classes/helpers/FrmAppHelper.php:1766
1113
  msgid "Hindi"
1114
  msgstr ""
1115
 
1116
- #: classes/helpers/FrmAppHelper.php:1767
1117
  msgid "Hungarian"
1118
  msgstr ""
1119
 
1120
- #: classes/helpers/FrmAppHelper.php:1768
1121
  msgid "Icelandic"
1122
  msgstr ""
1123
 
1124
- #: classes/helpers/FrmAppHelper.php:1769
1125
  msgid "Indonesian"
1126
  msgstr ""
1127
 
1128
- #: classes/helpers/FrmAppHelper.php:1770
1129
  msgid "Italian"
1130
  msgstr ""
1131
 
1132
- #: classes/helpers/FrmAppHelper.php:1771
1133
  msgid "Japanese"
1134
  msgstr ""
1135
 
1136
- #: classes/helpers/FrmAppHelper.php:1772
1137
  msgid "Korean"
1138
  msgstr ""
1139
 
1140
- #: classes/helpers/FrmAppHelper.php:1773
1141
  msgid "Latvian"
1142
  msgstr ""
1143
 
1144
- #: classes/helpers/FrmAppHelper.php:1774
1145
  msgid "Lithuanian"
1146
  msgstr ""
1147
 
1148
- #: classes/helpers/FrmAppHelper.php:1775
1149
  msgid "Malaysian"
1150
  msgstr ""
1151
 
1152
- #: classes/helpers/FrmAppHelper.php:1776
1153
  msgid "Norwegian"
1154
  msgstr ""
1155
 
1156
- #: classes/helpers/FrmAppHelper.php:1777
1157
  msgid "Polish"
1158
  msgstr ""
1159
 
1160
- #: classes/helpers/FrmAppHelper.php:1778
1161
  msgid "Portuguese"
1162
  msgstr ""
1163
 
1164
- #: classes/helpers/FrmAppHelper.php:1779
1165
  msgid "Portuguese/Brazilian"
1166
  msgstr ""
1167
 
1168
- #: classes/helpers/FrmAppHelper.php:1780
1169
  msgid "Portuguese/Portugal"
1170
  msgstr ""
1171
 
1172
- #: classes/helpers/FrmAppHelper.php:1781
1173
  msgid "Romanian"
1174
  msgstr ""
1175
 
1176
- #: classes/helpers/FrmAppHelper.php:1782
1177
  msgid "Russian"
1178
  msgstr ""
1179
 
1180
- #: classes/helpers/FrmAppHelper.php:1783 classes/helpers/FrmAppHelper.php:1784
1181
  msgid "Serbian"
1182
  msgstr ""
1183
 
1184
- #: classes/helpers/FrmAppHelper.php:1785
1185
  msgid "Slovak"
1186
  msgstr ""
1187
 
1188
- #: classes/helpers/FrmAppHelper.php:1786
1189
  msgid "Slovenian"
1190
  msgstr ""
1191
 
1192
- #: classes/helpers/FrmAppHelper.php:1787
1193
  msgid "Spanish"
1194
  msgstr ""
1195
 
1196
- #: classes/helpers/FrmAppHelper.php:1788
1197
  msgid "Spanish/Latin America"
1198
  msgstr ""
1199
 
1200
- #: classes/helpers/FrmAppHelper.php:1789
1201
  msgid "Swedish"
1202
  msgstr ""
1203
 
1204
- #: classes/helpers/FrmAppHelper.php:1790
1205
  msgid "Tamil"
1206
  msgstr ""
1207
 
1208
- #: classes/helpers/FrmAppHelper.php:1791
1209
  msgid "Thai"
1210
  msgstr ""
1211
 
1212
- #: classes/helpers/FrmAppHelper.php:1792 classes/helpers/FrmAppHelper.php:1793
1213
  msgid "Turkish"
1214
  msgstr ""
1215
 
1216
- #: classes/helpers/FrmAppHelper.php:1794
1217
  msgid "Ukranian"
1218
  msgstr ""
1219
 
1220
- #: classes/helpers/FrmAppHelper.php:1795
1221
  msgid "Vietnamese"
1222
  msgstr ""
1223
 
@@ -1302,976 +1312,976 @@ msgstr ""
1302
  msgid "This field is invalid"
1303
  msgstr ""
1304
 
1305
- #: classes/helpers/FrmFieldsHelper.php:479
1306
  #, php-format
1307
  msgid "Please add options from the WordPress \"%1$s\" page"
1308
  msgstr ""
1309
 
1310
- #: classes/helpers/FrmFieldsHelper.php:1269
1311
  msgid "Afghanistan"
1312
  msgstr ""
1313
 
1314
- #: classes/helpers/FrmFieldsHelper.php:1269
1315
  msgid "Albania"
1316
  msgstr ""
1317
 
1318
- #: classes/helpers/FrmFieldsHelper.php:1269
1319
  msgid "Algeria"
1320
  msgstr ""
1321
 
1322
- #: classes/helpers/FrmFieldsHelper.php:1269
1323
  msgid "American Samoa"
1324
  msgstr ""
1325
 
1326
- #: classes/helpers/FrmFieldsHelper.php:1269
1327
  msgid "Andorra"
1328
  msgstr ""
1329
 
1330
- #: classes/helpers/FrmFieldsHelper.php:1269
1331
  msgid "Angola"
1332
  msgstr ""
1333
 
1334
- #: classes/helpers/FrmFieldsHelper.php:1269
1335
  msgid "Anguilla"
1336
  msgstr ""
1337
 
1338
- #: classes/helpers/FrmFieldsHelper.php:1269
1339
  msgid "Antarctica"
1340
  msgstr ""
1341
 
1342
- #: classes/helpers/FrmFieldsHelper.php:1269
1343
  msgid "Antigua and Barbuda"
1344
  msgstr ""
1345
 
1346
- #: classes/helpers/FrmFieldsHelper.php:1269
1347
  msgid "Argentina"
1348
  msgstr ""
1349
 
1350
- #: classes/helpers/FrmFieldsHelper.php:1269
1351
  msgid "Armenia"
1352
  msgstr ""
1353
 
1354
- #: classes/helpers/FrmFieldsHelper.php:1269
1355
  msgid "Aruba"
1356
  msgstr ""
1357
 
1358
- #: classes/helpers/FrmFieldsHelper.php:1269
1359
  msgid "Australia"
1360
  msgstr ""
1361
 
1362
- #: classes/helpers/FrmFieldsHelper.php:1269
1363
  msgid "Austria"
1364
  msgstr ""
1365
 
1366
- #: classes/helpers/FrmFieldsHelper.php:1269
1367
  msgid "Azerbaijan"
1368
  msgstr ""
1369
 
1370
- #: classes/helpers/FrmFieldsHelper.php:1269
1371
  msgid "Bahamas"
1372
  msgstr ""
1373
 
1374
- #: classes/helpers/FrmFieldsHelper.php:1269
1375
  msgid "Bahrain"
1376
  msgstr ""
1377
 
1378
- #: classes/helpers/FrmFieldsHelper.php:1269
1379
  msgid "Bangladesh"
1380
  msgstr ""
1381
 
1382
- #: classes/helpers/FrmFieldsHelper.php:1269
1383
  msgid "Barbados"
1384
  msgstr ""
1385
 
1386
- #: classes/helpers/FrmFieldsHelper.php:1269
1387
  msgid "Belarus"
1388
  msgstr ""
1389
 
1390
- #: classes/helpers/FrmFieldsHelper.php:1269
1391
  msgid "Belgium"
1392
  msgstr ""
1393
 
1394
- #: classes/helpers/FrmFieldsHelper.php:1269
1395
  msgid "Belize"
1396
  msgstr ""
1397
 
1398
- #: classes/helpers/FrmFieldsHelper.php:1269
1399
  msgid "Benin"
1400
  msgstr ""
1401
 
1402
- #: classes/helpers/FrmFieldsHelper.php:1269
1403
  msgid "Bermuda"
1404
  msgstr ""
1405
 
1406
- #: classes/helpers/FrmFieldsHelper.php:1269
1407
  msgid "Bhutan"
1408
  msgstr ""
1409
 
1410
- #: classes/helpers/FrmFieldsHelper.php:1269
1411
  msgid "Bolivia"
1412
  msgstr ""
1413
 
1414
- #: classes/helpers/FrmFieldsHelper.php:1269
1415
  msgid "Bosnia and Herzegovina"
1416
  msgstr ""
1417
 
1418
- #: classes/helpers/FrmFieldsHelper.php:1269
1419
  msgid "Botswana"
1420
  msgstr ""
1421
 
1422
- #: classes/helpers/FrmFieldsHelper.php:1269
1423
  msgid "Brazil"
1424
  msgstr ""
1425
 
1426
- #: classes/helpers/FrmFieldsHelper.php:1269
1427
  msgid "Brunei"
1428
  msgstr ""
1429
 
1430
- #: classes/helpers/FrmFieldsHelper.php:1269
1431
  msgid "Bulgaria"
1432
  msgstr ""
1433
 
1434
- #: classes/helpers/FrmFieldsHelper.php:1269
1435
  msgid "Burkina Faso"
1436
  msgstr ""
1437
 
1438
- #: classes/helpers/FrmFieldsHelper.php:1269
1439
  msgid "Burundi"
1440
  msgstr ""
1441
 
1442
- #: classes/helpers/FrmFieldsHelper.php:1269
1443
  msgid "Cambodia"
1444
  msgstr ""
1445
 
1446
- #: classes/helpers/FrmFieldsHelper.php:1269
1447
  msgid "Cameroon"
1448
  msgstr ""
1449
 
1450
- #: classes/helpers/FrmFieldsHelper.php:1269
1451
  msgid "Canada"
1452
  msgstr ""
1453
 
1454
- #: classes/helpers/FrmFieldsHelper.php:1269
1455
  msgid "Cape Verde"
1456
  msgstr ""
1457
 
1458
- #: classes/helpers/FrmFieldsHelper.php:1269
1459
  msgid "Cayman Islands"
1460
  msgstr ""
1461
 
1462
- #: classes/helpers/FrmFieldsHelper.php:1269
1463
  msgid "Central African Republic"
1464
  msgstr ""
1465
 
1466
- #: classes/helpers/FrmFieldsHelper.php:1269
1467
  msgid "Chad"
1468
  msgstr ""
1469
 
1470
- #: classes/helpers/FrmFieldsHelper.php:1269
1471
  msgid "Chile"
1472
  msgstr ""
1473
 
1474
- #: classes/helpers/FrmFieldsHelper.php:1269
1475
  msgid "China"
1476
  msgstr ""
1477
 
1478
- #: classes/helpers/FrmFieldsHelper.php:1269
1479
  msgid "Colombia"
1480
  msgstr ""
1481
 
1482
- #: classes/helpers/FrmFieldsHelper.php:1269
1483
  msgid "Comoros"
1484
  msgstr ""
1485
 
1486
- #: classes/helpers/FrmFieldsHelper.php:1269
1487
  msgid "Congo"
1488
  msgstr ""
1489
 
1490
- #: classes/helpers/FrmFieldsHelper.php:1269
1491
  msgid "Costa Rica"
1492
  msgstr ""
1493
 
1494
- #: classes/helpers/FrmFieldsHelper.php:1269
1495
  msgid "C&ocirc;te d'Ivoire"
1496
  msgstr ""
1497
 
1498
- #: classes/helpers/FrmFieldsHelper.php:1269
1499
  msgid "Croatia"
1500
  msgstr ""
1501
 
1502
- #: classes/helpers/FrmFieldsHelper.php:1269
1503
  msgid "Cuba"
1504
  msgstr ""
1505
 
1506
- #: classes/helpers/FrmFieldsHelper.php:1269
1507
  msgid "Cyprus"
1508
  msgstr ""
1509
 
1510
- #: classes/helpers/FrmFieldsHelper.php:1269
1511
  msgid "Czech Republic"
1512
  msgstr ""
1513
 
1514
- #: classes/helpers/FrmFieldsHelper.php:1269
1515
  msgid "Denmark"
1516
  msgstr ""
1517
 
1518
- #: classes/helpers/FrmFieldsHelper.php:1269
1519
  msgid "Djibouti"
1520
  msgstr ""
1521
 
1522
- #: classes/helpers/FrmFieldsHelper.php:1269
1523
  msgid "Dominica"
1524
  msgstr ""
1525
 
1526
- #: classes/helpers/FrmFieldsHelper.php:1269
1527
  msgid "Dominican Republic"
1528
  msgstr ""
1529
 
1530
- #: classes/helpers/FrmFieldsHelper.php:1269
1531
  msgid "East Timor"
1532
  msgstr ""
1533
 
1534
- #: classes/helpers/FrmFieldsHelper.php:1269
1535
  msgid "Ecuador"
1536
  msgstr ""
1537
 
1538
- #: classes/helpers/FrmFieldsHelper.php:1269
1539
  msgid "Egypt"
1540
  msgstr ""
1541
 
1542
- #: classes/helpers/FrmFieldsHelper.php:1269
1543
  msgid "El Salvador"
1544
  msgstr ""
1545
 
1546
- #: classes/helpers/FrmFieldsHelper.php:1269
1547
  msgid "Equatorial Guinea"
1548
  msgstr ""
1549
 
1550
- #: classes/helpers/FrmFieldsHelper.php:1269
1551
  msgid "Eritrea"
1552
  msgstr ""
1553
 
1554
- #: classes/helpers/FrmFieldsHelper.php:1269
1555
  msgid "Estonia"
1556
  msgstr ""
1557
 
1558
- #: classes/helpers/FrmFieldsHelper.php:1269
1559
  msgid "Ethiopia"
1560
  msgstr ""
1561
 
1562
- #: classes/helpers/FrmFieldsHelper.php:1269
1563
  msgid "Fiji"
1564
  msgstr ""
1565
 
1566
- #: classes/helpers/FrmFieldsHelper.php:1269
1567
  msgid "Finland"
1568
  msgstr ""
1569
 
1570
- #: classes/helpers/FrmFieldsHelper.php:1269
1571
  msgid "France"
1572
  msgstr ""
1573
 
1574
- #: classes/helpers/FrmFieldsHelper.php:1269
1575
  msgid "French Guiana"
1576
  msgstr ""
1577
 
1578
- #: classes/helpers/FrmFieldsHelper.php:1269
1579
  msgid "French Polynesia"
1580
  msgstr ""
1581
 
1582
- #: classes/helpers/FrmFieldsHelper.php:1269
1583
  msgid "Gabon"
1584
  msgstr ""
1585
 
1586
- #: classes/helpers/FrmFieldsHelper.php:1269
1587
  msgid "Gambia"
1588
  msgstr ""
1589
 
1590
- #: classes/helpers/FrmFieldsHelper.php:1269
1591
  msgid "Georgia"
1592
  msgstr ""
1593
 
1594
- #: classes/helpers/FrmFieldsHelper.php:1269
1595
  msgid "Germany"
1596
  msgstr ""
1597
 
1598
- #: classes/helpers/FrmFieldsHelper.php:1269
1599
  msgid "Ghana"
1600
  msgstr ""
1601
 
1602
- #: classes/helpers/FrmFieldsHelper.php:1269
1603
  msgid "Gibraltar"
1604
  msgstr ""
1605
 
1606
- #: classes/helpers/FrmFieldsHelper.php:1269
1607
  msgid "Greece"
1608
  msgstr ""
1609
 
1610
- #: classes/helpers/FrmFieldsHelper.php:1269
1611
  msgid "Greenland"
1612
  msgstr ""
1613
 
1614
- #: classes/helpers/FrmFieldsHelper.php:1269
1615
  msgid "Grenada"
1616
  msgstr ""
1617
 
1618
- #: classes/helpers/FrmFieldsHelper.php:1269
1619
  msgid "Guam"
1620
  msgstr ""
1621
 
1622
- #: classes/helpers/FrmFieldsHelper.php:1269
1623
  msgid "Guatemala"
1624
  msgstr ""
1625
 
1626
- #: classes/helpers/FrmFieldsHelper.php:1269
1627
  msgid "Guinea"
1628
  msgstr ""
1629
 
1630
- #: classes/helpers/FrmFieldsHelper.php:1269
1631
  msgid "Guinea-Bissau"
1632
  msgstr ""
1633
 
1634
- #: classes/helpers/FrmFieldsHelper.php:1269
1635
  msgid "Guyana"
1636
  msgstr ""
1637
 
1638
- #: classes/helpers/FrmFieldsHelper.php:1269
1639
  msgid "Haiti"
1640
  msgstr ""
1641
 
1642
- #: classes/helpers/FrmFieldsHelper.php:1269
1643
  msgid "Honduras"
1644
  msgstr ""
1645
 
1646
- #: classes/helpers/FrmFieldsHelper.php:1269
1647
  msgid "Hong Kong"
1648
  msgstr ""
1649
 
1650
- #: classes/helpers/FrmFieldsHelper.php:1269
1651
  msgid "Hungary"
1652
  msgstr ""
1653
 
1654
- #: classes/helpers/FrmFieldsHelper.php:1269
1655
  msgid "Iceland"
1656
  msgstr ""
1657
 
1658
- #: classes/helpers/FrmFieldsHelper.php:1269
1659
  msgid "India"
1660
  msgstr ""
1661
 
1662
- #: classes/helpers/FrmFieldsHelper.php:1269
1663
  msgid "Indonesia"
1664
  msgstr ""
1665
 
1666
- #: classes/helpers/FrmFieldsHelper.php:1269
1667
  msgid "Iran"
1668
  msgstr ""
1669
 
1670
- #: classes/helpers/FrmFieldsHelper.php:1269
1671
  msgid "Iraq"
1672
  msgstr ""
1673
 
1674
- #: classes/helpers/FrmFieldsHelper.php:1269
1675
  msgid "Ireland"
1676
  msgstr ""
1677
 
1678
- #: classes/helpers/FrmFieldsHelper.php:1269
1679
  msgid "Israel"
1680
  msgstr ""
1681
 
1682
- #: classes/helpers/FrmFieldsHelper.php:1269
1683
  msgid "Italy"
1684
  msgstr ""
1685
 
1686
- #: classes/helpers/FrmFieldsHelper.php:1269
1687
  msgid "Jamaica"
1688
  msgstr ""
1689
 
1690
- #: classes/helpers/FrmFieldsHelper.php:1269
1691
  msgid "Japan"
1692
  msgstr ""
1693
 
1694
- #: classes/helpers/FrmFieldsHelper.php:1269
1695
  msgid "Jordan"
1696
  msgstr ""
1697
 
1698
- #: classes/helpers/FrmFieldsHelper.php:1269
1699
  msgid "Kazakhstan"
1700
  msgstr ""
1701
 
1702
- #: classes/helpers/FrmFieldsHelper.php:1269
1703
  msgid "Kenya"
1704
  msgstr ""
1705
 
1706
- #: classes/helpers/FrmFieldsHelper.php:1269
1707
  msgid "Kiribati"
1708
  msgstr ""
1709
 
1710
- #: classes/helpers/FrmFieldsHelper.php:1269
1711
  msgid "North Korea"
1712
  msgstr ""
1713
 
1714
- #: classes/helpers/FrmFieldsHelper.php:1269
1715
  msgid "South Korea"
1716
  msgstr ""
1717
 
1718
- #: classes/helpers/FrmFieldsHelper.php:1269
1719
  msgid "Kuwait"
1720
  msgstr ""
1721
 
1722
- #: classes/helpers/FrmFieldsHelper.php:1269
1723
  msgid "Kyrgyzstan"
1724
  msgstr ""
1725
 
1726
- #: classes/helpers/FrmFieldsHelper.php:1269
1727
  msgid "Laos"
1728
  msgstr ""
1729
 
1730
- #: classes/helpers/FrmFieldsHelper.php:1269
1731
  msgid "Latvia"
1732
  msgstr ""
1733
 
1734
- #: classes/helpers/FrmFieldsHelper.php:1269
1735
  msgid "Lebanon"
1736
  msgstr ""
1737
 
1738
- #: classes/helpers/FrmFieldsHelper.php:1269
1739
  msgid "Lesotho"
1740
  msgstr ""
1741
 
1742
- #: classes/helpers/FrmFieldsHelper.php:1269
1743
  msgid "Liberia"
1744
  msgstr ""
1745
 
1746
- #: classes/helpers/FrmFieldsHelper.php:1269
1747
  msgid "Libya"
1748
  msgstr ""
1749
 
1750
- #: classes/helpers/FrmFieldsHelper.php:1269
1751
  msgid "Liechtenstein"
1752
  msgstr ""
1753
 
1754
- #: classes/helpers/FrmFieldsHelper.php:1269
1755
  msgid "Lithuania"
1756
  msgstr ""
1757
 
1758
- #: classes/helpers/FrmFieldsHelper.php:1269
1759
  msgid "Luxembourg"
1760
  msgstr ""
1761
 
1762
- #: classes/helpers/FrmFieldsHelper.php:1269
1763
  msgid "Macedonia"
1764
  msgstr ""
1765
 
1766
- #: classes/helpers/FrmFieldsHelper.php:1269
1767
  msgid "Madagascar"
1768
  msgstr ""
1769
 
1770
- #: classes/helpers/FrmFieldsHelper.php:1269
1771
  msgid "Malawi"
1772
  msgstr ""
1773
 
1774
- #: classes/helpers/FrmFieldsHelper.php:1269
1775
  msgid "Malaysia"
1776
  msgstr ""
1777
 
1778
- #: classes/helpers/FrmFieldsHelper.php:1269
1779
  msgid "Maldives"
1780
  msgstr ""
1781
 
1782
- #: classes/helpers/FrmFieldsHelper.php:1269
1783
  msgid "Mali"
1784
  msgstr ""
1785
 
1786
- #: classes/helpers/FrmFieldsHelper.php:1269
1787
  msgid "Malta"
1788
  msgstr ""
1789
 
1790
- #: classes/helpers/FrmFieldsHelper.php:1269
1791
  msgid "Marshall Islands"
1792
  msgstr ""
1793
 
1794
- #: classes/helpers/FrmFieldsHelper.php:1269
1795
  msgid "Mauritania"
1796
  msgstr ""
1797
 
1798
- #: classes/helpers/FrmFieldsHelper.php:1269
1799
  msgid "Mauritius"
1800
  msgstr ""
1801
 
1802
- #: classes/helpers/FrmFieldsHelper.php:1269
1803
  msgid "Mexico"
1804
  msgstr ""
1805
 
1806
- #: classes/helpers/FrmFieldsHelper.php:1269
1807
  msgid "Micronesia"
1808
  msgstr ""
1809
 
1810
- #: classes/helpers/FrmFieldsHelper.php:1269
1811
  msgid "Moldova"
1812
  msgstr ""
1813
 
1814
- #: classes/helpers/FrmFieldsHelper.php:1269
1815
  msgid "Monaco"
1816
  msgstr ""
1817
 
1818
- #: classes/helpers/FrmFieldsHelper.php:1269
1819
  msgid "Mongolia"
1820
  msgstr ""
1821
 
1822
- #: classes/helpers/FrmFieldsHelper.php:1269
1823
  msgid "Montenegro"
1824
  msgstr ""
1825
 
1826
- #: classes/helpers/FrmFieldsHelper.php:1269
1827
  msgid "Montserrat"
1828
  msgstr ""
1829
 
1830
- #: classes/helpers/FrmFieldsHelper.php:1269
1831
  msgid "Morocco"
1832
  msgstr ""
1833
 
1834
- #: classes/helpers/FrmFieldsHelper.php:1269
1835
  msgid "Mozambique"
1836
  msgstr ""
1837
 
1838
- #: classes/helpers/FrmFieldsHelper.php:1269
1839
  msgid "Myanmar"
1840
  msgstr ""
1841
 
1842
- #: classes/helpers/FrmFieldsHelper.php:1269
1843
  msgid "Namibia"
1844
  msgstr ""
1845
 
1846
- #: classes/helpers/FrmFieldsHelper.php:1269
1847
  msgid "Nauru"
1848
  msgstr ""
1849
 
1850
- #: classes/helpers/FrmFieldsHelper.php:1269
1851
  msgid "Nepal"
1852
  msgstr ""
1853
 
1854
- #: classes/helpers/FrmFieldsHelper.php:1269
1855
  msgid "Netherlands"
1856
  msgstr ""
1857
 
1858
- #: classes/helpers/FrmFieldsHelper.php:1269
1859
  msgid "New Zealand"
1860
  msgstr ""
1861
 
1862
- #: classes/helpers/FrmFieldsHelper.php:1269
1863
  msgid "Nicaragua"
1864
  msgstr ""
1865
 
1866
- #: classes/helpers/FrmFieldsHelper.php:1269
1867
  msgid "Niger"
1868
  msgstr ""
1869
 
1870
- #: classes/helpers/FrmFieldsHelper.php:1269
1871
  msgid "Nigeria"
1872
  msgstr ""
1873
 
1874
- #: classes/helpers/FrmFieldsHelper.php:1269
1875
  msgid "Norway"
1876
  msgstr ""
1877
 
1878
- #: classes/helpers/FrmFieldsHelper.php:1269
1879
  msgid "Northern Mariana Islands"
1880
  msgstr ""
1881
 
1882
- #: classes/helpers/FrmFieldsHelper.php:1269
1883
  msgid "Oman"
1884
  msgstr ""
1885
 
1886
- #: classes/helpers/FrmFieldsHelper.php:1269
1887
  msgid "Pakistan"
1888
  msgstr ""
1889
 
1890
- #: classes/helpers/FrmFieldsHelper.php:1269
1891
  msgid "Palau"
1892
  msgstr ""
1893
 
1894
- #: classes/helpers/FrmFieldsHelper.php:1269
1895
  msgid "Palestine"
1896
  msgstr ""
1897
 
1898
- #: classes/helpers/FrmFieldsHelper.php:1269
1899
  msgid "Panama"
1900
  msgstr ""
1901
 
1902
- #: classes/helpers/FrmFieldsHelper.php:1269
1903
  msgid "Papua New Guinea"
1904
  msgstr ""
1905
 
1906
- #: classes/helpers/FrmFieldsHelper.php:1269
1907
  msgid "Paraguay"
1908
  msgstr ""
1909
 
1910
- #: classes/helpers/FrmFieldsHelper.php:1269
1911
  msgid "Peru"
1912
  msgstr ""
1913
 
1914
- #: classes/helpers/FrmFieldsHelper.php:1269
1915
  msgid "Philippines"
1916
  msgstr ""
1917
 
1918
- #: classes/helpers/FrmFieldsHelper.php:1269
1919
  msgid "Poland"
1920
  msgstr ""
1921
 
1922
- #: classes/helpers/FrmFieldsHelper.php:1269
1923
  msgid "Portugal"
1924
  msgstr ""
1925
 
1926
- #: classes/helpers/FrmFieldsHelper.php:1269
1927
  msgid "Puerto Rico"
1928
  msgstr ""
1929
 
1930
- #: classes/helpers/FrmFieldsHelper.php:1269
1931
  msgid "Qatar"
1932
  msgstr ""
1933
 
1934
- #: classes/helpers/FrmFieldsHelper.php:1269
1935
  msgid "Romania"
1936
  msgstr ""
1937
 
1938
- #: classes/helpers/FrmFieldsHelper.php:1269
1939
  msgid "Russia"
1940
  msgstr ""
1941
 
1942
- #: classes/helpers/FrmFieldsHelper.php:1269
1943
  msgid "Rwanda"
1944
  msgstr ""
1945
 
1946
- #: classes/helpers/FrmFieldsHelper.php:1269
1947
  msgid "Saint Kitts and Nevis"
1948
  msgstr ""
1949
 
1950
- #: classes/helpers/FrmFieldsHelper.php:1269
1951
  msgid "Saint Lucia"
1952
  msgstr ""
1953
 
1954
- #: classes/helpers/FrmFieldsHelper.php:1269
1955
  msgid "Saint Vincent and the Grenadines"
1956
  msgstr ""
1957
 
1958
- #: classes/helpers/FrmFieldsHelper.php:1269
1959
  msgid "Samoa"
1960
  msgstr ""
1961
 
1962
- #: classes/helpers/FrmFieldsHelper.php:1269
1963
  msgid "San Marino"
1964
  msgstr ""
1965
 
1966
- #: classes/helpers/FrmFieldsHelper.php:1269
1967
  msgid "Sao Tome and Principe"
1968
  msgstr ""
1969
 
1970
- #: classes/helpers/FrmFieldsHelper.php:1269
1971
  msgid "Saudi Arabia"
1972
  msgstr ""
1973
 
1974
- #: classes/helpers/FrmFieldsHelper.php:1269
1975
  msgid "Senegal"
1976
  msgstr ""
1977
 
1978
- #: classes/helpers/FrmFieldsHelper.php:1269
1979
  msgid "Serbia and Montenegro"
1980
  msgstr ""
1981
 
1982
- #: classes/helpers/FrmFieldsHelper.php:1269
1983
  msgid "Seychelles"
1984
  msgstr ""
1985
 
1986
- #: classes/helpers/FrmFieldsHelper.php:1269
1987
  msgid "Sierra Leone"
1988
  msgstr ""
1989
 
1990
- #: classes/helpers/FrmFieldsHelper.php:1269
1991
  msgid "Singapore"
1992
  msgstr ""
1993
 
1994
- #: classes/helpers/FrmFieldsHelper.php:1269
1995
  msgid "Slovakia"
1996
  msgstr ""
1997
 
1998
- #: classes/helpers/FrmFieldsHelper.php:1269
1999
  msgid "Slovenia"
2000
  msgstr ""
2001
 
2002
- #: classes/helpers/FrmFieldsHelper.php:1269
2003
  msgid "Solomon Islands"
2004
  msgstr ""
2005
 
2006
- #: classes/helpers/FrmFieldsHelper.php:1269
2007
  msgid "Somalia"
2008
  msgstr ""
2009
 
2010
- #: classes/helpers/FrmFieldsHelper.php:1269
2011
  msgid "South Africa"
2012
  msgstr ""
2013
 
2014
- #: classes/helpers/FrmFieldsHelper.php:1269
2015
  msgid "South Sudan"
2016
  msgstr ""
2017
 
2018
- #: classes/helpers/FrmFieldsHelper.php:1269
2019
  msgid "Spain"
2020
  msgstr ""
2021
 
2022
- #: classes/helpers/FrmFieldsHelper.php:1269
2023
  msgid "Sri Lanka"
2024
  msgstr ""
2025
 
2026
- #: classes/helpers/FrmFieldsHelper.php:1269
2027
  msgid "Sudan"
2028
  msgstr ""
2029
 
2030
- #: classes/helpers/FrmFieldsHelper.php:1269
2031
  msgid "Suriname"
2032
  msgstr ""
2033
 
2034
- #: classes/helpers/FrmFieldsHelper.php:1269
2035
  msgid "Swaziland"
2036
  msgstr ""
2037
 
2038
- #: classes/helpers/FrmFieldsHelper.php:1269
2039
  msgid "Sweden"
2040
  msgstr ""
2041
 
2042
- #: classes/helpers/FrmFieldsHelper.php:1269
2043
  msgid "Switzerland"
2044
  msgstr ""
2045
 
2046
- #: classes/helpers/FrmFieldsHelper.php:1269
2047
  msgid "Syria"
2048
  msgstr ""
2049
 
2050
- #: classes/helpers/FrmFieldsHelper.php:1269
2051
  msgid "Taiwan"
2052
  msgstr ""
2053
 
2054
- #: classes/helpers/FrmFieldsHelper.php:1269
2055
  msgid "Tajikistan"
2056
  msgstr ""
2057
 
2058
- #: classes/helpers/FrmFieldsHelper.php:1269
2059
  msgid "Tanzania"
2060
  msgstr ""
2061
 
2062
- #: classes/helpers/FrmFieldsHelper.php:1269
2063
  msgid "Thailand"
2064
  msgstr ""
2065
 
2066
- #: classes/helpers/FrmFieldsHelper.php:1269
2067
  msgid "Togo"
2068
  msgstr ""
2069
 
2070
- #: classes/helpers/FrmFieldsHelper.php:1269
2071
  msgid "Tonga"
2072
  msgstr ""
2073
 
2074
- #: classes/helpers/FrmFieldsHelper.php:1269
2075
  msgid "Trinidad and Tobago"
2076
  msgstr ""
2077
 
2078
- #: classes/helpers/FrmFieldsHelper.php:1269
2079
  msgid "Tunisia"
2080
  msgstr ""
2081
 
2082
- #: classes/helpers/FrmFieldsHelper.php:1269
2083
  msgid "Turkey"
2084
  msgstr ""
2085
 
2086
- #: classes/helpers/FrmFieldsHelper.php:1269
2087
  msgid "Turkmenistan"
2088
  msgstr ""
2089
 
2090
- #: classes/helpers/FrmFieldsHelper.php:1269
2091
  msgid "Tuvalu"
2092
  msgstr ""
2093
 
2094
- #: classes/helpers/FrmFieldsHelper.php:1269
2095
  msgid "Uganda"
2096
  msgstr ""
2097
 
2098
- #: classes/helpers/FrmFieldsHelper.php:1269
2099
  msgid "Ukraine"
2100
  msgstr ""
2101
 
2102
- #: classes/helpers/FrmFieldsHelper.php:1269
2103
  msgid "United Arab Emirates"
2104
  msgstr ""
2105
 
2106
- #: classes/helpers/FrmFieldsHelper.php:1269
2107
  msgid "United Kingdom"
2108
  msgstr ""
2109
 
2110
- #: classes/helpers/FrmFieldsHelper.php:1269
2111
  msgid "United States"
2112
  msgstr ""
2113
 
2114
- #: classes/helpers/FrmFieldsHelper.php:1269
2115
  msgid "Uruguay"
2116
  msgstr ""
2117
 
2118
- #: classes/helpers/FrmFieldsHelper.php:1269
2119
  msgid "Uzbekistan"
2120
  msgstr ""
2121
 
2122
- #: classes/helpers/FrmFieldsHelper.php:1269
2123
  msgid "Vanuatu"
2124
  msgstr ""
2125
 
2126
- #: classes/helpers/FrmFieldsHelper.php:1269
2127
  msgid "Vatican City"
2128
  msgstr ""
2129
 
2130
- #: classes/helpers/FrmFieldsHelper.php:1269
2131
  msgid "Venezuela"
2132
  msgstr ""
2133
 
2134
- #: classes/helpers/FrmFieldsHelper.php:1269
2135
  msgid "Vietnam"
2136
  msgstr ""
2137
 
2138
- #: classes/helpers/FrmFieldsHelper.php:1269
2139
  msgid "Virgin Islands, British"
2140
  msgstr ""
2141
 
2142
- #: classes/helpers/FrmFieldsHelper.php:1269
2143
  msgid "Virgin Islands, U.S."
2144
  msgstr ""
2145
 
2146
- #: classes/helpers/FrmFieldsHelper.php:1269
2147
  msgid "Yemen"
2148
  msgstr ""
2149
 
2150
- #: classes/helpers/FrmFieldsHelper.php:1269
2151
  msgid "Zambia"
2152
  msgstr ""
2153
 
2154
- #: classes/helpers/FrmFieldsHelper.php:1269
2155
  msgid "Zimbabwe"
2156
  msgstr ""
2157
 
2158
- #: classes/helpers/FrmFieldsHelper.php:1273
2159
  msgid "Countries"
2160
  msgstr ""
2161
 
2162
- #: classes/helpers/FrmFieldsHelper.php:1278
2163
  msgid "U.S. State Abbreviations"
2164
  msgstr ""
2165
 
2166
- #: classes/helpers/FrmFieldsHelper.php:1282
2167
  msgid "U.S. States"
2168
  msgstr ""
2169
 
2170
- #: classes/helpers/FrmFieldsHelper.php:1285
2171
  msgid "Age"
2172
  msgstr ""
2173
 
2174
- #: classes/helpers/FrmFieldsHelper.php:1286
2175
  msgid "Under 18"
2176
  msgstr ""
2177
 
2178
- #: classes/helpers/FrmFieldsHelper.php:1287
2179
  msgid "18-24"
2180
  msgstr ""
2181
 
2182
- #: classes/helpers/FrmFieldsHelper.php:1288
2183
  msgid "25-34"
2184
  msgstr ""
2185
 
2186
- #: classes/helpers/FrmFieldsHelper.php:1289
2187
  msgid "35-44"
2188
  msgstr ""
2189
 
2190
- #: classes/helpers/FrmFieldsHelper.php:1290
2191
  msgid "45-54"
2192
  msgstr ""
2193
 
2194
- #: classes/helpers/FrmFieldsHelper.php:1291
2195
  msgid "55-64"
2196
  msgstr ""
2197
 
2198
- #: classes/helpers/FrmFieldsHelper.php:1292
2199
  msgid "65 or Above"
2200
  msgstr ""
2201
 
2202
- #: classes/helpers/FrmFieldsHelper.php:1293
2203
  msgid "Prefer Not to Answer"
2204
  msgstr ""
2205
 
2206
- #: classes/helpers/FrmFieldsHelper.php:1296
2207
  msgid "Satisfaction"
2208
  msgstr ""
2209
 
2210
- #: classes/helpers/FrmFieldsHelper.php:1297
2211
  msgid "Very Satisfied"
2212
  msgstr ""
2213
 
2214
- #: classes/helpers/FrmFieldsHelper.php:1298
2215
  msgid "Satisfied"
2216
  msgstr ""
2217
 
2218
- #: classes/helpers/FrmFieldsHelper.php:1299
2219
- #: classes/helpers/FrmFieldsHelper.php:1308
2220
- #: classes/helpers/FrmFieldsHelper.php:1317
2221
  msgid "Neutral"
2222
  msgstr ""
2223
 
2224
- #: classes/helpers/FrmFieldsHelper.php:1300
2225
  msgid "Unsatisfied"
2226
  msgstr ""
2227
 
2228
- #: classes/helpers/FrmFieldsHelper.php:1301
2229
  msgid "Very Unsatisfied"
2230
  msgstr ""
2231
 
2232
- #: classes/helpers/FrmFieldsHelper.php:1302
2233
- #: classes/helpers/FrmFieldsHelper.php:1311
2234
- #: classes/helpers/FrmFieldsHelper.php:1320
2235
  msgid "N/A"
2236
  msgstr ""
2237
 
2238
- #: classes/helpers/FrmFieldsHelper.php:1305
2239
  msgid "Importance"
2240
  msgstr ""
2241
 
2242
- #: classes/helpers/FrmFieldsHelper.php:1306
2243
  msgid "Very Important"
2244
  msgstr ""
2245
 
2246
- #: classes/helpers/FrmFieldsHelper.php:1307
2247
  msgid "Important"
2248
  msgstr ""
2249
 
2250
- #: classes/helpers/FrmFieldsHelper.php:1309
2251
  msgid "Somewhat Important"
2252
  msgstr ""
2253
 
2254
- #: classes/helpers/FrmFieldsHelper.php:1310
2255
  msgid "Not at all Important"
2256
  msgstr ""
2257
 
2258
- #: classes/helpers/FrmFieldsHelper.php:1314
2259
  msgid "Agreement"
2260
  msgstr ""
2261
 
2262
- #: classes/helpers/FrmFieldsHelper.php:1315
2263
  msgid "Strongly Agree"
2264
  msgstr ""
2265
 
2266
- #: classes/helpers/FrmFieldsHelper.php:1316
2267
  msgid "Agree"
2268
  msgstr ""
2269
 
2270
- #: classes/helpers/FrmFieldsHelper.php:1318
2271
  msgid "Disagree"
2272
  msgstr ""
2273
 
2274
- #: classes/helpers/FrmFieldsHelper.php:1319
2275
  msgid "Strongly Disagree"
2276
  msgstr ""
2277
 
@@ -2342,7 +2352,7 @@ msgid ""
2342
  msgstr ""
2343
 
2344
  #: classes/helpers/FrmFormsHelper.php:853
2345
- #: classes/helpers/FrmStylesHelper.php:140
2346
  msgid "Right"
2347
  msgstr ""
2348
 
@@ -2459,65 +2469,65 @@ msgstr ""
2459
  msgid "Custom"
2460
  msgstr ""
2461
 
2462
- #: classes/helpers/FrmStylesHelper.php:116
2463
  msgid "Edit Styles"
2464
  msgstr ""
2465
 
2466
- #: classes/helpers/FrmStylesHelper.php:117
2467
  msgid "Manage Form Styles"
2468
  msgstr ""
2469
 
2470
- #: classes/helpers/FrmStylesHelper.php:118
2471
  msgid "Custom CSS"
2472
  msgstr ""
2473
 
2474
- #: classes/helpers/FrmStylesHelper.php:128
2475
  msgid "top"
2476
  msgstr ""
2477
 
2478
- #: classes/helpers/FrmStylesHelper.php:129
2479
  #: classes/views/styles/_field-description.php:33
2480
  #: classes/views/styles/_field-labels.php:31
2481
  #: classes/views/styles/_general.php:11
2482
  msgid "left"
2483
  msgstr ""
2484
 
2485
- #: classes/helpers/FrmStylesHelper.php:130
2486
  #: classes/views/styles/_field-description.php:36
2487
  #: classes/views/styles/_field-labels.php:34
2488
  #: classes/views/styles/_general.php:14
2489
  msgid "right"
2490
  msgstr ""
2491
 
2492
- #: classes/helpers/FrmStylesHelper.php:131
2493
  msgid "none"
2494
  msgstr ""
2495
 
2496
- #: classes/helpers/FrmStylesHelper.php:132
2497
  msgid "inside"
2498
  msgstr ""
2499
 
2500
- #: classes/helpers/FrmStylesHelper.php:138
2501
  msgid "Top"
2502
  msgstr ""
2503
 
2504
- #: classes/helpers/FrmStylesHelper.php:139
2505
  msgid "Left"
2506
  msgstr ""
2507
 
2508
- #: classes/helpers/FrmStylesHelper.php:141
2509
  msgid "Inline (left without a set width)"
2510
  msgstr ""
2511
 
2512
- #: classes/helpers/FrmStylesHelper.php:142
2513
  msgid "None"
2514
  msgstr ""
2515
 
2516
- #: classes/helpers/FrmStylesHelper.php:143
2517
  msgid "Hidden (but leave the space)"
2518
  msgstr ""
2519
 
2520
- #: classes/helpers/FrmStylesHelper.php:144
2521
  msgid "Placeholder inside the field"
2522
  msgstr ""
2523
 
@@ -2801,64 +2811,64 @@ msgstr ""
2801
  msgid "Email Notification"
2802
  msgstr ""
2803
 
2804
- #: classes/models/FrmAddon.php:158
2805
  #, php-format
2806
  msgid ""
2807
  "Your %1$s license key is missing. Please add it on the %2$slicenses page%3$s."
2808
  msgstr ""
2809
 
2810
- #: classes/models/FrmAddon.php:290
2811
  msgid "Oops! You forgot to enter your license number."
2812
  msgstr ""
2813
 
2814
- #: classes/models/FrmAddon.php:366
2815
  msgid "Your license has been activated. Enjoy!"
2816
  msgstr ""
2817
 
2818
- #: classes/models/FrmAddon.php:367 classes/models/FrmAddon.php:372
2819
  msgid "That license key is invalid"
2820
  msgstr ""
2821
 
2822
- #: classes/models/FrmAddon.php:368
2823
  msgid "That license is expired"
2824
  msgstr ""
2825
 
2826
- #: classes/models/FrmAddon.php:369
2827
  msgid "That license has been refunded"
2828
  msgstr ""
2829
 
2830
- #: classes/models/FrmAddon.php:370
2831
  msgid "That license has been used on too many sites"
2832
  msgstr ""
2833
 
2834
- #: classes/models/FrmAddon.php:371
2835
  msgid "Oops! That is the wrong license key for this plugin."
2836
  msgstr ""
2837
 
2838
- #: classes/models/FrmAddon.php:394
2839
  msgid "That license was removed successfully"
2840
  msgstr ""
2841
 
2842
- #: classes/models/FrmAddon.php:396
2843
  msgid "There was an error deactivating your license."
2844
  msgstr ""
2845
 
2846
- #: classes/models/FrmAddon.php:429
2847
  msgid "Your License Key was invalid"
2848
  msgstr ""
2849
 
2850
- #: classes/models/FrmAddon.php:433
2851
  #, php-format
2852
  msgid ""
2853
  "You had an error communicating with the Formidable API. %1$sClick here%2$s "
2854
  "for more information."
2855
  msgstr ""
2856
 
2857
- #: classes/models/FrmAddon.php:436
2858
  msgid "You had an HTTP error connecting to the Formidable API"
2859
  msgstr ""
2860
 
2861
- #: classes/models/FrmAddon.php:447
2862
  #, php-format
2863
  msgid "There was a %1$s error: %2$s"
2864
  msgstr ""
@@ -2867,16 +2877,6 @@ msgstr ""
2867
  msgid "Use the query in an array format so it can be properly prepared."
2868
  msgstr ""
2869
 
2870
- #: classes/models/FrmEDD_SL_Plugin_Updater.php:315
2871
- msgid "You do not have permission to install plugin updates"
2872
- msgstr ""
2873
-
2874
- #: classes/models/FrmEDD_SL_Plugin_Updater.php:315
2875
- #: classes/views/styles/_field-colors.php:15
2876
- #: classes/views/styles/_form-messages.php:7
2877
- msgid "Error"
2878
- msgstr ""
2879
-
2880
  #: classes/models/FrmEmail.php:262
2881
  #, php-format
2882
  msgid "%1$s Form submitted on %2$s"
@@ -2905,12 +2905,12 @@ msgstr ""
2905
  msgid "There was a problem with your submission. Please try again."
2906
  msgstr ""
2907
 
2908
- #: classes/models/FrmEntryValidate.php:279
2909
- #: classes/models/FrmEntryValidate.php:288
2910
  msgid "Your entry appears to be spam!"
2911
  msgstr ""
2912
 
2913
- #: classes/models/FrmEntryValidate.php:283
2914
  msgid "Your entry appears to be blacklist spam!"
2915
  msgstr ""
2916
 
@@ -3082,7 +3082,7 @@ msgstr ""
3082
  msgid "Default Form"
3083
  msgstr ""
3084
 
3085
- #: classes/models/FrmMigrate.php:485
3086
  msgid "Sending"
3087
  msgstr ""
3088
 
@@ -3205,44 +3205,40 @@ msgstr ""
3205
  msgid "Website"
3206
  msgstr ""
3207
 
3208
- #: classes/views/addons/list.php:2
3209
- msgid "Formidable AddOns"
3210
  msgstr ""
3211
 
3212
- #: classes/views/addons/list.php:13 classes/views/addons/list.php:14
3213
  msgid "View Docs"
3214
  msgstr ""
3215
 
3216
- #: classes/views/addons/list.php:22
3217
  #, php-format
3218
  msgid "Status: %s"
3219
  msgstr ""
3220
 
3221
- #: classes/views/addons/list.php:29 classes/views/addons/settings.php:32
3222
  msgid "Activate"
3223
  msgstr ""
3224
 
3225
- #: classes/views/addons/list.php:37 classes/views/addons/list.php:38
3226
  #: classes/views/addons/upgrade_to_pro.php:24
3227
  msgid "Get Started"
3228
  msgstr ""
3229
 
3230
- #: classes/views/addons/list.php:41 classes/views/addons/list.php:42
3231
  msgid "Upgrade Now"
3232
  msgstr ""
3233
 
3234
- #: classes/views/addons/settings.php:24
3235
  msgid "Good to go!"
3236
  msgstr ""
3237
 
3238
- #: classes/views/addons/settings.php:26
3239
  msgid "Deactivate"
3240
  msgstr ""
3241
 
3242
- #: classes/views/addons/settings.php:40
3243
- msgid "Autofill Licenses"
3244
- msgstr ""
3245
-
3246
  #: classes/views/frm-entries/_sidebar-shared-pub.php:17
3247
  msgid "Print"
3248
  msgstr ""
@@ -4126,7 +4122,7 @@ msgid "To unlock more features consider %1$supgrading to PRO%2$s."
4126
  msgstr ""
4127
 
4128
  #: classes/views/frm-settings/license_box.php:10
4129
- #: classes/views/shared/upgrade_overlay.php:32
4130
  msgid "Already purchased?"
4131
  msgstr ""
4132
 
@@ -4203,16 +4199,59 @@ msgstr ""
4203
  msgid "Click a button below to insert sample logic into your view"
4204
  msgstr ""
4205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4206
  #: classes/views/shared/upgrade_overlay.php:11
4207
  #, php-format
4208
- msgid "%s are a Pro feature"
4209
  msgstr ""
4210
 
4211
  #: classes/views/shared/upgrade_overlay.php:20
4212
- #, php-format
4213
- msgid ""
4214
- "%s are not installed on this site. Please see the addons that are included "
4215
- "with your plan."
4216
  msgstr ""
4217
 
4218
  #: classes/views/shared/upgrade_overlay.php:22
@@ -4222,6 +4261,10 @@ msgid ""
4222
  "awesome features."
4223
  msgstr ""
4224
 
 
 
 
 
4225
  #: classes/views/styles/_buttons.php:4
4226
  msgid "Disable submit button styling"
4227
  msgstr ""
3
  msgstr ""
4
  "Project-Id-Version: Formidable v2.05\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2018-11-30 19:15+0000\n"
7
  "POT-Revision-Date: Tue Sep 26 2017 16:06:46 GMT-0600 (MDT)\n"
8
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
9
  "Last-Translator: \n"
27
  "X-Poedit-SearchPath-0: .\n"
28
  "X-Textdomain-Support: yes"
29
 
30
+ #: deprecated/FrmDeprecated.php:286
31
+ #: classes/controllers/FrmFormsController.php:232
32
+ msgid "Form template was Successfully Created"
33
+ msgstr ""
34
+
35
+ #: deprecated/FrmEDD_SL_Plugin_Updater.php:315
36
+ msgid "You do not have permission to install plugin updates"
37
+ msgstr ""
38
+
39
+ #: deprecated/FrmEDD_SL_Plugin_Updater.php:315
40
+ #: classes/views/styles/_field-colors.php:15
41
+ #: classes/views/styles/_form-messages.php:7
42
+ msgid "Error"
43
+ msgstr ""
44
+
45
+ #: classes/controllers/FrmAddonsController.php:10
46
+ msgid "Add-Ons"
47
  msgstr ""
48
 
49
+ #: classes/controllers/FrmAddonsController.php:13
50
+ #: classes/views/shared/upgrade_overlay.php:33
51
  msgid "Upgrade to Pro"
52
  msgstr ""
53
 
54
+ #: classes/controllers/FrmAddonsController.php:35
55
  msgid "There are no plugins on your site that require a license"
56
  msgstr ""
57
 
58
+ #: classes/controllers/FrmAddonsController.php:462
59
  msgid "Installed"
60
  msgstr ""
61
 
62
+ #: classes/controllers/FrmAddonsController.php:467
63
+ #: classes/helpers/FrmAppHelper.php:1684
64
  #: classes/views/styles/_field-colors.php:10
65
  msgid "Active"
66
  msgstr ""
67
 
68
+ #: classes/controllers/FrmAddonsController.php:472
69
  msgid "Not Installed"
70
  msgstr ""
71
 
72
+ #: classes/controllers/FrmAddonsController.php:556
73
  msgid ""
74
  "Sorry, you're site requires FTP authentication. Please install plugins "
75
  "manaully."
99
  msgid "Build a Form"
100
  msgstr ""
101
 
102
+ #: classes/controllers/FrmAppController.php:147
103
  #, php-format
104
  msgid ""
105
  "This site has been previously authorized to run Formidable Forms. "
107
  "running the free version and remove this message."
108
  msgstr ""
109
 
110
+ #: classes/controllers/FrmAppController.php:491
111
  #, php-format
112
  msgid ""
113
  "Help us spread the %1$sFormidable Forms%2$s love with %3$s %5$s on WordPress."
199
  msgid "No entries were specified"
200
  msgstr ""
201
 
202
+ #: classes/controllers/FrmFieldsController.php:249
203
  msgid "Other"
204
  msgstr ""
205
 
206
+ #: classes/controllers/FrmFieldsController.php:252
207
  msgid "New Option"
208
  msgstr ""
209
 
233
  msgid "Form was Successfully Updated"
234
  msgstr ""
235
 
 
 
 
 
 
236
  #: classes/controllers/FrmFormsController.php:232
237
  msgid "Form was Successfully Copied"
238
  msgstr ""
451
  msgid "No forms were specified"
452
  msgstr ""
453
 
454
+ #: classes/controllers/FrmFormsController.php:1083
455
  msgid "Abnormal HTML characters prevented your form from saving correctly"
456
  msgstr ""
457
 
458
+ #: classes/controllers/FrmFormsController.php:1198
459
+ #: classes/controllers/FrmFormsController.php:1212
460
  msgid "Please select a valid form"
461
  msgstr ""
462
 
463
+ #: classes/controllers/FrmFormsController.php:1440
464
  msgid "Please wait while you are redirected."
465
  msgstr ""
466
 
467
+ #: classes/controllers/FrmFormsController.php:1474
468
  #, php-format
469
  msgid "%1$sClick here%2$s if you are not automatically redirected."
470
  msgstr ""
474
  msgid "Global Settings"
475
  msgstr ""
476
 
477
+ #: classes/controllers/FrmSettingsController.php:50
478
  #: classes/views/addons/settings.php:2
479
  msgid "Plugin Licenses"
480
  msgstr ""
481
 
482
+ #: classes/controllers/FrmSettingsController.php:100
483
+ #: classes/controllers/FrmSettingsController.php:103
484
  msgid "Settings Saved"
485
  msgstr ""
486
 
487
+ #: classes/controllers/FrmSettingsController.php:136
488
  msgid "Extra form features like file uploads, pagination, etc"
489
  msgstr ""
490
 
491
+ #: classes/controllers/FrmSettingsController.php:137
492
  msgid "Repeaters & cascading fields for advanced forms"
493
  msgstr ""
494
 
495
+ #: classes/controllers/FrmSettingsController.php:138
496
  msgid "Flexibly view, search, edit, and delete entries anywhere"
497
  msgstr ""
498
 
499
+ #: classes/controllers/FrmSettingsController.php:139
500
  msgid "Display entries with virtually limitless Formidable views"
501
  msgstr ""
502
 
503
+ #: classes/controllers/FrmSettingsController.php:140
504
  msgid "Create surveys & polls"
505
  msgstr ""
506
 
507
+ #: classes/controllers/FrmSettingsController.php:141
508
  msgid "WordPress user registration and login forms"
509
  msgstr ""
510
 
511
+ #: classes/controllers/FrmSettingsController.php:142
512
  msgid "Create Stripe, PayPal or Authorize.net payment forms"
513
  msgstr ""
514
 
515
+ #: classes/controllers/FrmSettingsController.php:143
516
  msgid "Powerful conditional logic for smart forms"
517
  msgstr ""
518
 
519
+ #: classes/controllers/FrmSettingsController.php:144
520
  msgid "Integrations with 1000+ marketing & payment services"
521
  msgstr ""
522
 
523
+ #: classes/controllers/FrmSettingsController.php:145
524
  msgid "Collect digital signatures"
525
  msgstr ""
526
 
527
+ #: classes/controllers/FrmSettingsController.php:146
528
  msgid "Accept user-submitted content with Post submissions"
529
  msgstr ""
530
 
531
+ #: classes/controllers/FrmSettingsController.php:147
532
  msgid "Email routing"
533
  msgstr ""
534
 
535
+ #: classes/controllers/FrmSettingsController.php:148
536
  msgid "Create calculator forms"
537
  msgstr ""
538
 
539
+ #: classes/controllers/FrmSettingsController.php:149
540
  msgid "Save draft entries and return later"
541
  msgstr ""
542
 
543
+ #: classes/controllers/FrmSettingsController.php:150
544
  msgid "Analyze form data with graphs & stats"
545
  msgstr ""
546
 
650
  msgid "There are no entries for that form."
651
  msgstr ""
652
 
653
+ #: classes/helpers/FrmAppHelper.php:574
654
  #: classes/helpers/FrmFormsListHelper.php:108
655
  msgid "Add New"
656
  msgstr ""
657
 
658
+ #: classes/helpers/FrmAppHelper.php:691
659
  msgid "View Forms and Templates"
660
  msgstr ""
661
 
662
+ #: classes/helpers/FrmAppHelper.php:692
663
  msgid "Add/Edit Forms and Templates"
664
  msgstr ""
665
 
666
+ #: classes/helpers/FrmAppHelper.php:693
667
  msgid "Delete Forms and Templates"
668
  msgstr ""
669
 
670
+ #: classes/helpers/FrmAppHelper.php:694
671
  msgid "Access this Settings Page"
672
  msgstr ""
673
 
674
+ #: classes/helpers/FrmAppHelper.php:695
675
  msgid "View Entries from Admin Area"
676
  msgstr ""
677
 
678
+ #: classes/helpers/FrmAppHelper.php:696
679
  msgid "Delete Entries from Admin Area"
680
  msgstr ""
681
 
682
+ #: classes/helpers/FrmAppHelper.php:703
683
  msgid "Add Entries from Admin Area"
684
  msgstr ""
685
 
686
+ #: classes/helpers/FrmAppHelper.php:704
687
  msgid "Edit Entries from Admin Area"
688
  msgstr ""
689
 
690
+ #: classes/helpers/FrmAppHelper.php:705
691
  msgid "View Reports"
692
  msgstr ""
693
 
694
+ #: classes/helpers/FrmAppHelper.php:706
695
  msgid "Add/Edit Views"
696
  msgstr ""
697
 
698
+ #: classes/helpers/FrmAppHelper.php:1305
699
  msgid "at"
700
  msgstr ""
701
 
702
+ #: classes/helpers/FrmAppHelper.php:1354 classes/helpers/FrmAppHelper.php:1373
703
  msgid "seconds"
704
  msgstr ""
705
 
706
+ #: classes/helpers/FrmAppHelper.php:1367
707
  msgid "year"
708
  msgstr ""
709
 
710
+ #: classes/helpers/FrmAppHelper.php:1367
711
  msgid "years"
712
  msgstr ""
713
 
714
+ #: classes/helpers/FrmAppHelper.php:1368
715
  msgid "month"
716
  msgstr ""
717
 
718
+ #: classes/helpers/FrmAppHelper.php:1368
719
  msgid "months"
720
  msgstr ""
721
 
722
+ #: classes/helpers/FrmAppHelper.php:1369
723
  msgid "week"
724
  msgstr ""
725
 
726
+ #: classes/helpers/FrmAppHelper.php:1369
727
  msgid "weeks"
728
  msgstr ""
729
 
730
+ #: classes/helpers/FrmAppHelper.php:1370
731
  msgid "day"
732
  msgstr ""
733
 
734
+ #: classes/helpers/FrmAppHelper.php:1370
735
  msgid "days"
736
  msgstr ""
737
 
738
+ #: classes/helpers/FrmAppHelper.php:1371
739
  msgid "hour"
740
  msgstr ""
741
 
742
+ #: classes/helpers/FrmAppHelper.php:1371
743
  msgid "hours"
744
  msgstr ""
745
 
746
+ #: classes/helpers/FrmAppHelper.php:1372
747
  msgid "minute"
748
  msgstr ""
749
 
750
+ #: classes/helpers/FrmAppHelper.php:1372
751
  msgid "minutes"
752
  msgstr ""
753
 
754
+ #: classes/helpers/FrmAppHelper.php:1373
755
  msgid "second"
756
  msgstr ""
757
 
758
+ #: classes/helpers/FrmAppHelper.php:1465
759
  msgid "Give this action a label for easy reference."
760
  msgstr ""
761
 
762
+ #: classes/helpers/FrmAppHelper.php:1466
763
  msgid ""
764
  "Add one or more recipient addresses separated by a \",\". FORMAT: Name "
765
  "<name@email.com> or name@email.com. [admin_email] is the address set in WP "
766
  "General Settings."
767
  msgstr ""
768
 
769
+ #: classes/helpers/FrmAppHelper.php:1467
770
  msgid ""
771
  "Add CC addresses separated by a \",\". FORMAT: Name <name@email.com> or "
772
  "name@email.com."
773
  msgstr ""
774
 
775
+ #: classes/helpers/FrmAppHelper.php:1468
776
  msgid ""
777
  "Add BCC addresses separated by a \",\". FORMAT: Name <name@email.com> or "
778
  "name@email.com."
779
  msgstr ""
780
 
781
+ #: classes/helpers/FrmAppHelper.php:1469
782
  msgid ""
783
  "If you would like a different reply to address than the \"from\" address, "
784
  "add a single address here. FORMAT: Name <name@email.com> or name@email.com."
785
  msgstr ""
786
 
787
+ #: classes/helpers/FrmAppHelper.php:1470
788
  msgid ""
789
  "Enter the name and/or email address of the sender. FORMAT: John Bates "
790
  "<john@example.com> or john@example.com."
791
  msgstr ""
792
 
793
+ #: classes/helpers/FrmAppHelper.php:1471
794
  #, php-format
795
  msgid ""
796
  "If you leave the subject blank, the default will be used: %1$s Form "
797
  "submitted on %2$s"
798
  msgstr ""
799
 
800
+ #: classes/helpers/FrmAppHelper.php:1602 classes/helpers/FrmAppHelper.php:1672
801
  msgid "Please wait while your site updates."
802
  msgstr ""
803
 
804
+ #: classes/helpers/FrmAppHelper.php:1603
805
  msgid "Are you sure you want to deauthorize Formidable Forms on this site?"
806
  msgstr ""
807
 
808
+ #: classes/helpers/FrmAppHelper.php:1633
809
  msgid "Remove"
810
  msgstr ""
811
 
812
+ #: classes/helpers/FrmAppHelper.php:1636
813
  #: classes/helpers/FrmCSVExportHelper.php:150
814
  msgid "ID"
815
  msgstr ""
816
 
817
+ #: classes/helpers/FrmAppHelper.php:1637
818
  msgid "No results match"
819
  msgstr ""
820
 
821
+ #: classes/helpers/FrmAppHelper.php:1638
822
  msgid "That file looks like Spam."
823
  msgstr ""
824
 
825
+ #: classes/helpers/FrmAppHelper.php:1639
826
  msgid "There is an error in the calculation in the field with key"
827
  msgstr ""
828
 
829
+ #: classes/helpers/FrmAppHelper.php:1640
830
  msgid "Please complete the preceding required fields before uploading a file."
831
  msgstr ""
832
 
833
+ #: classes/helpers/FrmAppHelper.php:1647
834
  msgid ""
835
  "Are you sure you want to do this? Clicking OK will delete all forms, form "
836
  "data, and all other Formidable data. There is no Undo."
837
  msgstr ""
838
 
839
+ #: classes/helpers/FrmAppHelper.php:1648
840
  #: classes/views/frm-forms/add_field.php:37
841
  #: classes/views/frm-forms/add_field.php:50
842
  msgid "(Click to add description)"
843
  msgstr ""
844
 
845
+ #: classes/helpers/FrmAppHelper.php:1649
846
  #: classes/views/frm-fields/single-option.php:8
847
  #: classes/views/frm-fields/single-option.php:14
848
  msgid "(Blank)"
849
  msgstr ""
850
 
851
+ #: classes/helpers/FrmAppHelper.php:1650
852
  #: classes/views/frm-forms/add_field.php:17
853
  msgid "(no label)"
854
  msgstr ""
855
 
856
+ #: classes/helpers/FrmAppHelper.php:1651
857
  msgid "Saving"
858
  msgstr ""
859
 
860
+ #: classes/helpers/FrmAppHelper.php:1652
861
  msgid "Saved"
862
  msgstr ""
863
 
864
+ #: classes/helpers/FrmAppHelper.php:1654
865
  msgid "Cancel"
866
  msgstr ""
867
 
868
+ #: classes/helpers/FrmAppHelper.php:1655
869
  #: classes/helpers/FrmFormsListHelper.php:300
870
  #: classes/views/frm-forms/add_field.php:197
871
  #: classes/views/styles/_buttons.php:12
873
  msgid "Default"
874
  msgstr ""
875
 
876
+ #: classes/helpers/FrmAppHelper.php:1656
877
+ #: classes/helpers/FrmFieldsHelper.php:1109
878
  msgid "Clear default value when typing"
879
  msgstr ""
880
 
881
+ #: classes/helpers/FrmAppHelper.php:1657
882
+ #: classes/helpers/FrmFieldsHelper.php:1109
883
  msgid "Do not clear default value when typing"
884
  msgstr ""
885
 
886
+ #: classes/helpers/FrmAppHelper.php:1658
887
+ #: classes/helpers/FrmFieldsHelper.php:1119
888
  msgid "Default value will pass form validation"
889
  msgstr ""
890
 
891
+ #: classes/helpers/FrmAppHelper.php:1659
892
+ #: classes/helpers/FrmFieldsHelper.php:1119
893
  msgid "Default value will NOT pass form validation"
894
  msgstr ""
895
 
896
+ #: classes/helpers/FrmAppHelper.php:1660
897
  #: classes/helpers/FrmEntriesListHelper.php:257
898
  #: classes/helpers/FrmFormsHelper.php:831 classes/views/styles/show.php:64
899
  msgid "Are you sure?"
900
  msgstr ""
901
 
902
+ #: classes/helpers/FrmAppHelper.php:1661
903
  msgid ""
904
  "Are you sure you want to delete this field and all data associated with it?"
905
  msgstr ""
906
 
907
+ #: classes/helpers/FrmAppHelper.php:1662
908
  msgid "WARNING: This will delete all fields inside of the section as well."
909
  msgstr ""
910
 
911
+ #: classes/helpers/FrmAppHelper.php:1663
912
  msgid ""
913
  "Warning: If you have entries with multiple rows, all but the first row will "
914
  "be lost."
915
  msgstr ""
916
 
917
+ #: classes/helpers/FrmAppHelper.php:1665
918
  #: classes/helpers/FrmFieldsHelper.php:268
919
  msgid "The entered values do not match"
920
  msgstr ""
921
 
922
+ #: classes/helpers/FrmAppHelper.php:1666
923
  msgid "Enter Email"
924
  msgstr ""
925
 
926
+ #: classes/helpers/FrmAppHelper.php:1667
927
  msgid "Confirm Email"
928
  msgstr ""
929
 
930
+ #: classes/helpers/FrmAppHelper.php:1668
931
  msgid ""
932
  "In certain browsers (e.g. Firefox) text will not display correctly if the "
933
  "field height is too small relative to the field padding and text size. "
934
  "Please increase your field height or decrease your field padding."
935
  msgstr ""
936
 
937
+ #: classes/helpers/FrmAppHelper.php:1669
938
  msgid "Enter Password"
939
  msgstr ""
940
 
941
+ #: classes/helpers/FrmAppHelper.php:1670
942
  msgid "Confirm Password"
943
  msgstr ""
944
 
945
+ #: classes/helpers/FrmAppHelper.php:1671
946
  msgid "Import Complete"
947
  msgstr ""
948
 
949
+ #: classes/helpers/FrmAppHelper.php:1673
950
  msgid "Warning: There is no way to retrieve unsaved entries."
951
  msgstr ""
952
 
953
+ #: classes/helpers/FrmAppHelper.php:1677
954
  msgid "No new licenses were found"
955
  msgstr ""
956
 
957
+ #: classes/helpers/FrmAppHelper.php:1678
958
  msgid "This calculation has at least one unmatched ( ) { } [ ]."
959
  msgstr ""
960
 
961
+ #: classes/helpers/FrmAppHelper.php:1679
962
  msgid "This calculation may have shortcodes that work in Views but not forms."
963
  msgstr ""
964
 
965
+ #: classes/helpers/FrmAppHelper.php:1680
966
  msgid ""
967
  "This calculation may have shortcodes that work in text calculations but not "
968
  "numeric calculations."
969
  msgstr ""
970
 
971
+ #: classes/helpers/FrmAppHelper.php:1681
972
  msgid "Please enter a Repeat Limit that is greater than 1."
973
  msgstr ""
974
 
975
+ #: classes/helpers/FrmAppHelper.php:1682
976
  msgid "Installing"
977
  msgstr ""
978
 
979
+ #: classes/helpers/FrmAppHelper.php:1683 classes/views/addons/list.php:40
980
+ #: classes/views/addons/list.php:41
981
  msgid "Install"
982
  msgstr ""
983
 
984
+ #: classes/helpers/FrmAppHelper.php:1706
985
  msgid ""
986
  "You are running an outdated version of Formidable. This plugin may not work "
987
  "correctly if you do not update Formidable."
988
  msgstr ""
989
 
990
+ #: classes/helpers/FrmAppHelper.php:1712
991
  msgid "English"
992
  msgstr ""
993
 
994
+ #: classes/helpers/FrmAppHelper.php:1713
995
  msgid "English/Western"
996
  msgstr ""
997
 
998
+ #: classes/helpers/FrmAppHelper.php:1714
999
  msgid "Afrikaans"
1000
  msgstr ""
1001
 
1002
+ #: classes/helpers/FrmAppHelper.php:1715
1003
  msgid "Albanian"
1004
  msgstr ""
1005
 
1006
+ #: classes/helpers/FrmAppHelper.php:1716
1007
  msgid "Arabic"
1008
  msgstr ""
1009
 
1010
+ #: classes/helpers/FrmAppHelper.php:1717
1011
  msgid "Armenian"
1012
  msgstr ""
1013
 
1014
+ #: classes/helpers/FrmAppHelper.php:1718
1015
  msgid "Azerbaijani"
1016
  msgstr ""
1017
 
1018
+ #: classes/helpers/FrmAppHelper.php:1719
1019
  msgid "Basque"
1020
  msgstr ""
1021
 
1022
+ #: classes/helpers/FrmAppHelper.php:1720
1023
  msgid "Bosnian"
1024
  msgstr ""
1025
 
1026
+ #: classes/helpers/FrmAppHelper.php:1721
1027
  msgid "Bulgarian"
1028
  msgstr ""
1029
 
1030
+ #: classes/helpers/FrmAppHelper.php:1722
1031
  msgid "Catalan"
1032
  msgstr ""
1033
 
1034
+ #: classes/helpers/FrmAppHelper.php:1723
1035
  msgid "Chinese Hong Kong"
1036
  msgstr ""
1037
 
1038
+ #: classes/helpers/FrmAppHelper.php:1724
1039
  msgid "Chinese Simplified"
1040
  msgstr ""
1041
 
1042
+ #: classes/helpers/FrmAppHelper.php:1725
1043
  msgid "Chinese Traditional"
1044
  msgstr ""
1045
 
1046
+ #: classes/helpers/FrmAppHelper.php:1726
1047
  msgid "Croatian"
1048
  msgstr ""
1049
 
1050
+ #: classes/helpers/FrmAppHelper.php:1727
1051
  msgid "Czech"
1052
  msgstr ""
1053
 
1054
+ #: classes/helpers/FrmAppHelper.php:1728
1055
  msgid "Danish"
1056
  msgstr ""
1057
 
1058
+ #: classes/helpers/FrmAppHelper.php:1729
1059
  msgid "Dutch"
1060
  msgstr ""
1061
 
1062
+ #: classes/helpers/FrmAppHelper.php:1730
1063
  msgid "English/UK"
1064
  msgstr ""
1065
 
1066
+ #: classes/helpers/FrmAppHelper.php:1731
1067
  msgid "Esperanto"
1068
  msgstr ""
1069
 
1070
+ #: classes/helpers/FrmAppHelper.php:1732
1071
  msgid "Estonian"
1072
  msgstr ""
1073
 
1074
+ #: classes/helpers/FrmAppHelper.php:1733
1075
  msgid "Faroese"
1076
  msgstr ""
1077
 
1078
+ #: classes/helpers/FrmAppHelper.php:1734
1079
  msgid "Farsi/Persian"
1080
  msgstr ""
1081
 
1082
+ #: classes/helpers/FrmAppHelper.php:1735
1083
  msgid "Filipino"
1084
  msgstr ""
1085
 
1086
+ #: classes/helpers/FrmAppHelper.php:1736
1087
  msgid "Finnish"
1088
  msgstr ""
1089
 
1090
+ #: classes/helpers/FrmAppHelper.php:1737
1091
  msgid "French"
1092
  msgstr ""
1093
 
1094
+ #: classes/helpers/FrmAppHelper.php:1738
1095
  msgid "French/Canadian"
1096
  msgstr ""
1097
 
1098
+ #: classes/helpers/FrmAppHelper.php:1739
1099
  msgid "French/Swiss"
1100
  msgstr ""
1101
 
1102
+ #: classes/helpers/FrmAppHelper.php:1740
1103
  msgid "German"
1104
  msgstr ""
1105
 
1106
+ #: classes/helpers/FrmAppHelper.php:1741
1107
  msgid "German/Austria"
1108
  msgstr ""
1109
 
1110
+ #: classes/helpers/FrmAppHelper.php:1742
1111
  msgid "German/Switzerland"
1112
  msgstr ""
1113
 
1114
+ #: classes/helpers/FrmAppHelper.php:1743
1115
  msgid "Greek"
1116
  msgstr ""
1117
 
1118
+ #: classes/helpers/FrmAppHelper.php:1744 classes/helpers/FrmAppHelper.php:1745
1119
  msgid "Hebrew"
1120
  msgstr ""
1121
 
1122
+ #: classes/helpers/FrmAppHelper.php:1746
1123
  msgid "Hindi"
1124
  msgstr ""
1125
 
1126
+ #: classes/helpers/FrmAppHelper.php:1747
1127
  msgid "Hungarian"
1128
  msgstr ""
1129
 
1130
+ #: classes/helpers/FrmAppHelper.php:1748
1131
  msgid "Icelandic"
1132
  msgstr ""
1133
 
1134
+ #: classes/helpers/FrmAppHelper.php:1749
1135
  msgid "Indonesian"
1136
  msgstr ""
1137
 
1138
+ #: classes/helpers/FrmAppHelper.php:1750
1139
  msgid "Italian"
1140
  msgstr ""
1141
 
1142
+ #: classes/helpers/FrmAppHelper.php:1751
1143
  msgid "Japanese"
1144
  msgstr ""
1145
 
1146
+ #: classes/helpers/FrmAppHelper.php:1752
1147
  msgid "Korean"
1148
  msgstr ""
1149
 
1150
+ #: classes/helpers/FrmAppHelper.php:1753
1151
  msgid "Latvian"
1152
  msgstr ""
1153
 
1154
+ #: classes/helpers/FrmAppHelper.php:1754
1155
  msgid "Lithuanian"
1156
  msgstr ""
1157
 
1158
+ #: classes/helpers/FrmAppHelper.php:1755
1159
  msgid "Malaysian"
1160
  msgstr ""
1161
 
1162
+ #: classes/helpers/FrmAppHelper.php:1756
1163
  msgid "Norwegian"
1164
  msgstr ""
1165
 
1166
+ #: classes/helpers/FrmAppHelper.php:1757
1167
  msgid "Polish"
1168
  msgstr ""
1169
 
1170
+ #: classes/helpers/FrmAppHelper.php:1758
1171
  msgid "Portuguese"
1172
  msgstr ""
1173
 
1174
+ #: classes/helpers/FrmAppHelper.php:1759
1175
  msgid "Portuguese/Brazilian"
1176
  msgstr ""
1177
 
1178
+ #: classes/helpers/FrmAppHelper.php:1760
1179
  msgid "Portuguese/Portugal"
1180
  msgstr ""
1181
 
1182
+ #: classes/helpers/FrmAppHelper.php:1761
1183
  msgid "Romanian"
1184
  msgstr ""
1185
 
1186
+ #: classes/helpers/FrmAppHelper.php:1762
1187
  msgid "Russian"
1188
  msgstr ""
1189
 
1190
+ #: classes/helpers/FrmAppHelper.php:1763 classes/helpers/FrmAppHelper.php:1764
1191
  msgid "Serbian"
1192
  msgstr ""
1193
 
1194
+ #: classes/helpers/FrmAppHelper.php:1765
1195
  msgid "Slovak"
1196
  msgstr ""
1197
 
1198
+ #: classes/helpers/FrmAppHelper.php:1766
1199
  msgid "Slovenian"
1200
  msgstr ""
1201
 
1202
+ #: classes/helpers/FrmAppHelper.php:1767
1203
  msgid "Spanish"
1204
  msgstr ""
1205
 
1206
+ #: classes/helpers/FrmAppHelper.php:1768
1207
  msgid "Spanish/Latin America"
1208
  msgstr ""
1209
 
1210
+ #: classes/helpers/FrmAppHelper.php:1769
1211
  msgid "Swedish"
1212
  msgstr ""
1213
 
1214
+ #: classes/helpers/FrmAppHelper.php:1770
1215
  msgid "Tamil"
1216
  msgstr ""
1217
 
1218
+ #: classes/helpers/FrmAppHelper.php:1771
1219
  msgid "Thai"
1220
  msgstr ""
1221
 
1222
+ #: classes/helpers/FrmAppHelper.php:1772 classes/helpers/FrmAppHelper.php:1773
1223
  msgid "Turkish"
1224
  msgstr ""
1225
 
1226
+ #: classes/helpers/FrmAppHelper.php:1774
1227
  msgid "Ukranian"
1228
  msgstr ""
1229
 
1230
+ #: classes/helpers/FrmAppHelper.php:1775
1231
  msgid "Vietnamese"
1232
  msgstr ""
1233
 
1312
  msgid "This field is invalid"
1313
  msgstr ""
1314
 
1315
+ #: classes/helpers/FrmFieldsHelper.php:435
1316
  #, php-format
1317
  msgid "Please add options from the WordPress \"%1$s\" page"
1318
  msgstr ""
1319
 
1320
+ #: classes/helpers/FrmFieldsHelper.php:1225
1321
  msgid "Afghanistan"
1322
  msgstr ""
1323
 
1324
+ #: classes/helpers/FrmFieldsHelper.php:1225
1325
  msgid "Albania"
1326
  msgstr ""
1327
 
1328
+ #: classes/helpers/FrmFieldsHelper.php:1225
1329
  msgid "Algeria"
1330
  msgstr ""
1331
 
1332
+ #: classes/helpers/FrmFieldsHelper.php:1225
1333
  msgid "American Samoa"
1334
  msgstr ""
1335
 
1336
+ #: classes/helpers/FrmFieldsHelper.php:1225
1337
  msgid "Andorra"
1338
  msgstr ""
1339
 
1340
+ #: classes/helpers/FrmFieldsHelper.php:1225
1341
  msgid "Angola"
1342
  msgstr ""
1343
 
1344
+ #: classes/helpers/FrmFieldsHelper.php:1225
1345
  msgid "Anguilla"
1346
  msgstr ""
1347
 
1348
+ #: classes/helpers/FrmFieldsHelper.php:1225
1349
  msgid "Antarctica"
1350
  msgstr ""
1351
 
1352
+ #: classes/helpers/FrmFieldsHelper.php:1225
1353
  msgid "Antigua and Barbuda"
1354
  msgstr ""
1355
 
1356
+ #: classes/helpers/FrmFieldsHelper.php:1225
1357
  msgid "Argentina"
1358
  msgstr ""
1359
 
1360
+ #: classes/helpers/FrmFieldsHelper.php:1225
1361
  msgid "Armenia"
1362
  msgstr ""
1363
 
1364
+ #: classes/helpers/FrmFieldsHelper.php:1225
1365
  msgid "Aruba"
1366
  msgstr ""
1367
 
1368
+ #: classes/helpers/FrmFieldsHelper.php:1225
1369
  msgid "Australia"
1370
  msgstr ""
1371
 
1372
+ #: classes/helpers/FrmFieldsHelper.php:1225
1373
  msgid "Austria"
1374
  msgstr ""
1375
 
1376
+ #: classes/helpers/FrmFieldsHelper.php:1225
1377
  msgid "Azerbaijan"
1378
  msgstr ""
1379
 
1380
+ #: classes/helpers/FrmFieldsHelper.php:1225
1381
  msgid "Bahamas"
1382
  msgstr ""
1383
 
1384
+ #: classes/helpers/FrmFieldsHelper.php:1225
1385
  msgid "Bahrain"
1386
  msgstr ""
1387
 
1388
+ #: classes/helpers/FrmFieldsHelper.php:1225
1389
  msgid "Bangladesh"
1390
  msgstr ""
1391
 
1392
+ #: classes/helpers/FrmFieldsHelper.php:1225
1393
  msgid "Barbados"
1394
  msgstr ""
1395
 
1396
+ #: classes/helpers/FrmFieldsHelper.php:1225
1397
  msgid "Belarus"
1398
  msgstr ""
1399
 
1400
+ #: classes/helpers/FrmFieldsHelper.php:1225
1401
  msgid "Belgium"
1402
  msgstr ""
1403
 
1404
+ #: classes/helpers/FrmFieldsHelper.php:1225
1405
  msgid "Belize"
1406
  msgstr ""
1407
 
1408
+ #: classes/helpers/FrmFieldsHelper.php:1225
1409
  msgid "Benin"
1410
  msgstr ""
1411
 
1412
+ #: classes/helpers/FrmFieldsHelper.php:1225
1413
  msgid "Bermuda"
1414
  msgstr ""
1415
 
1416
+ #: classes/helpers/FrmFieldsHelper.php:1225
1417
  msgid "Bhutan"
1418
  msgstr ""
1419
 
1420
+ #: classes/helpers/FrmFieldsHelper.php:1225
1421
  msgid "Bolivia"
1422
  msgstr ""
1423
 
1424
+ #: classes/helpers/FrmFieldsHelper.php:1225
1425
  msgid "Bosnia and Herzegovina"
1426
  msgstr ""
1427
 
1428
+ #: classes/helpers/FrmFieldsHelper.php:1225
1429
  msgid "Botswana"
1430
  msgstr ""
1431
 
1432
+ #: classes/helpers/FrmFieldsHelper.php:1225
1433
  msgid "Brazil"
1434
  msgstr ""
1435
 
1436
+ #: classes/helpers/FrmFieldsHelper.php:1225
1437
  msgid "Brunei"
1438
  msgstr ""
1439
 
1440
+ #: classes/helpers/FrmFieldsHelper.php:1225
1441
  msgid "Bulgaria"
1442
  msgstr ""
1443
 
1444
+ #: classes/helpers/FrmFieldsHelper.php:1225
1445
  msgid "Burkina Faso"
1446
  msgstr ""
1447
 
1448
+ #: classes/helpers/FrmFieldsHelper.php:1225
1449
  msgid "Burundi"
1450
  msgstr ""
1451
 
1452
+ #: classes/helpers/FrmFieldsHelper.php:1225
1453
  msgid "Cambodia"
1454
  msgstr ""
1455
 
1456
+ #: classes/helpers/FrmFieldsHelper.php:1225
1457
  msgid "Cameroon"
1458
  msgstr ""
1459
 
1460
+ #: classes/helpers/FrmFieldsHelper.php:1225
1461
  msgid "Canada"
1462
  msgstr ""
1463
 
1464
+ #: classes/helpers/FrmFieldsHelper.php:1225
1465
  msgid "Cape Verde"
1466
  msgstr ""
1467
 
1468
+ #: classes/helpers/FrmFieldsHelper.php:1225
1469
  msgid "Cayman Islands"
1470
  msgstr ""
1471
 
1472
+ #: classes/helpers/FrmFieldsHelper.php:1225
1473
  msgid "Central African Republic"
1474
  msgstr ""
1475
 
1476
+ #: classes/helpers/FrmFieldsHelper.php:1225
1477
  msgid "Chad"
1478
  msgstr ""
1479
 
1480
+ #: classes/helpers/FrmFieldsHelper.php:1225
1481
  msgid "Chile"
1482
  msgstr ""
1483
 
1484
+ #: classes/helpers/FrmFieldsHelper.php:1225
1485
  msgid "China"
1486
  msgstr ""
1487
 
1488
+ #: classes/helpers/FrmFieldsHelper.php:1225
1489
  msgid "Colombia"
1490
  msgstr ""
1491
 
1492
+ #: classes/helpers/FrmFieldsHelper.php:1225
1493
  msgid "Comoros"
1494
  msgstr ""
1495
 
1496
+ #: classes/helpers/FrmFieldsHelper.php:1225
1497
  msgid "Congo"
1498
  msgstr ""
1499
 
1500
+ #: classes/helpers/FrmFieldsHelper.php:1225
1501
  msgid "Costa Rica"
1502
  msgstr ""
1503
 
1504
+ #: classes/helpers/FrmFieldsHelper.php:1225
1505
  msgid "C&ocirc;te d'Ivoire"
1506
  msgstr ""
1507
 
1508
+ #: classes/helpers/FrmFieldsHelper.php:1225
1509
  msgid "Croatia"
1510
  msgstr ""
1511
 
1512
+ #: classes/helpers/FrmFieldsHelper.php:1225
1513
  msgid "Cuba"
1514
  msgstr ""
1515
 
1516
+ #: classes/helpers/FrmFieldsHelper.php:1225
1517
  msgid "Cyprus"
1518
  msgstr ""
1519
 
1520
+ #: classes/helpers/FrmFieldsHelper.php:1225
1521
  msgid "Czech Republic"
1522
  msgstr ""
1523
 
1524
+ #: classes/helpers/FrmFieldsHelper.php:1225
1525
  msgid "Denmark"
1526
  msgstr ""
1527
 
1528
+ #: classes/helpers/FrmFieldsHelper.php:1225
1529
  msgid "Djibouti"
1530
  msgstr ""
1531
 
1532
+ #: classes/helpers/FrmFieldsHelper.php:1225
1533
  msgid "Dominica"
1534
  msgstr ""
1535
 
1536
+ #: classes/helpers/FrmFieldsHelper.php:1225
1537
  msgid "Dominican Republic"
1538
  msgstr ""
1539
 
1540
+ #: classes/helpers/FrmFieldsHelper.php:1225
1541
  msgid "East Timor"
1542
  msgstr ""
1543
 
1544
+ #: classes/helpers/FrmFieldsHelper.php:1225
1545
  msgid "Ecuador"
1546
  msgstr ""
1547
 
1548
+ #: classes/helpers/FrmFieldsHelper.php:1225
1549
  msgid "Egypt"
1550
  msgstr ""
1551
 
1552
+ #: classes/helpers/FrmFieldsHelper.php:1225
1553
  msgid "El Salvador"
1554
  msgstr ""
1555
 
1556
+ #: classes/helpers/FrmFieldsHelper.php:1225
1557
  msgid "Equatorial Guinea"
1558
  msgstr ""
1559
 
1560
+ #: classes/helpers/FrmFieldsHelper.php:1225
1561
  msgid "Eritrea"
1562
  msgstr ""
1563
 
1564
+ #: classes/helpers/FrmFieldsHelper.php:1225
1565
  msgid "Estonia"
1566
  msgstr ""
1567
 
1568
+ #: classes/helpers/FrmFieldsHelper.php:1225
1569
  msgid "Ethiopia"
1570
  msgstr ""
1571
 
1572
+ #: classes/helpers/FrmFieldsHelper.php:1225
1573
  msgid "Fiji"
1574
  msgstr ""
1575
 
1576
+ #: classes/helpers/FrmFieldsHelper.php:1225
1577
  msgid "Finland"
1578
  msgstr ""
1579
 
1580
+ #: classes/helpers/FrmFieldsHelper.php:1225
1581
  msgid "France"
1582
  msgstr ""
1583
 
1584
+ #: classes/helpers/FrmFieldsHelper.php:1225
1585
  msgid "French Guiana"
1586
  msgstr ""
1587
 
1588
+ #: classes/helpers/FrmFieldsHelper.php:1225
1589
  msgid "French Polynesia"
1590
  msgstr ""
1591
 
1592
+ #: classes/helpers/FrmFieldsHelper.php:1225
1593
  msgid "Gabon"
1594
  msgstr ""
1595
 
1596
+ #: classes/helpers/FrmFieldsHelper.php:1225
1597
  msgid "Gambia"
1598
  msgstr ""
1599
 
1600
+ #: classes/helpers/FrmFieldsHelper.php:1225
1601
  msgid "Georgia"
1602
  msgstr ""
1603
 
1604
+ #: classes/helpers/FrmFieldsHelper.php:1225
1605
  msgid "Germany"
1606
  msgstr ""
1607
 
1608
+ #: classes/helpers/FrmFieldsHelper.php:1225
1609
  msgid "Ghana"
1610
  msgstr ""
1611
 
1612
+ #: classes/helpers/FrmFieldsHelper.php:1225
1613
  msgid "Gibraltar"
1614
  msgstr ""
1615
 
1616
+ #: classes/helpers/FrmFieldsHelper.php:1225
1617
  msgid "Greece"
1618
  msgstr ""
1619
 
1620
+ #: classes/helpers/FrmFieldsHelper.php:1225
1621
  msgid "Greenland"
1622
  msgstr ""
1623
 
1624
+ #: classes/helpers/FrmFieldsHelper.php:1225
1625
  msgid "Grenada"
1626
  msgstr ""
1627
 
1628
+ #: classes/helpers/FrmFieldsHelper.php:1225
1629
  msgid "Guam"
1630
  msgstr ""
1631
 
1632
+ #: classes/helpers/FrmFieldsHelper.php:1225
1633
  msgid "Guatemala"
1634
  msgstr ""
1635
 
1636
+ #: classes/helpers/FrmFieldsHelper.php:1225
1637
  msgid "Guinea"
1638
  msgstr ""
1639
 
1640
+ #: classes/helpers/FrmFieldsHelper.php:1225
1641
  msgid "Guinea-Bissau"
1642
  msgstr ""
1643
 
1644
+ #: classes/helpers/FrmFieldsHelper.php:1225
1645
  msgid "Guyana"
1646
  msgstr ""
1647
 
1648
+ #: classes/helpers/FrmFieldsHelper.php:1225
1649
  msgid "Haiti"
1650
  msgstr ""
1651
 
1652
+ #: classes/helpers/FrmFieldsHelper.php:1225
1653
  msgid "Honduras"
1654
  msgstr ""
1655
 
1656
+ #: classes/helpers/FrmFieldsHelper.php:1225
1657
  msgid "Hong Kong"
1658
  msgstr ""
1659
 
1660
+ #: classes/helpers/FrmFieldsHelper.php:1225
1661
  msgid "Hungary"
1662
  msgstr ""
1663
 
1664
+ #: classes/helpers/FrmFieldsHelper.php:1225
1665
  msgid "Iceland"
1666
  msgstr ""
1667
 
1668
+ #: classes/helpers/FrmFieldsHelper.php:1225
1669
  msgid "India"
1670
  msgstr ""
1671
 
1672
+ #: classes/helpers/FrmFieldsHelper.php:1225
1673
  msgid "Indonesia"
1674
  msgstr ""
1675
 
1676
+ #: classes/helpers/FrmFieldsHelper.php:1225
1677
  msgid "Iran"
1678
  msgstr ""
1679
 
1680
+ #: classes/helpers/FrmFieldsHelper.php:1225
1681
  msgid "Iraq"
1682
  msgstr ""
1683
 
1684
+ #: classes/helpers/FrmFieldsHelper.php:1225
1685
  msgid "Ireland"
1686
  msgstr ""
1687
 
1688
+ #: classes/helpers/FrmFieldsHelper.php:1225
1689
  msgid "Israel"
1690
  msgstr ""
1691
 
1692
+ #: classes/helpers/FrmFieldsHelper.php:1225
1693
  msgid "Italy"
1694
  msgstr ""
1695
 
1696
+ #: classes/helpers/FrmFieldsHelper.php:1225
1697
  msgid "Jamaica"
1698
  msgstr ""
1699
 
1700
+ #: classes/helpers/FrmFieldsHelper.php:1225
1701
  msgid "Japan"
1702
  msgstr ""
1703
 
1704
+ #: classes/helpers/FrmFieldsHelper.php:1225
1705
  msgid "Jordan"
1706
  msgstr ""
1707
 
1708
+ #: classes/helpers/FrmFieldsHelper.php:1225
1709
  msgid "Kazakhstan"
1710
  msgstr ""
1711
 
1712
+ #: classes/helpers/FrmFieldsHelper.php:1225
1713
  msgid "Kenya"
1714
  msgstr ""
1715
 
1716
+ #: classes/helpers/FrmFieldsHelper.php:1225
1717
  msgid "Kiribati"
1718
  msgstr ""
1719
 
1720
+ #: classes/helpers/FrmFieldsHelper.php:1225
1721
  msgid "North Korea"
1722
  msgstr ""
1723
 
1724
+ #: classes/helpers/FrmFieldsHelper.php:1225
1725
  msgid "South Korea"
1726
  msgstr ""
1727
 
1728
+ #: classes/helpers/FrmFieldsHelper.php:1225
1729
  msgid "Kuwait"
1730
  msgstr ""
1731
 
1732
+ #: classes/helpers/FrmFieldsHelper.php:1225
1733
  msgid "Kyrgyzstan"
1734
  msgstr ""
1735
 
1736
+ #: classes/helpers/FrmFieldsHelper.php:1225
1737
  msgid "Laos"
1738
  msgstr ""
1739
 
1740
+ #: classes/helpers/FrmFieldsHelper.php:1225
1741
  msgid "Latvia"
1742
  msgstr ""
1743
 
1744
+ #: classes/helpers/FrmFieldsHelper.php:1225
1745
  msgid "Lebanon"
1746
  msgstr ""
1747
 
1748
+ #: classes/helpers/FrmFieldsHelper.php:1225
1749
  msgid "Lesotho"
1750
  msgstr ""
1751
 
1752
+ #: classes/helpers/FrmFieldsHelper.php:1225
1753
  msgid "Liberia"
1754
  msgstr ""
1755
 
1756
+ #: classes/helpers/FrmFieldsHelper.php:1225
1757
  msgid "Libya"
1758
  msgstr ""
1759
 
1760
+ #: classes/helpers/FrmFieldsHelper.php:1225
1761
  msgid "Liechtenstein"
1762
  msgstr ""
1763
 
1764
+ #: classes/helpers/FrmFieldsHelper.php:1225
1765
  msgid "Lithuania"
1766
  msgstr ""
1767
 
1768
+ #: classes/helpers/FrmFieldsHelper.php:1225
1769
  msgid "Luxembourg"
1770
  msgstr ""
1771
 
1772
+ #: classes/helpers/FrmFieldsHelper.php:1225
1773
  msgid "Macedonia"
1774
  msgstr ""
1775
 
1776
+ #: classes/helpers/FrmFieldsHelper.php:1225
1777
  msgid "Madagascar"
1778
  msgstr ""
1779
 
1780
+ #: classes/helpers/FrmFieldsHelper.php:1225
1781
  msgid "Malawi"
1782
  msgstr ""
1783
 
1784
+ #: classes/helpers/FrmFieldsHelper.php:1225
1785
  msgid "Malaysia"
1786
  msgstr ""
1787
 
1788
+ #: classes/helpers/FrmFieldsHelper.php:1225
1789
  msgid "Maldives"
1790
  msgstr ""
1791
 
1792
+ #: classes/helpers/FrmFieldsHelper.php:1225
1793
  msgid "Mali"
1794
  msgstr ""
1795
 
1796
+ #: classes/helpers/FrmFieldsHelper.php:1225
1797
  msgid "Malta"
1798
  msgstr ""
1799
 
1800
+ #: classes/helpers/FrmFieldsHelper.php:1225
1801
  msgid "Marshall Islands"
1802
  msgstr ""
1803
 
1804
+ #: classes/helpers/FrmFieldsHelper.php:1225
1805
  msgid "Mauritania"
1806
  msgstr ""
1807
 
1808
+ #: classes/helpers/FrmFieldsHelper.php:1225
1809
  msgid "Mauritius"
1810
  msgstr ""
1811
 
1812
+ #: classes/helpers/FrmFieldsHelper.php:1225
1813
  msgid "Mexico"
1814
  msgstr ""
1815
 
1816
+ #: classes/helpers/FrmFieldsHelper.php:1225
1817
  msgid "Micronesia"
1818
  msgstr ""
1819
 
1820
+ #: classes/helpers/FrmFieldsHelper.php:1225
1821
  msgid "Moldova"
1822
  msgstr ""
1823
 
1824
+ #: classes/helpers/FrmFieldsHelper.php:1225
1825
  msgid "Monaco"
1826
  msgstr ""
1827
 
1828
+ #: classes/helpers/FrmFieldsHelper.php:1225
1829
  msgid "Mongolia"
1830
  msgstr ""
1831
 
1832
+ #: classes/helpers/FrmFieldsHelper.php:1225
1833
  msgid "Montenegro"
1834
  msgstr ""
1835
 
1836
+ #: classes/helpers/FrmFieldsHelper.php:1225
1837
  msgid "Montserrat"
1838
  msgstr ""
1839
 
1840
+ #: classes/helpers/FrmFieldsHelper.php:1225
1841
  msgid "Morocco"
1842
  msgstr ""
1843
 
1844
+ #: classes/helpers/FrmFieldsHelper.php:1225
1845
  msgid "Mozambique"
1846
  msgstr ""
1847
 
1848
+ #: classes/helpers/FrmFieldsHelper.php:1225
1849
  msgid "Myanmar"
1850
  msgstr ""
1851
 
1852
+ #: classes/helpers/FrmFieldsHelper.php:1225
1853
  msgid "Namibia"
1854
  msgstr ""
1855
 
1856
+ #: classes/helpers/FrmFieldsHelper.php:1225
1857
  msgid "Nauru"
1858
  msgstr ""
1859
 
1860
+ #: classes/helpers/FrmFieldsHelper.php:1225
1861
  msgid "Nepal"
1862
  msgstr ""
1863
 
1864
+ #: classes/helpers/FrmFieldsHelper.php:1225
1865
  msgid "Netherlands"
1866
  msgstr ""
1867
 
1868
+ #: classes/helpers/FrmFieldsHelper.php:1225
1869
  msgid "New Zealand"
1870
  msgstr ""
1871
 
1872
+ #: classes/helpers/FrmFieldsHelper.php:1225
1873
  msgid "Nicaragua"
1874
  msgstr ""
1875
 
1876
+ #: classes/helpers/FrmFieldsHelper.php:1225
1877
  msgid "Niger"
1878
  msgstr ""
1879
 
1880
+ #: classes/helpers/FrmFieldsHelper.php:1225
1881
  msgid "Nigeria"
1882
  msgstr ""
1883
 
1884
+ #: classes/helpers/FrmFieldsHelper.php:1225
1885
  msgid "Norway"
1886
  msgstr ""
1887
 
1888
+ #: classes/helpers/FrmFieldsHelper.php:1225
1889
  msgid "Northern Mariana Islands"
1890
  msgstr ""
1891
 
1892
+ #: classes/helpers/FrmFieldsHelper.php:1225
1893
  msgid "Oman"
1894
  msgstr ""
1895
 
1896
+ #: classes/helpers/FrmFieldsHelper.php:1225
1897
  msgid "Pakistan"
1898
  msgstr ""
1899
 
1900
+ #: classes/helpers/FrmFieldsHelper.php:1225
1901
  msgid "Palau"
1902
  msgstr ""
1903
 
1904
+ #: classes/helpers/FrmFieldsHelper.php:1225
1905
  msgid "Palestine"
1906
  msgstr ""
1907
 
1908
+ #: classes/helpers/FrmFieldsHelper.php:1225
1909
  msgid "Panama"
1910
  msgstr ""
1911
 
1912
+ #: classes/helpers/FrmFieldsHelper.php:1225
1913
  msgid "Papua New Guinea"
1914
  msgstr ""
1915
 
1916
+ #: classes/helpers/FrmFieldsHelper.php:1225
1917
  msgid "Paraguay"
1918
  msgstr ""
1919
 
1920
+ #: classes/helpers/FrmFieldsHelper.php:1225
1921
  msgid "Peru"
1922
  msgstr ""
1923
 
1924
+ #: classes/helpers/FrmFieldsHelper.php:1225
1925
  msgid "Philippines"
1926
  msgstr ""
1927
 
1928
+ #: classes/helpers/FrmFieldsHelper.php:1225
1929
  msgid "Poland"
1930
  msgstr ""
1931
 
1932
+ #: classes/helpers/FrmFieldsHelper.php:1225
1933
  msgid "Portugal"
1934
  msgstr ""
1935
 
1936
+ #: classes/helpers/FrmFieldsHelper.php:1225
1937
  msgid "Puerto Rico"
1938
  msgstr ""
1939
 
1940
+ #: classes/helpers/FrmFieldsHelper.php:1225
1941
  msgid "Qatar"
1942
  msgstr ""
1943
 
1944
+ #: classes/helpers/FrmFieldsHelper.php:1225
1945
  msgid "Romania"
1946
  msgstr ""
1947
 
1948
+ #: classes/helpers/FrmFieldsHelper.php:1225
1949
  msgid "Russia"
1950
  msgstr ""
1951
 
1952
+ #: classes/helpers/FrmFieldsHelper.php:1225
1953
  msgid "Rwanda"
1954
  msgstr ""
1955
 
1956
+ #: classes/helpers/FrmFieldsHelper.php:1225
1957
  msgid "Saint Kitts and Nevis"
1958
  msgstr ""
1959
 
1960
+ #: classes/helpers/FrmFieldsHelper.php:1225
1961
  msgid "Saint Lucia"
1962
  msgstr ""
1963
 
1964
+ #: classes/helpers/FrmFieldsHelper.php:1225
1965
  msgid "Saint Vincent and the Grenadines"
1966
  msgstr ""
1967
 
1968
+ #: classes/helpers/FrmFieldsHelper.php:1225
1969
  msgid "Samoa"
1970
  msgstr ""
1971
 
1972
+ #: classes/helpers/FrmFieldsHelper.php:1225
1973
  msgid "San Marino"
1974
  msgstr ""
1975
 
1976
+ #: classes/helpers/FrmFieldsHelper.php:1225
1977
  msgid "Sao Tome and Principe"
1978
  msgstr ""
1979
 
1980
+ #: classes/helpers/FrmFieldsHelper.php:1225
1981
  msgid "Saudi Arabia"
1982
  msgstr ""
1983
 
1984
+ #: classes/helpers/FrmFieldsHelper.php:1225
1985
  msgid "Senegal"
1986
  msgstr ""
1987
 
1988
+ #: classes/helpers/FrmFieldsHelper.php:1225
1989
  msgid "Serbia and Montenegro"
1990
  msgstr ""
1991
 
1992
+ #: classes/helpers/FrmFieldsHelper.php:1225
1993
  msgid "Seychelles"
1994
  msgstr ""
1995
 
1996
+ #: classes/helpers/FrmFieldsHelper.php:1225
1997
  msgid "Sierra Leone"
1998
  msgstr ""
1999
 
2000
+ #: classes/helpers/FrmFieldsHelper.php:1225
2001
  msgid "Singapore"
2002
  msgstr ""
2003
 
2004
+ #: classes/helpers/FrmFieldsHelper.php:1225
2005
  msgid "Slovakia"
2006
  msgstr ""
2007
 
2008
+ #: classes/helpers/FrmFieldsHelper.php:1225
2009
  msgid "Slovenia"
2010
  msgstr ""
2011
 
2012
+ #: classes/helpers/FrmFieldsHelper.php:1225
2013
  msgid "Solomon Islands"
2014
  msgstr ""
2015
 
2016
+ #: classes/helpers/FrmFieldsHelper.php:1225
2017
  msgid "Somalia"
2018
  msgstr ""
2019
 
2020
+ #: classes/helpers/FrmFieldsHelper.php:1225
2021
  msgid "South Africa"
2022
  msgstr ""
2023
 
2024
+ #: classes/helpers/FrmFieldsHelper.php:1225
2025
  msgid "South Sudan"
2026
  msgstr ""
2027
 
2028
+ #: classes/helpers/FrmFieldsHelper.php:1225
2029
  msgid "Spain"
2030
  msgstr ""
2031
 
2032
+ #: classes/helpers/FrmFieldsHelper.php:1225
2033
  msgid "Sri Lanka"
2034
  msgstr ""
2035
 
2036
+ #: classes/helpers/FrmFieldsHelper.php:1225
2037
  msgid "Sudan"
2038
  msgstr ""
2039
 
2040
+ #: classes/helpers/FrmFieldsHelper.php:1225
2041
  msgid "Suriname"
2042
  msgstr ""
2043
 
2044
+ #: classes/helpers/FrmFieldsHelper.php:1225
2045
  msgid "Swaziland"
2046
  msgstr ""
2047
 
2048
+ #: classes/helpers/FrmFieldsHelper.php:1225
2049
  msgid "Sweden"
2050
  msgstr ""
2051
 
2052
+ #: classes/helpers/FrmFieldsHelper.php:1225
2053
  msgid "Switzerland"
2054
  msgstr ""
2055
 
2056
+ #: classes/helpers/FrmFieldsHelper.php:1225
2057
  msgid "Syria"
2058
  msgstr ""
2059
 
2060
+ #: classes/helpers/FrmFieldsHelper.php:1225
2061
  msgid "Taiwan"
2062
  msgstr ""
2063
 
2064
+ #: classes/helpers/FrmFieldsHelper.php:1225
2065
  msgid "Tajikistan"
2066
  msgstr ""
2067
 
2068
+ #: classes/helpers/FrmFieldsHelper.php:1225
2069
  msgid "Tanzania"
2070
  msgstr ""
2071
 
2072
+ #: classes/helpers/FrmFieldsHelper.php:1225
2073
  msgid "Thailand"
2074
  msgstr ""
2075
 
2076
+ #: classes/helpers/FrmFieldsHelper.php:1225
2077
  msgid "Togo"
2078
  msgstr ""
2079
 
2080
+ #: classes/helpers/FrmFieldsHelper.php:1225
2081
  msgid "Tonga"
2082
  msgstr ""
2083
 
2084
+ #: classes/helpers/FrmFieldsHelper.php:1225
2085
  msgid "Trinidad and Tobago"
2086
  msgstr ""
2087
 
2088
+ #: classes/helpers/FrmFieldsHelper.php:1225
2089
  msgid "Tunisia"
2090
  msgstr ""
2091
 
2092
+ #: classes/helpers/FrmFieldsHelper.php:1225
2093
  msgid "Turkey"
2094
  msgstr ""
2095
 
2096
+ #: classes/helpers/FrmFieldsHelper.php:1225
2097
  msgid "Turkmenistan"
2098
  msgstr ""
2099
 
2100
+ #: classes/helpers/FrmFieldsHelper.php:1225
2101
  msgid "Tuvalu"
2102
  msgstr ""
2103
 
2104
+ #: classes/helpers/FrmFieldsHelper.php:1225
2105
  msgid "Uganda"
2106
  msgstr ""
2107
 
2108
+ #: classes/helpers/FrmFieldsHelper.php:1225
2109
  msgid "Ukraine"
2110
  msgstr ""
2111
 
2112
+ #: classes/helpers/FrmFieldsHelper.php:1225
2113
  msgid "United Arab Emirates"
2114
  msgstr ""
2115
 
2116
+ #: classes/helpers/FrmFieldsHelper.php:1225
2117
  msgid "United Kingdom"
2118
  msgstr ""
2119
 
2120
+ #: classes/helpers/FrmFieldsHelper.php:1225
2121
  msgid "United States"
2122
  msgstr ""
2123
 
2124
+ #: classes/helpers/FrmFieldsHelper.php:1225
2125
  msgid "Uruguay"
2126
  msgstr ""
2127
 
2128
+ #: classes/helpers/FrmFieldsHelper.php:1225
2129
  msgid "Uzbekistan"
2130
  msgstr ""
2131
 
2132
+ #: classes/helpers/FrmFieldsHelper.php:1225
2133
  msgid "Vanuatu"
2134
  msgstr ""
2135
 
2136
+ #: classes/helpers/FrmFieldsHelper.php:1225
2137
  msgid "Vatican City"
2138
  msgstr ""
2139
 
2140
+ #: classes/helpers/FrmFieldsHelper.php:1225
2141
  msgid "Venezuela"
2142
  msgstr ""
2143
 
2144
+ #: classes/helpers/FrmFieldsHelper.php:1225
2145
  msgid "Vietnam"
2146
  msgstr ""
2147
 
2148
+ #: classes/helpers/FrmFieldsHelper.php:1225
2149
  msgid "Virgin Islands, British"
2150
  msgstr ""
2151
 
2152
+ #: classes/helpers/FrmFieldsHelper.php:1225
2153
  msgid "Virgin Islands, U.S."
2154
  msgstr ""
2155
 
2156
+ #: classes/helpers/FrmFieldsHelper.php:1225
2157
  msgid "Yemen"
2158
  msgstr ""
2159
 
2160
+ #: classes/helpers/FrmFieldsHelper.php:1225
2161
  msgid "Zambia"
2162
  msgstr ""
2163
 
2164
+ #: classes/helpers/FrmFieldsHelper.php:1225
2165
  msgid "Zimbabwe"
2166
  msgstr ""
2167
 
2168
+ #: classes/helpers/FrmFieldsHelper.php:1229
2169
  msgid "Countries"
2170
  msgstr ""
2171
 
2172
+ #: classes/helpers/FrmFieldsHelper.php:1234
2173
  msgid "U.S. State Abbreviations"
2174
  msgstr ""
2175
 
2176
+ #: classes/helpers/FrmFieldsHelper.php:1238
2177
  msgid "U.S. States"
2178
  msgstr ""
2179
 
2180
+ #: classes/helpers/FrmFieldsHelper.php:1241
2181
  msgid "Age"
2182
  msgstr ""
2183
 
2184
+ #: classes/helpers/FrmFieldsHelper.php:1242
2185
  msgid "Under 18"
2186
  msgstr ""
2187
 
2188
+ #: classes/helpers/FrmFieldsHelper.php:1243
2189
  msgid "18-24"
2190
  msgstr ""
2191
 
2192
+ #: classes/helpers/FrmFieldsHelper.php:1244
2193
  msgid "25-34"
2194
  msgstr ""
2195
 
2196
+ #: classes/helpers/FrmFieldsHelper.php:1245
2197
  msgid "35-44"
2198
  msgstr ""
2199
 
2200
+ #: classes/helpers/FrmFieldsHelper.php:1246
2201
  msgid "45-54"
2202
  msgstr ""
2203
 
2204
+ #: classes/helpers/FrmFieldsHelper.php:1247
2205
  msgid "55-64"
2206
  msgstr ""
2207
 
2208
+ #: classes/helpers/FrmFieldsHelper.php:1248
2209
  msgid "65 or Above"
2210
  msgstr ""
2211
 
2212
+ #: classes/helpers/FrmFieldsHelper.php:1249
2213
  msgid "Prefer Not to Answer"
2214
  msgstr ""
2215
 
2216
+ #: classes/helpers/FrmFieldsHelper.php:1252
2217
  msgid "Satisfaction"
2218
  msgstr ""
2219
 
2220
+ #: classes/helpers/FrmFieldsHelper.php:1253
2221
  msgid "Very Satisfied"
2222
  msgstr ""
2223
 
2224
+ #: classes/helpers/FrmFieldsHelper.php:1254
2225
  msgid "Satisfied"
2226
  msgstr ""
2227
 
2228
+ #: classes/helpers/FrmFieldsHelper.php:1255
2229
+ #: classes/helpers/FrmFieldsHelper.php:1264
2230
+ #: classes/helpers/FrmFieldsHelper.php:1273
2231
  msgid "Neutral"
2232
  msgstr ""
2233
 
2234
+ #: classes/helpers/FrmFieldsHelper.php:1256
2235
  msgid "Unsatisfied"
2236
  msgstr ""
2237
 
2238
+ #: classes/helpers/FrmFieldsHelper.php:1257
2239
  msgid "Very Unsatisfied"
2240
  msgstr ""
2241
 
2242
+ #: classes/helpers/FrmFieldsHelper.php:1258
2243
+ #: classes/helpers/FrmFieldsHelper.php:1267
2244
+ #: classes/helpers/FrmFieldsHelper.php:1276
2245
  msgid "N/A"
2246
  msgstr ""
2247
 
2248
+ #: classes/helpers/FrmFieldsHelper.php:1261
2249
  msgid "Importance"
2250
  msgstr ""
2251
 
2252
+ #: classes/helpers/FrmFieldsHelper.php:1262
2253
  msgid "Very Important"
2254
  msgstr ""
2255
 
2256
+ #: classes/helpers/FrmFieldsHelper.php:1263
2257
  msgid "Important"
2258
  msgstr ""
2259
 
2260
+ #: classes/helpers/FrmFieldsHelper.php:1265
2261
  msgid "Somewhat Important"
2262
  msgstr ""
2263
 
2264
+ #: classes/helpers/FrmFieldsHelper.php:1266
2265
  msgid "Not at all Important"
2266
  msgstr ""
2267
 
2268
+ #: classes/helpers/FrmFieldsHelper.php:1270
2269
  msgid "Agreement"
2270
  msgstr ""
2271
 
2272
+ #: classes/helpers/FrmFieldsHelper.php:1271
2273
  msgid "Strongly Agree"
2274
  msgstr ""
2275
 
2276
+ #: classes/helpers/FrmFieldsHelper.php:1272
2277
  msgid "Agree"
2278
  msgstr ""
2279
 
2280
+ #: classes/helpers/FrmFieldsHelper.php:1274
2281
  msgid "Disagree"
2282
  msgstr ""
2283
 
2284
+ #: classes/helpers/FrmFieldsHelper.php:1275
2285
  msgid "Strongly Disagree"
2286
  msgstr ""
2287
 
2352
  msgstr ""
2353
 
2354
  #: classes/helpers/FrmFormsHelper.php:853
2355
+ #: classes/helpers/FrmStylesHelper.php:40
2356
  msgid "Right"
2357
  msgstr ""
2358
 
2469
  msgid "Custom"
2470
  msgstr ""
2471
 
2472
+ #: classes/helpers/FrmStylesHelper.php:16
2473
  msgid "Edit Styles"
2474
  msgstr ""
2475
 
2476
+ #: classes/helpers/FrmStylesHelper.php:17
2477
  msgid "Manage Form Styles"
2478
  msgstr ""
2479
 
2480
+ #: classes/helpers/FrmStylesHelper.php:18
2481
  msgid "Custom CSS"
2482
  msgstr ""
2483
 
2484
+ #: classes/helpers/FrmStylesHelper.php:28
2485
  msgid "top"
2486
  msgstr ""
2487
 
2488
+ #: classes/helpers/FrmStylesHelper.php:29
2489
  #: classes/views/styles/_field-description.php:33
2490
  #: classes/views/styles/_field-labels.php:31
2491
  #: classes/views/styles/_general.php:11
2492
  msgid "left"
2493
  msgstr ""
2494
 
2495
+ #: classes/helpers/FrmStylesHelper.php:30
2496
  #: classes/views/styles/_field-description.php:36
2497
  #: classes/views/styles/_field-labels.php:34
2498
  #: classes/views/styles/_general.php:14
2499
  msgid "right"
2500
  msgstr ""
2501
 
2502
+ #: classes/helpers/FrmStylesHelper.php:31
2503
  msgid "none"
2504
  msgstr ""
2505
 
2506
+ #: classes/helpers/FrmStylesHelper.php:32
2507
  msgid "inside"
2508
  msgstr ""
2509
 
2510
+ #: classes/helpers/FrmStylesHelper.php:38
2511
  msgid "Top"
2512
  msgstr ""
2513
 
2514
+ #: classes/helpers/FrmStylesHelper.php:39
2515
  msgid "Left"
2516
  msgstr ""
2517
 
2518
+ #: classes/helpers/FrmStylesHelper.php:41
2519
  msgid "Inline (left without a set width)"
2520
  msgstr ""
2521
 
2522
+ #: classes/helpers/FrmStylesHelper.php:42
2523
  msgid "None"
2524
  msgstr ""
2525
 
2526
+ #: classes/helpers/FrmStylesHelper.php:43
2527
  msgid "Hidden (but leave the space)"
2528
  msgstr ""
2529
 
2530
+ #: classes/helpers/FrmStylesHelper.php:44
2531
  msgid "Placeholder inside the field"
2532
  msgstr ""
2533
 
2811
  msgid "Email Notification"
2812
  msgstr ""
2813
 
2814
+ #: classes/models/FrmAddon.php:258
2815
  #, php-format
2816
  msgid ""
2817
  "Your %1$s license key is missing. Please add it on the %2$slicenses page%3$s."
2818
  msgstr ""
2819
 
2820
+ #: classes/models/FrmAddon.php:445
2821
  msgid "Oops! You forgot to enter your license number."
2822
  msgstr ""
2823
 
2824
+ #: classes/models/FrmAddon.php:521
2825
  msgid "Your license has been activated. Enjoy!"
2826
  msgstr ""
2827
 
2828
+ #: classes/models/FrmAddon.php:522 classes/models/FrmAddon.php:527
2829
  msgid "That license key is invalid"
2830
  msgstr ""
2831
 
2832
+ #: classes/models/FrmAddon.php:523
2833
  msgid "That license is expired"
2834
  msgstr ""
2835
 
2836
+ #: classes/models/FrmAddon.php:524
2837
  msgid "That license has been refunded"
2838
  msgstr ""
2839
 
2840
+ #: classes/models/FrmAddon.php:525
2841
  msgid "That license has been used on too many sites"
2842
  msgstr ""
2843
 
2844
+ #: classes/models/FrmAddon.php:526
2845
  msgid "Oops! That is the wrong license key for this plugin."
2846
  msgstr ""
2847
 
2848
+ #: classes/models/FrmAddon.php:549
2849
  msgid "That license was removed successfully"
2850
  msgstr ""
2851
 
2852
+ #: classes/models/FrmAddon.php:551
2853
  msgid "There was an error deactivating your license."
2854
  msgstr ""
2855
 
2856
+ #: classes/models/FrmAddon.php:584
2857
  msgid "Your License Key was invalid"
2858
  msgstr ""
2859
 
2860
+ #: classes/models/FrmAddon.php:588
2861
  #, php-format
2862
  msgid ""
2863
  "You had an error communicating with the Formidable API. %1$sClick here%2$s "
2864
  "for more information."
2865
  msgstr ""
2866
 
2867
+ #: classes/models/FrmAddon.php:591
2868
  msgid "You had an HTTP error connecting to the Formidable API"
2869
  msgstr ""
2870
 
2871
+ #: classes/models/FrmAddon.php:602
2872
  #, php-format
2873
  msgid "There was a %1$s error: %2$s"
2874
  msgstr ""
2877
  msgid "Use the query in an array format so it can be properly prepared."
2878
  msgstr ""
2879
 
 
 
 
 
 
 
 
 
 
 
2880
  #: classes/models/FrmEmail.php:262
2881
  #, php-format
2882
  msgid "%1$s Form submitted on %2$s"
2905
  msgid "There was a problem with your submission. Please try again."
2906
  msgstr ""
2907
 
2908
+ #: classes/models/FrmEntryValidate.php:222
2909
+ #: classes/models/FrmEntryValidate.php:231
2910
  msgid "Your entry appears to be spam!"
2911
  msgstr ""
2912
 
2913
+ #: classes/models/FrmEntryValidate.php:226
2914
  msgid "Your entry appears to be blacklist spam!"
2915
  msgstr ""
2916
 
3082
  msgid "Default Form"
3083
  msgstr ""
3084
 
3085
+ #: classes/models/FrmMigrate.php:487
3086
  msgid "Sending"
3087
  msgstr ""
3088
 
3205
  msgid "Website"
3206
  msgstr ""
3207
 
3208
+ #: classes/views/addons/list.php:3
3209
+ msgid "Formidable Add-Ons"
3210
  msgstr ""
3211
 
3212
+ #: classes/views/addons/list.php:21 classes/views/addons/list.php:22
3213
  msgid "View Docs"
3214
  msgstr ""
3215
 
3216
+ #: classes/views/addons/list.php:30
3217
  #, php-format
3218
  msgid "Status: %s"
3219
  msgstr ""
3220
 
3221
+ #: classes/views/addons/list.php:37 classes/views/addons/settings.php:28
3222
  msgid "Activate"
3223
  msgstr ""
3224
 
3225
+ #: classes/views/addons/list.php:45 classes/views/addons/list.php:46
3226
  #: classes/views/addons/upgrade_to_pro.php:24
3227
  msgid "Get Started"
3228
  msgstr ""
3229
 
3230
+ #: classes/views/addons/list.php:49 classes/views/addons/list.php:50
3231
  msgid "Upgrade Now"
3232
  msgstr ""
3233
 
3234
+ #: classes/views/addons/settings.php:20
3235
  msgid "Good to go!"
3236
  msgstr ""
3237
 
3238
+ #: classes/views/addons/settings.php:22
3239
  msgid "Deactivate"
3240
  msgstr ""
3241
 
 
 
 
 
3242
  #: classes/views/frm-entries/_sidebar-shared-pub.php:17
3243
  msgid "Print"
3244
  msgstr ""
4122
  msgstr ""
4123
 
4124
  #: classes/views/frm-settings/license_box.php:10
4125
+ #: classes/views/shared/upgrade_overlay.php:38
4126
  msgid "Already purchased?"
4127
  msgstr ""
4128
 
4199
  msgid "Click a button below to insert sample logic into your view"
4200
  msgstr ""
4201
 
4202
+ #: classes/views/shared/review.php:4
4203
+ #, php-format
4204
+ msgid "Congratulations%1$s! You have collected %2$d form submissions."
4205
+ msgstr ""
4206
+
4207
+ #: classes/views/shared/review.php:5
4208
+ msgid "Are you enjoying Formidable Forms?"
4209
+ msgstr ""
4210
+
4211
+ #: classes/views/shared/review.php:9
4212
+ msgid "Not Really"
4213
+ msgstr ""
4214
+
4215
+ #: classes/views/shared/review.php:12
4216
+ msgid "Yes!"
4217
+ msgstr ""
4218
+
4219
+ #: classes/views/shared/review.php:16
4220
+ msgid ""
4221
+ "Awesome! Could you do me a BIG favor and give Formidable Forms a review to "
4222
+ "help me grow my little business and boost our motivation?"
4223
+ msgstr ""
4224
+
4225
+ #: classes/views/shared/review.php:18
4226
+ msgid "Founder and Lead Developer of Formidable Forms"
4227
+ msgstr ""
4228
+
4229
+ #: classes/views/shared/review.php:21
4230
+ msgid "No thanks, maybe later"
4231
+ msgstr ""
4232
+
4233
+ #: classes/views/shared/review.php:24
4234
+ msgid "Ok, you deserve it"
4235
+ msgstr ""
4236
+
4237
+ #: classes/views/shared/review.php:27
4238
+ msgid "I already did"
4239
+ msgstr ""
4240
+
4241
+ #: classes/views/shared/review.php:31
4242
+ msgid ""
4243
+ "Sorry to hear you aren't enjoying building with Formidable. We would love a "
4244
+ "chance to improve. Could you take a minute and let us know what we can do "
4245
+ "better?"
4246
+ msgstr ""
4247
+
4248
  #: classes/views/shared/upgrade_overlay.php:11
4249
  #, php-format
4250
+ msgid "%s are not installed"
4251
  msgstr ""
4252
 
4253
  #: classes/views/shared/upgrade_overlay.php:20
4254
+ msgid "Please see the add-ons that are included with your plan."
 
 
 
4255
  msgstr ""
4256
 
4257
  #: classes/views/shared/upgrade_overlay.php:22
4261
  "awesome features."
4262
  msgstr ""
4263
 
4264
+ #: classes/views/shared/upgrade_overlay.php:29
4265
+ msgid "See My Add-Ons"
4266
+ msgstr ""
4267
+
4268
  #: classes/views/styles/_buttons.php:4
4269
  msgid "Disable submit button styling"
4270
  msgstr ""
readme.txt CHANGED
@@ -1,25 +1,25 @@
1
- === Contact Forms, Surveys & Quiz forms by Formidable Forms Builder for WordPress ===
2
  Contributors: formidableforms, sswells, srwells, jamie.wahlin
3
- Tags: contact form, form builder, custom form, forms, form, form maker, form creator
4
- Requires at least: 4.4
5
- Tested up to: 4.9.8
6
  Requires PHP: 5.3
7
- Stable tag: 3.04.02
8
 
9
- The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder to build surveys, quiz forms, and more.
10
 
11
  == Description ==
12
- = The Most Powerful WordPress form builder on the market =
13
- We built <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Formidable Forms</a> to offer the "first-ever" solutions-focused WordPress form plugin on the market. You can use our drag & drop WordPress form builder to create contact forms, surveys, quiz forms, registration forms, payment forms, purchase forms, email marketing forms, and just about any other form you can imagine.
14
 
15
- At Formidable Forms, creating the most extendable form builder is our #1 priority, so you save time when building even the most advanced forms. Unlike other WordPress form plugins that focus solely on building contact forms, we believe in allowing our users to push the limits and create complex forms quickly!
16
 
17
- Before we take a deep-dive into the features of the powerful Formidable form builder plugin, it's important that you know that Formidable is 100% mobile responsive which means that your contact forms and all other types of forms will always look great on all devices (desktop, laptop, tablets, and smartphones).
18
 
19
- On top of that, we have optimized Formidable contact forms and advanced forms for speed and maximum server performance. Whether you use Formidable to build a contact form on your own site or an advanced form for your client, you can confidently say that it's one of the FASTEST WordPress form builders in the market.
20
 
21
  > <strong>Formidable Forms Pro</strong><br />
22
- > This form builder plugin is the lite version of the Formidable Forms Pro plugin that comes with all the contact form and advanced form features you will ever need. Our premium form features include powerful views to display data in web applications, repeater fields, email subscription forms, multi-page contact forms, file uploads, conditional logic, payment integrations, form templates, form relationships, cascading dropdown fields, front-end form editing and tons more. <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="Formidable Forms">Click here to purchase the most advanced premium WordPress form builder plugin now!</a>
23
 
24
  You can start with our pre-built contact form template or create totally custom forms from scratch all with an easy-to-use drag & drop form builder interface.
25
 
@@ -29,9 +29,9 @@ Let's take a look at all the powerful form builder features that you get with Fo
29
 
30
  = Drag & Drop Contact Form Maker and Advanced Form Builder =
31
 
32
- The Formidable drag & drop form builder allows you to quickly create unlimited contact forms, surveys, quizzes, registration forms, and just about any other type of form that you want.
33
 
34
- Our form builder comes with all the powerful form fields that you need to create a solution-focused form, fast!
35
 
36
  * Single line text (for names, phone numbers, addresses, and more)
37
  * Email
@@ -46,49 +46,49 @@ Our form builder comes with all the powerful form fields that you need to create
46
  * User ID
47
  * HTML block
48
 
49
- With our built-in form styler, you can instantly customize the look and feel of your contact forms. With just a few clicks, your contact form and advanced forms can be transformed to match your website design.
50
-
51
- By default, Formidable applies a single styling template to all contact forms and advanced forms on your site. But if you want to have custom form style for each individual contact form and registration form, then you can upgrade to Formidable Forms Pro.
52
-
53
  = Complete Entry Management for Contact Forms and Surveys =
54
 
55
  Formidable Forms allows you to view all your contact form and survey entries right from your WordPress dashboard.
56
 
57
- Once a user submits your contact form, their response is automatically stored in your WordPress database.
58
 
59
- Formidable Forms is **100% GDPR-friendly**. You can turn off IP tracking or stop saving form submissions entirely. Alternatively, you can add a GDPR checkbox field to your form to collect consent.
60
 
61
  Need to import your contact form leads to another service like MailChimp? No problem. **Export contact form leads to a CSV**, open it in Excel, and import anywhere.
62
 
63
- You can also configure unlimited form email notifications and autoresponders.
 
 
 
 
 
 
64
 
65
- On top of that, you can easily customize the contact form success message the user sees after they submit the form, or completely redirect them to another page for your more advanced form needs.
66
 
67
  = Build Smart Surveys with Beautiful Reports =
68
 
69
- Aside from simple contact forms, Formidable comes with a built-in survey feature, so you can quickly create powerful surveys and see beautiful reports.
70
 
71
- The best part is that you can do this all within Formidable without using any third-party tools.
72
 
73
  = Quickly Create Advanced Registration Forms for Any Use Case =
74
 
75
- Whether you need to create a youth sport team registration form, event registration form, or church retreat registration form, Formidable has got you covered.
76
 
77
- Unlike other contact form plugins, Formidable Forms comes with a repeater field that allows you to create the most powerful registration forms.
78
-
79
- Then, you can use our marketing integrations and APIs to send this form data anywhere you want.
80
 
81
  = Accept Credit Cards and Easily Collect Payments =
82
 
83
- By now, you probably already realize the theme that Formidable is more than just a contact form plugin. You can use Formidable to create payment forms and accept credit card payments right from your website.
84
 
85
- We offer seamless integration with PayPal, Stripe, and Authorize.net, so you can create order forms and purchase forms with our drag & drop interface.
86
 
87
- You can even use Formidable to create WooCommerce forms with custom fields (more on that later).
88
 
89
  = Grow Your Business with Marketing Integrations =
90
 
91
- We know that marketing is the key to grow your business. That's why Formidable allows you to connect your contact form, payment forms, and all other advanced forms with a marketing platform of your choice.
92
 
93
  We integrate with popular email marketing services like:
94
 
@@ -101,205 +101,212 @@ We integrate with popular email marketing services like:
101
  * Salesforce
102
  * HubSpot
103
 
104
- On top of these native integrations, we also integrate with Zapier, so you can quickly route your contact form data to over 1,000+ more apps and services with just a few clicks.
105
 
106
  = Create Data-Driven Web Applications with Formidable Views =
107
 
108
- Formidable Views are by far the most powerful feature of this plugin. It allows you to flexibly display any submitted form data on the front-end of your website.
109
 
110
  Our customers use Formidable Views to create data-driven web applications like real estate listings, employment listings, event calendars, business or member directories, job boards, and other searchable databases.
111
 
112
- As you can see, Formidable Forms is not an average contact form plugin. It's a true all-in-one WordPress form solution.
113
 
114
  = Increase Your Sales with WooCommerce Product Forms =
115
 
116
- Formidable is the only WordPress form builder that offers extensive integration with WooCommerce.
117
 
118
  Our goal is to empower you to build powerful WooCommerce product forms, so you can increase your store sales.
119
 
120
- You can use Formidable Forms to add a WooCommerce Product configurator, add custom calculation fields, and then automatically send the data to the WooCommerce cart with variable pricing option.
121
 
122
  Need your customers to upload a file when they purchase a product? No problem. Simply drag & drop a file upload field into your WooCommerce form and you're done.
123
 
124
- You can even show submitted form values in the WooCommerce emails as well as trigger SMS text messages or marketing integrations when an order is completed.
125
 
126
- And of course, you can also use Formidable to add a simple contact form on your WooCommerce store.
127
 
128
  = Build Powerful Quiz Forms & Calculators =
129
 
130
- Along with a contact form, you can also use the Formidable form builder to create quiz forms and calculator forms.
131
 
132
- Here are some example web calculators that you can quickly add to your site:
133
 
134
  * Advanced Mortgage Calculator
135
  * Car Payment Calculator
136
  * BMI Calculator
137
  * User Age Calculator
138
  * Online Quote Calculator
 
139
 
140
- ... and our powerful calculation form fields allow you to build just about any other type of calculator form.
141
 
142
- If that wasn't enough, you can also use Formidable Form builder to create quizzes on your site and display results. This is great for membership sites, LMS, or just for viral quizzes to grow your email list.
143
 
144
- Our goal is go beyond simple contact forms and allow users to create form-based solutions without any code :)
145
 
146
  = Create WordPress User Registration Forms, Profile Forms, and More =
147
 
148
  If you run a WordPress membership site, then you need more advanced forms along with your contact form.
149
 
150
- Formidable Form builder allows you to customize your WordPress user registration forms, so you can collect additional data when the user profile is created.
151
 
152
- With our front-end form editing option, you can also build custom profile forms and allow users to keep it updated, or even progressivly add to the profile from a set of forms.
153
 
154
- Our front-end form editing feature is unique to us, and you will not find any other WordPress contact form plugin offering such solution with the level of extendability that we do.
155
 
156
  = Beautiful Graphs and Reports to Help You Analyze and Showcase Data =
157
 
158
- We believe that data by itself does no good if you can't analyze it. That's why we make it easy for you to analyze your contact form, survey, quiz, calculator, and other form data with beautiful graphs and reports.
159
 
160
- You can even showcase the form data on the front-end of your website by embedding the graphs in your WordPress posts or pages.
161
 
162
  = All the Advanced Form Fields and Features You Need to Grow Your Business =
163
 
164
- Formidable Forms goes far above and beyond contact forms to offer all the advanced form fields and features that you need to grow your business.
165
 
166
  This includes things like multi-page forms, save and continue forms, cascading form fields, powerful conditional logic, partial form submissions, invisible spam protection, front-end user post submission, calculators, user-tracking, and so much more.
167
 
168
- We're on a mission to offer an all-in-one solution focused WordPress form plugin, so you don't have to install 5 plugins alongside your contact form maker plugin to do everything that you want.
169
 
170
- = Extend and Customize Your Forms - Developer's Dream Come True =
171
 
172
- Formidable is the form plugin of choice for smart developers, freelancers, and agencies because it helps them build complex form solutions quickly and defy the limits imposed by time and knowledge.
173
 
174
  Our goal is to help you build complex websites with low overhead. We believe big projects don't always need big resources.
175
 
176
- That's why we made Formidable Forms the most extendable WordPress form builder plugin in the market.
177
 
178
- You can easily route your data from contact forms and advanced forms with our powerful API. Formidable Views allow you to display your form data anywhere on the front-end, so you can quickly create data-driven web applications.
179
 
180
- On top of that, our hooks and filters allow you to completly extend Formidable to meet your needs. We even include hundreds of code examples in our docs to give you the confidence to get started.
181
 
182
  = Full Formidable Forms Feature List =
183
 
184
- Since Formidable is not your average WordPress contact form plugin, this feature list is going to be very long. Grab a cup of coffee and read through, or just install the most powerful WordPress form plugin, your choice :)
185
-
186
- * <a href="https://formidableforms.com/features/drag-drop-form-builder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Online drag and drop form builder</a>. Build everything from contact forms to complex online forms the easy way with a simple WordPress drag and drop form builder. No code required.
187
- * <a href="https://formidableforms.com/features/dynamically-add-form-fields/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Repeating field groups (repeaters)</a>. Allow your users to add a new set of fields to advanced forms and registration forms on the fly.
188
- * <a href="https://formidableforms.com/features/wordpress-multiple-file-upload-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Drag and drop multiple file upload forms</a>. Easily upload documents, files, photos, and music, with any number of files.
189
- * <a href="https://formidableforms.com/features/wordpress-multi-step-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Multi-Step forms with progress bar</a>. Create beautiful paged forms with rootline and progress indicators. Use conditional logic on page breaks for branching forms.
190
- * <a href="https://formidableforms.com/features/cascading-dropdown-lookup-field/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Cascading lookup fields</a>. Change values in other form fields or drill down through options to reveal a final value. Designed for country/state/city and year/make/model field sets or to get a price from a product form.
191
- * Datepicker fields with advanced <a href="https://formidableforms.com/downloads/datepicker-options/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">datepicker options</a> including blackout dates, dynamic minimum and maximum dates, and inline calendars. The datepickers are great for basic booking forms.
192
- * Create relationships with Dynamic fields populated from other forms to link data in one form to another without duplication.
193
- * Include password fields with a password strength meter.
194
- * Other field types include: Rich text fields, Time fields, Scale fields, Star ratings, Slider fields, Toggle fields, Tags fields, Address fields, and Section heading fields.
195
- * <a href="https://formidableforms.com/features/confirm-email-address-password-wordpress-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Confirmation fields</a>. Double check the email address or password fields and don't let typos cannibalize your contact form leads.
196
- * <a href="https://formidableforms.com/features/conditional-logic-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Conditional logic for smart forms</a>. Show or hide fields in your contact forms and advanced forms based on user selections or the user role form simple forms and to increase form conversion rates.
197
- * <a href="https://formidableforms.com/features/email-autoresponders-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Send email notifications & autoresponders</a>. Create customized email notifications for virtually unlimited recipients and get your contact form and advanced form data to the people who need it.
198
- * Email routing: Conditionally send multiple autoresponder emails and notifications from email forms based on values in your contact forms, payment forms, and registration forms.
199
- * <a href="https://formidableforms.com/features/wordpress-calculated-fields-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Calculated Fields</a>. Create basic and complex calculations, and even combine text from multiple fields for mortgage calculators, auto loan calculators and many other calculator forms.
200
- * <a href="https://formidableforms.com/features/wordpress-visual-form-styler/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Visual form styler</a>. Our form creator for contact forms, calculators, and other online forms not only allows you to build forms, but also create branded forms that match your site. Change colors, borders, padding and much more without any code.
201
- * <a href="https://formidableforms.com/features/flexible-layouts-responsive-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Flexible form layout design</a>. Build complex, mobile responsive form layouts that look great and fit perfectly with your theme with our built-in CSS classes.
202
- * <a href="https://formidableforms.com/features/wordpress-mobile-friendly-responsive-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Mobile-friendly, Responsive forms</a>. Let everyone see and submit your contact forms and other online forms from any device since our forms are sized automatically for every device.
203
- * <a href="https://formidableforms.com/features/form-entry-management-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Simple entry management</a>. Flexibly and powerfully display, edit, and delete entries from anywhere on your site, and specify who has permission to do so.
204
- * <a href="https://formidableforms.com/features/display-form-data-views/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Display form data with Views</a>. Other WordPress form builder plugins only let you collect data. Formidable lets you format, filter and display form submissions in custom Views on the front-end of your site.
205
- * <a href="https://formidableforms.com/features/user-submitted-posts-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">User submitted front-end posts and pages</a>. Create and edit WordPress posts, pages, and even custom post types from your front-end online forms. Send user-generated content quickly from post creation to a page.
 
206
  * <a href="https://formidableforms.com/features/front-end-editing-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WordPress front-end editing</a>. Allow users to edit their form entries and posts from the front-end of your site. Create an online journaling platform, member directory, classified ads, community recipes, and more.
207
- * <a href="https://formidableforms.com/features/save-and-continue-partial-submissions/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Save and continue partial submissions</a>. Logged-in users can save form progress and return later.
208
- * <a href="https://formidableforms.com/features/create-a-graph-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Graphs and charts for data visualization</a>. Display statistics from surveys, polls, and advanced forms, and graph the data in a variety of graphs (including weight tracking) that automatically update as new form data is submitted.
209
- * Form permission settings. Limit form visibility based on user role.
210
- * Limit the number of form entries per user, IP, or cookie.
211
- * Form scheduling. Open and close event registration forms and signup forms on a specific date. Or close forms when the limit has been reached for your event or team.
212
- * Conditionally redirect after form submission.
213
- * <a href="https://formidableforms.com/features/customize-form-html-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Customize form HTML</a>. We believe that not only contact forms, but also advanced forms should be extendable to meet your needs. So we give you access to change the form HTML (like Contact Form 7), but still keep the ease and speed of a drag & drop form builder plugin. Because our team labors for simplicity without sacrificing flexibiity.
214
- * <a href="https://formidableforms.com/features/importing-exporting-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Import and Export form submissions, styles, and views</a>. Export forms, entries, views and styles and import them on another site.
215
- * <a href="https://formidableforms.com/features/wordpress-form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Form templates for instant form building</a>. Get started quickly with the most advanced form creator that includes form templates, style templates, and Formidable view templates. Use the form generator that makes building forms fast.
216
- * Import our <a href="https://formidableforms.com/downloads/category/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">pre-built form/view templates</a> as a starting point or a final product. Check out our growing form template library, from contact forms to payment forms, calculators, and a WooCommerce product creator.
217
  * <a href="https://formidableforms.com/features/wcag-accessible-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WCAG accessible forms with A11Y compliance</a>. Don't alienate your audience. Ensure your contact forms, surveys, quiz forms, lead capture forms, and other online forms are compliant and available to anyone.
218
- * <a href="https://formidableforms.com/features/invisible-spam-protection/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Invisible SPAM protection</a>. Don't waste time sorting through SPAM from your contact form. Get instant and powerful anti-spam features including honeypot, invisible reCAPTCHA, Akismet, and the WordPress comment blacklist.
219
- * <a href="https://formidableforms.com/features/fill-out-forms-automatically/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Fill out forms automatically</a> with user meta from the user profile or values from posts including custom fields.
220
- * <a href="https://formidableforms.com/features/white-label-form-builder-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">White label form builder</a>. Replace the Formidable Forms branding with your own in the admin area. Plus, we never show "powered by" links in your free contact forms and online forms.
221
- * <a href="https://formidableforms.com/downloads/user-registration/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WordPress user registration forms</a>. Register users, edit profiles, reset passwords, and add a login form. When using WordPress multisite forms, you can even allow your logged in or logged out users to create subdomains.
222
- * <a href="https://formidableforms.com/downloads/signature/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Digital Signature Forms</a>. Eiminate paper forms with a digital signature field in your contact forms, registration forms, or advanced forms.
223
- * <a href="https://formidableforms.com/downloads/autoresponder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Form action automation</a>. Schedule email notifications, SMS messages, and API actions to trigger at a later time. Automatically delete guest posts after 30 days, send weekly digest emails, trigger happy birthday text messages from a contact form or lead form and much more.
224
- * <a href="https://formidableforms.com/downloads/formidable-api/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Formidable Forms API</a>. Send form entry results to other sites with a REST API. This includes the option to send form entries from one Formidable site to another.
225
- * <a href="https://formidableforms.com/downloads/quiz-maker/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Quiz maker forms</a>. Add quiz questions to a quiz form, submit an entry as the quiz key, and publish the quiz on a page. Then all the quiz form grading is done for you.
226
- * <a href="https://formidableforms.com/support/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">World class support</a>. Have questions or need guidance on how to set up your web application? We are happy to help. Our passion with Formidable Forms is to help you <strong>defy the limits</strong> so you can take on bigger projects, earn more clients, and grow your business.
227
-
228
- = Form Integrations =
229
- * <a href="https://formidableforms.com/downloads/paypal-standard/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">PayPal Payment Forms</a>. Automate your business by collecting instant payments from your clients. Collect information, calculate a total, and send clients on to PayPal from your payment forms.
230
- * <a href="https://formidableforms.com/downloads/stripe/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Stripe Payment Forms</a>. Keep users on your site whole collecting credit cards from a payment form. Select from one time or recurring Stripe payments.
231
- * <a href="https://formidableforms.com/downloads/authorize-net-aim/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Authorize.net AIM Payment Forms</a>. Accept one-time payments in order forms directly on your site, using Authorize.net AIM.
232
- * <a href="https://formidableforms.com/downloads/woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WooCommerce product configurator</a>. Add custom fields to a WooCommerce product form and collect extra data when a product is added to the cart. Use form calculations for variable pricing, upload a file with the purchase, and send custom emails when the purchase is completed.
233
- * <a href="https://formidableforms.com/downloads/mailchimp/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailChimp Forms</a>. Add and update leads in a MailChimp email marketing list from lead forms and contact forms.
 
 
234
  * <a href="https://formidableforms.com/downloads/constant-contact/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Constant Contact Forms</a>. Create leads automatically in Constant Contact with newsletter signup forms and contact forms.
235
- * <a href="https://formidableforms.com/downloads/getresponse-wordpress-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">GetResponse Forms</a>. Collect leads in contact forms, add them to GetResponse, then trigger GetResponse marketing automations.
236
- * <a href="https://formidableforms.com/downloads/aweber/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Aweber Forms</a>. Subscribe users to an AWeber mailing list when a newsletter signup form or contact form is submitted.
237
  * <a href="https://formidableforms.com/downloads/mailpoet-newsletters/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailPoet Newsletter forms</a>. Fill your email marketing lists from newsletter signup forms and contact forms. Then send WordPress newsletters from your own site using MailPoet.
238
- * <a href="https://formidableforms.com/downloads/highrise/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Highrise Forms</a>. Add leads to your Highrise CRM account any time a contact form, registration form, or payment form is submitted.
239
- * <a href="https://formidableforms.com/downloads/salesforce/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Salesforce Forms</a>. Create leads, contacts, and any other Salesforce objects directly from your contact forms and advanced forms.
240
- * <a href="https://formidableforms.com/downloads/activecampaign-wordpress-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">ActiveCampaign Forms</a>. Let contact forms double duty as payment forms, post creation forms, and an ActiveCampaign integration.
241
- * <a href="https://formidableforms.com/downloads/hubspot-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">HubSpot Forms</a>. Route contact form and lead form data to HubSpot CRM.
242
- * <a href="https://formidableforms.com/downloads/twilio/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Twilio for SMS Forms</a>. Collect votes and poll responses via SMS text, or send SMS notifications when form entries are submitted or updated.
243
  * <a href="https://formidableforms.com/downloads/wp-multilingual/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WPML Forms</a>. Translate contact forms, registration forms, and advanced forms into multiple languages using our integrated multilingual forms plugin.
244
- * <a href="https://formidableforms.com/downloads/polylang/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Polylang Forms</a>. Get the form creator with Polylang bilingual or multilingual contact forms.
245
- * <a href="https://formidableforms.com/downloads/zapier/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Zapier Forms</a>. Connect with hundreds of different applications through Zapier. Insert a new row in a Google docs spreadsheet, post on Twitter, or add a new Dropbox file with your form. With Zapier, you have the option to trigger thousands of other actions from a contact form, lead form, quote form, quiz form, or advanced online form.
246
- * <a href="https://formidableforms.com/downloads/bootstrap/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Form Styles</a>. Instantly add Bootstrap form styling to your contact forms, surveys and advanced forms.
247
- * <a href="https://formidableforms.com/downloads/bootstrap-modal/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Modal Form</a>. Open contact forms, login forms, views, other shortcodes, and sections of content in a Bootstrap modal popup.
 
 
 
 
248
 
249
- After reading this feature list, you can probably imagine why Formidable is the most advanced WordPress form plugin in the market.
250
 
251
- Give Formidable a try.
 
252
 
253
- Want to unlock the full power? <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Upgrade to our Pro version</a> to get all features.
254
 
255
  == Installation ==
256
- 1. Go to your Plugins -> Add New page in your WP admin area
257
  2. Search for 'Formidable'
258
  3. Click the 'Install Now' button
259
  4. Activate the plugin through the 'Plugins' menu
260
  5. Go to the Formidable Forms menu
261
- 6. Click the 'Add New' button to go to the form generator page and create a new email form
262
- 7. Insert your contact form, quiz, survey, registration form, or advanced form on a page, post, or widget using a shortcode [formidable id=x], Alternatively use `<?php echo FrmFormsController::show_form(2, $key = '', $title=true, $description=true); ?>` in your page template
263
 
264
  == Screenshots ==
265
- 1. Build professional WP forms without any code.
266
- 2. Form builder plugin page for creating contact forms, surveys, registration forms, quote forms, payment forms, and many more.
267
- 3. Field Options and CSS Layout Classes in the form creator
268
  4. Field Options for checkbox fields in the form maker
269
- 5. View, create, edit, and delete entries on the back end from contact forms, employment application forms, to do lists, and many, many more.
270
  6. Add a WordPress contact form into your sidebar with a widget
271
 
272
  == Frequently Asked Questions ==
273
  = How do I get started with the best WordPress contact form plugin? =
274
-
275
  The fastest way to build a contact form is to use the contact form template we built for you. After you activate Formidable Forms, insert [formidable id=contact-form] on the WordPress page of your choice. That's it!
276
 
277
- Want to make a new contact form? Go to the Formidable -> Forms page and click "add new". Choose the Contact Us form template and click "Load Template". Now Save your contact form.
278
 
279
- Next, go to edit the page where you would like to publish your contact form. Click the "Formidable" button to open the shortcode builder. Choose your contact form and insert it into your WordPress page. Save your page, and you're done. Now you've got a beautiful WP form ready to collect and store leads for you.
280
 
281
- Get more detail on <a href="https://formidableforms.com/wordpress-contact-form-template-to-unique/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">using the contact form template</a> in our blog.
282
 
283
  = My contact forms are not sending emails. Why not? =
284
-
285
  When you do not receive emails from your contact forms, try the following steps:
286
 
287
- 1. Double check to make sure your email address is present and correct in your Email form action on the form "Settings" page. The [admin_email] shortcode uses the email address from your WordPress Settings -> General page.
288
- 2. Make sure you are receiving other emails from your site (ie comment notifications, forgot password...). If these emails don't work on your site, form emails will not work either.
289
- 3. Check your SPAM box
290
- 4. Try a different email address in your contact form settings.
291
- 5. Install WP Mail SMPT or another similar plugin and configure the SMTP settings.
292
- 6. If none of these steps fix the problem with your form emails, and other WP emails are also not going out, please contact your web host.
293
- 7. <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.
294
 
295
- = How do I edit the field names in the form maker? =
296
 
297
- The field labels and descriptions are changed with in-place edit. Just click on the text you would like to change, and it will turn into a text field.
 
298
 
299
- <a href="https://formidableforms.com/formidable-faqs/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">See more contact form and advanced online form FAQs</a>.
300
 
301
- = What type of WordPress forms can I build with Formidable Forms? =
302
- Formidable Forms drag & drop form builder combined with our addons is the most powerful WordPress contact form plugin, and advanced form plugin in the market. Here are some types of WordPress forms you can create:
303
 
304
  * Simple Contact Forms
305
  * Advanced Contact Forms
@@ -327,8 +334,8 @@ Formidable Forms drag & drop form builder combined with our addons is the most p
327
  * Product Purchase Forms
328
  * Lead Capture Forms
329
  * Newsletter Signup Forms
330
- * MailChimp Forms
331
- * AWeber Forms
332
  * Constant Contact Forms
333
  * GetResponse Signup Forms
334
  * MailPoet Newsletter Signup Forms
@@ -356,24 +363,25 @@ Formidable Forms drag & drop form builder combined with our addons is the most p
356
  * Poll Forms
357
  * Quiz Forms
358
  * Members Only Contact Form
 
 
 
 
 
 
359
 
360
- = I'd like access to all form, view, and reporting features. How can I get them? =
361
- You can get access to more features, integrations and support by <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">upgrading to our Pro version</a>. Purchasing a Pro license gets you access to the full version of Formidable Forms, priority support, and Formidable Forms Addons!
362
 
363
  == Changelog ==
 
 
 
 
 
 
 
364
  = 3.04.02 =
365
  * New: When HTML5 is used, auto add the http in a url field if it is omitted by the user
366
 
367
- = 3.04.01 =
368
- * 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.
369
- * Code: Refactor and clean up the code for the Advanced tab in the form settings sidebar
370
- * Code: Add frm_advanced_helpers hook to move some Advanced shortcode examples to Pro
371
- * Code: Add frm_field_code_tab hook to add extra shortcodes in the customization sidebar for a single field
372
- * Update translations
373
-
374
- = 3.04 =
375
- * New: Add option to duplicate a form action
376
- * New: Add option to turn form actions on or off
377
- * New: Add frm_is_multiple_select hook
378
-
379
  <a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
1
+ === Contact Forms, Surveys & Quiz Forms Plugin by Formidable Forms Builder for WordPress ===
2
  Contributors: formidableforms, sswells, srwells, jamie.wahlin
3
+ Tags: forms, contact form, form builder, survey, form maker, form, form creator
4
+ Requires at least: 4.5
5
+ Tested up to: 5.0
6
  Requires PHP: 5.3
7
+ Stable tag: 3.04.03
8
 
9
+ The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quiz forms, and more.
10
 
11
  == Description ==
12
+ = The Most Powerful WordPress form builder plugin on the market =
13
+ We built <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Formidable Forms</a> to offer the "first-ever" solutions-focused WordPress form plugin on the market. You can use our drag & drop WordPress form builder plugin to create contact forms, surveys, quiz forms, registration forms, payment forms, purchase forms, email marketing forms, and just about any other form you can imagine.
14
 
15
+ At Formidable Forms, creating the most extendable form builder plugin is our #1 priority, so you save time when building even the most advanced forms. Unlike other WordPress form maker plugins that focus solely on building contact forms, we believe in allowing our users to push the limits and create complex forms quickly!
16
 
17
+ Before we take a deep-dive into the features of the powerful Formidable form builder plugin, you should know that Formidable Forms is 100% mobile responsive so your contact forms and all other types of forms will always look great on all devices (desktop, laptop, tablets, and smartphones).
18
 
19
+ On top of that, we have optimized Formidable contact forms and advanced forms for speed and maximum server performance. Whether you use Formidable Forms to build a contact form on your own site or an advanced form for your client, you can confidently say that it's one of the FASTEST WordPress form builders on the market.
20
 
21
  > <strong>Formidable Forms Pro</strong><br />
22
+ > This form builder plugin is the lite version of the Formidable Forms Pro plugin that comes with all the contact form and advanced form features you will ever need. Our premium form features include repeater fields, email subscription forms, multi-page contact forms, file upload forms, smart forms with conditional logic, payment integrations, form templates, form relationships, cascading dropdown fields, front-end form editing, powerful Formidable Views to display data in web applications, and far more than just contact forms. <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="Formidable Forms">Click here to purchase the most advanced premium WordPress form builder plugin now!</a>
23
 
24
  You can start with our pre-built contact form template or create totally custom forms from scratch all with an easy-to-use drag & drop form builder interface.
25
 
29
 
30
  = Drag & Drop Contact Form Maker and Advanced Form Builder =
31
 
32
+ The Formidable Forms drag & drop form builder allows you to quickly create unlimited contact forms, surveys, quizzes, registration forms, and just about any other type of form that you want.
33
 
34
+ Our form builder plugin comes with all the powerful form fields that you need to create a solution-focused form, fast!
35
 
36
  * Single line text (for names, phone numbers, addresses, and more)
37
  * Email
46
  * User ID
47
  * HTML block
48
 
 
 
 
 
49
  = Complete Entry Management for Contact Forms and Surveys =
50
 
51
  Formidable Forms allows you to view all your contact form and survey entries right from your WordPress dashboard.
52
 
53
+ Once a user submits a contact form, their response is automatically stored in your WordPress database.
54
 
55
+ Formidable Forms is **100% GDPR-friendly**. You can turn off IP tracking or stop saving contact form submissions entirely. Alternatively, you can add a GDPR checkbox field to your contact forms and payment forms to collect consent.
56
 
57
  Need to import your contact form leads to another service like MailChimp? No problem. **Export contact form leads to a CSV**, open it in Excel, and import anywhere.
58
 
59
+ You can also configure unlimited form email notifications and autoresponders triggered by contact form submissions.
60
+
61
+ On top of that, you can easily customize the contact form success message the user sees after they submit the form, or redirect them to another page for your more advanced form needs.
62
+
63
+ = The Only Form Maker Plugin with an Advanced Form Styler =
64
+
65
+ With our built-in form styler, you can instantly customize the look and feel of your contact forms. With just a few clicks, your contact form, email form, and advanced forms can be transformed to match your website design.
66
 
67
+ By default, Formidable Forms applies a single styling template to all Formidable contact forms and advanced forms on your site. But if you want a custom form style for each individual contact form, sidebar form, and registration form, you can upgrade to Formidable Forms Pro.
68
 
69
  = Build Smart Surveys with Beautiful Reports =
70
 
71
+ Aside from simple contact forms, Formidable Forms comes with a built-in survey feature, so you can quickly create powerful surveys and see beautiful reports.
72
 
73
+ The best part is that you can do this all within Formidable Forms without any third-party tools.
74
 
75
  = Quickly Create Advanced Registration Forms for Any Use Case =
76
 
77
+ Whether you need to create a youth sport team registration form, event registration form, or church retreat registration form, Formidable Forms has got you covered. Unlike other contact form plugins, Formidable Forms comes with a repeater field that allows you to create the most powerful registration forms.
78
 
79
+ Then, our marketing integrations and APIs can send the contact form and registration form data anywhere you want.
 
 
80
 
81
  = Accept Credit Cards and Easily Collect Payments =
82
 
83
+ By now, you probably already realize the theme that Formidable Forms is more than just a contact form plugin. You can use Formidable Forms to create payment forms and accept credit card payments right from your website.
84
 
85
+ We offer seamless integration with PayPal, Stripe, and Authorize.net, so you can create order forms and purchase forms with our drag & drop form builder.
86
 
87
+ You can even use Formidable Forms to create WooCommerce forms with custom fields (more on that later).
88
 
89
  = Grow Your Business with Marketing Integrations =
90
 
91
+ We know that marketing is the key to grow your business. That's why Formidable Forms allows you to connect contact forms, payment forms, and advanced forms with a marketing platform of your choice.
92
 
93
  We integrate with popular email marketing services like:
94
 
101
  * Salesforce
102
  * HubSpot
103
 
104
+ On top of these native integrations, we also integrate with Zapier, so you can quickly route your contact form data to over 1,000+ more services with just a few clicks.
105
 
106
  = Create Data-Driven Web Applications with Formidable Views =
107
 
108
+ Formidable Views are by far the most powerful feature that makes Formidable far more than just a form builder plugin. Views allow you to flexibly display any submitted form data on the front-end of your website.
109
 
110
  Our customers use Formidable Views to create data-driven web applications like real estate listings, employment listings, event calendars, business or member directories, job boards, and other searchable databases.
111
 
112
+ As you can see, Formidable Forms is not your average contact form plugin. It's a true all-in-one WordPress form solution.
113
 
114
  = Increase Your Sales with WooCommerce Product Forms =
115
 
116
+ Formidable Forms is the only WordPress form builder plugin that offers extensive integration with WooCommerce.
117
 
118
  Our goal is to empower you to build powerful WooCommerce product forms, so you can increase your store sales.
119
 
120
+ You can use Formidable Forms to add a WooCommerce Product configurator with custom calculation fields, and automatically send the data to the WooCommerce cart with variable pricing options.
121
 
122
  Need your customers to upload a file when they purchase a product? No problem. Simply drag & drop a file upload field into your WooCommerce form and you're done.
123
 
124
+ You can even show submitted form values in the WooCommerce purchase receipt emails as well as trigger SMS text messages or marketing integrations when an order is completed.
125
 
126
+ And of course, you can use Formidable Forms to add a simple contact form on your WooCommerce store.
127
 
128
  = Build Powerful Quiz Forms & Calculators =
129
 
130
+ Along with a contact form, you can also use the Formidable form builder plugin to create quiz forms and calculator forms.
131
 
132
+ Here are some example web calculators you can quickly add to your site:
133
 
134
  * Advanced Mortgage Calculator
135
  * Car Payment Calculator
136
  * BMI Calculator
137
  * User Age Calculator
138
  * Online Quote Calculator
139
+ * Net Promoter Score (NPS) Survey Calculator
140
 
141
+ ... and our powerful form calculations allow you to build just about any other type of calculator form.
142
 
143
+ If that wasn't enough, you can also use our Formidable Form builder to create quizzes on your site and display results. This is great for membership sites, LMS, or just for viral quizzes to grow your email list.
144
 
145
+ Our goal is to go beyond simple contact forms and allow users to create form-based solutions without any code :)
146
 
147
  = Create WordPress User Registration Forms, Profile Forms, and More =
148
 
149
  If you run a WordPress membership site, then you need more advanced forms along with your contact form.
150
 
151
+ The Formidable Form builder plugin allows you to customize your WordPress user registration forms, so you can collect additional data when the user profile is created.
152
 
153
+ With our front-end form editing, you can also build custom profile forms and allow users to keep their profile updated, or even progressively add to the profile from a set of forms, from the first contact form to the last payment form.
154
 
155
+ Our front-end form editing feature is unique to us, and you will not find any other WordPress contact form plugin offering such a solution with the level of extendability that we do.
156
 
157
  = Beautiful Graphs and Reports to Help You Analyze and Showcase Data =
158
 
159
+ We believe that data alone does no good if you can't analyze it. That's why we make it easy for you to analyze your contact form, survey, quiz, calculator, and other form data with beautiful graphs and reports.
160
 
161
+ You can even showcase form data on the front-end of your website by embedding graphs in your WordPress posts or pages.
162
 
163
  = All the Advanced Form Fields and Features You Need to Grow Your Business =
164
 
165
+ Formidable Forms goes far above and beyond contact forms to offer all the advanced form fields and features you need to grow your business.
166
 
167
  This includes things like multi-page forms, save and continue forms, cascading form fields, powerful conditional logic, partial form submissions, invisible spam protection, front-end user post submission, calculators, user-tracking, and so much more.
168
 
169
+ We're on a mission to offer an all-in-one solution-focused WordPress form plugin, so you don't have to install 5 plugins alongside your contact form maker plugin to do everything you want.
170
 
171
+ = Extend and Customize Your Forms - Developer's Dream Come True =
172
 
173
+ Formidable Forms is the form plugin of choice for smart developers, freelancers, and agencies because it helps them build complex form solutions and basic contact forms quickly and defy the limits imposed by time and knowledge.
174
 
175
  Our goal is to help you build complex websites with low overhead. We believe big projects don't always need big resources.
176
 
177
+ That's why we made Formidable Forms the most extendable WordPress form builder plugin on the market.
178
 
179
+ You can easily route your data from contact forms and advanced forms with our powerful API. Formidable Views allow you to display form data anywhere on the front-end, so you can quickly create data-driven web applications.
180
 
181
+ On top of that, our hooks and filters allow you to completely extend Formidable Forms to meet your needs. We even include hundreds of code examples in our docs to give you the confidence to get started.
182
 
183
  = Full Formidable Forms Feature List =
184
 
185
+ Since Formidable Forms is not your average WordPress contact form plugin, this feature list is going to be very long. Grab a cup of coffee and read through, or just install the most powerful WordPress form maker plugin, your choice :)
186
+
187
+ * <a href="https://formidableforms.com/features/drag-drop-form-builder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Online drag and drop form builder</a>. Build everything from contact forms and email forms to calculators, registration forms, and complex online forms. Make amazing forms the easy way with a simple WordPress drag and drop form builder. No code required.
188
+ * <a href="https://formidableforms.com/features/display-form-data-views/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Display form data with Views</a>. Other WordPress form builder plugins only let you collect data. Formidable Forms lets you format, filter, and display form submissions in custom Formidable Views on the front-end of your site. Views turn forms into solutions. Job boards, event calendars, business directories, ratings systems, and management solutions. If you can come up with it, most likely Formidable can handle it.
189
+ * <a href="https://formidableforms.com/features/dynamically-add-form-fields/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Repeating field groups (repeaters)</a>. Allow your users to add sets of fields to registration forms, application forms, email forms, calculator forms, and other advanced forms on the fly.
190
+ * <a href="https://formidableforms.com/features/wordpress-multiple-file-upload-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Drag and drop multiple file upload forms</a>. Easily upload documents, files, photos, and music, with any number of files in contact forms, job application forms (resumes), WordPress User Profile Forms (avatars), registration forms, get a quote forms, and other advanced forms.
191
+ * <a href="https://formidableforms.com/features/wordpress-multi-step-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Multi-step forms with progress bars</a>. Want to increase conversion rates and collect more leads with smart contact forms? Create beautiful paged forms with rootline and progress indicators. Add conditional logic to page breaks for smart branching forms.
192
+ * <a href="https://formidableforms.com/features/cascading-dropdown-lookup-field/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Cascading lookup fields</a>. Change values in other form fields or drill down through options to reveal a final value. Designed for country/state/city fields in contact forms and registration forms and year/make/model fields in auto forms, or to get a price from a separate product form.
193
+ * Datepicker fields with advanced <a href="https://formidableforms.com/downloads/datepicker-options/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">datepicker options</a> including blackout dates, dynamic minimum and maximum dates, and inline calendars. Our datepickers are great for basic online booking forms, event registration forms, and specialized contact forms.
194
+ * Create relationships with Dynamic fields. Populate form fields from other forms and link data between two forms without duplication. Form relationships are helpful in a huge number of cases including linking employment application forms to a job, quiz forms to a class, event registration forms to an event, sports registration forms to a team, and contact forms to a department.
195
+ * Add password fields with a password strength meter in WordPress user registration forms, profile forms, and change password forms.
196
+ * Collect reviews with star ratings in feedback forms, recipe ratings forms, product review forms, event rating forms, customer testimonial forms, and yes, even contact forms. Then display and share the ratings in Formidable Views.
197
+ * Add more field types with our form creator including Rich text fields, Time fields, Scale fields, Slider fields, Toggle fields, Tags fields, Address fields, and Section headings.
198
+ * <a href="https://formidableforms.com/features/confirm-email-address-password-wordpress-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Confirmation fields</a>. Double check email addresses or passwords and prevent typos from cannibalizing your contact form leads.
199
+ * <a href="https://formidableforms.com/features/conditional-logic-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Conditional logic for smart forms</a>. Show or hide fields in contact forms and advanced forms based on user selections or user roles. Make complex forms simple and increase form conversion rates.
200
+ * <a href="https://formidableforms.com/features/email-autoresponders-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Send email notifications & autoresponders</a>. Automatically let clients know you received their contact form message. Then create customized email notifications for multiple recipients and get info from a contact form or email form to those who need it.
201
+ * Email routing: Conditionally send multiple autoresponder emails and notifications based on values in contact forms, email forms, payment forms, and registration forms.
202
+ * <a href="https://formidableforms.com/features/wordpress-calculated-fields-form/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Calculator forms</a>. Create basic and complex calculations, and even combine text from multiple fields for a mortgage calculator, auto loan calculator, or many other calculator forms. Even a contact form could benefit from calculations for easy quotes and price estimates.
203
+ * <a href="https://formidableforms.com/features/wordpress-visual-form-styler/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Visual form style creator</a>. Our form creator for contact forms, calculators, and other online forms not only allows you to build forms, but also create branded forms that match your site. Change colors, borders, padding and much more without any code.
204
+ * <a href="https://formidableforms.com/features/flexible-layouts-responsive-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Flexible form layout design</a>. Build mobile responsive contact forms and advanced form layouts with multiple fields in a row by using our CSS layout classes.
205
+ * <a href="https://formidableforms.com/features/wordpress-mobile-friendly-responsive-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Mobile-friendly, responsive forms</a>. All of our forms are sized automatically for every screen size. Ensure that everyone can see and submit your contact forms and other online forms from any device.
206
+ * <a href="https://formidableforms.com/features/user-submitted-posts-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">User submitted front-end posts and pages</a>. Create and edit WordPress posts, pages, and even custom post types from your front-end online forms. Send user-generated content quickly from a post creation form to a page.
207
+ * <a href="https://formidableforms.com/features/form-entry-management-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Simple entry management</a>. Flexibly and powerfully display, edit, and delete form entries from anywhere on your site, and specify who has permission to do so. Your logged-in users can fully manage their personal journal entries, weight tracking, guest blog posts, RSVP status, and whatever else you need, far and above just contact forms.
208
  * <a href="https://formidableforms.com/features/front-end-editing-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WordPress front-end editing</a>. Allow users to edit their form entries and posts from the front-end of your site. Create an online journaling platform, member directory, classified ads, community recipes, and more.
209
+ * Logged-in users can <a href="https://formidableforms.com/features/save-and-continue-partial-submissions/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">save and continue partial form submissions</a>. Whether it's a contact form or a long multi-paged form, users can save form progress and pick up right where they left off.
210
+ * <a href="https://formidableforms.com/features/create-a-graph-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Graphs and charts for data visualization</a>. Display statistics from surveys, polls, quiz forms, questionnaires, and advanced forms. Or graph the data in a variety of ways that automatically update as new form data is submitted (great for weight tracking over time).
211
+ * Form permission settings. Limit visibility of specialized contact forms and advanced forms based on user role.
212
+ * Form entry limits. Limit a contact form, registration form, survey, quiz, or directory submissions to only allow one entry per user, IP, or cookie.
213
+ * Form scheduling. Open and close event registration forms and signup forms on a specific date. Or close registration forms when the seat limit or team size has been reached. Want a contact form for questions about a planned event that auto closes when the event starts? No problem.
214
+ * Conditionally redirect to a custom page after a contact form, custom search form, quiz form, calculator form, payment form, support ticket form, or other online form is submitted. Help clients get the answers they are looking for, or show a tailored result based on their form selections.
215
+ * We believe that not only contact forms, but also advanced forms should be extendable to meet your needs. So we give you access to <a href="https://formidableforms.com/features/customize-form-html-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">customize the form HTML</a> (like Contact Form 7), but still keep the ease and speed of a drag & drop form builder plugin. Our team labors for simplicity without sacrificing flexibility.
216
+ * <a href="https://formidableforms.com/features/importing-exporting-wordpress-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Import and export forms, form submissions, styles, and views</a>. Quickly move forms, entries, views and styles to another site. Need to export leads from a contact form to another service? Check.
217
+ * <a href="https://formidableforms.com/features/wordpress-form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Form templates for instant form building</a>. Get started quickly with the most advanced form creator that includes form templates, style templates, and Formidable View templates. Our WordPress form generator makes it FAST to build contact forms, job application forms, and other online forms.
218
+ * Import our <a href="https://formidableforms.com/downloads/category/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">pre-built form/view templates</a> as a shortcut to a final product. Our growing form template library includes contact forms, payment forms, calculators, a WooCommerce product creator, and more.
219
  * <a href="https://formidableforms.com/features/wcag-accessible-forms/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WCAG accessible forms with A11Y compliance</a>. Don't alienate your audience. Ensure your contact forms, surveys, quiz forms, lead capture forms, and other online forms are compliant and available to anyone.
220
+ * <a href="https://formidableforms.com/features/invisible-spam-protection/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Invisible SPAM protection</a>. Don't waste time sorting through SPAM from your contact form. Get instant and powerful anti-spam features from honeypot, invisible reCAPTCHA, Akismet, and the WordPress comment blacklist.
221
+ * <a href="https://formidableforms.com/features/fill-out-forms-automatically/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Fill out forms automatically</a> with values from the user profile or posts (i.e. custom fields). When a user is logged in, prefill known values like first name, last name, and email address in a contact form.
222
+ * <a href="https://formidableforms.com/features/white-label-form-builder-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">White label form builder</a>. Replace the Formidable Forms branding with your own in the admin area. Plus, we never show "powered by" links in your free contact forms or online forms.
223
+ * <a href="https://formidableforms.com/downloads/user-registration/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WordPress user registration forms</a>. Register WordPress users, edit profiles, reset passwords, and add a login form. When using WordPress multisite forms, you can even allow logged in and logged out users to create new subdomains.
224
+ * <a href="https://formidableforms.com/downloads/signature/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Digital signature forms</a>. Eliminate paper forms with a digital signature field in contact forms, application forms, registration forms, or advanced forms.
225
+ * <a href="https://formidableforms.com/downloads/autoresponder/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Form action automation</a>. Schedule form email notifications, SMS messages, and webhooks to trigger at a later time. You can automatically delete guest posts after 30 days, send weekly digest emails, trigger happy birthday text messages from a contact form or lead form and much more.
226
+ * <a href="https://formidableforms.com/downloads/formidable-api/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Formidable Forms API</a>. Send form entries to other REST APIs and add a set of form webhooks. This includes the option to send form entries from one Formidable site to another.
227
+ * <a href="https://formidableforms.com/downloads/quiz-maker/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Quiz maker forms</a>. Write your quiz form questions, submit an entry as the quiz key, and publish the quiz on a page. Then all the quiz form grading is automatically done for you.
228
+ * <a href="https://formidableforms.com/support/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">World class support</a>. Have questions or need guidance on how to use our contact form builder or set up your web application? We are happy to help. Our passion with Formidable Forms is to help you <strong>defy the limits</strong> so you can take on bigger projects, earn more clients, and grow your business.
229
+
230
+ = Payment Forms, Form APIs, and Marketing Integrations =
231
+ In addition to all the form builder features listed above, power up contact forms, registration forms, and calculator forms with these integrations.
232
+
233
+ * <a href="https://formidableforms.com/downloads/paypal-standard/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">PayPal Payment Forms</a>. Automate your business by collecting instant payments and recurring payments from clients. Collect information, calculate a total, and send clients to PayPal from your payment forms.
234
+ * <a href="https://formidableforms.com/downloads/stripe/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Stripe Payment Forms</a>. Keep users on your site while collecting payments from a credit card form. Select from one time and recurring charges in order forms, donation forms, and contact forms.
235
+ * <a href="https://formidableforms.com/downloads/authorize-net-aim/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Authorize.net AIM Payment Forms</a>. Process one-time payments in order forms, registration forms, and calculator forms with Authorize.net AIM.
236
+ * <a href="https://formidableforms.com/downloads/woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WooCommerce product configurator</a>. Add custom fields to a WooCommerce product form and collect extra data when a product is added to the cart. Use form calculations for variable pricing, upload a file with the purchase, and send custom emails when a purchase is completed.
237
+ * <a href="https://formidableforms.com/downloads/mailchimp/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailChimp Forms</a>. Add and update leads in a MailChimp email marketing list from lead forms, contact forms, order forms, and email forms.
238
  * <a href="https://formidableforms.com/downloads/constant-contact/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Constant Contact Forms</a>. Create leads automatically in Constant Contact with newsletter signup forms and contact forms.
239
+ * <a href="https://formidableforms.com/downloads/getresponse-wordpress-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">GetResponse Forms</a>. Collect leads in contact forms, add them to GetResponse, and trigger GetResponse marketing automations.
240
+ * <a href="https://formidableforms.com/downloads/aweber/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">AWeber Forms</a>. Subscribe users to an AWeber mailing list when a newsletter signup form or contact form is submitted.
241
  * <a href="https://formidableforms.com/downloads/mailpoet-newsletters/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">MailPoet Newsletter forms</a>. Fill your email marketing lists from newsletter signup forms and contact forms. Then send WordPress newsletters from your own site using MailPoet.
242
+ * <a href="https://formidableforms.com/downloads/highrise/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Highrise Forms</a>. Add leads to your Highrise CRM account any time a WordPress contact form, registration form, or payment form is submitted.
243
+ * <a href="https://formidableforms.com/downloads/salesforce/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Salesforce Forms</a>. Create leads, contacts, and any other Salesforce objects directly from your contact page and advanced forms.
244
+ * <a href="https://formidableforms.com/downloads/activecampaign-wordpress-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">ActiveCampaign Forms</a>. Let your contact form pull double duty as a payment form, post creation form, user registration form, and an ActiveCampaign integration.
245
+ * <a href="https://formidableforms.com/downloads/hubspot-wordpress/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">HubSpot Forms</a>. Route contact form and lead form data from your WordPress forms to HubSpot CRM.
246
+ * <a href="https://formidableforms.com/downloads/twilio/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Twilio for SMS Forms</a>. Collect votes and poll responses via SMS text or send SMS notifications when form entries are submitted. Get notified instantly when an important contact form or payment form is completed, and let your form leads know you received their message.
247
  * <a href="https://formidableforms.com/downloads/wp-multilingual/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">WPML Forms</a>. Translate contact forms, registration forms, and advanced forms into multiple languages using our integrated multilingual forms plugin.
248
+ * <a href="https://formidableforms.com/downloads/polylang/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Polylang Forms</a>. Get the form creator with Polylang bilingual or multilingual contact forms. Use the form builder to make your form, then translate it without duplicate forms.
249
+ * <a href="https://formidableforms.com/downloads/zapier/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Zapier Forms</a>. Connect with hundreds of different applications through Zapier. Insert a new row in a Google docs spreadsheet, post on Twitter, or upload a Dropbox file from a contact form, calculator form, payment form, and more. With Zapier, you have the option to trigger thousands of actions from a lead form, quote form, quiz form, and other online forms.
250
+ * <a href="https://formidableforms.com/downloads/bootstrap/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Form Styles</a>. Instantly add Bootstrap form styling to contact forms, registration forms, surveys, and advanced forms.
251
+ * <a href="https://formidableforms.com/downloads/bootstrap-modal/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Bootstrap Modal Form</a>. Open contact forms, login forms, Formidable views, shortcodes, and other content in a Bootstrap modal popup.
252
+
253
+ After reading this feature list, you can probably imagine why Formidable Forms is the most advanced WordPress form plugin on the market, designed for far more than just contact forms.
254
+
255
+ Give Formidable Forms a try.
256
 
257
+ Want to unlock the full power? <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">Upgrade to our Pro forms</a> to get all the features for smart contact forms and full web applications.
258
 
259
+ = Form Plugin Credits =
260
+ This form builder plugin is created by Steve and Steph Wells and the amazing Formidable Forms Team.
261
 
262
+ Formidable Forms is part of the <a href="https://www.wpbeginner.com/">WPBeginner</a> accelerator with <a href="https://syedbalkhi.com/">Syed Balkhi</a> as an Advisor to our company.
263
 
264
  == Installation ==
265
+ 1. Go to the Plugins -> 'Add New' page in your WP admin area
266
  2. Search for 'Formidable'
267
  3. Click the 'Install Now' button
268
  4. Activate the plugin through the 'Plugins' menu
269
  5. Go to the Formidable Forms menu
270
+ 6. Click the 'Add New' button to go to the form generator page and create a new contact form, email form, registration form, or advanced form
271
+ 7. Insert your newly created contact form, quiz, survey, registration form, or advanced form on a Contact Us page, post, or widget using a shortcode [formidable id=x], Alternatively use `<?php echo FrmFormsController::show_form(2, $key = '', $title=true, $description=true); ?>` to add a contact form in a contact page template
272
 
273
  == Screenshots ==
274
+ 1. Build professional WP contact forms without any code.
275
+ 2. Form builder plugin page for creating a contact form, survey, registration form, quote form, payment form, calculator form, quiz form, and many more.
276
+ 3. Field Options and CSS Layout Classes on the form creator page
277
  4. Field Options for checkbox fields in the form maker
278
+ 5. View, create, edit, and delete entries on the back end from a contact form, employment application form, to do list, order form, and more.
279
  6. Add a WordPress contact form into your sidebar with a widget
280
 
281
  == Frequently Asked Questions ==
282
  = How do I get started with the best WordPress contact form plugin? =
 
283
  The fastest way to build a contact form is to use the contact form template we built for you. After you activate Formidable Forms, insert [formidable id=contact-form] on the WordPress page of your choice. That's it!
284
 
285
+ Want to make a new contact form? Go to the Formidable -> Forms page and click "add new". Choose the Contact Us form template on the form buider page and click "Load Template". Save your new contact form.
286
 
287
+ Next, edit or create a WordPress contact page for the contact form. Click the "Formidable" button to open the form shortcode builder. Choose your contact form and insert it into the WordPress page. Save the contact page for a beautiful WP contact form, ready to collect and store your leads.
288
 
289
+ Learn more about <a href="https://formidableforms.com/wordpress-contact-form-template-to-unique/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">using the contact form template</a>.
290
 
291
  = My contact forms are not sending emails. Why not? =
 
292
  When you do not receive emails from your contact forms, try the following steps:
293
 
294
+ 1. Double check that your email address is present and correct in your Email form action on the form settings page of the form builder. The [admin_email] shortcode uses the email address from your WordPress Settings -> General page.
295
+ 2. Are receiving other emails from your site (ie comment notifications, forgot password...)? If not, form emails will not work either.
296
+ 3. Check your SPAM box.
297
+ 4. Try a different email address in your contact form settings in the form builder.
298
+ 5. Install WP Mail SMPT or another similar emailing plugin and configure the SMTP settings.
299
+ 6. If none of these steps fix the contact form email problem and no other WP emails are going out, please contact your web host.
 
300
 
301
+ <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 from contact forms</a> in our blog.
302
 
303
+ = How do I edit the field names in the form maker? =
304
+ The contact form field labels and descriptions are changed with in-place edit in the form builder. Click on the label you would like to change and it will turn into a text field.
305
 
306
+ <a href="https://formidableforms.com/formidable-faqs/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">See more FAQs</a> for making an amazing contact form or advanced online form.
307
 
308
+ = What types of WordPress forms can I build with Formidable Forms? =
309
+ Formidable Forms drag & drop form builder combined with our add-ons is the most powerful contact form plugin and advanced form builder plugin on the market. Here are some types of WordPress forms you can create:
310
 
311
  * Simple Contact Forms
312
  * Advanced Contact Forms
334
  * Product Purchase Forms
335
  * Lead Capture Forms
336
  * Newsletter Signup Forms
337
+ * MailChimp Signup Forms
338
+ * AWeber Contact Forms
339
  * Constant Contact Forms
340
  * GetResponse Signup Forms
341
  * MailPoet Newsletter Signup Forms
363
  * Poll Forms
364
  * Quiz Forms
365
  * Members Only Contact Form
366
+ * Advanced Mortgage Calculator
367
+ * Car Payment Calculator
368
+ * BMI Calculator
369
+ * User Age Calculator
370
+ * Online Quote Calculator
371
+ * Recipe Reviews Form
372
 
373
+ = I'd like access to all advanced form, view, and reporting features. How can I get them? =
374
+ To get access to more features, integrations, and support, <a href="https://formidableforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion">upgrade to Formidable Forms Pro</a>. A Pro license gives you access to the full version of Formidable Forms for more advanced contact forms, Formidable Views, graphs and stats, priority support, and Formidable Forms Add-ons!
375
 
376
  == Changelog ==
377
+ = 3.04.03 =
378
+ * New: Improved autoupdating and installation for form add-ons
379
+ * Tweak: Only show the form add-ons page to those who can activate plugins
380
+ * Fix: Radio button shadows had a box around them in some browsers
381
+ * Fix: Don't mark an entry as a duplicate when the second entry includes more fields than the first
382
+ * Code: Move deprecated code to its own folder
383
+
384
  = 3.04.02 =
385
  * New: When HTML5 is used, auto add the http in a url field if it is omitted by the user
386
 
 
 
 
 
 
 
 
 
 
 
 
 
387
  <a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>