Version Description
- New: The first field with an error will now automatically get focus when a form is submitted for better accessibility and improved user experience.
- Fix: The reply to value of an email would default to the admin email instead of the from email when a shortcode with an empty result was used.
- Fix: When switching between the dropdown and text lookup types, the watch lookup option not properly toggle back on.
- Fix: The autocomplete page dropdown was not consistent with other styles.
Download this release
Release Info
Developer | formidableforms |
Plugin | Formidable Forms – Form Builder for WordPress |
Version | 4.11.04 |
Comparing to | |
See all releases |
Code changes from version 4.11.03 to 4.11.04
- classes/helpers/FrmAppHelper.php +1 -1
- classes/models/FrmEmail.php +6 -3
- css/frm_admin.css +12 -1
- formidable.php +1 -1
- js/formidable.js +42 -0
- js/formidable.min.js +20 -19
- js/formidable_admin.js +7 -3
- languages/formidable.pot +7 -7
- readme.txt +7 -6
classes/helpers/FrmAppHelper.php
CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
|
|
11 |
/**
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
-
public static $plug_version = '4.11.
|
15 |
|
16 |
/**
|
17 |
* @since 1.07.02
|
11 |
/**
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
+
public static $plug_version = '4.11.04';
|
15 |
|
16 |
/**
|
17 |
* @since 1.07.02
|
classes/models/FrmEmail.php
CHANGED
@@ -180,11 +180,14 @@ class FrmEmail {
|
|
180 |
private function set_reply_to( $user_id_args ) {
|
181 |
$this->reply_to = trim( $this->settings['reply_to'] );
|
182 |
|
183 |
-
if (
|
184 |
-
$this->reply_to = $this->get_email_from_name( $this->from );
|
185 |
-
} else {
|
186 |
$this->reply_to = $this->prepare_email_setting( $this->settings['reply_to'], $user_id_args );
|
187 |
}
|
|
|
|
|
|
|
|
|
|
|
188 |
$this->reply_to = $this->format_reply_to( $this->reply_to );
|
189 |
}
|
190 |
|
180 |
private function set_reply_to( $user_id_args ) {
|
181 |
$this->reply_to = trim( $this->settings['reply_to'] );
|
182 |
|
183 |
+
if ( $this->reply_to ) {
|
|
|
|
|
184 |
$this->reply_to = $this->prepare_email_setting( $this->settings['reply_to'], $user_id_args );
|
185 |
}
|
186 |
+
|
187 |
+
if ( ! $this->reply_to ) {
|
188 |
+
$this->reply_to = $this->get_email_from_name( $this->from );
|
189 |
+
}
|
190 |
+
|
191 |
$this->reply_to = $this->format_reply_to( $this->reply_to );
|
192 |
}
|
193 |
|
css/frm_admin.css
CHANGED
@@ -4517,11 +4517,22 @@ h2.frm-h2,
|
|
4517 |
font-weight: normal;
|
4518 |
}
|
4519 |
|
|
|
4520 |
.frm_wrap .ui-autocomplete li.ui-state-focus {
|
4521 |
background: rgb(65, 153, 253);
|
4522 |
color: #fff;
|
4523 |
}
|
4524 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4525 |
.frm_select_with_label {
|
4526 |
margin: 7px 0 0;
|
4527 |
}
|
@@ -6346,7 +6357,7 @@ select[name="m"] {
|
|
6346 |
|
6347 |
.frm-grid {
|
6348 |
border-collapse: collapse;
|
6349 |
-
border:
|
6350 |
margin-right: 10px;
|
6351 |
}
|
6352 |
|
4517 |
font-weight: normal;
|
4518 |
}
|
4519 |
|
4520 |
+
.frm_wrap .ui-autocomplete li div.ui-state-active,
|
4521 |
.frm_wrap .ui-autocomplete li.ui-state-focus {
|
4522 |
background: rgb(65, 153, 253);
|
4523 |
color: #fff;
|
4524 |
}
|
4525 |
|
4526 |
+
.frm_wrap .ui-autocomplete .ui-menu-item-wrapper {
|
4527 |
+
padding: 2px 10px;
|
4528 |
+
border-radius: var(--small-radius);
|
4529 |
+
}
|
4530 |
+
|
4531 |
+
.frm_wrap .ui-autocomplete .ui-menu-item-wrapper.ui-state-active {
|
4532 |
+
border: none;
|
4533 |
+
font-weight: inherit;
|
4534 |
+
}
|
4535 |
+
|
4536 |
.frm_select_with_label {
|
4537 |
margin: 7px 0 0;
|
4538 |
}
|
6357 |
|
6358 |
.frm-grid {
|
6359 |
border-collapse: collapse;
|
6360 |
+
border: none;
|
6361 |
margin-right: 10px;
|
6362 |
}
|
6363 |
|
formidable.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: Formidable Forms
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
-
Version: 4.11.
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
Author: Strategy11
|
2 |
/*
|
3 |
Plugin Name: Formidable Forms
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
+
Version: 4.11.04
|
6 |
Plugin URI: https://formidableforms.com/
|
7 |
Author URI: https://formidableforms.com/
|
8 |
Author: Strategy11
|
js/formidable.js
CHANGED
@@ -608,6 +608,7 @@ function frmFrontFormJS() {
|
|
608 |
object.submit();
|
609 |
} else {
|
610 |
jQuery( object ).prepend( response.error_message );
|
|
|
611 |
}
|
612 |
} else {
|
613 |
// there may have been a plugin conflict, or the form is not set to submit with ajax
|
@@ -1005,6 +1006,44 @@ function frmFrontFormJS() {
|
|
1005 |
});
|
1006 |
}
|
1007 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1008 |
return {
|
1009 |
init: function() {
|
1010 |
jQuery( document ).off( 'submit.formidable', '.frm-show-form' );
|
@@ -1030,6 +1069,8 @@ function frmFrontFormJS() {
|
|
1030 |
jQuery( document ).on( 'click', 'a[data-frmconfirm]', confirmClick );
|
1031 |
jQuery( 'a[data-frmtoggle]' ).on( 'click', toggleDiv );
|
1032 |
|
|
|
|
|
1033 |
// Focus on the first sub field when clicking to the primary label of combo field.
|
1034 |
changeFocusWhenClickComboFieldLabel();
|
1035 |
|
@@ -1203,6 +1244,7 @@ function frmFrontFormJS() {
|
|
1203 |
}
|
1204 |
|
1205 |
scrollToFirstField( object );
|
|
|
1206 |
},
|
1207 |
|
1208 |
checkFormErrors: function( object, action ) {
|
608 |
object.submit();
|
609 |
} else {
|
610 |
jQuery( object ).prepend( response.error_message );
|
611 |
+
checkForErrorsAndMaybeSetFocus();
|
612 |
}
|
613 |
} else {
|
614 |
// there may have been a plugin conflict, or the form is not set to submit with ajax
|
1006 |
});
|
1007 |
}
|
1008 |
|
1009 |
+
function checkForErrorsAndMaybeSetFocus() {
|
1010 |
+
var errors, element, timeoutCallback;
|
1011 |
+
|
1012 |
+
errors = document.querySelectorAll( '.frm_form_field .frm_error' );
|
1013 |
+
if ( ! errors.length ) {
|
1014 |
+
return;
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
element = errors[0];
|
1018 |
+
do {
|
1019 |
+
element = element.previousSibling;
|
1020 |
+
if ( -1 !== [ 'input', 'select', 'textarea' ].indexOf( element.nodeName.toLowerCase() ) ) {
|
1021 |
+
element.focus();
|
1022 |
+
break;
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
if ( 'undefined' !== typeof element.classList ) {
|
1026 |
+
if ( element.classList.contains( 'html-active' ) ) {
|
1027 |
+
timeoutCallback = function() {
|
1028 |
+
var textarea = element.querySelector( 'textarea' );
|
1029 |
+
if ( null !== textarea ) {
|
1030 |
+
textarea.focus();
|
1031 |
+
}
|
1032 |
+
};
|
1033 |
+
} else if ( element.classList.contains( 'tmce-active' ) ) {
|
1034 |
+
timeoutCallback = function() {
|
1035 |
+
tinyMCE.activeEditor.focus();
|
1036 |
+
};
|
1037 |
+
}
|
1038 |
+
|
1039 |
+
if ( 'function' === typeof timeoutCallback ) {
|
1040 |
+
setTimeout( timeoutCallback, 0 );
|
1041 |
+
break;
|
1042 |
+
}
|
1043 |
+
}
|
1044 |
+
} while ( element.previousSibling );
|
1045 |
+
}
|
1046 |
+
|
1047 |
return {
|
1048 |
init: function() {
|
1049 |
jQuery( document ).off( 'submit.formidable', '.frm-show-form' );
|
1069 |
jQuery( document ).on( 'click', 'a[data-frmconfirm]', confirmClick );
|
1070 |
jQuery( 'a[data-frmtoggle]' ).on( 'click', toggleDiv );
|
1071 |
|
1072 |
+
checkForErrorsAndMaybeSetFocus();
|
1073 |
+
|
1074 |
// Focus on the first sub field when clicking to the primary label of combo field.
|
1075 |
changeFocusWhenClickComboFieldLabel();
|
1076 |
|
1244 |
}
|
1245 |
|
1246 |
scrollToFirstField( object );
|
1247 |
+
checkForErrorsAndMaybeSetFocus();
|
1248 |
},
|
1249 |
|
1250 |
checkFormErrors: function( object, action ) {
|
js/formidable.min.js
CHANGED
@@ -22,12 +22,12 @@ window.location=response.redirect}else if(response.content!==""){removeSubmitLoa
|
|
22 |
previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");input='<input type="hidden" name="recaptcha_checked" value="'+
|
23 |
response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=
|
24 |
$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);
|
25 |
-
else grecaptcha.reset()});jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(contSubmit)object.submit();else
|
26 |
-
if(formCompleted.length)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function removeAddedScripts(formContainer,formID){var endReplace=jQuery(".frm_end_ajax_"+formID);if(endReplace.length){formContainer.nextUntil(".frm_end_ajax_"+formID).remove();endReplace.remove()}}function maybeSlideOut(oldContent,newContent){var c,newClass="frm_slideout";if(newContent.indexOf(" frm_slide")
|
27 |
-
-1)newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){var url;if(history.pushState&&typeof response.page!=="undefined"){url=addQueryVar("frm_page",response.page);window.history.pushState({"html":response.html},"","?"+url)}}function addQueryVar(key,value){var kvp,i,x;key=encodeURI(key);value=encodeURI(value);kvp=document.location.search.substr(1).split("&");
|
28 |
-
value;kvp[i]=x.join("=");break}}if(i<0)kvp[kvp.length]=[key,value].join("=");return kvp.join("&")}function addFieldError($fieldCont,key,jsErrors){var input,id,describedBy;if($fieldCont.length&&$fieldCont.is(":visible")){$fieldCont.addClass("frm_blank_field");input=$fieldCont.find("input, select, textarea");id="frm_error_field_"+key;describedBy=input.attr("aria-describedby");if(typeof frmThemeOverride_frmPlaceError==="function")frmThemeOverride_frmPlaceError(key,
|
29 |
-
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"),errorId=errorMessage.attr("id"),input=$fieldCont.find("input, select, textarea"),
|
30 |
-
|
31 |
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=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loadingClass)}
|
32 |
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);enableSaveDraft(loadingForm)}}function showFileLoading(object){var fileval,
|
33 |
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,"\r");if(v===""||typeof v==="undefined")return false;
|
@@ -36,19 +36,20 @@ entry_id:entryId,form_id:formId,nonce:frm_js.nonce},success:function(msg){var ad
|
|
36 |
from;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(elt){len=this.length>>>0;from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0)from+=len;for(;from<len;from++)if(from in this&&this[from]===elt)return from;return-1}}function addTrimFallbackForIE8(){if(typeof String.prototype.trim!=="function")String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){var t,len,res,thisp,i,val;if(!Array.prototype.filter)Array.prototype.filter=
|
37 |
function(fun){if(this===void 0||this===null)throw new TypeError;t=Object(this);len=t.length>>>0;if(typeof fun!=="function")throw new TypeError;res=[];thisp=arguments[1];for(i=0;i<len;i++)if(i in t){val=t[i];if(fun.call(thisp,val,i,t))res.push(val)}return res}}function addKeysFallbackForIE8(){var keys,i;if(!Object.keys)Object.keys=function(obj){keys=[];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}function onHoneypotFieldChange(){var css=jQuery(this).css("box-shadow");if(css.match(/inset/))this.parentNode.removeChild(this)}
|
38 |
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()})})}
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
key
|
49 |
-
|
50 |
-
|
51 |
-
"
|
|
|
52 |
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()},
|
53 |
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");
|
54 |
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()});
|
22 |
previousInput;replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){pageOrder=jQuery('input[name="frm_page_order_'+formID+'"]').val();formReturned=jQuery(response.content).find('input[name="form_id"]').val();frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}if(typeof response.recaptcha!=="undefined"){container=jQuery("#frm_form_"+formID+"_container").find(".frm_fields_container");input='<input type="hidden" name="recaptcha_checked" value="'+
|
23 |
response.recaptcha+'">';previousInput=container.find('input[name="recaptcha_checked"]');if(previousInput.length)previousInput.replaceWith(input);else container.append(input)}afterFormSubmitted(object,response)},delay)}else if(Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");contSubmit=true;removeAllErrors();$fieldCont=null;for(key in response.errors){$fieldCont=jQuery(object).find("#frm_field_"+key+"_container");if($fieldCont.length){if(!$fieldCont.is(":visible")){inCollapsedSection=
|
24 |
$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){frmTrigger=inCollapsedSection.prev();if(!frmTrigger.hasClass("frm_trigger"))frmTrigger=frmTrigger.prev(".frm_trigger");frmTrigger.trigger("click")}}if($fieldCont.is(":visible")){addFieldError($fieldCont,key,response.errors);contSubmit=false}}}jQuery(object).find(".frm-g-recaptcha, .g-recaptcha").each(function(){var $recaptcha=jQuery(this),recaptchaID=$recaptcha.data("rid");if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);
|
25 |
+
else grecaptcha.reset()});jQuery(document).trigger("frmFormErrors",[object,response]);fieldset.removeClass("frm_doing_ajax");scrollToFirstField(object);if(contSubmit)object.submit();else{jQuery(object).prepend(response.error_message);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=
|
26 |
+
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")!==
|
27 |
+
-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("&");
|
28 |
+
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,
|
29 |
+
jsErrors);else{$fieldCont.append('<div class="frm_error" id="'+id+'">'+jsErrors[key]+"</div>");if(typeof describedBy==="undefined")describedBy=id;else if(describedBy.indexOf(id)===-1)describedBy=describedBy+" "+id;input.attr("aria-describedby",describedBy)}input.attr("aria-invalid",true);jQuery(document).trigger("frmAddFieldError",[$fieldCont,key,jsErrors])}}function removeFieldError($fieldCont){var errorMessage=$fieldCont.find(".frm_error"),errorId=errorMessage.attr("id"),input=$fieldCont.find("input, select, textarea"),
|
30 |
+
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()}function scrollToFirstField(object){var field=jQuery(object).find(".frm_blank_field").first();
|
31 |
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=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loadingClass)}
|
32 |
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);enableSaveDraft(loadingForm)}}function showFileLoading(object){var fileval,
|
33 |
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,"\r");if(v===""||typeof v==="undefined")return false;
|
36 |
from;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(elt){len=this.length>>>0;from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0)from+=len;for(;from<len;from++)if(from in this&&this[from]===elt)return from;return-1}}function addTrimFallbackForIE8(){if(typeof String.prototype.trim!=="function")String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}}function addFilterFallbackForIE8(){var t,len,res,thisp,i,val;if(!Array.prototype.filter)Array.prototype.filter=
|
37 |
function(fun){if(this===void 0||this===null)throw new TypeError;t=Object(this);len=t.length>>>0;if(typeof fun!=="function")throw new TypeError;res=[];thisp=arguments[1];for(i=0;i<len;i++)if(i in t){val=t[i];if(fun.call(thisp,val,i,t))res.push(val)}return res}}function addKeysFallbackForIE8(){var keys,i;if(!Object.keys)Object.keys=function(obj){keys=[];for(i in obj)if(obj.hasOwnProperty(i))keys.push(i);return keys}}function onHoneypotFieldChange(){var css=jQuery(this).css("box-shadow");if(css.match(/inset/))this.parentNode.removeChild(this)}
|
38 |
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()})})}
|
39 |
+
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()};
|
40 |
+
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")});
|
41 |
+
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",
|
42 |
+
maybeShowLabel);jQuery(document).on("change","[id^=frm_email_]",onHoneypotFieldChange);jQuery(document).on("click","a[data-frmconfirm]",confirmClick);jQuery("a[data-frmtoggle]").on("click",toggleDiv);checkForErrorsAndMaybeSetFocus();changeFocusWhenClickComboFieldLabel();addIndexOfFallbackForIE8();addTrimFallbackForIE8();addFilterFallbackForIE8();addKeysFallbackForIE8()},getFieldId:function(field,fullID){return getFieldId(field,fullID)},renderRecaptcha:function(captcha){var formID,recaptchaID,size=
|
43 |
+
captcha.getAttribute("data-size"),rendered=captcha.getAttribute("data-rid")!==null,params={"sitekey":captcha.getAttribute("data-sitekey"),"size":size,"theme":captcha.getAttribute("data-theme")};if(rendered)return;if(size==="invisible"){formID=jQuery(captcha).closest("form").find('input[name="form_id"]').val();jQuery(captcha).closest(".frm_form_field .frm_primary_label").hide();params.callback=function(token){frmFrontForm.afterRecaptcha(token,formID)}}recaptchaID=grecaptcha.render(captcha.id,params);
|
44 |
+
captcha.setAttribute("data-rid",recaptchaID)},afterSingleRecaptcha:function(){var object=jQuery(".frm-show-form .g-recaptcha").closest("form")[0];frmFrontForm.submitFormNow(object)},afterRecaptcha:function(token,formID){var object=jQuery("#frm_form_"+formID+"_container form")[0];frmFrontForm.submitFormNow(object)},submitForm:function(e){frmFrontForm.submitFormManual(e,this)},submitFormManual:function(e,object){var isPro,errors,invisibleRecaptcha=hasInvisibleRecaptcha(object),classList=object.className.trim().split(/\s+/gi);
|
45 |
+
if(classList&&invisibleRecaptcha.length<1){isPro=classList.indexOf("frm_pro_form")>-1;if(!isPro)return}if(jQuery("body").hasClass("wp-admin")&&jQuery(object).closest(".frmapi-form").length<1)return;e.preventDefault();if(typeof frmProForm!=="undefined"&&typeof frmProForm.submitAllowed==="function")if(!frmProForm.submitAllowed(object))return;if(invisibleRecaptcha.length){showLoadingIndicator(jQuery(object));executeInvisibleRecaptcha(invisibleRecaptcha)}else{errors=frmFrontForm.validateFormSubmit(object);
|
46 |
+
if(Object.keys(errors).length===0){showSubmitLoading(jQuery(object));frmFrontForm.submitFormNow(object,classList)}}},submitFormNow:function(object){var hasFileFields,antispamInput,classList=object.className.trim().split(/\s+/gi);if(object.hasAttribute("data-token")&&null===object.querySelector('[name="antispam_token"]')){antispamInput=document.createElement("input");antispamInput.type="hidden";antispamInput.name="antispam_token";antispamInput.value=object.getAttribute("data-token");object.appendChild(antispamInput)}if(classList.indexOf("frm_ajax_submit")>
|
47 |
+
-1){hasFileFields=jQuery(object).find('input[type="file"]').filter(function(){return!!this.value}).length;if(hasFileFields<1){action=jQuery(object).find('input[name="frm_action"]').val();frmFrontForm.checkFormErrors(object,action)}else object.submit()}else object.submit()},validateFormSubmit:function(object){if(typeof tinyMCE!=="undefined"&&jQuery(object).find(".wp-editor-wrap").length)tinyMCE.triggerSave();jsErrors=[];if(shouldJSValidate(object)){frmFrontForm.getAjaxFormErrors(object);if(Object.keys(jsErrors).length)frmFrontForm.addAjaxFormErrors(object)}return jsErrors},
|
48 |
+
getAjaxFormErrors:function(object){var customErrors,key;jsErrors=validateForm(object);if(typeof frmThemeOverride_jsErrors==="function"){action=jQuery(object).find('input[name="frm_action"]').val();customErrors=frmThemeOverride_jsErrors(action,object);if(Object.keys(customErrors).length)for(key in customErrors)jsErrors[key]=customErrors[key]}return jsErrors},addAjaxFormErrors:function(object){var key,$fieldCont;removeAllErrors();for(key in jsErrors){$fieldCont=jQuery(object).find("#frm_field_"+key+
|
49 |
+
"_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=
|
50 |
+
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;
|
51 |
+
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=
|
52 |
+
frmFrontForm.getFieldId(this,false);if(!fieldId||typeof fieldId==="undefined")return;if(e.frmTriggered&&e.frmTriggered==fieldId)return;jQuery(document).trigger("frmFieldChanged",[this,fieldId,e]);if(e.selfTriggered!==true)maybeValidateChange(fieldId,this)},savingDraft:function(object){console.warn("DEPRECATED: function frmFrontForm.savingDraft in v3.0 use frmProForm.savingDraft");if(typeof frmProForm!=="undefined")return frmProForm.savingDraft(object)},goingToPreviousPage:function(object){console.warn("DEPRECATED: function frmFrontForm.goingToPreviousPage in v3.0 use frmProForm.goingToPreviousPage");
|
53 |
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()},
|
54 |
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");
|
55 |
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
@@ -2609,19 +2609,23 @@ function frmAdminBuildJS() {
|
|
2609 |
var link, lookupBlock,
|
2610 |
fieldID = this.name.replace( 'field_options[data_type_', '' ).replace( ']', '' );
|
2611 |
|
|
|
|
|
2612 |
if ( this.value === 'text' ) {
|
2613 |
lookupBlock = document.getElementById( 'frm_watch_lookup_block_' + fieldID );
|
2614 |
if ( lookupBlock !== null ) {
|
2615 |
-
// Clear the Watch Fields option
|
2616 |
lookupBlock.innerHTML = '';
|
|
|
2617 |
|
2618 |
// Hide the Watch Fields row
|
2619 |
-
link = document.getElementById( 'frm_add_watch_lookup_link_' + fieldID ).parentNode;
|
2620 |
-
link.style.display = 'none';
|
2621 |
link.previousElementSibling.style.display = 'none';
|
2622 |
link.previousElementSibling.previousElementSibling.style.display = 'none';
|
2623 |
link.previousElementSibling.previousElementSibling.previousElementSibling.style.display = 'none';
|
2624 |
}
|
|
|
|
|
|
|
2625 |
}
|
2626 |
|
2627 |
toggleMultiSelect( fieldID, this.value );
|
2609 |
var link, lookupBlock,
|
2610 |
fieldID = this.name.replace( 'field_options[data_type_', '' ).replace( ']', '' );
|
2611 |
|
2612 |
+
link = document.getElementById( 'frm_add_watch_lookup_link_' + fieldID ).parentNode;
|
2613 |
+
|
2614 |
if ( this.value === 'text' ) {
|
2615 |
lookupBlock = document.getElementById( 'frm_watch_lookup_block_' + fieldID );
|
2616 |
if ( lookupBlock !== null ) {
|
2617 |
+
// Clear and hide the Watch Fields option
|
2618 |
lookupBlock.innerHTML = '';
|
2619 |
+
link.classList.add( 'frm_hidden' );
|
2620 |
|
2621 |
// Hide the Watch Fields row
|
|
|
|
|
2622 |
link.previousElementSibling.style.display = 'none';
|
2623 |
link.previousElementSibling.previousElementSibling.style.display = 'none';
|
2624 |
link.previousElementSibling.previousElementSibling.previousElementSibling.style.display = 'none';
|
2625 |
}
|
2626 |
+
} else {
|
2627 |
+
// Show the Watch Fields option
|
2628 |
+
link.classList.remove( 'frm_hidden' );
|
2629 |
}
|
2630 |
|
2631 |
toggleMultiSelect( fieldID, this.value );
|
languages/formidable.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Formidable Forms 4.11.
|
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-07-
|
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"
|
@@ -3813,26 +3813,26 @@ msgid "Use the query in an array format so it can be properly prepared."
|
|
3813 |
msgstr ""
|
3814 |
|
3815 |
#. translators: %1$s: Form name, %2$s: Site name
|
3816 |
-
#: classes/models/FrmEmail.php:
|
3817 |
msgid "%1$s Form submitted on %2$s"
|
3818 |
msgstr ""
|
3819 |
|
3820 |
-
#: classes/models/FrmEmail.php:
|
3821 |
#: classes/views/frm-entries/sidebar-shared.php:72
|
3822 |
msgid "User Information"
|
3823 |
msgstr ""
|
3824 |
|
3825 |
-
#: classes/models/FrmEmail.php:
|
3826 |
#: classes/models/FrmEntryValues.php:214
|
3827 |
msgid "User-Agent (Browser/OS)"
|
3828 |
msgstr ""
|
3829 |
|
3830 |
-
#: classes/models/FrmEmail.php:
|
3831 |
#: classes/models/FrmEntryValues.php:219
|
3832 |
msgid "Referrer"
|
3833 |
msgstr ""
|
3834 |
|
3835 |
-
#: classes/models/FrmEmail.php:
|
3836 |
#: classes/models/FrmEntryValues.php:209
|
3837 |
msgid "IP Address"
|
3838 |
msgstr ""
|
2 |
# This file is distributed under the same license as the Formidable Forms plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Formidable Forms 4.11.04\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-07-15T12:46:53+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"
|
3813 |
msgstr ""
|
3814 |
|
3815 |
#. translators: %1$s: Form name, %2$s: Site name
|
3816 |
+
#: classes/models/FrmEmail.php:268
|
3817 |
msgid "%1$s Form submitted on %2$s"
|
3818 |
msgstr ""
|
3819 |
|
3820 |
+
#: classes/models/FrmEmail.php:308
|
3821 |
#: classes/views/frm-entries/sidebar-shared.php:72
|
3822 |
msgid "User Information"
|
3823 |
msgstr ""
|
3824 |
|
3825 |
+
#: classes/models/FrmEmail.php:310
|
3826 |
#: classes/models/FrmEntryValues.php:214
|
3827 |
msgid "User-Agent (Browser/OS)"
|
3828 |
msgstr ""
|
3829 |
|
3830 |
+
#: classes/models/FrmEmail.php:311
|
3831 |
#: classes/models/FrmEntryValues.php:219
|
3832 |
msgid "Referrer"
|
3833 |
msgstr ""
|
3834 |
|
3835 |
+
#: classes/models/FrmEmail.php:327
|
3836 |
#: classes/models/FrmEntryValues.php:209
|
3837 |
msgid "IP Address"
|
3838 |
msgstr ""
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: forms, contact form, form builder, survey, form maker, form creator, paypa
|
|
5 |
Requires at least: 4.7
|
6 |
Tested up to: 5.7.2
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 4.11.
|
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,12 @@ 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 |
= 4.11.03 =
|
444 |
* New: Name fields now work in the To and From settings for email actions.
|
445 |
* Fix: Images were not properly loading when styles were loading via an AJAX request.
|
@@ -470,9 +476,4 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
|
|
470 |
= 4.10.02 =
|
471 |
* New: Added support for in-theme previews for more themes including Twenty Twenty, Customizr, and more.
|
472 |
|
473 |
-
= 4.10.01 =
|
474 |
-
* New: Include the full email header when an email is sent using the mail function.
|
475 |
-
* Fix: After opening the popup to add a layout class to a field, the field would no longer be selectable.
|
476 |
-
* Fix: Prevent the url from getting too large when repeatedly bulk deleting or searching entries.
|
477 |
-
|
478 |
<a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
|
5 |
Requires at least: 4.7
|
6 |
Tested up to: 5.7.2
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 4.11.04
|
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 |
+
= 4.11.04 =
|
444 |
+
* New: The first field with an error will now automatically get focus when a form is submitted for better accessibility and improved user experience.
|
445 |
+
* Fix: The reply to value of an email would default to the admin email instead of the from email when a shortcode with an empty result was used.
|
446 |
+
* Fix: When switching between the dropdown and text lookup types, the watch lookup option not properly toggle back on.
|
447 |
+
* Fix: The autocomplete page dropdown was not consistent with other styles.
|
448 |
+
|
449 |
= 4.11.03 =
|
450 |
* New: Name fields now work in the To and From settings for email actions.
|
451 |
* Fix: Images were not properly loading when styles were loading via an AJAX request.
|
476 |
= 4.10.02 =
|
477 |
* New: Added support for in-theme previews for more themes including Twenty Twenty, Customizr, and more.
|
478 |
|
|
|
|
|
|
|
|
|
|
|
479 |
<a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
|