Version Description
- Security: Improved how data is sanitized when previewing in the style manager.
- Fix: Prevent a warning when trying to get inbox messages from the API when no messages are being returned.
- Fix: The frm_alignright class was being stripped in the form builder, preventing the right alignment from appearing in the back end.
- Fix: The frm_alignright class was causing fields to shift to the wrong row. The style definition has been updated so it will stay in the same row as other fields.
- Fix: Required messages were not properly appearing for empty radio buttons when an other option was selected but left empty and JavaScript validation was on.
Download this release
Release Info
Developer | formidableforms |
Plugin | Formidable Forms – Form Builder for WordPress |
Version | 5.0.10 |
Comparing to | |
See all releases |
Code changes from version 5.0.09 to 5.0.10
- classes/controllers/FrmFieldsController.php +3 -13
- classes/helpers/FrmAppHelper.php +1 -1
- classes/helpers/FrmStylesHelper.php +28 -4
- classes/models/FrmInbox.php +2 -1
- css/_single_theme.css.php +1 -1
- css/custom_theme.css.php +3 -3
- css/frm_grids.css +0 -1
- formidable.php +1 -1
- js/formidable.js +38 -14
- js/formidable.min.js +35 -35
- js/formidable_admin.js +1 -1
- languages/formidable.pot +7 -7
- readme.txt +8 -1
classes/controllers/FrmFieldsController.php
CHANGED
@@ -179,21 +179,11 @@ class FrmFieldsController {
|
|
179 |
* @since 3.0
|
180 |
*/
|
181 |
private static function get_classes_for_builder_field( $field, $display, $field_info ) {
|
182 |
-
$li_classes
|
183 |
-
$classes = isset( $field['classes'] ) ? $field['classes'] : '';
|
184 |
-
|
185 |
-
// Exclude alignright for now since we aren't using widths.
|
186 |
-
$classes = str_replace( ' frm_alignright ', ' ', $classes );
|
187 |
-
$classes = trim( $classes );
|
188 |
-
|
189 |
-
if ( 'frm_alignright' === $classes ) {
|
190 |
-
$classes = '';
|
191 |
-
}
|
192 |
-
|
193 |
$li_classes .= ' frm_form_field frmstart ';
|
194 |
|
195 |
-
if ( $classes ) {
|
196 |
-
$li_classes .= $classes . ' ';
|
197 |
}
|
198 |
|
199 |
$li_classes .= 'frmend';
|
179 |
* @since 3.0
|
180 |
*/
|
181 |
private static function get_classes_for_builder_field( $field, $display, $field_info ) {
|
182 |
+
$li_classes = $field_info->form_builder_classes( $display['type'] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
$li_classes .= ' frm_form_field frmstart ';
|
184 |
|
185 |
+
if ( isset( $field['classes'] ) ) {
|
186 |
+
$li_classes .= trim( $field['classes'] ) . ' ';
|
187 |
}
|
188 |
|
189 |
$li_classes .= 'frmend';
|
classes/helpers/FrmAppHelper.php
CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
|
|
11 |
/**
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
-
public static $plug_version = '5.0.
|
15 |
|
16 |
/**
|
17 |
* @since 1.07.02
|
11 |
/**
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
+
public static $plug_version = '5.0.10';
|
15 |
|
16 |
/**
|
17 |
* @since 1.07.02
|
classes/helpers/FrmStylesHelper.php
CHANGED
@@ -328,6 +328,9 @@ class FrmStylesHelper {
|
|
328 |
|
329 |
/**
|
330 |
* @since 2.3
|
|
|
|
|
|
|
331 |
*/
|
332 |
public static function get_settings_for_output( $style ) {
|
333 |
if ( self::previewing_style() ) {
|
@@ -339,14 +342,14 @@ class FrmStylesHelper {
|
|
339 |
if ( ! is_array( $posted ) ) {
|
340 |
$posted = json_decode( $posted, true );
|
341 |
FrmAppHelper::format_form_data( $posted );
|
342 |
-
$settings
|
343 |
$style_name = sanitize_title( $posted['style_name'] );
|
344 |
} else {
|
345 |
-
$settings
|
346 |
$style_name = FrmAppHelper::get_post_param( 'style_name', '', 'sanitize_title' );
|
347 |
}
|
348 |
} else {
|
349 |
-
$settings
|
350 |
$style_name = FrmAppHelper::get_param( 'style_name', '', 'get', 'sanitize_title' );
|
351 |
}
|
352 |
|
@@ -361,7 +364,7 @@ class FrmStylesHelper {
|
|
361 |
$settings['style_class'] = 'frm_style_' . $style->post_name . '.';
|
362 |
}
|
363 |
|
364 |
-
$settings['style_class']
|
365 |
$settings['font'] = stripslashes( $settings['font'] );
|
366 |
$settings['change_margin'] = self::description_margin_for_screensize( $settings['width'] );
|
367 |
|
@@ -386,6 +389,27 @@ class FrmStylesHelper {
|
|
386 |
return $settings;
|
387 |
}
|
388 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
/**
|
390 |
* @since 2.3
|
391 |
*/
|
328 |
|
329 |
/**
|
330 |
* @since 2.3
|
331 |
+
*
|
332 |
+
* @param WP_Post $style
|
333 |
+
* @return array
|
334 |
*/
|
335 |
public static function get_settings_for_output( $style ) {
|
336 |
if ( self::previewing_style() ) {
|
342 |
if ( ! is_array( $posted ) ) {
|
343 |
$posted = json_decode( $posted, true );
|
344 |
FrmAppHelper::format_form_data( $posted );
|
345 |
+
$settings = self::sanitize_settings( $posted['frm_style_setting']['post_content'] );
|
346 |
$style_name = sanitize_title( $posted['style_name'] );
|
347 |
} else {
|
348 |
+
$settings = self::sanitize_settings( $posted['post_content'] );
|
349 |
$style_name = FrmAppHelper::get_post_param( 'style_name', '', 'sanitize_title' );
|
350 |
}
|
351 |
} else {
|
352 |
+
$settings = self::sanitize_settings( wp_unslash( $_GET ) );
|
353 |
$style_name = FrmAppHelper::get_param( 'style_name', '', 'get', 'sanitize_title' );
|
354 |
}
|
355 |
|
364 |
$settings['style_class'] = 'frm_style_' . $style->post_name . '.';
|
365 |
}
|
366 |
|
367 |
+
$settings['style_class'] .= 'with_frm_style';
|
368 |
$settings['font'] = stripslashes( $settings['font'] );
|
369 |
$settings['change_margin'] = self::description_margin_for_screensize( $settings['width'] );
|
370 |
|
389 |
return $settings;
|
390 |
}
|
391 |
|
392 |
+
/**
|
393 |
+
* @since 5.0.10
|
394 |
+
*
|
395 |
+
* @param array $settings
|
396 |
+
* @return array
|
397 |
+
*/
|
398 |
+
private static function sanitize_settings( $settings ) {
|
399 |
+
$style = new FrmStyle();
|
400 |
+
$defaults = $style->get_defaults();
|
401 |
+
$valid_keys = array_keys( $defaults );
|
402 |
+
$sanitized_settings = array();
|
403 |
+
foreach ( $valid_keys as $key ) {
|
404 |
+
if ( isset( $settings[ $key ] ) ) {
|
405 |
+
$sanitized_settings[ $key ] = sanitize_text_field( $settings[ $key ] );
|
406 |
+
} else {
|
407 |
+
$sanitized_settings[ $key ] = $defaults[ $key ];
|
408 |
+
}
|
409 |
+
}
|
410 |
+
return $sanitized_settings;
|
411 |
+
}
|
412 |
+
|
413 |
/**
|
414 |
* @since 2.3
|
415 |
*/
|
classes/models/FrmInbox.php
CHANGED
@@ -84,8 +84,9 @@ class FrmInbox extends FrmFormApi {
|
|
84 |
* @param array|string $message
|
85 |
*/
|
86 |
public function add_message( $message ) {
|
87 |
-
if ( ! is_array( $message ) ) {
|
88 |
// if the API response is invalid, $message may not be an array.
|
|
|
89 |
return;
|
90 |
}
|
91 |
|
84 |
* @param array|string $message
|
85 |
*/
|
86 |
public function add_message( $message ) {
|
87 |
+
if ( ! is_array( $message ) || ! isset( $message['key'] ) ) {
|
88 |
// if the API response is invalid, $message may not be an array.
|
89 |
+
// if there are no messages from the API, it is returning a "No Entries Found" item with no key, so check for a key as well.
|
90 |
return;
|
91 |
}
|
92 |
|
css/_single_theme.css.php
CHANGED
@@ -19,7 +19,7 @@ $arrow_icons = FrmStylesHelper::arrow_icons();
|
|
19 |
.frm_forms.<?php echo esc_html( $style_class ); ?>{
|
20 |
max-width:<?php echo esc_html( $form_width . $important ); ?>;
|
21 |
direction:<?php echo esc_html( $direction . $important ); ?>;
|
22 |
-
<?php if ( 'rtl'
|
23 |
unicode-bidi:embed;
|
24 |
<?php } ?>
|
25 |
<?php if ( $center_form ) { ?>
|
19 |
.frm_forms.<?php echo esc_html( $style_class ); ?>{
|
20 |
max-width:<?php echo esc_html( $form_width . $important ); ?>;
|
21 |
direction:<?php echo esc_html( $direction . $important ); ?>;
|
22 |
+
<?php if ( 'rtl' === $direction ) { ?>
|
23 |
unicode-bidi:embed;
|
24 |
<?php } ?>
|
25 |
<?php if ( $center_form ) { ?>
|
css/custom_theme.css.php
CHANGED
@@ -16,10 +16,10 @@ if ( ! isset( $frm_style ) ) {
|
|
16 |
$frm_style = new FrmStyle();
|
17 |
}
|
18 |
|
19 |
-
$styles
|
20 |
$default_style = $frm_style->get_default_style( $styles );
|
21 |
-
$defaults
|
22 |
-
$important
|
23 |
|
24 |
?>
|
25 |
.with_frm_style{
|
16 |
$frm_style = new FrmStyle();
|
17 |
}
|
18 |
|
19 |
+
$styles = $frm_style->get_all();
|
20 |
$default_style = $frm_style->get_default_style( $styles );
|
21 |
+
$defaults = FrmStylesHelper::get_settings_for_output( $default_style );
|
22 |
+
$important = empty( $defaults['important_style'] ) ? '' : ' !important';
|
23 |
|
24 |
?>
|
25 |
.with_frm_style{
|
css/frm_grids.css
CHANGED
@@ -226,7 +226,6 @@
|
|
226 |
.frm_form_field.frm_last,
|
227 |
.frm_form_field.frm_alignright{
|
228 |
grid-column-end:-1;
|
229 |
-
grid-row-start: span 100;
|
230 |
justify-content: end;
|
231 |
}
|
232 |
|
226 |
.frm_form_field.frm_last,
|
227 |
.frm_form_field.frm_alignright{
|
228 |
grid-column-end:-1;
|
|
|
229 |
justify-content: end;
|
230 |
}
|
231 |
|
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: 5.0.
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
Author: Strategy11
|
2 |
/*
|
3 |
Plugin Name: Formidable Forms
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
+
Version: 5.0.10
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
Author: Strategy11
|
js/formidable.js
CHANGED
@@ -160,6 +160,10 @@ function frmFrontFormJS() {
|
|
160 |
).filter( ':not(.frm_optional)' );
|
161 |
if ( requiredFields.length ) {
|
162 |
for ( r = 0, rl = requiredFields.length; r < rl; r++ ) {
|
|
|
|
|
|
|
|
|
163 |
errors = checkRequiredField( requiredFields[r], errors );
|
164 |
}
|
165 |
}
|
@@ -192,12 +196,24 @@ function frmFrontFormJS() {
|
|
192 |
return errors;
|
193 |
}
|
194 |
|
195 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
if ( field.type === 'url' ) {
|
197 |
maybeAddHttpToUrl( field );
|
198 |
}
|
199 |
if ( jQuery( field ).closest( 'form' ).hasClass( 'frm_js_validate' ) ) {
|
200 |
-
validateField(
|
201 |
}
|
202 |
}
|
203 |
|
@@ -209,11 +225,11 @@ function frmFrontFormJS() {
|
|
209 |
}
|
210 |
}
|
211 |
|
212 |
-
function validateField(
|
213 |
var key,
|
214 |
-
errors = []
|
|
|
215 |
|
216 |
-
var $fieldCont = jQuery( field ).closest( '.frm_form_field' );
|
217 |
if ( $fieldCont.hasClass( 'frm_required_field' ) && ! jQuery( field ).hasClass( 'frm_optional' ) ) {
|
218 |
errors = checkRequiredField( field, errors );
|
219 |
}
|
@@ -241,7 +257,7 @@ function frmFrontFormJS() {
|
|
241 |
}
|
242 |
|
243 |
function checkRequiredField( field, errors ) {
|
244 |
-
var checkGroup,
|
245 |
val = '',
|
246 |
fieldID = '',
|
247 |
fileID = field.getAttribute( 'data-frmfile' );
|
@@ -266,8 +282,7 @@ function frmFrontFormJS() {
|
|
266 |
}
|
267 |
fieldID = fileID;
|
268 |
} else {
|
269 |
-
|
270 |
-
if ( fieldClasses.indexOf( 'frm_pos_none' ) !== -1 ) {
|
271 |
// skip hidden other fields
|
272 |
return errors;
|
273 |
}
|
@@ -285,15 +300,24 @@ function frmFrontFormJS() {
|
|
285 |
}
|
286 |
}
|
287 |
|
288 |
-
if (
|
289 |
-
fieldID = getFieldId( field, true );
|
290 |
-
} else {
|
291 |
fieldID = getFieldId( field, false );
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
}
|
293 |
|
294 |
-
if (
|
295 |
// set id for time field
|
296 |
fieldID = fieldID.replace( '-H', '' ).replace( '-m', '' );
|
|
|
|
|
|
|
|
|
|
|
297 |
}
|
298 |
|
299 |
placeholder = field.getAttribute( 'data-frmplaceholder' );
|
@@ -376,7 +400,7 @@ function frmFrontFormJS() {
|
|
376 |
errors[ 'conf_' + strippedFieldID ] = getFieldValidationMessage( confirmField, 'data-confmsg' );
|
377 |
}
|
378 |
} else {
|
379 |
-
validateField(
|
380 |
}
|
381 |
}
|
382 |
|
@@ -1348,7 +1372,7 @@ function frmFrontFormJS() {
|
|
1348 |
jQuery( document ).trigger( 'frmFieldChanged', [ this, fieldId, e ]);
|
1349 |
|
1350 |
if ( e.selfTriggered !== true ) {
|
1351 |
-
maybeValidateChange(
|
1352 |
}
|
1353 |
},
|
1354 |
|
160 |
).filter( ':not(.frm_optional)' );
|
161 |
if ( requiredFields.length ) {
|
162 |
for ( r = 0, rl = requiredFields.length; r < rl; r++ ) {
|
163 |
+
if ( hasClass( requiredFields[r], 'ed_button' ) ) {
|
164 |
+
// skip rich text field buttons.
|
165 |
+
continue;
|
166 |
+
}
|
167 |
errors = checkRequiredField( requiredFields[r], errors );
|
168 |
}
|
169 |
}
|
196 |
return errors;
|
197 |
}
|
198 |
|
199 |
+
/**
|
200 |
+
* @since 5.0.10
|
201 |
+
*
|
202 |
+
* @param {object} element
|
203 |
+
* @param {string} targetClass
|
204 |
+
* @returns {boolean}
|
205 |
+
*/
|
206 |
+
function hasClass( element, targetClass ) {
|
207 |
+
var className = ' ' + element.className + ' ';
|
208 |
+
return -1 !== className.indexOf( ' ' + targetClass + ' ' );
|
209 |
+
}
|
210 |
+
|
211 |
+
function maybeValidateChange( field ) {
|
212 |
if ( field.type === 'url' ) {
|
213 |
maybeAddHttpToUrl( field );
|
214 |
}
|
215 |
if ( jQuery( field ).closest( 'form' ).hasClass( 'frm_js_validate' ) ) {
|
216 |
+
validateField( field );
|
217 |
}
|
218 |
}
|
219 |
|
225 |
}
|
226 |
}
|
227 |
|
228 |
+
function validateField( field ) {
|
229 |
var key,
|
230 |
+
errors = [],
|
231 |
+
$fieldCont = jQuery( field ).closest( '.frm_form_field' );
|
232 |
|
|
|
233 |
if ( $fieldCont.hasClass( 'frm_required_field' ) && ! jQuery( field ).hasClass( 'frm_optional' ) ) {
|
234 |
errors = checkRequiredField( field, errors );
|
235 |
}
|
257 |
}
|
258 |
|
259 |
function checkRequiredField( field, errors ) {
|
260 |
+
var checkGroup, tempVal, i, placeholder,
|
261 |
val = '',
|
262 |
fieldID = '',
|
263 |
fileID = field.getAttribute( 'data-frmfile' );
|
282 |
}
|
283 |
fieldID = fileID;
|
284 |
} else {
|
285 |
+
if ( hasClass( field, 'frm_pos_none' ) ) {
|
|
|
286 |
// skip hidden other fields
|
287 |
return errors;
|
288 |
}
|
300 |
}
|
301 |
}
|
302 |
|
303 |
+
if ( hasClass( field, 'frm_other_input' ) ) {
|
|
|
|
|
304 |
fieldID = getFieldId( field, false );
|
305 |
+
|
306 |
+
if ( val === '' ) {
|
307 |
+
field = document.getElementById( field.id.replace( '-otext', '' ) );
|
308 |
+
}
|
309 |
+
} else {
|
310 |
+
fieldID = getFieldId( field, true );
|
311 |
}
|
312 |
|
313 |
+
if ( hasClass( field, 'frm_time_select' ) ) {
|
314 |
// set id for time field
|
315 |
fieldID = fieldID.replace( '-H', '' ).replace( '-m', '' );
|
316 |
+
} else if ( '[typed]' === field.getAttribute( 'name' ).substr( -7 ) ) {
|
317 |
+
if ( val === '' ) {
|
318 |
+
val = jQuery( field ).closest( '.frm_form_field' ).find( '[name="' + field.getAttribute( 'name' ).replace( '[typed]', '[output]' ) + '"]' ).val();
|
319 |
+
}
|
320 |
+
fieldID = fieldID.replace( '-typed', '' );
|
321 |
}
|
322 |
|
323 |
placeholder = field.getAttribute( 'data-frmplaceholder' );
|
400 |
errors[ 'conf_' + strippedFieldID ] = getFieldValidationMessage( confirmField, 'data-confmsg' );
|
401 |
}
|
402 |
} else {
|
403 |
+
validateField( confirmField );
|
404 |
}
|
405 |
}
|
406 |
|
1372 |
jQuery( document ).trigger( 'frmFieldChanged', [ this, fieldId, e ]);
|
1373 |
|
1374 |
if ( e.selfTriggered !== true ) {
|
1375 |
+
maybeValidateChange( this );
|
1376 |
}
|
1377 |
},
|
1378 |
|
js/formidable.min.js
CHANGED
@@ -3,40 +3,40 @@ function frmFrontFormJS(){var action="";var jsErrors=[];function maybeShowLabel(
|
|
3 |
"";if(fieldName===""){if(field instanceof jQuery)fieldName=field.data("name");else fieldName=field.getAttribute("data-name");if(typeof fieldName==="undefined")fieldName="";if(fieldName!==""&&fieldName)return fieldName;return 0}nameParts=fieldName.replace("item_meta[","").replace("[]","").split("]");if(nameParts.length<1)return 0;nameParts=nameParts.filter(function(n){return n!==""});fieldId=nameParts[0];if(nameParts.length===1)return fieldId;if(nameParts[1]==="[form"||nameParts[1]==="[row_ids")return 0;
|
4 |
if(jQuery('input[name="item_meta['+fieldId+'][form]"]').length){fieldId=nameParts[2].replace("[","");isRepeating=true}if("other"===fieldId)if(isRepeating)fieldId=nameParts[3].replace("[","");else fieldId=nameParts[1].replace("[","");if(fullID===true)if(fieldId===nameParts[0])fieldId=fieldId+"-"+nameParts[1].replace("[","");else fieldId=fieldId+"-"+nameParts[0]+"-"+nameParts[1].replace("[","");return fieldId}function disableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled",
|
5 |
"disabled")}function enableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').prop("disabled",false)}function disableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","none")}function enableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","")}function validateForm(object){var r,rl,n,nl,fields,field,value,requiredFields,errors=[];requiredFields=jQuery(object).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");
|
6 |
-
if(requiredFields.length)for(r=0,rl=requiredFields.length;r<rl;r++)errors=checkRequiredField(requiredFields[r],errors)
|
7 |
-
else if(field.type==="url")errors=checkUrlField(field,errors);else if(field.pattern!==null)errors=checkPatternField(field,errors)}errors=validateRecaptcha(object,errors);return errors}function maybeValidateChange(
|
8 |
-
""&&matches===null)field.value="http://"+url}function validateField(
|
9 |
-
else if(field.type==="url")errors=checkUrlField(field,errors);else if(field.pattern!==null)errors=checkPatternField(field,errors);removeFieldError($fieldCont);if(Object.keys(errors).length>0)for(key in errors)addFieldError($fieldCont,key,errors)}function checkRequiredField(field,errors){var checkGroup,
|
10 |
-
jQuery('input[name="'+field.name+'"]').closest(".frm_required_field").find("input:checked");jQuery(checkGroup).each(function(){val=this.value})}else if(field.type==="file"||fileID){if(typeof fileID==="undefined"){fileID=getFieldId(field,true);fileID=fileID.replace("file","")}if(typeof errors[fileID]==="undefined")val=getFileVals(fileID);fieldID=fileID}else{
|
11 |
-
"string"){tempVal=val;val="";for(i=0;i<tempVal.length;i++)if(tempVal[i]!=="")val=tempVal[i]}if(
|
12 |
-
getFieldValidationMessage(field,"data-reqmsg")}return errors}function getFileVals(fileID){var val="",fileFields=jQuery('input[name="file'+fileID+'"], input[name="file'+fileID+'[]"], input[name^="item_meta['+
|
13 |
-
getFieldValidationMessage(field,"data-invmsg")}return errors}function checkEmailField(field,errors){var fieldID=getFieldId(field,true),pattern=/^(([^<>()\[\]\\.,;:\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;
|
14 |
-
errors);return errors}function confirmField(field,errors){var value,confirmValue,firstField,fieldID=getFieldId(field,true),strippedId=field.id.replace("conf_",""),strippedFieldID=fieldID.replace("conf_",""),confirmField=document.getElementById(strippedId.replace("field_","field_conf_"));
|
15 |
-
if(""!==value&&""!==confirmValue&&value!==confirmValue)errors["conf_"+strippedFieldID]=getFieldValidationMessage(confirmField,"data-confmsg")}else validateField(
|
16 |
-
field.value,format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){fieldID=getFieldId(field,true);if(!(fieldID in errors)){format=new RegExp("^"+format+"$","i");if(format.test(text)===false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}}return errors}function hasInvisibleRecaptcha(object){var recaptcha,
|
17 |
-
if(recaptcha.length){recaptchaID=recaptcha.data("rid");alreadyChecked=grecaptcha.getResponse(recaptchaID);if(alreadyChecked.length===0)return recaptcha;else return false}else return false}function executeInvisibleRecaptcha(invisibleRecaptcha){var recaptchaID=invisibleRecaptcha.data("rid");grecaptcha.reset(recaptchaID);grecaptcha.execute(recaptchaID)}
|
18 |
-
$recaptcha.data("rid");try{response=grecaptcha.getResponse(recaptchaID)}catch(e){if(jQuery(form).find('input[name="recaptcha_checked"]').length)return errors;else response=""}if(response.length===0){fieldContainer=$recaptcha.closest(".frm_form_field");fieldID=fieldContainer.attr("id").replace("frm_field_","").replace("_container",
|
19 |
-
msg&&shouldWrapErrorHtmlAroundMessageType(messageType)){errorHtml=field.getAttribute("data-error-html");if(null!==errorHtml){errorHtml=errorHtml.replace(/\+/g,"%20");msg=decodeURIComponent(errorHtml).replace("[error]",msg);msg=msg.replace("[key]",getFieldId(field,false))}}return msg}function shouldWrapErrorHtmlAroundMessageType(type){return"pattern"!==
|
20 |
-
frmProForm.goingToPreviousPage(object)))validate=false;return validate}function getFormErrors(object,action){var fieldset;if(typeof action==="undefined")jQuery(object).find('input[name="frm_action"]').val();fieldset=jQuery(object).find(".frm_form_field");fieldset.addClass("frm_doing_ajax");jQuery.ajax({type:"POST",url:frm_js.ajax_url,
|
21 |
-
delay,$fieldCont,key,inCollapsedSection,frmTrigger,defaultResponse={"content":"","errors":{},"pass":false};if(response===null)response=defaultResponse;response=response.replace(/^\s+|\s+$/g,"");if(response.indexOf("{")===0)response=JSON.parse(response);else response=defaultResponse;if(typeof response.redirect!=="undefined"){jQuery(document).trigger("frmBeforeFormRedirect",
|
22 |
-
|
23 |
-
"function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");input='<input type="hidden" name="recaptcha_checked" value="'+
|
24 |
-
if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection
|
25 |
-
inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);
|
26 |
-
[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(contSubmit)object.submit();else{jQuery(object).prepend(response.error_message);checkForErrorsAndMaybeSetFocus()}}else{showFileLoading(object);object.submit()}},error:function(){jQuery(object).find('input[type="submit"], input[type="button"]').prop("disabled",false);object.submit()}})}function afterFormSubmitted(object,response){var formCompleted=
|
27 |
-
[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")
|
28 |
-
c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");
|
29 |
-
return kvp.join("&")}function addFieldError($fieldCont,key,jsErrors){var input,id,describedBy;if($fieldCont.length&&$fieldCont.is(":visible")){$fieldCont.addClass("frm_blank_field");input=$fieldCont.find("input, select, textarea");id="frm_error_field_"+key;describedBy=input.attr("aria-describedby");if(typeof frmThemeOverride_frmPlaceError==="function")frmThemeOverride_frmPlaceError(key,
|
30 |
-
id+'">'+jsErrors[key]+"</div>");if(typeof describedBy==="undefined")describedBy=id;else if(describedBy.indexOf(id)===-1)describedBy=describedBy+" "+id;input.attr("aria-describedby",describedBy)}input.attr("aria-invalid",true);jQuery(document).trigger("frmAddFieldError",[$fieldCont,key,jsErrors])}}function removeFieldError($fieldCont){var errorMessage=$fieldCont.find(".frm_error"),
|
31 |
-
|
32 |
-
if(field.length)frmFrontForm.scrollMsg(field,object,true)}function showSubmitLoading($object){showLoadingIndicator($object);disableSubmitButton($object);disableSaveDraft($object)}function showLoadingIndicator($object){if(!$object.hasClass("frm_loading_form")&&!$object.hasClass("frm_loading_prev")){addLoadingClass($object);$object.trigger("frmStartFormLoading")}}function addLoadingClass($object){var loadingClass=
|
33 |
-
function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading($object,enable,processesRunning){var loadingForm;if(processesRunning>0)return;loadingForm=jQuery(".frm_loading_form");loadingForm.removeClass("frm_loading_form");loadingForm.removeClass("frm_loading_prev");loadingForm.trigger("frmEndFormLoading");if(enable==="enable"){enableSubmitButton(loadingForm);
|
34 |
-
loading=document.getElementById("frm_loading");if(loading!==null){fileval=jQuery(object).find("input[type=file]").val();if(typeof fileval!=="undefined"&&fileval!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}}function clearDefault(){toggleDefault(jQuery(this),"clear")}function replaceDefault(){toggleDefault(jQuery(this),"replace")}function toggleDefault($thisField,e){var thisVal,v=$thisField.data("frmval").replace(/(\n|\r\n)/g,
|
35 |
-
thisVal=$thisField.val().replace(/(\n|\r\n)/g,"\r");if("replace"===e){if(thisVal==="")$thisField.addClass("frm_default").val(v)}else if(thisVal==v)$thisField.removeClass("frm_default").val("")}function resendEmail(){var $link=jQuery(this),entryId=this.getAttribute("data-eid"),formId=this.getAttribute("data-fid"),label=$link.find(".frm_link_label");if(label.length<1)label=$link;label.append('<span class="frm-wait"></span>');jQuery.ajax({type:"POST",
|
36 |
-
entry_id:entryId,form_id:formId,nonce:frm_js.nonce},success:function(msg){var admin=document.getElementById("wpbody");if(admin===null)label.html(msg);else{label.html("");$link.after(msg)}}});return false}function confirmClick(){var message=jQuery(this).data("frmconfirm");return confirm(message)}function toggleDiv(){var div=jQuery(this).data("frmtoggle");if(jQuery(div).is(":visible"))jQuery(div).slideUp("fast");else jQuery(div).slideDown("fast");
|
37 |
-
from;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(elt){len=this.length>>>0;from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0)from+=len;for(;from<len;from++)if(from in this&&this[from]===elt)return from;return-1}}function addTrimFallbackForIE8(){if(typeof String.prototype.trim!=="function")String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){var t,
|
38 |
-
function(fun){if(this===void 0||this===null)throw new TypeError;t=Object(this);len=t.length>>>0;if(typeof fun!=="function")throw new TypeError;res=[];thisp=arguments[1];for(i=0;i<len;i++)if(i in t){val=t[i];if(fun.call(thisp,val,i,t))res.push(val)}return res}}function addKeysFallbackForIE8(){var keys,i;if(!Object.keys)Object.keys=function(obj){keys=[];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}function onHoneypotFieldChange(){var css=
|
39 |
-
function changeFocusWhenClickComboFieldLabel(){var label;var comboInputsContainer=document.querySelectorAll(".frm_combo_inputs_container");comboInputsContainer.forEach(function(inputsContainer){if(!inputsContainer.closest(".frm_form_field"))return;label=inputsContainer.closest(".frm_form_field").querySelector(".frm_primary_label");if(!label)return;label.addEventListener("click",function(e){inputsContainer.querySelector(".frm_form_field:first-child input, .frm_form_field:first-child select, .frm_form_field:first-child textarea").focus()})})}
|
40 |
function checkForErrorsAndMaybeSetFocus(){var errors,element,timeoutCallback;errors=document.querySelectorAll(".frm_form_field .frm_error");if(!errors.length)return;element=errors[0];do{element=element.previousSibling;if(-1!==["input","select","textarea"].indexOf(element.nodeName.toLowerCase())){element.focus();break}if("undefined"!==typeof element.classList){if(element.classList.contains("html-active"))timeoutCallback=function(){var textarea=element.querySelector("textarea");if(null!==textarea)textarea.focus()};
|
41 |
else if(element.classList.contains("tmce-active"))timeoutCallback=function(){tinyMCE.activeEditor.focus()};if("function"===typeof timeoutCallback){setTimeout(timeoutCallback,0);break}}}while(element.previousSibling)}return{init:function(){jQuery(document).off("submit.formidable",".frm-show-form");jQuery(document).on("submit.formidable",".frm-show-form",frmFrontForm.submitForm);jQuery(".frm-show-form input[onblur], .frm-show-form textarea[onblur]").each(function(){if(jQuery(this).val()==="")jQuery(this).trigger("blur")});
|
42 |
jQuery(document).on("focus",".frm_toggle_default",clearDefault);jQuery(document).on("blur",".frm_toggle_default",replaceDefault);jQuery(".frm_toggle_default").trigger("blur");jQuery(document.getElementById("frm_resend_email")).on("click",resendEmail);jQuery(document).on("change",'.frm-show-form input[name^="item_meta"], .frm-show-form select[name^="item_meta"], .frm-show-form textarea[name^="item_meta"]',frmFrontForm.fieldValueChanged);jQuery(document).on("change keyup",".frm-show-form .frm_inside_container input, .frm-show-form .frm_inside_container select, .frm-show-form .frm_inside_container textarea",
|
@@ -50,7 +50,7 @@ getAjaxFormErrors:function(object){var customErrors,key;jsErrors=validateForm(ob
|
|
50 |
"_container");if($fieldCont.length)addFieldError($fieldCont,key,jsErrors);else delete jsErrors[key]}scrollToFirstField(object);checkForErrorsAndMaybeSetFocus()},checkFormErrors:function(object,action){getFormErrors(object,action)},checkRequiredField:function(field,errors){return checkRequiredField(field,errors)},showSubmitLoading:function($object){showSubmitLoading($object)},removeSubmitLoading:function($object,enable,processesRunning){removeSubmitLoading($object,enable,processesRunning)},scrollToID:function(id){var object=
|
51 |
jQuery(document.getElementById(id));frmFrontForm.scrollMsg(object,false)},scrollMsg:function(id,object,animate){var newPos,m,b,screenTop,screenBottom,scrollObj="";if(typeof object==="undefined"){scrollObj=jQuery(document.getElementById("frm_form_"+id+"_container"));if(scrollObj.length<1)return}else if(typeof id==="string")scrollObj=jQuery(object).find("#frm_field_"+id+"_container");else scrollObj=id;jQuery(scrollObj).trigger("focus");newPos=scrollObj.offset().top;if(!newPos||frm_js.offset==="-1")return;
|
52 |
newPos=newPos-frm_js.offset;m=jQuery("html").css("margin-top");b=jQuery("body").css("margin-top");if(m||b)newPos=newPos-parseInt(m)-parseInt(b);if(newPos&&window.innerHeight){screenTop=document.documentElement.scrollTop||document.body.scrollTop;screenBottom=screenTop+window.innerHeight;if(newPos>screenBottom||newPos<screenTop){if(typeof animate==="undefined")jQuery(window).scrollTop(newPos);else jQuery("html,body").animate({scrollTop:newPos},500);return false}}},fieldValueChanged:function(e){var fieldId=
|
53 |
-
frmFrontForm.getFieldId(this,false);if(!fieldId||typeof fieldId==="undefined")return;if(e.frmTriggered&&e.frmTriggered==fieldId)return;jQuery(document).trigger("frmFieldChanged",[this,fieldId,e]);if(e.selfTriggered!==true)maybeValidateChange(
|
54 |
if(typeof frmProForm!=="undefined")return frmProForm.goingToPreviousPage(object)},hideOrShowFields:function(){console.warn("DEPRECATED: function frmFrontForm.hideOrShowFields in v3.0 use frmProForm.hideOrShowFields");if(typeof frmProForm!=="undefined")frmProForm.hideOrShowFields()},hidePreviouslyHiddenFields:function(){console.warn("DEPRECATED: function frmFrontForm.hidePreviouslyHiddenFields in v3.0 use frmProForm.hidePreviouslyHiddenFields");if(typeof frmProForm!=="undefined")frmProForm.hidePreviouslyHiddenFields()},
|
55 |
checkDependentDynamicFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentDynamicFields in v3.0 use frmProForm.checkDependentDynamicFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentDynamicFields(ids)},checkDependentLookupFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentLookupFields in v3.0 use frmProForm.checkDependentLookupFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentLookupFields(ids)},loadGoogle:function(){console.warn("DEPRECATED: function frmFrontForm.loadGoogle in v3.0 use frmProForm.loadGoogle");
|
56 |
frmProForm.loadGoogle()},escapeHtml:function(text){return text.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},invisible:function(classes){jQuery(classes).css("visibility","hidden")},visible:function(classes){jQuery(classes).css("visibility","visible")}}}frmFrontForm=frmFrontFormJS();jQuery(document).ready(function(){frmFrontForm.init()});
|
3 |
"";if(fieldName===""){if(field instanceof jQuery)fieldName=field.data("name");else fieldName=field.getAttribute("data-name");if(typeof fieldName==="undefined")fieldName="";if(fieldName!==""&&fieldName)return fieldName;return 0}nameParts=fieldName.replace("item_meta[","").replace("[]","").split("]");if(nameParts.length<1)return 0;nameParts=nameParts.filter(function(n){return n!==""});fieldId=nameParts[0];if(nameParts.length===1)return fieldId;if(nameParts[1]==="[form"||nameParts[1]==="[row_ids")return 0;
|
4 |
if(jQuery('input[name="item_meta['+fieldId+'][form]"]').length){fieldId=nameParts[2].replace("[","");isRepeating=true}if("other"===fieldId)if(isRepeating)fieldId=nameParts[3].replace("[","");else fieldId=nameParts[1].replace("[","");if(fullID===true)if(fieldId===nameParts[0])fieldId=fieldId+"-"+nameParts[1].replace("[","");else fieldId=fieldId+"-"+nameParts[0]+"-"+nameParts[1].replace("[","");return fieldId}function disableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').attr("disabled",
|
5 |
"disabled")}function enableSubmitButton($form){$form.find('input[type="submit"], input[type="button"], button[type="submit"]').prop("disabled",false)}function disableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","none")}function enableSaveDraft($form){$form.find("a.frm_save_draft").css("pointer-events","")}function validateForm(object){var r,rl,n,nl,fields,field,value,requiredFields,errors=[];requiredFields=jQuery(object).find(".frm_required_field:visible input, .frm_required_field:visible select, .frm_required_field:visible textarea").filter(":not(.frm_optional)");
|
6 |
+
if(requiredFields.length)for(r=0,rl=requiredFields.length;r<rl;r++){if(hasClass(requiredFields[r],"ed_button"))continue;errors=checkRequiredField(requiredFields[r],errors)}fields=jQuery(object).find("input,select,textarea");if(fields.length)for(n=0,nl=fields.length;n<nl;n++){field=fields[n];value=field.value;if(value!=="")if(field.type==="hidden");else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.type==="email")errors=checkEmailField(field,errors);else if(field.type===
|
7 |
+
"password")errors=checkPasswordField(field,errors);else if(field.type==="url")errors=checkUrlField(field,errors);else if(field.pattern!==null)errors=checkPatternField(field,errors)}errors=validateRecaptcha(object,errors);return errors}function hasClass(element,targetClass){var className=" "+element.className+" ";return-1!==className.indexOf(" "+targetClass+" ")}function maybeValidateChange(field){if(field.type==="url")maybeAddHttpToUrl(field);if(jQuery(field).closest("form").hasClass("frm_js_validate"))validateField(field)}
|
8 |
+
function maybeAddHttpToUrl(field){var url=field.value;var matches=url.match(/^(https?|ftps?|mailto|news|feed|telnet):/);if(field.value!==""&&matches===null)field.value="http://"+url}function validateField(field){var key,errors=[],$fieldCont=jQuery(field).closest(".frm_form_field");if($fieldCont.hasClass("frm_required_field")&&!jQuery(field).hasClass("frm_optional"))errors=checkRequiredField(field,errors);if(errors.length<1)if(field.type==="email")errors=checkEmailField(field,errors);else if(field.type===
|
9 |
+
"password")errors=checkPasswordField(field,errors);else if(field.type==="number")errors=checkNumberField(field,errors);else if(field.type==="url")errors=checkUrlField(field,errors);else if(field.pattern!==null)errors=checkPatternField(field,errors);removeFieldError($fieldCont);if(Object.keys(errors).length>0)for(key in errors)addFieldError($fieldCont,key,errors)}function checkRequiredField(field,errors){var checkGroup,tempVal,i,placeholder,val="",fieldID="",fileID=field.getAttribute("data-frmfile");
|
10 |
+
if(field.type==="hidden"&&fileID===null)return errors;if(field.type==="checkbox"||field.type==="radio"){checkGroup=jQuery('input[name="'+field.name+'"]').closest(".frm_required_field").find("input:checked");jQuery(checkGroup).each(function(){val=this.value})}else if(field.type==="file"||fileID){if(typeof fileID==="undefined"){fileID=getFieldId(field,true);fileID=fileID.replace("file","")}if(typeof errors[fileID]==="undefined")val=getFileVals(fileID);fieldID=fileID}else{if(hasClass(field,"frm_pos_none"))return errors;
|
11 |
+
val=jQuery(field).val();if(val===null)val="";else if(typeof val!=="string"){tempVal=val;val="";for(i=0;i<tempVal.length;i++)if(tempVal[i]!=="")val=tempVal[i]}if(hasClass(field,"frm_other_input")){fieldID=getFieldId(field,false);if(val==="")field=document.getElementById(field.id.replace("-otext",""))}else fieldID=getFieldId(field,true);if(hasClass(field,"frm_time_select"))fieldID=fieldID.replace("-H","").replace("-m","");else if("[typed]"===field.getAttribute("name").substr(-7)){if(val==="")val=jQuery(field).closest(".frm_form_field").find('[name="'+
|
12 |
+
field.getAttribute("name").replace("[typed]","[output]")+'"]').val();fieldID=fieldID.replace("-typed","")}placeholder=field.getAttribute("data-frmplaceholder");if(placeholder!==null&&val===placeholder)val=""}if(val===""){if(fieldID==="")fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-reqmsg")}return errors}function getFileVals(fileID){var val="",fileFields=jQuery('input[name="file'+fileID+'"], input[name="file'+fileID+'[]"], input[name^="item_meta['+
|
13 |
+
fileID+']"]');fileFields.each(function(){if(val==="")val=this.value});return val}function checkUrlField(field,errors){var fieldID,url=field.value;if(url!==""&&!/^http(s)?:\/\/(?:localhost|(?:[\da-z\.-]+\.[\da-z\.-]+))/i.test(url)){fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}return errors}function checkEmailField(field,errors){var fieldID=getFieldId(field,true),pattern=/^(([^<>()\[\]\\.,;:\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;
|
14 |
+
if(""!==field.value&&pattern.test(field.value)===false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg");confirmField(field,errors);return errors}function checkPasswordField(field,errors){confirmField(field,errors);return errors}function confirmField(field,errors){var value,confirmValue,firstField,fieldID=getFieldId(field,true),strippedId=field.id.replace("conf_",""),strippedFieldID=fieldID.replace("conf_",""),confirmField=document.getElementById(strippedId.replace("field_","field_conf_"));
|
15 |
+
if(confirmField===null||typeof errors["conf_"+strippedFieldID]!=="undefined")return;if(fieldID!==strippedFieldID){firstField=document.getElementById(strippedId);value=firstField.value;confirmValue=confirmField.value;if(""!==value&&""!==confirmValue&&value!==confirmValue)errors["conf_"+strippedFieldID]=getFieldValidationMessage(confirmField,"data-confmsg")}else validateField(confirmField)}function checkNumberField(field,errors){var fieldID,number=field.value;if(number!==""&&isNaN(number/1)!==false){fieldID=
|
16 |
+
getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}return errors}function checkPatternField(field,errors){var fieldID,text=field.value,format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){fieldID=getFieldId(field,true);if(!(fieldID in errors)){format=new RegExp("^"+format+"$","i");if(format.test(text)===false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}}return errors}function hasInvisibleRecaptcha(object){var recaptcha,
|
17 |
+
recaptchaID,alreadyChecked;if(isGoingToPrevPage(object))return false;recaptcha=jQuery(object).find('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');if(recaptcha.length){recaptchaID=recaptcha.data("rid");alreadyChecked=grecaptcha.getResponse(recaptchaID);if(alreadyChecked.length===0)return recaptcha;else return false}else return false}function executeInvisibleRecaptcha(invisibleRecaptcha){var recaptchaID=invisibleRecaptcha.data("rid");grecaptcha.reset(recaptchaID);grecaptcha.execute(recaptchaID)}
|
18 |
+
function validateRecaptcha(form,errors){var recaptchaID,response,fieldContainer,fieldID,$recaptcha=jQuery(form).find(".frm-g-recaptcha");if($recaptcha.length){recaptchaID=$recaptcha.data("rid");try{response=grecaptcha.getResponse(recaptchaID)}catch(e){if(jQuery(form).find('input[name="recaptcha_checked"]').length)return errors;else response=""}if(response.length===0){fieldContainer=$recaptcha.closest(".frm_form_field");fieldID=fieldContainer.attr("id").replace("frm_field_","").replace("_container",
|
19 |
+
"");errors[fieldID]=""}}return errors}function getFieldValidationMessage(field,messageType){var msg,errorHtml;msg=field.getAttribute(messageType);if(null===msg)msg="";if(""!==msg&&shouldWrapErrorHtmlAroundMessageType(messageType)){errorHtml=field.getAttribute("data-error-html");if(null!==errorHtml){errorHtml=errorHtml.replace(/\+/g,"%20");msg=decodeURIComponent(errorHtml).replace("[error]",msg);msg=msg.replace("[key]",getFieldId(field,false))}}return msg}function shouldWrapErrorHtmlAroundMessageType(type){return"pattern"!==
|
20 |
+
type}function shouldJSValidate(object){var validate=jQuery(object).hasClass("frm_js_validate");if(validate&&typeof frmProForm!=="undefined"&&(frmProForm.savingDraft(object)||frmProForm.goingToPreviousPage(object)))validate=false;return validate}function getFormErrors(object,action){var fieldset;if(typeof action==="undefined")jQuery(object).find('input[name="frm_action"]').val();fieldset=jQuery(object).find(".frm_form_field");fieldset.addClass("frm_doing_ajax");jQuery.ajax({type:"POST",url:frm_js.ajax_url,
|
21 |
+
data:jQuery(object).serialize()+"&action=frm_entries_"+action+"&nonce="+frm_js.nonce,success:function(response){var formID,replaceContent,pageOrder,formReturned,contSubmit,delay,$fieldCont,key,inCollapsedSection,frmTrigger,defaultResponse={"content":"","errors":{},"pass":false};if(response===null)response=defaultResponse;response=response.replace(/^\s+|\s+$/g,"");if(response.indexOf("{")===0)response=JSON.parse(response);else response=defaultResponse;if(typeof response.redirect!=="undefined"){jQuery(document).trigger("frmBeforeFormRedirect",
|
22 |
+
[object,response]);window.location=response.redirect}else if(response.content!==""){removeSubmitLoading(jQuery(object));if(frm_js.offset!=-1)frmFrontForm.scrollMsg(jQuery(object),false);formID=jQuery(object).find('input[name="form_id"]').val();response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);delay=maybeSlideOut(replaceContent,response.content);setTimeout(function(){var container,
|
23 |
+
input,previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");input='<input type="hidden" name="recaptcha_checked" value="'+
|
24 |
+
response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=
|
25 |
+
$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);
|
26 |
+
else grecaptcha.reset()});jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(contSubmit)object.submit();else{jQuery(object).prepend(response.error_message);checkForErrorsAndMaybeSetFocus()}}else{showFileLoading(object);object.submit()}},error:function(){jQuery(object).find('input[type="submit"], input[type="button"]').prop("disabled",false);object.submit()}})}function afterFormSubmitted(object,response){var formCompleted=
|
27 |
+
jQuery(response.content).find(".frm_message");if(formCompleted.length)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")!==
|
28 |
+
-1){c=oldContent.children();if(newContent.indexOf(" frm_going_back")!==-1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");
|
29 |
+
i=kvp.length;while(i--){x=kvp[i].split("=");if(x[0]==key){x[1]=value;kvp[i]=x.join("=");break}}if(i<0)kvp[kvp.length]=[key,value].join("=");return kvp.join("&")}function addFieldError($fieldCont,key,jsErrors){var input,id,describedBy;if($fieldCont.length&&$fieldCont.is(":visible")){$fieldCont.addClass("frm_blank_field");input=$fieldCont.find("input, select, textarea");id="frm_error_field_"+key;describedBy=input.attr("aria-describedby");if(typeof frmThemeOverride_frmPlaceError==="function")frmThemeOverride_frmPlaceError(key,
|
30 |
+
jsErrors);else{if(-1!==jsErrors[key].indexOf("<div"))$fieldCont.append(jsErrors[key]);else $fieldCont.append('<div class="frm_error" id="'+id+'">'+jsErrors[key]+"</div>");if(typeof describedBy==="undefined")describedBy=id;else if(describedBy.indexOf(id)===-1)describedBy=describedBy+" "+id;input.attr("aria-describedby",describedBy)}input.attr("aria-invalid",true);jQuery(document).trigger("frmAddFieldError",[$fieldCont,key,jsErrors])}}function removeFieldError($fieldCont){var errorMessage=$fieldCont.find(".frm_error"),
|
31 |
+
errorId=errorMessage.attr("id"),input=$fieldCont.find("input, select, textarea"),describedBy=input.attr("aria-describedby");$fieldCont.removeClass("frm_blank_field has-error");errorMessage.remove();input.attr("aria-invalid",false);if(typeof describedBy!=="undefined"){describedBy=describedBy.replace(errorId,"");input.attr("aria-describedby",describedBy)}}function removeAllErrors(){jQuery(".form-field").removeClass("frm_blank_field has-error");jQuery(".form-field .frm_error").replaceWith("");jQuery(".frm_error_style").remove()}
|
32 |
+
function scrollToFirstField(object){var field=jQuery(object).find(".frm_blank_field").first();if(field.length)frmFrontForm.scrollMsg(field,object,true)}function showSubmitLoading($object){showLoadingIndicator($object);disableSubmitButton($object);disableSaveDraft($object)}function showLoadingIndicator($object){if(!$object.hasClass("frm_loading_form")&&!$object.hasClass("frm_loading_prev")){addLoadingClass($object);$object.trigger("frmStartFormLoading")}}function addLoadingClass($object){var loadingClass=
|
33 |
+
isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loadingClass)}function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading($object,enable,processesRunning){var loadingForm;if(processesRunning>0)return;loadingForm=jQuery(".frm_loading_form");loadingForm.removeClass("frm_loading_form");loadingForm.removeClass("frm_loading_prev");loadingForm.trigger("frmEndFormLoading");if(enable==="enable"){enableSubmitButton(loadingForm);
|
34 |
+
enableSaveDraft(loadingForm)}}function showFileLoading(object){var fileval,loading=document.getElementById("frm_loading");if(loading!==null){fileval=jQuery(object).find("input[type=file]").val();if(typeof fileval!=="undefined"&&fileval!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}}function clearDefault(){toggleDefault(jQuery(this),"clear")}function replaceDefault(){toggleDefault(jQuery(this),"replace")}function toggleDefault($thisField,e){var thisVal,v=$thisField.data("frmval").replace(/(\n|\r\n)/g,
|
35 |
+
"\r");if(v===""||typeof v==="undefined")return false;thisVal=$thisField.val().replace(/(\n|\r\n)/g,"\r");if("replace"===e){if(thisVal==="")$thisField.addClass("frm_default").val(v)}else if(thisVal==v)$thisField.removeClass("frm_default").val("")}function resendEmail(){var $link=jQuery(this),entryId=this.getAttribute("data-eid"),formId=this.getAttribute("data-fid"),label=$link.find(".frm_link_label");if(label.length<1)label=$link;label.append('<span class="frm-wait"></span>');jQuery.ajax({type:"POST",
|
36 |
+
url:frm_js.ajax_url,data:{action:"frm_entries_send_email",entry_id:entryId,form_id:formId,nonce:frm_js.nonce},success:function(msg){var admin=document.getElementById("wpbody");if(admin===null)label.html(msg);else{label.html("");$link.after(msg)}}});return false}function confirmClick(){var message=jQuery(this).data("frmconfirm");return confirm(message)}function toggleDiv(){var div=jQuery(this).data("frmtoggle");if(jQuery(div).is(":visible"))jQuery(div).slideUp("fast");else jQuery(div).slideDown("fast");
|
37 |
+
return false}function addIndexOfFallbackForIE8(){var len,from;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(elt){len=this.length>>>0;from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0)from+=len;for(;from<len;from++)if(from in this&&this[from]===elt)return from;return-1}}function addTrimFallbackForIE8(){if(typeof String.prototype.trim!=="function")String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){var t,
|
38 |
+
len,res,thisp,i,val;if(!Array.prototype.filter)Array.prototype.filter=function(fun){if(this===void 0||this===null)throw new TypeError;t=Object(this);len=t.length>>>0;if(typeof fun!=="function")throw new TypeError;res=[];thisp=arguments[1];for(i=0;i<len;i++)if(i in t){val=t[i];if(fun.call(thisp,val,i,t))res.push(val)}return res}}function addKeysFallbackForIE8(){var keys,i;if(!Object.keys)Object.keys=function(obj){keys=[];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}function onHoneypotFieldChange(){var css=
|
39 |
+
jQuery(this).css("box-shadow");if(css.match(/inset/))this.parentNode.removeChild(this)}function changeFocusWhenClickComboFieldLabel(){var label;var comboInputsContainer=document.querySelectorAll(".frm_combo_inputs_container");comboInputsContainer.forEach(function(inputsContainer){if(!inputsContainer.closest(".frm_form_field"))return;label=inputsContainer.closest(".frm_form_field").querySelector(".frm_primary_label");if(!label)return;label.addEventListener("click",function(e){inputsContainer.querySelector(".frm_form_field:first-child input, .frm_form_field:first-child select, .frm_form_field:first-child textarea").focus()})})}
|
40 |
function checkForErrorsAndMaybeSetFocus(){var errors,element,timeoutCallback;errors=document.querySelectorAll(".frm_form_field .frm_error");if(!errors.length)return;element=errors[0];do{element=element.previousSibling;if(-1!==["input","select","textarea"].indexOf(element.nodeName.toLowerCase())){element.focus();break}if("undefined"!==typeof element.classList){if(element.classList.contains("html-active"))timeoutCallback=function(){var textarea=element.querySelector("textarea");if(null!==textarea)textarea.focus()};
|
41 |
else if(element.classList.contains("tmce-active"))timeoutCallback=function(){tinyMCE.activeEditor.focus()};if("function"===typeof timeoutCallback){setTimeout(timeoutCallback,0);break}}}while(element.previousSibling)}return{init:function(){jQuery(document).off("submit.formidable",".frm-show-form");jQuery(document).on("submit.formidable",".frm-show-form",frmFrontForm.submitForm);jQuery(".frm-show-form input[onblur], .frm-show-form textarea[onblur]").each(function(){if(jQuery(this).val()==="")jQuery(this).trigger("blur")});
|
42 |
jQuery(document).on("focus",".frm_toggle_default",clearDefault);jQuery(document).on("blur",".frm_toggle_default",replaceDefault);jQuery(".frm_toggle_default").trigger("blur");jQuery(document.getElementById("frm_resend_email")).on("click",resendEmail);jQuery(document).on("change",'.frm-show-form input[name^="item_meta"], .frm-show-form select[name^="item_meta"], .frm-show-form textarea[name^="item_meta"]',frmFrontForm.fieldValueChanged);jQuery(document).on("change keyup",".frm-show-form .frm_inside_container input, .frm-show-form .frm_inside_container select, .frm-show-form .frm_inside_container textarea",
|
50 |
"_container");if($fieldCont.length)addFieldError($fieldCont,key,jsErrors);else delete jsErrors[key]}scrollToFirstField(object);checkForErrorsAndMaybeSetFocus()},checkFormErrors:function(object,action){getFormErrors(object,action)},checkRequiredField:function(field,errors){return checkRequiredField(field,errors)},showSubmitLoading:function($object){showSubmitLoading($object)},removeSubmitLoading:function($object,enable,processesRunning){removeSubmitLoading($object,enable,processesRunning)},scrollToID:function(id){var object=
|
51 |
jQuery(document.getElementById(id));frmFrontForm.scrollMsg(object,false)},scrollMsg:function(id,object,animate){var newPos,m,b,screenTop,screenBottom,scrollObj="";if(typeof object==="undefined"){scrollObj=jQuery(document.getElementById("frm_form_"+id+"_container"));if(scrollObj.length<1)return}else if(typeof id==="string")scrollObj=jQuery(object).find("#frm_field_"+id+"_container");else scrollObj=id;jQuery(scrollObj).trigger("focus");newPos=scrollObj.offset().top;if(!newPos||frm_js.offset==="-1")return;
|
52 |
newPos=newPos-frm_js.offset;m=jQuery("html").css("margin-top");b=jQuery("body").css("margin-top");if(m||b)newPos=newPos-parseInt(m)-parseInt(b);if(newPos&&window.innerHeight){screenTop=document.documentElement.scrollTop||document.body.scrollTop;screenBottom=screenTop+window.innerHeight;if(newPos>screenBottom||newPos<screenTop){if(typeof animate==="undefined")jQuery(window).scrollTop(newPos);else jQuery("html,body").animate({scrollTop:newPos},500);return false}}},fieldValueChanged:function(e){var fieldId=
|
53 |
+
frmFrontForm.getFieldId(this,false);if(!fieldId||typeof fieldId==="undefined")return;if(e.frmTriggered&&e.frmTriggered==fieldId)return;jQuery(document).trigger("frmFieldChanged",[this,fieldId,e]);if(e.selfTriggered!==true)maybeValidateChange(this)},savingDraft:function(object){console.warn("DEPRECATED: function frmFrontForm.savingDraft in v3.0 use frmProForm.savingDraft");if(typeof frmProForm!=="undefined")return frmProForm.savingDraft(object)},goingToPreviousPage:function(object){console.warn("DEPRECATED: function frmFrontForm.goingToPreviousPage in v3.0 use frmProForm.goingToPreviousPage");
|
54 |
if(typeof frmProForm!=="undefined")return frmProForm.goingToPreviousPage(object)},hideOrShowFields:function(){console.warn("DEPRECATED: function frmFrontForm.hideOrShowFields in v3.0 use frmProForm.hideOrShowFields");if(typeof frmProForm!=="undefined")frmProForm.hideOrShowFields()},hidePreviouslyHiddenFields:function(){console.warn("DEPRECATED: function frmFrontForm.hidePreviouslyHiddenFields in v3.0 use frmProForm.hidePreviouslyHiddenFields");if(typeof frmProForm!=="undefined")frmProForm.hidePreviouslyHiddenFields()},
|
55 |
checkDependentDynamicFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentDynamicFields in v3.0 use frmProForm.checkDependentDynamicFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentDynamicFields(ids)},checkDependentLookupFields:function(ids){console.warn("DEPRECATED: function frmFrontForm.checkDependentLookupFields in v3.0 use frmProForm.checkDependentLookupFields");if(typeof frmProForm!=="undefined")frmProForm.checkDependentLookupFields(ids)},loadGoogle:function(){console.warn("DEPRECATED: function frmFrontForm.loadGoogle in v3.0 use frmProForm.loadGoogle");
|
56 |
frmProForm.loadGoogle()},escapeHtml:function(text){return text.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},invisible:function(classes){jQuery(classes).css("visibility","hidden")},visible:function(classes){jQuery(classes).css("visibility","visible")}}}frmFrontForm=frmFrontFormJS();jQuery(document).ready(function(){frmFrontForm.init()});
|
js/formidable_admin.js
CHANGED
@@ -5453,7 +5453,7 @@ function frmAdminBuildJS() {
|
|
5453 |
replaceWith += ' ';
|
5454 |
|
5455 |
// Allow for the column number dropdown.
|
5456 |
-
replaceWith = replaceWith.replace( ' block ', ' ' ).replace( ' inline ', ' horizontal_radio ' )
|
5457 |
|
5458 |
classes = field.className.split( ' frmstart ' )[1];
|
5459 |
classes = 0 === classes.indexOf( 'frmend ' ) ? '' : classes.split( ' frmend ' )[0];
|
5453 |
replaceWith += ' ';
|
5454 |
|
5455 |
// Allow for the column number dropdown.
|
5456 |
+
replaceWith = replaceWith.replace( ' block ', ' ' ).replace( ' inline ', ' horizontal_radio ' );
|
5457 |
|
5458 |
classes = field.className.split( ' frmstart ' )[1];
|
5459 |
classes = 0 === classes.indexOf( 'frmend ' ) ? '' : classes.split( ' frmend ' )[0];
|
languages/formidable.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Formidable Forms 5.0.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2021-10-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: formidable\n"
|
@@ -272,23 +272,23 @@ msgstr ""
|
|
272 |
msgid "Entry was Successfully Deleted"
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: classes/controllers/FrmFieldsController.php:
|
276 |
msgid "Default Value (Text)"
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: classes/controllers/FrmFieldsController.php:
|
280 |
msgid "Default Value (Calculation)"
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: classes/controllers/FrmFieldsController.php:
|
284 |
msgid "Calculator forms"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: classes/controllers/FrmFieldsController.php:
|
288 |
msgid "Default Value (Lookup)"
|
289 |
msgstr ""
|
290 |
|
291 |
-
#: classes/controllers/FrmFieldsController.php:
|
292 |
msgid "Lookup fields"
|
293 |
msgstr ""
|
294 |
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Formidable Forms 5.0.10\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2021-10-26T13:32:48+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: formidable\n"
|
272 |
msgid "Entry was Successfully Deleted"
|
273 |
msgstr ""
|
274 |
|
275 |
+
#: classes/controllers/FrmFieldsController.php:330
|
276 |
msgid "Default Value (Text)"
|
277 |
msgstr ""
|
278 |
|
279 |
+
#: classes/controllers/FrmFieldsController.php:337
|
280 |
msgid "Default Value (Calculation)"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: classes/controllers/FrmFieldsController.php:341
|
284 |
msgid "Calculator forms"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: classes/controllers/FrmFieldsController.php:346
|
288 |
msgid "Default Value (Lookup)"
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: classes/controllers/FrmFieldsController.php:350
|
292 |
msgid "Lookup fields"
|
293 |
msgstr ""
|
294 |
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: forms, contact form, form builder, survey, form maker, form creator, paypa
|
|
5 |
Requires at least: 5.0
|
6 |
Tested up to: 5.8.1
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 5.0.
|
9 |
|
10 |
The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
|
11 |
|
@@ -440,6 +440,13 @@ Using our Zapier integration, you can easily connect Formidable with over 1000+
|
|
440 |
See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
|
441 |
|
442 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
443 |
= 5.0.09 =
|
444 |
- The option to check entries for spam using JavaScript is now on by default for all new forms. We recommend turning this on for older forms that may be receiving spam entries, especially forms that include file uploads. After turning this feature on, make sure to also clear any caching plugins to avoid issues with cached pages with missing tokens.
|
445 |
- New: Pre-determined option data will no longer be sent to Akismet to help reduce the number of false positive results.
|
5 |
Requires at least: 5.0
|
6 |
Tested up to: 5.8.1
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 5.0.10
|
9 |
|
10 |
The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
|
11 |
|
440 |
See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
|
441 |
|
442 |
== Changelog ==
|
443 |
+
= 5.0.10 =
|
444 |
+
- Security: Improved how data is sanitized when previewing in the style manager.
|
445 |
+
- Fix: Prevent a warning when trying to get inbox messages from the API when no messages are being returned.
|
446 |
+
- Fix: The frm_alignright class was being stripped in the form builder, preventing the right alignment from appearing in the back end.
|
447 |
+
- Fix: The frm_alignright class was causing fields to shift to the wrong row. The style definition has been updated so it will stay in the same row as other fields.
|
448 |
+
- Fix: Required messages were not properly appearing for empty radio buttons when an other option was selected but left empty and JavaScript validation was on.
|
449 |
+
|
450 |
= 5.0.09 =
|
451 |
- The option to check entries for spam using JavaScript is now on by default for all new forms. We recommend turning this on for older forms that may be receiving spam entries, especially forms that include file uploads. After turning this feature on, make sure to also clear any caching plugins to avoid issues with cached pages with missing tokens.
|
452 |
- New: Pre-determined option data will no longer be sent to Akismet to help reduce the number of false positive results.
|