diff --git a/changelog.txt b/changelog.txt index ebe04d8bbd..aca26e942e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,20 @@ == Changelog == += 6.32 = +* New: The form listing table now includes new Embeds and List Settings columns, for displaying every post and page where a form is embedded, and an added gear icon for controlling screen options. +* New: The generated Formidable CSS file can now work from the uploads directory instead of the plugin directory. This will automatically work based on the DISALLOW_FILE_MODS constant, and can additionally be controlled using a new frm_add_css_to_uploads_dir filter. +* New: Field errors will now get removed automatically on change events regardless of the JS validation setting. +* Fix: The aria-describedby attribute would not update properly when a form was submitted with errors for fields with multiple inputs. +* Fix: A small styling rule has been added to prevent HTML fields from overflowing past their container when using long strings. +* Fix: Color pickers used on the form styler page have been updated to help maintain the active color format, preventing automatic conversions from rgb to hex. +* Fix: Validation for Square has been modified to prevent the submit button from remaining disabled when the Square inputs do not include a postal code input, which happens in some countries including Japan and Australia. +* Fix: A cannot modify header information - headers already sent by FrmTransLiteHooksController.php:108 warning has been fixed. +* Fix: Custom CSS saved in form styles would not appear as expected after duplicating, showing additional CSS selectors for the original style. +* Fix: A possible TypeError when calling wp_is_valid_utf8 with a null value has been fixed. +* Fix: A new form style would not properly rename when it did not yet have a style ID. +* Fix: PayPal Commerce has been updated to prevent issues where Google Pay and Apple Pay options would not appear if the SDKs had not loaded in time. +* Fix: PayPal Commerce orders and products were not including the payment action description setting. +* The overdue subscription cron message will no longer get logged when there are no active subscriptions. + = 6.31 = * New: Formidable now supports PayPal Commerce. This is built into the Lite plugin. To get started, go to Global Settings > Payments > PayPal to connect your business account. * New: Form action settings have been redesigned. diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index 568826db60..07ec58adb7 100644 --- a/classes/controllers/FrmFieldsController.php +++ b/classes/controllers/FrmFieldsController.php @@ -244,7 +244,7 @@ private static function get_classes_for_builder_field( $field, $display, $field_ * used. When the field has an explicit alignment (Pro), the frm_build_field_class filter * applies it instead. When Pro is not installed, any saved alignment is treated as empty. * - * @since x.x + * @since 6.32 * * @param array $field * @param FrmFieldType $field_info diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index a60265f375..46bb4b0af0 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -51,7 +51,7 @@ public static function maybe_load_listing_hooks() { /** * Runs on admin head of the formidable forms page. * - * @since x.x This adds screen options. + * @since 6.32 This adds screen options. * * @return void */ @@ -3716,7 +3716,7 @@ function () { /** * Prints necessary templates for the forms list page. * - * @since x.x + * @since 6.32 * * @return void */ diff --git a/classes/controllers/FrmStylesController.php b/classes/controllers/FrmStylesController.php index 2cb71178cb..48668e4681 100644 --- a/classes/controllers/FrmStylesController.php +++ b/classes/controllers/FrmStylesController.php @@ -23,7 +23,7 @@ class FrmStylesController { /** * Cache of the active style object keyed by form ID. * - * @since x.x + * @since 6.32 * * @var array */ @@ -700,7 +700,7 @@ private static function render_style_page( $active_style, $form, $default_style * * Falls back to the auto-generated key when no style name was provided so the scope is never empty. * - * @since x.x + * @since 6.32 * * @param string $fallback The auto-generated post_name to use when no style name is chosen. * @@ -1285,7 +1285,7 @@ public static function get_form_style( $form = 'default' ) { /** * Get the active style object for a field's form. * - * @since x.x + * @since 6.32 * * @param array|int $field The 'field' array. * @@ -1316,7 +1316,7 @@ public static function get_active_style( $field ) { /** * Get the style setting key that stores the alignment for a field type. * - * @since x.x + * @since 6.32 * * @param string $field_type * diff --git a/classes/helpers/FrmAppHelper.php b/classes/helpers/FrmAppHelper.php index 57280adf8f..c5ba9c95e3 100644 --- a/classes/helpers/FrmAppHelper.php +++ b/classes/helpers/FrmAppHelper.php @@ -29,7 +29,7 @@ class FrmAppHelper { * * @var string */ - public static $plug_version = '6.31'; + public static $plug_version = '6.32'; /** * @var bool diff --git a/classes/helpers/FrmFormsListHelper.php b/classes/helpers/FrmFormsListHelper.php index 54297147f0..119f69c623 100644 --- a/classes/helpers/FrmFormsListHelper.php +++ b/classes/helpers/FrmFormsListHelper.php @@ -8,7 +8,7 @@ class FrmFormsListHelper extends FrmListHelper { /** * The transient name that stores data for which posts a form is embedded in. * - * @since x.x + * @since 6.32 * * @var string */ @@ -366,7 +366,7 @@ private function get_row_checkbox( $item ) { * This includes multiple icons for triggering the embed modal, the visual styler, and an active landing page. * * @since 6.0 - * @deprecated x.x We moved these actions to other places. This column will show if there is a filter added to the hook. + * @deprecated 6.32 We moved these actions to other places. This column will show if there is a filter added to the hook. * * @param stdClass $form * @@ -445,7 +445,7 @@ protected function column_views( $form ) { /** * Get the HTML for the Settings column in the form list. * - * @since x.x + * @since 6.32 * * @return string */ @@ -581,7 +581,7 @@ function () use ( $posts ) { /** * Gets posts or pages that contain the form shortcode. * - * @since x.x + * @since 6.32 * * @param stdClass $form Form object. * @@ -637,7 +637,7 @@ private function get_posts_contain_form( $form ) { /** * Gets search strings for a form inside a post. * - * @since x.x + * @since 6.32 * * @param int $form_id Form ID. * @@ -650,7 +650,7 @@ protected function get_search_strings_for_form( $form_id ) { /** * Gets the base search strings for a form inside a post. * - * @since x.x + * @since 6.32 * * @param int $form_id Form ID. * @@ -694,7 +694,7 @@ private function query_posts_contain_form( $form ) { } /** - * @since x.x + * @since 6.32 * * @param stdClass[] $posts * @param array $args @@ -702,7 +702,7 @@ private function query_posts_contain_form( $form ) { $filtered_posts = apply_filters( 'frm_get_posts_contain_form', $posts, compact( 'form' ) ); if ( ! is_array( $filtered_posts ) ) { - _doing_it_wrong( 'frm_get_posts_contain_form', 'Filter should return an array.', 'x.x' ); + _doing_it_wrong( 'frm_get_posts_contain_form', 'Filter should return an array.', '6.32' ); return $posts; } @@ -712,7 +712,7 @@ private function query_posts_contain_form( $form ) { /** * Maybe clear the embed posts transient. * - * @since x.x + * @since 6.32 * * @param int $post_id Post ID. * @param WP_Post $post Post object. diff --git a/classes/helpers/FrmStylesHelper.php b/classes/helpers/FrmStylesHelper.php index b1e1646d81..27b750bd5b 100644 --- a/classes/helpers/FrmStylesHelper.php +++ b/classes/helpers/FrmStylesHelper.php @@ -929,7 +929,7 @@ private static function description_margin_for_screensize( $width ) { /** * Get the raw alignment value stored in the active style for a radio or checkbox field. * - * @since x.x + * @since 6.32 * * @param array|int $field The 'field' array. * diff --git a/classes/helpers/FrmStylesPreviewHelper.php b/classes/helpers/FrmStylesPreviewHelper.php index 72913fe0c0..7ff39befcd 100644 --- a/classes/helpers/FrmStylesPreviewHelper.php +++ b/classes/helpers/FrmStylesPreviewHelper.php @@ -68,7 +68,7 @@ public function adjust_form_for_preview() { * setting is updated in the styler preview. Fields with their own alignment * override are left untouched. * - * @since x.x + * @since 6.32 * * @return void */ diff --git a/classes/models/FrmSalesApi.php b/classes/models/FrmSalesApi.php index dd7e18d6e9..ee844de5a4 100644 --- a/classes/models/FrmSalesApi.php +++ b/classes/models/FrmSalesApi.php @@ -71,8 +71,9 @@ protected function api_url() { /** * If the last check was a rate limit, we'll need to check again sooner. + * Other APIs use the FrmFormApi function which uses a 5 minute timeout. But for Sales, we can use 1 hour. * - * @since x.x + * @since 6.32 * * @param array $addons * diff --git a/classes/models/FrmStyle.php b/classes/models/FrmStyle.php index 8e8c46dba4..962123bef3 100644 --- a/classes/models/FrmStyle.php +++ b/classes/models/FrmStyle.php @@ -424,7 +424,7 @@ public function save_settings() { } /** - * @since x.x + * @since 6.32 * * @return array */ @@ -443,7 +443,7 @@ private static function get_create_style_file_args() { } /** - * @since x.x + * @since 6.32 * * @param bool $add_css_to_uploads_dir * @@ -459,13 +459,13 @@ public static function get_generated_css_file_path( $add_css_to_uploads_dir ) { /** * Returns true if generated css file should be saved in the uploads directory. * - * @since x.x + * @since 6.32 * * @return bool */ public static function add_css_to_uploads_dir() { /** - * @since x.x + * @since 6.32 * * @param bool $add_css_to_uploads_dir */ @@ -473,7 +473,7 @@ public static function add_css_to_uploads_dir() { } /** - * @since x.x + * @since 6.32 * * @return string */ @@ -482,7 +482,7 @@ private static function target_css_uploads_dir() { } /** - * @since x.x + * @since 6.32 * * @return string */ diff --git a/classes/models/fields/FrmFieldType.php b/classes/models/fields/FrmFieldType.php index df7f28b30a..241474aa0c 100644 --- a/classes/models/fields/FrmFieldType.php +++ b/classes/models/fields/FrmFieldType.php @@ -98,7 +98,7 @@ abstract class FrmFieldType { * its own front_field_input from having it added a second time by * add_aria_description_to_inputs. * - * @since x.x + * @since 6.32 * * @var bool */ @@ -1193,7 +1193,7 @@ public function include_front_field_input( $args, $shortcode_atts ) { * (checkboxes, radios) in one place, since both produce their final HTML * through this method. * - * @since x.x + * @since 6.32 * * @param array $args Rendering context. May include `field_id`, `html_id` and `errors`. * @param string $input_html Full field HTML. Passed by reference. @@ -1599,7 +1599,7 @@ protected function get_field_input_html_hook( $field ) { * Link input to field description for screen readers. * * @since 3.0 - * @since x.x Function privacy changed from `protected` to `public`. + * @since 6.32 Function privacy changed from `protected` to `public`. * * @param array $args * @param string $input_html diff --git a/classes/views/frm-forms/add_field.php b/classes/views/frm-forms/add_field.php index de7625d634..afb97a6f30 100644 --- a/classes/views/frm-forms/add_field.php +++ b/classes/views/frm-forms/add_field.php @@ -66,7 +66,7 @@ /** * Fires after a field's box in the form builder, before the field settings. * - * @since x.x + * @since 6.32 * * @param array{field:array, display:array} $args Contains the `field` and `display` arrays. */ diff --git a/classes/views/frm-forms/forms-list-settings.php b/classes/views/frm-forms/forms-list-settings.php index 7ff8f549f3..ecb90b0958 100644 --- a/classes/views/frm-forms/forms-list-settings.php +++ b/classes/views/frm-forms/forms-list-settings.php @@ -2,7 +2,7 @@ /** * Template for the forms list settings * - * @since x.x + * @since 6.32 * * @package Formidable * diff --git a/classes/views/styles/_check-box-radio-fields.php b/classes/views/styles/_check-box-radio-fields.php index 18834201e8..df144b735b 100644 --- a/classes/views/styles/_check-box-radio-fields.php +++ b/classes/views/styles/_check-box-radio-fields.php @@ -70,7 +70,7 @@ class="frm-style-item-heading"> ); /** - * @since x.x + * @since 6.32 * * @param array $align_options * @param array $atts @@ -96,7 +96,7 @@ class="frm-style-item-heading"> > info about the issue info about the subject info about the topic @@ -31128,7 +31300,7 @@ info?i info/addi info/alcohol info/ratno -info>>> +info>> info0.site info0site info1.site @@ -31241,6 +31413,7 @@ infusionsoft ing ffor ing forwad ing puter +ing real money ing-forwad ing-on-bluesky ing-on-facebook @@ -31250,6 +31423,7 @@ ing-on-tiktok ing-on-twitter ing-on-youtube ing-puter +ing-real-money ing,grass ing.grass ing've @@ -31946,9 +32120,11 @@ iptv-solu ipアドレス iq option iq science +iq-broker iq-option iq-science iq,science +iqbroker iqos iluma iqos-iluma ir=http @@ -32531,6 +32707,12 @@ jettonslots jeugd puistje jeugd-puistje jeugdpuistje +jeux casino +jeux cazino +jeux kasino +jeux-casino +jeux-cazino +jeux-kasino jewelery jeweline. jewellery.bl @@ -33038,16 +33220,24 @@ kashpo kasino kasino 24 kasino affida +kasino agree kasino app kasino bonus kasino depot +kasino exper +kasino gratuit +kasino rating kasino vip kasino vodka kasino-24 kasino-affida +kasino-agree kasino-app kasino-bonus kasino-depot +kasino-exper +kasino-gratuit +kasino-rating kasino-vip kasino-vodka kasino24 @@ -33670,6 +33860,8 @@ kostenlose-gener kostenlose-sex kosze koworking +kowy bonus +kowy-bonus kpkfprbrq kra сайт kra-market @@ -33946,6 +34138,8 @@ largest-penis largestpenis largetote lariam +las mas atractiva +las-mas-atractiva lasart.es laser heat paper laser med spa @@ -34174,6 +34368,8 @@ leak repair near leak-repair-near leaked archive leaked-archive +leap-wallet +leapwallet learn about keto learn about potential learn about this blog @@ -34855,6 +35051,8 @@ live bang live betting live casino live crazy time +live dealer game +live draw sdy live gore live hack live naked @@ -34868,6 +35066,7 @@ live-article live-bang live-betting live-casino +live-dealer-game live-gore live-hack live-jasmin @@ -35359,6 +35558,7 @@ lotterypro lottie maxi lottie-maxi lottiemaxi +lotto aplika lotto expert lotto kerala lotto play @@ -35369,6 +35569,7 @@ lotto strat lotto tip lotto vip lotto_ +lotto-aplika lotto-expert lotto-kerala lotto-play @@ -35657,6 +35858,9 @@ luxottica ray luxottica-ray luxotticaray luxreplic +luxuriosen replica +luxuriösen replica +luxuriosen-replica luxurious and reliable luxurious gem luxurious gia @@ -37047,6 +37251,7 @@ medical dentists near medical historic medical marijuana medical online +medical website medical-bestseller medical-cannabis medical-credent @@ -37055,6 +37260,7 @@ medical-dentists-near medical-historic medical-marijuana medical-online +medical-website medicament info medicament-info medicarefraud @@ -37122,6 +37328,7 @@ mega de rateio mega link mega m3ga mega manila +mega moolah mega pezone mega prix méga prix @@ -37132,12 +37339,14 @@ mega site mega spb mega teta mega tetona +mega вывод mega-culo mega-de-rateio mega-link mega-m3ga mega-main mega-manila +mega-moolah mega-pezone mega-prix mega-prov @@ -37155,6 +37364,7 @@ megaderateio megalink megamain megamanila +megamoolah megapezone megapixel ip camera megapixel-ip-camera @@ -37217,11 +37427,13 @@ mejores credito mejores crédito mejores prestamo mejores préstamo +mejores propuest mejores snack mejores-booster mejores-casino mejores-credito mejores-prestamo +mejores-propuest mejores-snack mejorescredito mejoresprestamo @@ -37550,6 +37762,7 @@ michael-kors michaelkors michaelvoday microcosm of the album +microgaming microsoft - crack microsoft crack microsoft-crack @@ -38295,6 +38508,7 @@ moonrock weed moonrock-weed moore about moore-about +more >> more blog more clash of more component base @@ -38322,7 +38536,7 @@ more-effective! more-eventually more-lv more-smartly -more>>> +more>> morelv moreover seldom moreover, buy @@ -38426,6 +38640,7 @@ mothers costume mothers-costume motivation book motivation-book +motoagua motor whole motor-whole motorhome cabinet @@ -38807,6 +39022,7 @@ my bookmark site my bookmarks my bpog my btc +my car felt wrong my crypto my custom golf my euro ticket @@ -38980,6 +39196,7 @@ myanmartour mybetor mybitcoin mybookmark +mybudcatalog mybusiness mycin online mycin-online @@ -39543,6 +39760,7 @@ nexium.to/ nexium2u nexium4u nexopia +next >> next articles next post thank next post, i @@ -39550,6 +39768,7 @@ next the skill next write ups next yr next-articles +next>> nextspin skill nextspin-skill nfc.lol @@ -40038,6 +40257,7 @@ now now now-credit-card now-interstitial now-now +now>> nowadays blog nowe zdjecia nowe zdjęcia @@ -40395,6 +40615,8 @@ ocrvpart oculosfeminino oczyszczalnia przydomow oczyszczalnia-przydomow +odbierz bonus +odbierz-bonus odchudzanie oddluzania oddłużania @@ -40662,7 +40884,7 @@ olur oturum olur-oturum omalizumab omg blog -omg площадка +omg площадк omg-blog omgblog omgomgomg @@ -40908,6 +41130,7 @@ online vietnam online weblog online webpage online website +online z licenc online παραφαρμακειο online_flower online-24 @@ -41724,12 +41947,14 @@ packs-fanny packscursi packscurso pactswap.org +padang.xyz padişahbet page :: page 1 of goog page an edge page are equip page crypto +page explains hidden page fully about page give pleasant page gives pleasant @@ -42365,10 +42590,10 @@ pay-for-a-good pay-table payable in gold payday | -payday advanc +payday adv payday cash payday loan -payday-advanc +payday-adv payday-cash payday-loan payday-on @@ -42674,6 +42899,8 @@ perfectly written post perfectly written site perfectly written subject perfectly-like +perfecto para vivi +perfecto-para-vivi perfectvpn perfectweb perfectwrit @@ -43315,7 +43542,10 @@ platform-permainan platformda sunar platformda-sunar platinum and platinum +platinum slots +platinum-slots platinum, and platinum +platinumslots plavix play 88 play betting @@ -43342,6 +43572,7 @@ play-fortuna play-free play-hack play-matka +play-n-go play-online play-reel-king play-runescape @@ -43350,6 +43581,8 @@ play-video-review play-videos-review play-website play-your-ultimate +play'n go +play’n go play88 playamo casino playamo-casino @@ -43357,6 +43590,7 @@ playamo-online playcargame playcursi playcurso +playdash playedd player is in interface player radio alarm @@ -43495,6 +43729,8 @@ pmupoker pnc speed pnc-speed pncspeed +pobierz teraz +pobierz-teraz pochemuchka poco prezzo poco-prezzo @@ -44231,6 +44467,7 @@ post right here post to obtain post truly post upper +post with clear post writing post you write post-como-este @@ -44913,16 +45150,20 @@ producing provider producing-provider product cbd product hermes +product name list product thc product-hermes +product-name-list product-sale product/product producthermes production of e-mail production of email products cbd +products name list products thc products with bitcoin +products-name-list products/product produit hermes produit-hermes @@ -45214,7 +45455,9 @@ promotionbag promotionshop promotionstore promozioni +prompt ideas here prompt mpg +prompt-ideas-here prompt-mpg promyshlennyye_ proofing solar panel @@ -45259,6 +45502,8 @@ propiska-sobstvennik proposal finish proposal-finish propranolol +propuesta creciente +propuesta-creciente propusk centr propusk v centr propusk_v_centr @@ -45707,6 +45952,8 @@ quartz-seiko quartzseiko quck quest quck-quest +que slots pagan +que-slots-pagan queen chiffon queen clutch queen out @@ -45844,6 +46091,12 @@ rafiq-rental rage porn rage-porn rageporn +ragnarok online +ragnarok private +ragnarok skill +ragnarok-online +ragnarok-private +ragnarok-skill rahalat maroc rahalat-maroc raiders hat @@ -45857,14 +46110,22 @@ raloxifene ralph-lauren rambler.ru/ rambler.ua/ +ramblermail.ru/ +ramblermail.ua/ +ramblermails ramipril ramirezhda +rank check rank increas +rank math rank your business rank-build +rank-check rank-increas +rank-math rank-your-business rankbuild +rankcheck ranked vpn serv ranked-vpn rankedvpn @@ -45873,6 +46134,7 @@ ranking check ranking-check ranking: rankingcheck +rankmath ranode rapid video game rapid-pay @@ -45892,6 +46154,8 @@ rastreadores rasul-rasul rasulrasul rate a engag +rate my ragnarok +rate-my-ragnarok rated dentist near rated dentists near rated-dentist-near @@ -45938,6 +46202,7 @@ rateiosdecurso rateiosdepremium rateiosdown rateiospremium +ratemyragnarok rater-24 rater24 ratespro @@ -46045,9 +46310,11 @@ reach your income reach-me-down reach-profit react consequent +reactoonz read a blog read and leave comment read and leaving comment +read dmail read everthing read here: read it fully @@ -46085,6 +46352,7 @@ read your blog read your page read your site read your web +read-dmail read-everthing read-smaller read-the-pdf @@ -46105,6 +46373,7 @@ reading a submit reading a web reading and leave comment reading and leaving comment +reading dmail reading poker reading taste reading this article @@ -46123,6 +46392,7 @@ reading your page reading your para reading your site reading your web +reading-dmail reading-poker reading-taste reading-writings @@ -46146,6 +46416,7 @@ real lesbian real marvellous info real marvelous info real master +real money mode real video chat real-casino real-estate-web @@ -46153,6 +46424,7 @@ real-estate.web real-lesbian real-master real-money +real-money-mode real-night-club real-nightclub real-sex @@ -46268,9 +46540,12 @@ recaptcha-bypass reccomend this reccomend-this reccommend +receive >> +receive a funds receive carried receive comms receive-carried +receive>> recent seo recent-seo recentseo @@ -46569,6 +46844,7 @@ release-from-movie release-iphone relevante og praktisk reliable blog +reliable health reading reliable plumbing serv reliable weblog reliable webpage @@ -46672,6 +46948,7 @@ remodel-contractors-near remodel-product remodel-service-near remodel-services-near +remodelacion de casa remodeling contractor near remodeling contractors near remodeling service @@ -46763,6 +47040,10 @@ rentalmobil rentalrank rentals-e-site rentals-esite +rentar equipo +rentar moto +rentar-equipo +rentar-moto renting-a-small rentinsur rentluxur @@ -46829,8 +47110,8 @@ reparacion calenta reparacion cocina reparacion de aire reparacion de calenta -reparacion de electro -reparacion electro +reparacion de elect +reparacion elect reparacion energetic reparacion frigorif reparacion lavadora @@ -46839,8 +47120,8 @@ reparacion-calenta reparacion-cocina reparacion-de-aire reparacion-de-calenta -reparacion-de-electro -reparacion-electro +reparacion-de-elect +reparacion-elect reparacion-energetic reparacion-frigorif reparacion-lavadora @@ -46886,6 +47167,7 @@ replica sneaker replica stella replica top replica ugg +replica uhren replica watch replica-bag replica-brand @@ -46922,6 +47204,7 @@ replica-stella replica-store replica-top replica-ugg +replica-uhren replica-world replica0 replica1 @@ -47028,6 +47311,10 @@ reseaux-sociaux reseller uk reseller-uk reselleruk +reservar equipo +reservar moto +reservar-equipo +reservar-moto residence hobby residence-hobby residential landscaper near @@ -47133,6 +47420,7 @@ retraits-rapid retro jord retro-jord retrojord +return of this matter return of this quest return_link return_url @@ -47239,6 +47527,8 @@ reviewz reviot revisao comenta revisao-comenta +revisar tarifa +revisar-tarifa revitalized web revitalized-web revival beauty @@ -48256,7 +48546,9 @@ salomoncanada salomonfr salomonrun salomonspeedcross +salon gier salon style hair +salon-gier salon-style hair salon-style-hair saluran web @@ -48897,6 +49189,7 @@ selllancel sellnow selot terleng selot-terleng +semaglutid sembol clan sembol-clan semi truck repair @@ -49297,19 +49590,19 @@ servicii prof servicii-prof servicio calenta servicio de reparacion -servicio electro +servicio elect servicio postventa servicio servicio servicio tan robusto servicio tecnico calenta servicio técnico calenta -servicio tecnico electro -servicio técnico electro +servicio tecnico elect +servicio técnico elect servicio tecnico madrid servicio técnico madrid servicio-calenta servicio-de-reparacion -servicio-electro +servicio-elect servicio-postventa servicio-servicio servicios los servicios @@ -49892,8 +50185,11 @@ shift dress shift-dress shiftdress shine of your costume +ship supplys +ship-supplys shipping winning shipping-winning +shipsupplys shirt cease shirt cheap shirt custom @@ -50250,6 +50546,7 @@ shortugg shot.you should statement should you placed +should youre should-statement shoulder tote shoulder-tote @@ -50364,6 +50661,8 @@ signoutwidget signozodiac signs begin to occur signs is treatable +signup offer avail +signup offers avail signzodiac sihe seite sihe site @@ -50466,6 +50765,8 @@ simulator free simulator-free simultanious sin cobrarle el +sin receta +sin-receta sincere examine sincere understand sincere-understand @@ -50514,6 +50815,7 @@ site derateio site echt site expert near site experts near +site explains hidden site give pleasant site gives pleasant site goog @@ -50562,6 +50864,7 @@ site uffic site vip site visitor site web site +site with article site wordpress site-- site-amor @@ -50608,6 +50911,7 @@ site-web site-wordpress site, stick with site:- +site:. site:) site? my web site.vip @@ -50885,6 +51189,7 @@ slot-lapak slot-machine slot-on-line slot-online +slot-platinum slot-plinko slot-pulsa slot-qq @@ -50910,21 +51215,26 @@ slotmachine slotmaschinen slotonline slotpg +slotplatinum slotplinko slotpulsa slotqq slots blackjack slots machine slots online +slots pagan mas slots rtp slots_on_the_internet slots-blackjack slots-machine slots-on-the-internet slots-online +slots-pagan-mas +slots-platinum slots-rtp slots, blackjack slotsmachine +slotsplatinum slotsrtp slottoto slug.ru/ @@ -51169,8 +51479,10 @@ sở nam cao so verdienen sie so-ban-am so-nam-cao +sobre burbuja sobre los precio sobre tiara +sobre-burbuja sobre-tiara socal tms socal-tms @@ -51619,6 +51931,8 @@ spielcasino spiele bonus spiele-bonus spielebonus +spielen einwandfrei +spielen-einwandfrei spielgeld gibt spielgeld-gibt spielleiterin be @@ -51759,6 +52073,9 @@ spotykam-blog spotykam-post spr67.ru/ spravochnik +sprawdz salon +sprawdź salon +sprawdz-salon sprawdzian pdf sprawdzian-pdf sprawdzone narzedzia @@ -51830,6 +52147,9 @@ sqworl.com/ src=http srochnaya pechat srochnaya-pechat +srodki bonus +środki bonus +srodki-bonus ssgamesbr.top sşl şsl @@ -51896,7 +52216,11 @@ start having accident started a blog starting at $ starwarsthe +starz bet starz_ +starz-bet +starzbet +starzuzbet state-of-the-art statement state statement-state @@ -52279,6 +52603,7 @@ structure structure structure to oneself structure-oneself structure-structure +structured car knowledge structured market anal struggle the cruise struggles wrinkle @@ -52674,6 +52999,7 @@ sunshine-facet sunucu optimiz sunucu-optimiz super affiliate +super article! super auto lock super auto-lock super casino @@ -52962,9 +53288,12 @@ swiss-replic swissreplic swoj blog swój blog +swoj bonus +swój bonus swoj post swój post swoj-blog +swoj-bonus swoj-post sword trad sword-trad @@ -54111,6 +54440,7 @@ theguest thehoverboard thehypothyroid their blog +their content also their e-mail list their email list their enjoying future @@ -54654,6 +54984,22 @@ tiara-infant tiara-passo tiaras passo tiaras-passo +ticket planet china +ticket planet macao +ticket planet provide +ticket planet tomorrow +ticket-planet-china +ticket-planet-macao +ticket-planet-provide +ticket-planet-tomorrow +ticketplanet china +ticketplanet macao +ticketplanet provide +ticketplanet tomorrow +ticketplanet-china +ticketplanet-macao +ticketplanet-provide +ticketplanet-tomorrow tidur victor tidur-victor tien thuong @@ -55159,6 +55505,7 @@ took half in the took half in this toolkit obtain toolkit-obtain +tools its valu tooth new tooth tooth tooth-new @@ -55178,6 +55525,7 @@ top blog top bulgar top business top bvlgar +top chinese elect top choice for all top conversion camper top conversion rv @@ -55227,6 +55575,7 @@ top-bulgar top-business top-buzz top-bvlgar +top-chinese-elect top-conversion-camper top-conversion-rv top-conversion-trailer @@ -55405,6 +55754,7 @@ totaldns.su/ totaldns.za/ totalfree totalizador +totalizator totally achievable totally free totally-free @@ -55536,6 +55886,8 @@ trafficivy trafficvance trafficz traffscience +traga-gratis +tragagratis traier roof replac traier-roof-replac trailer ac repair @@ -55754,10 +56106,15 @@ trangcong trangdep tranghot trangmanly +transaction-next +transaction.next +transactionnext +transfer >> transfer barca transfer hizmet transfer-barca transfer-hizmet +transfer>> transform my life transform your life transform-vhs @@ -55892,6 +56249,7 @@ trip planning near trip-planner-near trip-planners-near trip-planning-near +tripscans triviatrivia trollapp trong game @@ -56054,6 +56412,8 @@ turisticheskij marshr turisticheskij-marshr turkiye@example turn my essay +turnieje slot +turnieje-slot turning a revenue turnkey blog turnkey initiative @@ -56651,6 +57011,8 @@ under-pant underage sex underage-sex underagesex +underhanded girl +underhanded-girl underneath manag underneath-manag understand it cut @@ -57016,11 +57378,13 @@ useful advice within useful article overall useful articles overall useful blog +useful for reader useful idiom useful page overall useful pages overall useful stuff , useful-idiom +useful! ai prompt usefulness of your content usefuyl user genial @@ -58070,6 +58434,7 @@ viramune virgin porn virgin-porn virginporn +virgo-show virin site virin-site virtual coach @@ -58302,11 +58667,13 @@ volume-muscular voluptas_ voluptatem_ volvo-volvo +von google von ysl +von-google von-ysl vonysl -vote trump mask -vote-trump-mask +vote trump +vote-trump votre site votre-site votresite @@ -58497,9 +58864,11 @@ wall-installer-near wallet invest wallet out wallet tool +wallet twitter wallet-invest wallet-out wallet-tool +wallet-twitter walletinvest walletout wallettool @@ -58548,6 +58917,7 @@ wanna-say wanna-state wanna-tell want bitcoin +want clear diagnostics want is brill want navigate want to commentary @@ -59037,11 +59407,13 @@ website company near website consultant near website consultants near website daily +website doctor website easily website easy website every day website every once website everyday +website evidence website firm near website firms near website for every @@ -59067,6 +59439,7 @@ website laten website loading website look website market +website medical website net website not work website of trad @@ -59120,10 +59493,12 @@ website-company-near website-consultant-near website-consultants-near website-daily +website-doctor website-easily website-easy website-every-day website-everyday +website-evidence website-firm-near website-firms-near website-for-essay @@ -59137,6 +59512,7 @@ website-kita website-landing website-laten website-look +website-medical website-net website-online website-organic @@ -59797,6 +60173,7 @@ with amazingness with blog comment with declare with e2bet +with free spin with genuine argu with imminent post with keto diet @@ -59826,6 +60203,7 @@ with-big-ass with-body-weight with-declare with-e2bet +with-free-spin with-healthy-living with-my-blog with-my-page @@ -59841,6 +60219,8 @@ withdraw winning withdraw-digital withdraw-online withdraw-winning +withdrawal process +withdrawal-process withdrawal! withher withhim @@ -60415,13 +60795,19 @@ writingessay writinghelper writingpaper writingserv +written article +written blog written on the blog written on the internet written on the net written on the page written on the site written on the web +written post written text within +written-article +written-blog +written-post wrong past detail wrote an really wrote the e-book @@ -60561,6 +60947,9 @@ wyłączny wynn81 wypoczynku wyposazenie +wyprobuj salon +wypróbuj salon +wyprobuj-salon wyszukiwark wywóz wⲟ @@ -60760,6 +61149,12 @@ yantar-e-team yantar-eteam yard growing bag yard-growing-bag +yardim hizmeti +yardim yol +yardim-hizmeti +yardim-yol +yardım hizmeti +yardım yol yarosl yarrak hilesi yarrak kaldirma @@ -60833,6 +61228,9 @@ yokur blog yokur business yokur info yokur web +yol yardim +yol yardım +yol-yardim yolo hack yolo name yolo user @@ -61294,6 +61692,7 @@ youre better youre bettor youre incred youre info +youre invest youre not youre so youre talk @@ -61550,6 +61949,8 @@ zapravka-kartrid zarabotk zasorov kanal zasorov-kanal +zaufany operator +zaufany-operator zawiera witamin zawiera-witamin zawieszki @@ -61787,6 +62188,7 @@ zyvox азартные активировать счет акции +алкобарьер алкогол альтернатива анальной ебли @@ -61920,10 +62322,10 @@ zyvox втб банк втс вход в систему -вход на сайт вход систему вы любите выбираем лучши +выбор площадк выбрать лучшие выигрышного комбо выплату выиг @@ -61950,6 +62352,7 @@ zyvox говоришь гово говорю гово головные устройс +голодание пожи город топ горшки с поливом горящих туров @@ -62025,6 +62428,7 @@ zyvox дренажные раб дрова березо дрова колотые +другие http душу на прост ԁa ԁe @@ -62055,6 +62459,8 @@ zyvox жалюзи для умного желаете мечтаете желаетемечтаете +желчные камни +желчь камни живая пихта жизненные проблем жизненые проблем @@ -62068,10 +62474,9 @@ zyvox заезд для авто заезд на дачу займы россии -зайти на официальную -зайти на сайт +зайти на официал заказ -закладку +закладк записаться заправка картридж заработ @@ -62081,6 +62486,7 @@ zyvox здесь вы найд здесь нет шума здесь сайт +здоровье десен здоровье сайт зли специалистов змусила на @@ -62100,6 +62506,8 @@ zyvox игровом клубе игровые игровых +игры http +игры, http идеалните дънки идеально подхо идеальный ресто @@ -62185,6 +62593,8 @@ zyvox конференц-зал копируйте ссылку коптер dj +корисний сайт +корисні порад кормлении грудь кормлениигрудь коробку вольво @@ -62333,6 +62743,7 @@ zyvox мышечной масс на 1win на любую тему +на сайт набрать подпи надежный партнер надежный свай @@ -62363,6 +62774,7 @@ zyvox неизлечимых медициной неоспоримое преим неповторимые уборы +неприятный запах ниже сайт низкие цен низкой цене @@ -62457,7 +62869,7 @@ zyvox пенная шоу пенное вечери пенное шоу -перейти на сайт +переходьте за посилан перманентный макияж персональный песни mp3 @@ -62724,6 +63136,7 @@ zyvox сироп мангустина скам деньги скам на деньги +скан официал скандал жк скандальных путе скачать @@ -62819,6 +63232,7 @@ zyvox торговля бинар торкретирование тревожной кнопки +трипскан труб канал трудоустройства трц @@ -62831,6 +63245,7 @@ zyvox уo уборка офиса уборка помещ +увлекательное развле уголовная ответст удачного выбора удивительные @@ -62842,6 +63257,7 @@ zyvox уникал скинами уникальным свойс уникальными скинами +унікальні матеріал уннв слушать управляющую компан ура наконецто @@ -62905,6 +63321,7 @@ zyvox ценное мнение ценные советы цены +цьому сайт через канаву через поисск чип тюнинг @@ -62923,6 +63340,7 @@ zyvox шёлковый палант шёлковый платок шє +шикарное торжество шкаф в парк шкуры животных шлюхи @@ -63295,6 +63713,7 @@ zyvox ߋt ߋx ߋy +पित्त की पथरी กฏหมาย กัญชา กัญชา กฏหมาย กัญชา ขนมใส่ @@ -63428,6 +63847,7 @@ zyvox 놀이터보너 놀쟈 다음 사이트에서 +담석 당신의 블로 당신의블로 대출 @@ -64194,6 +64614,7 @@ zyvox 考, 考試時間 聊球通 +胆石 脳症 脳皮質味 脿 diff --git a/formidable.php b/formidable.php index 3e51962d6e..3d0c64a0d0 100644 --- a/formidable.php +++ b/formidable.php @@ -2,7 +2,7 @@ /** * Plugin Name: Formidable Forms * Description: Quickly and easily create drag-and-drop forms - * Version: 6.31 + * Version: 6.32 * Plugin URI: https://formidableforms.com/ * Author URI: https://formidableforms.com/ * Author: Strategy11 Form Builder Team diff --git a/js/admin/forms-list.js b/js/admin/forms-list.js index 65b2cce18e..cc2d5be578 100644 --- a/js/admin/forms-list.js +++ b/js/admin/forms-list.js @@ -87,7 +87,7 @@ * Update the 'mode' query param in the current URL based on the show description toggle. * The screen-options redirect uses HTTP_REFERER, so the updated URL is preserved after submit. * - * @since x.x + * @since 6.32 * * @return {void} */ diff --git a/js/formidable.js b/js/formidable.js index 44047beda6..b21dd8a762 100644 --- a/js/formidable.js +++ b/js/formidable.js @@ -306,7 +306,7 @@ function frmFrontFormJS() { * * Removing stale errors is universal. Adding errors only happens when JS validation is enabled. * - * @since x.x Added the `addErrors` parameter. + * @since 6.32 Added the `addErrors` parameter. * * @param {HTMLElement} field * @param {boolean} addErrors Whether to add new errors. Defaults to `true`. @@ -1258,7 +1258,7 @@ function frmFrontFormJS() { /** * Updates the aria-describedby attribute, removing the target element ID. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} el The target element that is removed from the aria-describedby data. * @return {void} diff --git a/js/formidable.min.js b/js/formidable.min.js index af5b879356..f1923a2e60 100644 --- a/js/formidable.min.js +++ b/js/formidable.min.js @@ -4,46 +4,47 @@ nameParts[3].replace("[","");else fieldId=nameParts[1].replace("[","");if(fullID true)}function enableSubmitButton(form){form.querySelectorAll('input[type="submit"], input[type="button"], button[type="submit"]').forEach(button=>button.disabled=false)}function disableSaveDraft($form){const form=$form instanceof jQuery?$form.get(0):$form;if(!form)return;form.querySelectorAll("a.frm_save_draft").forEach(link=>link.style.pointerEvents="none")}function enableSaveDraft($form){const form=$form instanceof jQuery?$form.get(0):$form;if(!form)return;form.querySelectorAll(".frm_save_draft").forEach(saveDraftButton=> {saveDraftButton.disabled=false;saveDraftButton.style.pointerEvents=""})}function validateForm(object){let errors=[];const vanillaJsObject="function"===typeof object.get?object.get(0):object;vanillaJsObject?.querySelectorAll(".frm_required_field").forEach(requiredField=>{const isVisible=requiredField.offsetParent!==null;if(!isVisible)return;requiredField.querySelectorAll("input, select, textarea").forEach(requiredInput=>{if(hasClass(requiredInput,"frm_optional")||hasClass(requiredInput,"ed_button"))return; errors=checkRequiredField(requiredInput,errors)})});vanillaJsObject?.querySelectorAll("input,select,textarea").forEach(field=>{if(""===field.value){if("number"===field.type)checkValidity(field,errors);const isConfirmationField=field.name&&0===field.name.indexOf("item_meta[conf_");if(!isConfirmationField)return}validateFieldValue(field,errors,true);checkValidity(field,errors)});if(!hasInvisibleRecaptcha(object))errors=validateRecaptcha(object,errors);return errors}function checkValidity(field,errors){if("object"!== -typeof field.validity||false!==field.validity.valid)return;const fieldID=getFieldId(field,true);if(errors[fieldID]===undefined)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg");if("function"===typeof field.reportValidity)field.reportValidity()}function hasClass(element,targetClass){return element.classList&&element.classList.contains(targetClass)}function maybeValidateChange(field){if(field.type==="url")maybeAddHttpsToUrl(field);const form=field.closest("form");if(form&&hasClass(form, -"frm_js_validate"))validateField(field)}function maybeAddHttpsToUrl(field){const url=field.value;const matches=url.match(/^(https?|ftps?|mailto|news|feed|telnet):/);if(field.value!==""&&matches===null)field.value=`https://${url}`}function validateField(field){let errors;let key;errors=[];const fieldContainer=field.closest(".frm_form_field");if(!fieldContainer)return;if(hasClass(fieldContainer,"frm_required_field")&&!hasClass(field,"frm_optional"))errors=checkRequiredField(field,errors);if(errors.length< -1)validateFieldValue(field,errors,false);removeFieldError(fieldContainer);if(Object.keys(errors).length>0)for(key in errors)addFieldError(fieldContainer,key,errors)}function validateFieldValue(field,errors,onSubmit){if(field.type==="hidden");else if(field.type==="number")checkNumberField(field,errors);else if(field.type==="email")checkEmailField(field,errors,onSubmit);else if(field.type==="password")checkPasswordField(field,errors,onSubmit);else if(field.type==="url")checkUrlField(field,errors);else if(field.pattern!== -null)checkPatternField(field,errors);if("tel"===field.type&&shouldCheckConfirmField(field,onSubmit))confirmField(field,errors);triggerCustomEvent(document,"frm_validate_field_value",{field,errors,onSubmit})}function checkRequiredField(field,errors){let tempVal;let i;let placeholder;let val="";let fieldID="";let fileID=field.getAttribute("data-frmfile");if(field.type==="hidden"&&fileID===null&&!isAppointmentField(field)&&!isInlineDatepickerField(field))return errors;if(field.type==="checkbox"||field.type=== -"radio")document.querySelectorAll(`input[name="${field.name}"]`).forEach(function(input){const requiredField=input.closest(".frm_required_field");if(!requiredField)return;const checkedInputs=requiredField.querySelectorAll("input:checked");checkedInputs.forEach(function(checkedInput){val=checkedInput.value})});else if(field.type==="file"||fileID){if(fileID===undefined){fileID=getFieldId(field,true);fileID=fileID.replace("file","")}if(errors[fileID]===undefined)val=getFileVals(fileID);fieldID=fileID}else{if(hasClass(field, -"frm_pos_none"))return errors;val=jQuery(field).val();if(val===null)val="";else if(typeof val!=="string"){tempVal=val;val="";for(i=0;i()\[\]\\.,;:\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;if(""!==field.value&&pattern.test(field.value)===false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg");if(shouldCheckConfirmField(field, -onSubmit))confirmField(field,errors)}function checkPasswordField(field,errors,onSubmit){if(shouldCheckConfirmField(field,onSubmit))confirmField(field,errors)}function confirmField(field,errors){const fieldID=getFieldId(field,true);const strippedId=field.id.replace("conf_","");const strippedFieldID=fieldID.replace("conf_","");const confirmField=document.getElementById(strippedId.replace("field_","field_conf_"));if(!confirmField||errors[`conf_${strippedFieldID}`]!==undefined)return;if(fieldID!==strippedFieldID){const firstField= -document.getElementById(strippedId);const {value}=firstField;const confirmValue=confirmField.value;if(value!==confirmValue)errors[`conf_${strippedFieldID}`]=getFieldValidationMessage(confirmField,"data-confmsg")}else validateField(confirmField)}function checkNumberField(field,errors){let fieldID;const number=field.value;if(number!==""&&isNaN(number/1)!==false){fieldID=getFieldId(field,true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}}function checkPatternField(field, -errors){let fieldID;const text=field.value;let format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){fieldID=getFieldId(field,true);if(!(fieldID in errors))if("object"===typeof window.frmProForm&&"function"===typeof window.frmProForm.isIntlPhoneInput&&window.frmProForm.isIntlPhoneInput(field)){if(!window.frmProForm.validateIntlPhoneInput(field))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}else{format=new RegExp(`^${format}$`,"i");if(format.test(text)===false)errors[fieldID]= -getFieldValidationMessage(field,"data-invmsg")}}}function setSelectPlaceholderColor(){const selects=document.querySelectorAll(".form-field select");const styleElement=document.querySelector(".with_frm_style");const textColorDisabled=styleElement?getComputedStyle(styleElement).getPropertyValue("--text-color-disabled").trim():"";if(!selects.length||!textColorDisabled)return;const changeSelectColor=function(select){if(select.options[select.selectedIndex]&&hasClass(select.options[select.selectedIndex], -"frm-select-placeholder"))select.style.setProperty("color",textColorDisabled,"important");else select.style.color=""};Array.prototype.forEach.call(selects,function(select){changeSelectColor(select);select.addEventListener("change",function(){changeSelectColor(select)})})}function hasInvisibleRecaptcha(object){if(isGoingToPrevPage(object))return false;const form=object instanceof jQuery?object.get(0):object;if(!form)return false;const recaptcha=form.querySelector('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]'); -if(recaptcha){const recaptchaID=recaptcha.dataset.rid;const alreadyChecked=grecaptcha.getResponse(recaptchaID);if(alreadyChecked.length===0)return recaptcha}return false}function executeInvisibleRecaptcha(invisibleRecaptcha){const recaptchaID=invisibleRecaptcha.dataset.rid;grecaptcha.reset(recaptchaID);grecaptcha.execute(recaptchaID)}function validateRecaptcha(form,errors){const formEl=form instanceof jQuery?form.get(0):form;if(!formEl)return errors;const recaptcha=formEl.querySelector(".frm-g-recaptcha"); -if(!recaptcha)return errors;const recaptchaID=recaptcha.dataset.rid;let response;try{response=grecaptcha.getResponse(recaptchaID)}catch(e){if(formEl.querySelector('input[name="recaptcha_checked"]'))return errors;response=""}if(response.length===0){const fieldContainer=recaptcha.closest(".frm_form_field");if(fieldContainer?.id){const fieldID=fieldContainer.id.replace("frm_field_","").replace("_container","");errors[fieldID]=""}}return errors}function getFieldValidationMessage(field,messageType){let msg= -field.getAttribute(messageType);if(null===msg)msg="";if(""!==msg&&shouldWrapErrorHtmlAroundMessageType(messageType))msg=wrapErrorHtml(msg,field);return msg}function wrapErrorHtml(msg,field){let errorHtml=field.getAttribute("data-error-html");if(null===errorHtml)return msg;errorHtml=errorHtml.replace(/\+/g,"%20");msg=decodeURIComponent(errorHtml).replace("[error]",msg);const fieldId=getFieldId(field,false);const split=fieldId.split("-");const fieldIdParts=field.id.split("_");fieldIdParts.shift();split[0]= -fieldIdParts.join("_");const errorKey=split.join("-");return msg.replace("[key]",errorKey)}function shouldWrapErrorHtmlAroundMessageType(type){return"pattern"!==type}function shouldJSValidate(object){if("function"===typeof object.get)object=object.get(0);let validate=hasClass(object,"frm_js_validate");if(validate&&typeof frmProForm!=="undefined"&&(frmProForm.savingDraft(object)||frmProForm.goingToPreviousPage(object)))validate=false;return validate}function getFormErrors(object,action){const fieldsets= -object.querySelectorAll(".frm_form_field");fieldsets.forEach(field=>field.classList.add("frm_doing_ajax"));const data=`${jQuery(object).serialize()}&action=frm_entries_${action}&nonce=${frm_js.nonce}`;const shouldTriggerEvent=object.classList.contains("frm_trigger_event_on_submit");const doRedirect=response=>{jQuery(document).trigger("frmBeforeFormRedirect",[object,response]);if(!response.openInNewTab){window.location=response.redirect;return}const newTab=window.open(response.redirect,"_blank");if(!newTab&& -response.fallbackMsg&&response.content)response.content=response.content.trim().replace(/(<\/div><\/div>)$/,` ${response.fallbackMsg}`)};const success=function(response){const defaultResponse={content:"",errors:{},pass:false};if(response===null)response=defaultResponse;else{response=response.replace(/^\s+|\s+$/g,"");if(response.indexOf("{")===0)response=JSON.parse(response);else response=defaultResponse}let willRedirect=false;if(response.redirect!==undefined){if(shouldTriggerEvent){triggerCustomEvent(object, -"frmSubmitEvent");return}if(response.delay)setTimeout(function(){doRedirect(response)},1E3*response.delay);else doRedirect(response);willRedirect=true}if("string"===typeof response.content&&response.content!==""){if(shouldTriggerEvent){triggerCustomEvent(object,"frmSubmitEvent",{content:response.content});return}removeSubmitLoading(jQuery(object));if(frm_js.offset!=-1)frmFrontForm.scrollMsg(jQuery(object),false);const formIdInput=object.querySelector('input[name="form_id"]');const formID=formIdInput? -formIdInput.value:"";response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");const replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);const delay=maybeSlideOut(replaceContent,response.content);setTimeout(function(){afterFormSubmittedBeforeReplace(object,response);replaceContent.replaceWith(response.content);addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){const pageOrderInput=document.querySelector(`input[name="frm_page_order_${formID}"]`); -const pageOrder=pageOrderInput?pageOrderInput.value:"";const tempDiv=document.createElement("div");tempDiv.innerHTML=response.content;const formReturnedInput=tempDiv.querySelector('input[name="form_id"]');const formReturned=formReturnedInput?formReturnedInput.value:"";frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content,object)}afterFormSubmitted(object,response)},delay)}else if(response.errors!==undefined&&Object.keys(response.errors).length){removeSubmitLoading(jQuery(object), -"enable");let contSubmit=true;removeAllErrors();let $fieldCont=null;for(const key in response.errors){const fieldContEl=object.querySelector(`#frm_field_${key}_container`);$fieldCont=fieldContEl?jQuery(fieldContEl):jQuery();if($fieldCont.length){if(!$fieldCont.is(":visible")){const inCollapsedSection=$fieldCont.closest(".frm_toggle_container");if(inCollapsedSection.length){let 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}}}object.querySelectorAll(".frm-g-recaptcha, .g-recaptcha, .h-captcha").forEach(function(captchaEl){const recaptchaID=captchaEl.dataset.rid;if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID);else grecaptcha.reset();if(typeof hcaptcha!=="undefined"&&hcaptcha)hcaptcha.reset()});if(window.turnstile)object.querySelectorAll(".frm-cf-turnstile").forEach(turnstileField=>turnstileField.dataset.rid&&turnstile.reset(turnstileField.dataset.rid)); -jQuery(document).trigger("frmFormErrors",[object,response]);fieldsets.forEach(field=>field.classList.remove("frm_doing_ajax"));scrollToFirstField(object);if(contSubmit)object.submit();else{object.insertAdjacentHTML("afterbegin",response.error_message);checkForErrorsAndMaybeSetFocus()}}else if(!willRedirect){showFileLoading(object);object.submit()}};const error=function(){object.querySelectorAll('input[type="submit"], input[type="button"]').forEach(button=>button.disabled=false);object.submit()};postToAjaxUrl(object, -data,success,error)}function postToAjaxUrl(form,data,success,error){let ajaxUrl=frm_js.ajax_url;const action=form.getAttribute("action");if("string"===typeof action&&action.includes("?action=frm_forms_preview"))ajaxUrl=action.split("?action=frm_forms_preview")[0];const ajaxParams={type:"POST",url:ajaxUrl,data,success};if("function"===typeof error)ajaxParams.error=error;jQuery.ajax(ajaxParams)}function afterFormSubmitted(object,response){const tempDiv=document.createElement("div");tempDiv.innerHTML= -response.content;const formCompleted=tempDiv.querySelector(".frm_message");if(formCompleted)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function afterFormSubmittedBeforeReplace(object,response){const tempDiv=document.createElement("div");tempDiv.innerHTML=response.content;const formCompleted=tempDiv.querySelector(".frm_message");if(formCompleted)triggerCustomEvent(document,"frmFormCompleteBeforeReplace",{object,response})} -function removeAddedScripts(formContainer,formID){const endReplace=document.querySelectorAll(`.frm_end_ajax_${formID}`);if(endReplace.length){formContainer.nextUntil(`.frm_end_ajax_${formID}`).remove();endReplace.forEach(el=>el.remove())}}function maybeSlideOut(oldContent,newContent){let c;let newClass="frm_slideout";if(newContent.includes(" frm_slide")){c=oldContent.children();if(newContent.includes(" frm_going_back"))newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass); -return 300}return 0}function addUrlParam(response){let url;if(history.pushState&&response.page!==undefined){url=addQueryVar("frm_page",response.page);window.history.pushState({html:response.html},"",`?${url}`)}}function addQueryVar(key,value){key=encodeURI(key);value=encodeURI(value);const kvp=document.location.search.substr(1).split("&");let i=kvp.length;while(i--){const 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){const container=$fieldCont instanceof jQuery?$fieldCont.get(0):$fieldCont;if(!container||container.offsetParent===null)return;container.classList.add("frm_blank_field");const input=container.querySelector("input, select, textarea");const id=getErrorElementId(key,input);let describedBy=input?input.getAttribute("aria-describedby"):null;if(typeof frmThemeOverride_frmPlaceError==="function")frmThemeOverride_frmPlaceError(key,jsErrors);else{let errorHtml; -if(jsErrors[key].includes("${jsErrors[key]}`}container.insertAdjacentHTML("beforeend",errorHtml);if(input){if(!describedBy)describedBy=id;else if(!describedBy.includes(id)&&!describedBy.includes("frm_error_field_")){const {errorFirst}=input.dataset;if(errorFirst==="0")describedBy=`${describedBy} ${id}`;else describedBy=`${id} ${describedBy}`}input.setAttribute("aria-describedby", -describedBy)}}if(input)if(["radio","checkbox"].includes(input.type)){const group=input.closest('[role="radiogroup"], [role="group"]');if(group)group.setAttribute("aria-invalid","true")}else input.setAttribute("aria-invalid","true");jQuery(document).trigger("frmAddFieldError",[jQuery(container),key,jsErrors])}function getErrorElementId(key,input){if(isNaN(key)||!input||!input.id)return`frm_error_field_${key}`;return`frm_error_${input.id}`}function removeFieldError(fieldCont){const container=fieldCont instanceof -jQuery?fieldCont.get(0):fieldCont;if(!container)return;const errorMessage=container.querySelector(".frm_error");const errorId=errorMessage?errorMessage.id:"";const input=container.querySelector("input, select, textarea");let describedBy=input?input.getAttribute("aria-describedby"):null;container.classList.remove("frm_blank_field","has-error");if(input)if("true"===input.getAttribute("aria-invalid"))input.setAttribute("aria-invalid","false");else if(["radio","checkbox"].includes(input.type)){const group= -input.closest('[role="radiogroup"], [role="group"]');if(group)group.setAttribute("aria-invalid","false")}if(errorMessage)errorMessage.remove();if(input){input.removeAttribute("aria-describedby");if(describedBy){describedBy=describedBy.replace(errorId,"").trim();if(describedBy)input.setAttribute("aria-describedby",describedBy)}}}function removeAllErrors(){document.querySelectorAll(".form-field").forEach(field=>{field.classList.remove("frm_blank_field","has-error")});document.querySelectorAll(".form-field .frm_error").forEach(error=> -error.remove());document.querySelectorAll(".frm_error_style").forEach(error=>error.remove())}function scrollToFirstField(object){if("function"===typeof object.get)object=object.get(0);const field=object.querySelector(".frm_blank_field");if(field)frmFrontForm.scrollMsg(jQuery(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){const loadingClass=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loadingClass)}function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading(_,enable,processesRunning){if(processesRunning>0)return;document.querySelectorAll(".frm_loading_form").forEach(function(form){form.classList.remove("frm_loading_form", -"frm_loading_prev");jQuery(form).trigger("frmEndFormLoading");if(enable==="enable"){enableSubmitButton(form);enableSaveDraft(form)}})}function showFileLoading(object){const loading=document.getElementById("frm_loading");if(!loading)return;const fileInput=object.querySelector("input[type=file]");const fileval=fileInput?fileInput.value:"";if(fileval!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}function confirmClick(){const message=this.dataset.frmconfirm;return confirm(message)}function onHoneypotFieldChange(){const css= -window.getComputedStyle(this).boxShadow;if(css?.match(/inset/))this.remove()}function changeFocusWhenClickComboFieldLabel(){let label;const 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(){inputsContainer.querySelector(".frm_form_field:first-child input, .frm_form_field:first-child select, .frm_form_field:first-child textarea").focus()})})} +typeof field.validity||false!==field.validity.valid)return;const fieldID=getFieldId(field,true);if(errors[fieldID]===undefined)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg");if("function"===typeof field.reportValidity)field.reportValidity()}function hasClass(element,targetClass){return element.classList&&element.classList.contains(targetClass)}function maybeValidateChange(field){if(field.type==="url")maybeAddHttpsToUrl(field);const form=field.closest("form");if(!form)return;validateField(field, +hasClass(form,"frm_js_validate"))}function maybeAddHttpsToUrl(field){const url=field.value;const matches=url.match(/^(https?|ftps?|mailto|news|feed|telnet):/);if(field.value!==""&&matches===null)field.value=`https://${url}`}function validateField(field,addErrors=true){let errors;let key;errors=[];const fieldContainer=field.closest(".frm_form_field");if(!fieldContainer)return;if(hasClass(fieldContainer,"frm_required_field")&&!hasClass(field,"frm_optional"))errors=checkRequiredField(field,errors);if(errors.length< +1)validateFieldValue(field,errors,false);const hasErrors=Object.keys(errors).length>0;if(addErrors){removeFieldError(fieldContainer);if(hasErrors)for(key in errors)addFieldError(fieldContainer,key,errors)}else if(!hasErrors)removeFieldError(fieldContainer)}function validateFieldValue(field,errors,onSubmit){if(field.type==="hidden");else if(field.type==="number")checkNumberField(field,errors);else if(field.type==="email")checkEmailField(field,errors,onSubmit);else if(field.type==="password")checkPasswordField(field, +errors,onSubmit);else if(field.type==="url")checkUrlField(field,errors);else if(field.pattern!==null)checkPatternField(field,errors);if("tel"===field.type&&shouldCheckConfirmField(field,onSubmit))confirmField(field,errors);triggerCustomEvent(document,"frm_validate_field_value",{field,errors,onSubmit})}function checkRequiredField(field,errors){let tempVal;let i;let placeholder;let val="";let fieldID="";let fileID=field.getAttribute("data-frmfile");if(field.type==="hidden"&&fileID===null&&!isAppointmentField(field)&& +!isInlineDatepickerField(field))return errors;if(field.type==="checkbox"||field.type==="radio")document.querySelectorAll(`input[name="${field.name}"]`).forEach(function(input){const requiredField=input.closest(".frm_required_field");if(!requiredField)return;const checkedInputs=requiredField.querySelectorAll("input:checked");checkedInputs.forEach(function(checkedInput){val=checkedInput.value})});else if(field.type==="file"||fileID){if(fileID===undefined){fileID=getFieldId(field,true);fileID=fileID.replace("file", +"")}if(errors[fileID]===undefined)val=getFileVals(fileID);fieldID=fileID}else{if(hasClass(field,"frm_pos_none"))return errors;val=jQuery(field).val();if(val===null)val="";else if(typeof val!=="string"){tempVal=val;val="";for(i=0;i()\[\]\\.,;:\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;if(""!==field.value&&pattern.test(field.value)=== +false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg");if(shouldCheckConfirmField(field,onSubmit))confirmField(field,errors)}function checkPasswordField(field,errors,onSubmit){if(shouldCheckConfirmField(field,onSubmit))confirmField(field,errors)}function confirmField(field,errors){const fieldID=getFieldId(field,true);const strippedId=field.id.replace("conf_","");const strippedFieldID=fieldID.replace("conf_","");const confirmField=document.getElementById(strippedId.replace("field_","field_conf_")); +if(!confirmField||errors[`conf_${strippedFieldID}`]!==undefined)return;if(fieldID!==strippedFieldID){const firstField=document.getElementById(strippedId);const {value}=firstField;const confirmValue=confirmField.value;if(value!==confirmValue)errors[`conf_${strippedFieldID}`]=getFieldValidationMessage(confirmField,"data-confmsg")}else validateField(confirmField)}function checkNumberField(field,errors){let fieldID;const number=field.value;if(number!==""&&isNaN(number/1)!==false){fieldID=getFieldId(field, +true);if(!(fieldID in errors))errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}}function checkPatternField(field,errors){let fieldID;const text=field.value;let format=getFieldValidationMessage(field,"pattern");if(format!==""&&text!==""){fieldID=getFieldId(field,true);if(!(fieldID in errors))if("object"===typeof window.frmProForm&&"function"===typeof window.frmProForm.isIntlPhoneInput&&window.frmProForm.isIntlPhoneInput(field)){if(!window.frmProForm.validateIntlPhoneInput(field))errors[fieldID]= +getFieldValidationMessage(field,"data-invmsg")}else{format=new RegExp(`^${format}$`,"i");if(format.test(text)===false)errors[fieldID]=getFieldValidationMessage(field,"data-invmsg")}}}function setSelectPlaceholderColor(){const selects=document.querySelectorAll(".form-field select");const styleElement=document.querySelector(".with_frm_style");const textColorDisabled=styleElement?getComputedStyle(styleElement).getPropertyValue("--text-color-disabled").trim():"";if(!selects.length||!textColorDisabled)return; +const changeSelectColor=function(select){if(select.options[select.selectedIndex]&&hasClass(select.options[select.selectedIndex],"frm-select-placeholder"))select.style.setProperty("color",textColorDisabled,"important");else select.style.color=""};Array.prototype.forEach.call(selects,function(select){changeSelectColor(select);select.addEventListener("change",function(){changeSelectColor(select)})})}function hasInvisibleRecaptcha(object){if(isGoingToPrevPage(object))return false;const form=object instanceof +jQuery?object.get(0):object;if(!form)return false;const recaptcha=form.querySelector('.frm-g-recaptcha[data-size="invisible"], .g-recaptcha[data-size="invisible"]');if(recaptcha){const recaptchaID=recaptcha.dataset.rid;const alreadyChecked=grecaptcha.getResponse(recaptchaID);if(alreadyChecked.length===0)return recaptcha}return false}function executeInvisibleRecaptcha(invisibleRecaptcha){const recaptchaID=invisibleRecaptcha.dataset.rid;grecaptcha.reset(recaptchaID);grecaptcha.execute(recaptchaID)} +function validateRecaptcha(form,errors){const formEl=form instanceof jQuery?form.get(0):form;if(!formEl)return errors;const recaptcha=formEl.querySelector(".frm-g-recaptcha");if(!recaptcha)return errors;const recaptchaID=recaptcha.dataset.rid;let response;try{response=grecaptcha.getResponse(recaptchaID)}catch(e){if(formEl.querySelector('input[name="recaptcha_checked"]'))return errors;response=""}if(response.length===0){const fieldContainer=recaptcha.closest(".frm_form_field");if(fieldContainer?.id){const fieldID= +fieldContainer.id.replace("frm_field_","").replace("_container","");errors[fieldID]=""}}return errors}function getFieldValidationMessage(field,messageType){let msg=field.getAttribute(messageType);if(null===msg)msg="";if(""!==msg&&shouldWrapErrorHtmlAroundMessageType(messageType))msg=wrapErrorHtml(msg,field);return msg}function wrapErrorHtml(msg,field){let errorHtml=field.getAttribute("data-error-html");if(null===errorHtml)return msg;errorHtml=errorHtml.replace(/\+/g,"%20");msg=decodeURIComponent(errorHtml).replace("[error]", +msg);const fieldId=getFieldId(field,false);const split=fieldId.split("-");const fieldIdParts=field.id.split("_");fieldIdParts.shift();split[0]=fieldIdParts.join("_");const errorKey=split.join("-");return msg.replace("[key]",errorKey)}function shouldWrapErrorHtmlAroundMessageType(type){return"pattern"!==type}function shouldJSValidate(object){if("function"===typeof object.get)object=object.get(0);let validate=hasClass(object,"frm_js_validate");if(validate&&typeof frmProForm!=="undefined"&&(frmProForm.savingDraft(object)|| +frmProForm.goingToPreviousPage(object)))validate=false;return validate}function getFormErrors(object,action){const fieldsets=object.querySelectorAll(".frm_form_field");fieldsets.forEach(field=>field.classList.add("frm_doing_ajax"));const data=`${jQuery(object).serialize()}&action=frm_entries_${action}&nonce=${frm_js.nonce}`;const shouldTriggerEvent=object.classList.contains("frm_trigger_event_on_submit");const doRedirect=response=>{jQuery(document).trigger("frmBeforeFormRedirect",[object,response]); +if(!response.openInNewTab){window.location=response.redirect;return}const newTab=window.open(response.redirect,"_blank");if(!newTab&&response.fallbackMsg&&response.content)response.content=response.content.trim().replace(/(<\/div><\/div>)$/,` ${response.fallbackMsg}`)};const success=function(response){const defaultResponse={content:"",errors:{},pass:false};if(response===null)response=defaultResponse;else{response=response.replace(/^\s+|\s+$/g,"");if(response.indexOf("{")===0)response= +JSON.parse(response);else response=defaultResponse}let willRedirect=false;if(response.redirect!==undefined){if(shouldTriggerEvent){triggerCustomEvent(object,"frmSubmitEvent");return}if(response.delay)setTimeout(function(){doRedirect(response)},1E3*response.delay);else doRedirect(response);willRedirect=true}if("string"===typeof response.content&&response.content!==""){if(shouldTriggerEvent){triggerCustomEvent(object,"frmSubmitEvent",{content:response.content});return}removeSubmitLoading(jQuery(object)); +if(frm_js.offset!=-1)frmFrontForm.scrollMsg(jQuery(object),false);const formIdInput=object.querySelector('input[name="form_id"]');const formID=formIdInput?formIdInput.value:"";response.content=response.content.replace(/ frm_pro_form /g," frm_pro_form frm_no_hide ");const replaceContent=jQuery(object).closest(".frm_forms");removeAddedScripts(replaceContent,formID);const delay=maybeSlideOut(replaceContent,response.content);setTimeout(function(){afterFormSubmittedBeforeReplace(object,response);replaceContent.replaceWith(response.content); +addUrlParam(response);if(typeof frmThemeOverride_frmAfterSubmit==="function"){const pageOrderInput=document.querySelector(`input[name="frm_page_order_${formID}"]`);const pageOrder=pageOrderInput?pageOrderInput.value:"";const tempDiv=document.createElement("div");tempDiv.innerHTML=response.content;const formReturnedInput=tempDiv.querySelector('input[name="form_id"]');const formReturned=formReturnedInput?formReturnedInput.value:"";frmThemeOverride_frmAfterSubmit(formReturned,pageOrder,response.content, +object)}afterFormSubmitted(object,response)},delay)}else if(response.errors!==undefined&&Object.keys(response.errors).length){removeSubmitLoading(jQuery(object),"enable");let contSubmit=true;removeAllErrors();let $fieldCont=null;for(const key in response.errors){const fieldContEl=object.querySelector(`#frm_field_${key}_container`);$fieldCont=fieldContEl?jQuery(fieldContEl):jQuery();if($fieldCont.length){if(!$fieldCont.is(":visible")){const inCollapsedSection=$fieldCont.closest(".frm_toggle_container"); +if(inCollapsedSection.length){let 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}}}object.querySelectorAll(".frm-g-recaptcha, .g-recaptcha, .h-captcha").forEach(function(captchaEl){const recaptchaID=captchaEl.dataset.rid;if(typeof grecaptcha!=="undefined"&&grecaptcha)if(recaptchaID)grecaptcha.reset(recaptchaID); +else grecaptcha.reset();if(typeof hcaptcha!=="undefined"&&hcaptcha)hcaptcha.reset()});if(window.turnstile)object.querySelectorAll(".frm-cf-turnstile").forEach(turnstileField=>turnstileField.dataset.rid&&turnstile.reset(turnstileField.dataset.rid));jQuery(document).trigger("frmFormErrors",[object,response]);fieldsets.forEach(field=>field.classList.remove("frm_doing_ajax"));scrollToFirstField(object);if(contSubmit)object.submit();else{object.insertAdjacentHTML("afterbegin",response.error_message);checkForErrorsAndMaybeSetFocus()}}else if(!willRedirect){showFileLoading(object); +object.submit()}};const error=function(){object.querySelectorAll('input[type="submit"], input[type="button"]').forEach(button=>button.disabled=false);object.submit()};postToAjaxUrl(object,data,success,error)}function postToAjaxUrl(form,data,success,error){let ajaxUrl=frm_js.ajax_url;const action=form.getAttribute("action");if("string"===typeof action&&action.includes("?action=frm_forms_preview"))ajaxUrl=action.split("?action=frm_forms_preview")[0];const ajaxParams={type:"POST",url:ajaxUrl,data,success}; +if("function"===typeof error)ajaxParams.error=error;jQuery.ajax(ajaxParams)}function afterFormSubmitted(object,response){const tempDiv=document.createElement("div");tempDiv.innerHTML=response.content;const formCompleted=tempDiv.querySelector(".frm_message");if(formCompleted)jQuery(document).trigger("frmFormComplete",[object,response]);else jQuery(document).trigger("frmPageChanged",[object,response])}function afterFormSubmittedBeforeReplace(object,response){const tempDiv=document.createElement("div"); +tempDiv.innerHTML=response.content;const formCompleted=tempDiv.querySelector(".frm_message");if(formCompleted)triggerCustomEvent(document,"frmFormCompleteBeforeReplace",{object,response})}function removeAddedScripts(formContainer,formID){const endReplace=document.querySelectorAll(`.frm_end_ajax_${formID}`);if(endReplace.length){formContainer.nextUntil(`.frm_end_ajax_${formID}`).remove();endReplace.forEach(el=>el.remove())}}function maybeSlideOut(oldContent,newContent){let c;let newClass="frm_slideout"; +if(newContent.includes(" frm_slide")){c=oldContent.children();if(newContent.includes(" frm_going_back"))newClass+=" frm_going_back";c.removeClass("frm_going_back");c.addClass(newClass);return 300}return 0}function addUrlParam(response){let url;if(history.pushState&&response.page!==undefined){url=addQueryVar("frm_page",response.page);window.history.pushState({html:response.html},"",`?${url}`)}}function addQueryVar(key,value){key=encodeURI(key);value=encodeURI(value);const kvp=document.location.search.substr(1).split("&"); +let i=kvp.length;while(i--){const 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){const container=$fieldCont instanceof jQuery?$fieldCont.get(0):$fieldCont;if(!container||container.offsetParent===null)return;container.classList.add("frm_blank_field");const inputs=container.querySelectorAll("input, select, textarea");const id=getErrorElementId(key,inputs[0]);let describedBy; +if(typeof frmThemeOverride_frmPlaceError==="function")frmThemeOverride_frmPlaceError(key,jsErrors);else{let errorHtml;if(jsErrors[key].includes("${jsErrors[key]}`}container.insertAdjacentHTML("beforeend",errorHtml);inputs.forEach(input=>{describedBy=input?input.getAttribute("aria-describedby"):null;if(!describedBy)describedBy=id;else if(!describedBy.includes(id)&& +!describedBy.includes("frm_error_field_")){const {errorFirst}=input.dataset;if(errorFirst==="0")describedBy=`${describedBy} ${id}`;else describedBy=`${id} ${describedBy}`}input.setAttribute("aria-describedby",describedBy)})}inputs.forEach(input=>{if(["radio","checkbox"].includes(input.type)){const group=input.closest('[role="radiogroup"], [role="group"]');if(group)group.setAttribute("aria-invalid","true")}else input.setAttribute("aria-invalid","true")});jQuery(document).trigger("frmAddFieldError", +[jQuery(container),key,jsErrors])}function getErrorElementId(key,input){if(isNaN(key)||!input||!input.id)return`frm_error_field_${key}`;return`frm_error_${input.id}`}function removeFieldError(fieldCont){const container=fieldCont instanceof jQuery?fieldCont.get(0):fieldCont;if(!container)return;const errorMessage=container.querySelector(".frm_error");const input=container.querySelector("input, select, textarea");container.classList.remove("frm_blank_field","has-error");if(input)if("true"===input.getAttribute("aria-invalid"))input.setAttribute("aria-invalid", +"false");else if(["radio","checkbox"].includes(input.type)){const group=input.closest('[role="radiogroup"], [role="group"]');if(group)group.setAttribute("aria-invalid","false")}if(errorMessage){removeElementFromInputDescribedBy(errorMessage);errorMessage.remove()}}function removeElementFromInputDescribedBy(el){document.querySelectorAll(`[aria-describedby*="${el.id}"]`).forEach(input=>{let ariaDescribedBy=input.getAttribute("aria-describedby").split(" ");ariaDescribedBy=ariaDescribedBy.filter(value=> +{const trimmedValue=value.trim();return trimmedValue&&trimmedValue!==el.id});if(ariaDescribedBy.length){input.setAttribute("aria-describedby",ariaDescribedBy.join(" "));return}input.removeAttribute("aria-describedby")})}function removeAllErrors(){document.querySelectorAll(".form-field").forEach(field=>{field.classList.remove("frm_blank_field","has-error")});document.querySelectorAll(".form-field .frm_error").forEach(el=>{removeElementFromInputDescribedBy(el);el.remove()});document.querySelectorAll(".frm_error_style").forEach(error=> +error.remove())}function scrollToFirstField(object){if("function"===typeof object.get)object=object.get(0);const field=object.querySelector(".frm_blank_field");if(field)frmFrontForm.scrollMsg(jQuery(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){const loadingClass=isGoingToPrevPage($object)?"frm_loading_prev":"frm_loading_form";$object.addClass(loadingClass)}function isGoingToPrevPage($object){return typeof frmProForm!=="undefined"&&frmProForm.goingToPreviousPage($object)}function removeSubmitLoading(_,enable,processesRunning){if(processesRunning>0)return;document.querySelectorAll(".frm_loading_form").forEach(function(form){form.classList.remove("frm_loading_form","frm_loading_prev");jQuery(form).trigger("frmEndFormLoading"); +if(enable==="enable"){enableSubmitButton(form);enableSaveDraft(form)}})}function showFileLoading(object){const loading=document.getElementById("frm_loading");if(!loading)return;const fileInput=object.querySelector("input[type=file]");const fileval=fileInput?fileInput.value:"";if(fileval!=="")setTimeout(function(){jQuery(loading).fadeIn("slow")},2E3)}function confirmClick(){const message=this.dataset.frmconfirm;return confirm(message)}function onHoneypotFieldChange(){const css=window.getComputedStyle(this).boxShadow; +if(css?.match(/inset/))this.remove()}function changeFocusWhenClickComboFieldLabel(){let label;const 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(){inputsContainer.querySelector(".frm_form_field:first-child input, .frm_form_field:first-child select, .frm_form_field:first-child textarea").focus()})})} function maybeFocusOnComboSubField(element){if("FIELDSET"!==element.nodeName)return false;if(!element.querySelector(".frm_combo_inputs_container"))return false;const comboSubfield=element.querySelector('[aria-invalid="true"]');if(comboSubfield){focusInput(comboSubfield);return true}return false}function checkForErrorsAndMaybeSetFocus(){if(!frm_js.focus_first_error)return;const errors=document.querySelectorAll(".frm_form_field .frm_error");if(!errors.length)return;let element=errors[0];let timeoutCallback; do{element=element.previousSibling;if(["input","select","textarea"].includes(element.nodeName.toLowerCase())){focusInput(element);break}if(maybeFocusOnComboSubField(element))break;if(element.classList!==undefined){if(element.classList.contains("html-active"))timeoutCallback=function(){const textarea=element.querySelector("textarea");if(null!==textarea)textarea.focus()};else if(element.classList.contains("tmce-active"))timeoutCallback=function(){tinyMCE.activeEditor.focus()};else if(element.classList.contains("frm_opt_container")){const firstInput= element.querySelector("input");if(firstInput){focusInput(firstInput);break}}if("function"===typeof timeoutCallback){setTimeout(timeoutCallback,0);break}}}while(element.previousSibling)}function focusInput(input){if(input.offsetParent!==null)input.focus();else triggerCustomEvent(document,"frmMaybeDelayFocus",{input})}function documentOn(event,selector,handler,options){if(options===undefined)options=false;document.addEventListener(event,function(e){let target;for(target=e.target;target&&target!=this;target= diff --git a/js/src/admin/admin.js b/js/src/admin/admin.js index df9334053a..bcaeb345ca 100644 --- a/js/src/admin/admin.js +++ b/js/src/admin/admin.js @@ -11496,7 +11496,7 @@ window.frmAdminBuildJS = function() { }, /** - * @since x.x + * @since 6.32 */ settings: { validate: { diff --git a/js/src/admin/settings/utils.js b/js/src/admin/settings/utils.js index e41ffd6ade..d695eec191 100644 --- a/js/src/admin/settings/utils.js +++ b/js/src/admin/settings/utils.js @@ -1,7 +1,7 @@ /** * Gets the field ID from the single settings element or the closest single settings element to the field. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} singleSettings The single settings element. * @param {HTMLElement} field The field element to get field ID from. @@ -14,7 +14,7 @@ export const getFieldId = ( singleSettings = null, field = null ) => /** * Gets the field type from the single settings element. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} singleSettings The single settings element. * @param {HTMLElement} field The field element. diff --git a/js/src/admin/settings/validateField.js b/js/src/admin/settings/validateField.js index b0c7d8fe8e..9462d1ffaf 100644 --- a/js/src/admin/settings/validateField.js +++ b/js/src/admin/settings/validateField.js @@ -1,7 +1,7 @@ /** * Runs validation and handles UI feedback. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} field The field element being validated. * @param {Function} getError Function that returns error message or empty string. @@ -24,7 +24,7 @@ export function validateField( field, getError ) { /** * Returns focus to the invalid field once the info modal is dismissed. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} field The invalid field element. * diff --git a/js/src/admin/settings/validateRangeSettings.js b/js/src/admin/settings/validateRangeSettings.js index f287e44005..1daad8af73 100644 --- a/js/src/admin/settings/validateRangeSettings.js +++ b/js/src/admin/settings/validateRangeSettings.js @@ -12,7 +12,7 @@ import { getFieldId, getFieldType } from './utils'; /** * Gets the default values for range settings validation. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} singleSettings The single settings element. * @@ -29,7 +29,7 @@ export function getRangeSettingsDefaults( singleSettings ) { /** * Filters the default values for range settings validation. * - * @since x.x + * @since 6.32 * * @param {Object} defaultSettings The default settings. * @param {Object} context Additional context. @@ -44,7 +44,7 @@ export function getRangeSettingsDefaults( singleSettings ) { /** * Validates number range setting. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} field The field element being validated. */ @@ -81,7 +81,7 @@ export function validateNumberRangeSetting( field ) { /** * Validates step setting. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} field The field element being validated. */ @@ -131,7 +131,7 @@ export function validateStepSetting( field ) { * filter so add-ons (like Pro) can contribute additional checks (e.g. gap range) * without the core needing to know anything about them. * - * @since x.x + * @since 6.32 * * @param {HTMLElement} field The field element being validated. * @@ -146,7 +146,7 @@ export function validateRangeSettings( field ) { /** * Filters the range settings validation result so add-ons can add their own checks. * - * @since x.x + * @since 6.32 * * @param {string} errorMessage The current error message, or empty string when valid. * @param {Object} context Additional context. diff --git a/languages/formidable.pot b/languages/formidable.pot index 5962e10e55..a524a99fff 100644 --- a/languages/formidable.pot +++ b/languages/formidable.pot @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Formidable Forms plugin. msgid "" msgstr "" -"Project-Id-Version: Formidable Forms 6.31\n" +"Project-Id-Version: Formidable Forms 6.32\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2026-05-27T14:57:09+00:00\n" +"POT-Creation-Date: 2026-06-16T13:29:56+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: formidable\n" @@ -62,7 +62,7 @@ msgstr "" #: classes/controllers/FrmAddonsController.php:217 #: classes/controllers/FrmAddonsController.php:1012 #: classes/controllers/FrmTestModeController.php:354 -#: classes/helpers/FrmAppHelper.php:3966 +#: classes/helpers/FrmAppHelper.php:3968 #: classes/views/styles/_field-colors.php:13 #: stripe/helpers/FrmTransLiteAppHelper.php:106 msgid "Active" @@ -78,13 +78,13 @@ msgstr "" #: classes/controllers/FrmAddonsController.php:1007 #: classes/controllers/FrmTestModeController.php:355 -#: classes/helpers/FrmAppHelper.php:3967 +#: classes/helpers/FrmAppHelper.php:3969 msgid "Installed" msgstr "" #: classes/controllers/FrmAddonsController.php:1017 #: classes/controllers/FrmTestModeController.php:356 -#: classes/helpers/FrmAppHelper.php:3968 +#: classes/helpers/FrmAppHelper.php:3970 msgid "Not Installed" msgstr "" @@ -113,7 +113,7 @@ msgstr "" #: classes/views/form-templates/modals/upgrade-modal.php:91 #: classes/views/shared/reports-info.php:22 #: js/admin/applications.js:405 -#: js/admin/style.js:468 +#: js/admin/style.js:557 msgid "Upgrade Now" msgstr "" @@ -127,8 +127,8 @@ msgid "Build" msgstr "" #: classes/controllers/FrmAppController.php:308 -#: classes/controllers/FrmStylesController.php:58 -#: classes/controllers/FrmStylesController.php:59 +#: classes/controllers/FrmStylesController.php:67 +#: classes/controllers/FrmStylesController.php:68 #: classes/views/styles/_field-colors.php:331 #: classes/views/styles/_field-description.php:63 #: classes/views/xml/import_form.php:149 @@ -136,7 +136,7 @@ msgid "Style" msgstr "" #: classes/controllers/FrmAppController.php:315 -#: classes/helpers/FrmFormsListHelper.php:435 +#: classes/helpers/FrmFormsListHelper.php:477 #: classes/views/frm-forms/settings.php:13 #: classes/views/frm-settings/form.php:14 msgid "Settings" @@ -145,7 +145,7 @@ msgstr "" #: classes/controllers/FrmAppController.php:322 #: classes/controllers/FrmEntriesController.php:14 #: classes/controllers/FrmEntriesController.php:196 -#: classes/controllers/FrmFormsController.php:1235 +#: classes/controllers/FrmFormsController.php:1242 #: classes/controllers/FrmXMLController.php:317 #: classes/views/xml/import_form.php:148 msgid "Entries" @@ -153,6 +153,7 @@ msgstr "" #: classes/controllers/FrmAppController.php:334 #: classes/controllers/FrmEntriesController.php:21 +#: classes/controllers/FrmFormsController.php:1243 #: classes/controllers/FrmOnboardingWizardController.php:606 #: classes/views/shared/views-info.php:10 #: js/admin/applications.js:357 @@ -164,39 +165,39 @@ msgstr "" msgid "Reports" msgstr "" -#: classes/controllers/FrmAppController.php:378 +#: classes/controllers/FrmAppController.php:380 #: classes/helpers/FrmTipsHelper.php:121 #: classes/views/shared/upgrade_overlay.php:51 msgid "Renew" msgstr "" -#: classes/controllers/FrmAppController.php:383 +#: classes/controllers/FrmAppController.php:385 #: js/admin/applications.js:121 msgid "Upgrade to Pro" msgstr "" -#: classes/controllers/FrmAppController.php:398 +#: classes/controllers/FrmAppController.php:406 msgid "Build a Form" msgstr "" -#: classes/controllers/FrmAppController.php:1405 -#: classes/controllers/FrmFormsController.php:253 +#: classes/controllers/FrmAppController.php:1424 +#: classes/controllers/FrmFormsController.php:260 #: classes/controllers/FrmFormTemplatesController.php:656 #: classes/controllers/FrmSettingsController.php:393 -#: classes/helpers/FrmAppHelper.php:3923 +#: classes/helpers/FrmAppHelper.php:3925 #: classes/views/form-templates/modals/create-template-modal.php:66 #: classes/views/form-templates/modals/name-your-form-modal.php:32 #: classes/views/shared/admin-header.php:32 #: classes/views/shared/confirm-overlay.php:20 #: stripe/controllers/FrmTransLiteSubscriptionsController.php:73 -#: js/admin/style.js:850 -#: js/admin/style.js:966 -#: js/src/admin/admin.js:4661 -#: js/src/admin/admin.js:8856 +#: js/admin/style.js:939 +#: js/admin/style.js:1073 +#: js/src/admin/admin.js:4667 +#: js/src/admin/admin.js:8867 msgid "Cancel" msgstr "" -#: classes/controllers/FrmAppController.php:1409 +#: classes/controllers/FrmAppController.php:1428 msgid "Continue" msgstr "" @@ -251,7 +252,7 @@ msgstr "" #: classes/helpers/FrmFormMigratorsHelper.php:60 #: js/admin/applications.js:381 #: js/admin/applications.js:514 -#: js/admin/style.js:444 +#: js/admin/style.js:533 msgid "Learn More" msgstr "" @@ -282,7 +283,7 @@ msgstr "" #: classes/controllers/FrmDashboardController.php:348 #: classes/controllers/FrmEntriesController.php:179 -#: classes/controllers/FrmFormsController.php:1094 +#: classes/controllers/FrmFormsController.php:1101 #: classes/views/xml/import_form.php:179 #: classes/widgets/FrmElementorWidget.php:52 #: classes/widgets/FrmShowForm.php:81 @@ -311,7 +312,7 @@ msgstr "" #: classes/controllers/FrmDeactivationFeedbackController.php:115 #: classes/controllers/FrmDeactivationFeedbackController.php:116 -#: classes/helpers/FrmAppHelper.php:4024 +#: classes/helpers/FrmAppHelper.php:4026 #: classes/views/form-templates/modal.php:20 #: classes/views/form-templates/modal.php:21 #: classes/views/form-templates/modals/leave-email-modal.php:59 @@ -368,7 +369,7 @@ msgid "Failed to send test email!" msgstr "" #: classes/controllers/FrmEntriesController.php:174 -#: classes/controllers/FrmFormsController.php:1855 +#: classes/controllers/FrmFormsController.php:1872 #: classes/views/frm-entries/form.php:86 #: classes/views/frm-entries/sidebar-shared.php:68 msgid "Entry Key" @@ -422,8 +423,8 @@ msgid "You are trying to view an entry that does not exist" msgstr "" #: classes/controllers/FrmEntriesController.php:723 -#: classes/controllers/FrmFormActionsController.php:789 -#: classes/controllers/FrmFormsController.php:251 +#: classes/controllers/FrmFormActionsController.php:809 +#: classes/controllers/FrmFormsController.php:258 #: classes/controllers/FrmSettingsController.php:391 msgid "Verification failed" msgstr "" @@ -432,62 +433,62 @@ msgstr "" msgid "Entry was successfully deleted" msgstr "" -#: classes/controllers/FrmFieldsController.php:377 +#: classes/controllers/FrmFieldsController.php:414 msgid "Unique: Do not allow the same response multiple times. For example, if one user enters 'Joe', then no one else will be allowed to enter the same name." msgstr "" -#: classes/controllers/FrmFieldsController.php:387 +#: classes/controllers/FrmFieldsController.php:424 msgid "Read Only: Show this field but do not allow the field value to be edited from the front-end." msgstr "" -#: classes/controllers/FrmFieldsController.php:398 +#: classes/controllers/FrmFieldsController.php:435 msgid "Visibility options" msgstr "" -#: classes/controllers/FrmFieldsController.php:405 +#: classes/controllers/FrmFieldsController.php:442 msgid "Autocomplete options" msgstr "" -#: classes/controllers/FrmFieldsController.php:415 +#: classes/controllers/FrmFieldsController.php:452 msgid "Before and after field contents" msgstr "" -#: classes/controllers/FrmFieldsController.php:432 +#: classes/controllers/FrmFieldsController.php:469 msgid "Unique Values" msgstr "" -#: classes/controllers/FrmFieldsController.php:438 +#: classes/controllers/FrmFieldsController.php:475 msgid "Read Only Values" msgstr "" -#: classes/controllers/FrmFieldsController.php:473 +#: classes/controllers/FrmFieldsController.php:510 #: classes/models/fields/FrmFieldCombo.php:216 #: classes/views/frm-fields/back-end/default-value-setting.php:22 msgid "Default Value" msgstr "" -#: classes/controllers/FrmFieldsController.php:480 +#: classes/controllers/FrmFieldsController.php:517 msgid "Calculate Value" msgstr "" -#: classes/controllers/FrmFieldsController.php:484 +#: classes/controllers/FrmFieldsController.php:521 msgid "Calculator forms" msgstr "" -#: classes/controllers/FrmFieldsController.php:486 +#: classes/controllers/FrmFieldsController.php:523 msgid "Automatically calculate the value of this field based on values from other fields." msgstr "" -#: classes/controllers/FrmFieldsController.php:490 +#: classes/controllers/FrmFieldsController.php:527 #: classes/models/FrmField.php:202 msgid "Lookup" msgstr "" -#: classes/controllers/FrmFieldsController.php:494 +#: classes/controllers/FrmFieldsController.php:531 msgid "Lookup fields" msgstr "" -#: classes/controllers/FrmFieldsController.php:496 +#: classes/controllers/FrmFieldsController.php:533 msgid "Dynamically retrieve the value of this field from a lookup field." msgstr "" @@ -617,18 +618,18 @@ msgstr "" msgid "%s form actions" msgstr "" -#: classes/controllers/FrmFormActionsController.php:589 +#: classes/controllers/FrmFormActionsController.php:593 msgid "No actions have been added yet. Select an action above to get started." msgstr "" #. translators: %s: URL to documentation -#: classes/controllers/FrmFormActionsController.php:633 +#: classes/controllers/FrmFormActionsController.php:637 msgid "You have reached your form action limit. To increase this limit, you will require additional code. Visit our documentation at %s." msgstr "" #: classes/controllers/FrmFormsController.php:29 -#: classes/controllers/FrmFormsController.php:1248 -#: classes/controllers/FrmStylesController.php:78 +#: classes/controllers/FrmFormsController.php:1265 +#: classes/controllers/FrmStylesController.php:87 #: classes/controllers/FrmXMLController.php:316 #: classes/views/frm-forms/list.php:10 #: classes/widgets/FrmElementorWidget.php:20 @@ -636,20 +637,20 @@ msgstr "" msgid "Forms" msgstr "" -#: classes/controllers/FrmFormsController.php:69 +#: classes/controllers/FrmFormsController.php:76 msgid "Only show the fields you need and create branching forms. Upgrade to get conditional logic and question branching." msgstr "" -#: classes/controllers/FrmFormsController.php:70 -#: classes/controllers/FrmFormsController.php:71 +#: classes/controllers/FrmFormsController.php:77 +#: classes/controllers/FrmFormsController.php:78 msgid "Conditional Logic options" msgstr "" -#: classes/controllers/FrmFormsController.php:72 +#: classes/controllers/FrmFormsController.php:79 msgid "Conditional Logic" msgstr "" -#: classes/controllers/FrmFormsController.php:202 +#: classes/controllers/FrmFormsController.php:209 #: classes/helpers/FrmSubmitHelper.php:171 #: classes/models/FrmField.php:84 #: classes/models/FrmSettings.php:307 @@ -658,96 +659,96 @@ msgstr "" msgid "Submit" msgstr "" -#: classes/controllers/FrmFormsController.php:280 +#: classes/controllers/FrmFormsController.php:287 msgid "Settings Successfully Updated" msgstr "" -#: classes/controllers/FrmFormsController.php:327 -#: classes/controllers/FrmFormsController.php:1386 +#: classes/controllers/FrmFormsController.php:334 +#: classes/controllers/FrmFormsController.php:1403 msgid "Form was successfully updated." msgstr "" #. translators: %1$s: Start link HTML, %2$s: end link HTML -#: classes/controllers/FrmFormsController.php:332 +#: classes/controllers/FrmFormsController.php:339 msgid "However, your form is very long and may be %1$sreaching server limits%2$s." msgstr "" -#: classes/controllers/FrmFormsController.php:462 -#: classes/controllers/FrmFormsController.php:463 +#: classes/controllers/FrmFormsController.php:469 +#: classes/controllers/FrmFormsController.php:470 msgid "Form key is invalid" msgstr "" -#: classes/controllers/FrmFormsController.php:693 +#: classes/controllers/FrmFormsController.php:700 msgid "Form Preview" msgstr "" -#: classes/controllers/FrmFormsController.php:727 +#: classes/controllers/FrmFormsController.php:734 msgid "Form key is missing" msgstr "" -#: classes/controllers/FrmFormsController.php:740 -#: classes/controllers/FrmStylesController.php:518 +#: classes/controllers/FrmFormsController.php:747 +#: classes/controllers/FrmStylesController.php:528 msgid "Form does not exist" msgstr "" -#: classes/controllers/FrmFormsController.php:772 +#: classes/controllers/FrmFormsController.php:779 msgid "You do not have permission to view this form" msgstr "" #. translators: %1$s: Number of forms -#: classes/controllers/FrmFormsController.php:823 -#: classes/controllers/FrmFormsController.php:883 +#: classes/controllers/FrmFormsController.php:830 +#: classes/controllers/FrmFormsController.php:890 msgid "%1$s form restored from the Trash." msgid_plural "%1$s forms restored from the Trash." msgstr[0] "" msgstr[1] "" #. translators: %1$s: Number of forms, %2$s: Start link HTML, %3$s: End link HTML -#: classes/controllers/FrmFormsController.php:886 -#: classes/controllers/FrmFormsController.php:922 +#: classes/controllers/FrmFormsController.php:893 +#: classes/controllers/FrmFormsController.php:929 msgid "%1$s form moved to the Trash. %2$sUndo%3$s" msgid_plural "%1$s forms moved to the Trash. %2$sUndo%3$s" msgstr[0] "" msgstr[1] "" #. translators: %1$s: Number of forms -#: classes/controllers/FrmFormsController.php:944 +#: classes/controllers/FrmFormsController.php:951 msgid "%1$s Form Permanently Deleted" msgid_plural "%1$s Forms Permanently Deleted" msgstr[0] "" msgstr[1] "" #. translators: %1$s: Number of forms -#: classes/controllers/FrmFormsController.php:969 -#: classes/controllers/FrmFormsController.php:2183 +#: classes/controllers/FrmFormsController.php:976 +#: classes/controllers/FrmFormsController.php:2200 msgid "%1$s form permanently deleted." msgid_plural "%1$s forms permanently deleted." msgstr[0] "" msgstr[1] "" -#: classes/controllers/FrmFormsController.php:1077 +#: classes/controllers/FrmFormsController.php:1084 msgid "Add forms and content" msgstr "" -#: classes/controllers/FrmFormsController.php:1095 +#: classes/controllers/FrmFormsController.php:1102 #: classes/views/frm-forms/insert_form_popup.php:33 msgid "Insert a Form" msgstr "" -#: classes/controllers/FrmFormsController.php:1154 +#: classes/controllers/FrmFormsController.php:1161 msgid "Display form title" msgstr "" -#: classes/controllers/FrmFormsController.php:1158 +#: classes/controllers/FrmFormsController.php:1165 msgid "Display form description" msgstr "" -#: classes/controllers/FrmFormsController.php:1162 +#: classes/controllers/FrmFormsController.php:1169 msgid "Minimize form HTML" msgstr "" -#: classes/controllers/FrmFormsController.php:1234 -#: classes/controllers/FrmStylesController.php:1045 +#: classes/controllers/FrmFormsController.php:1241 +#: classes/controllers/FrmStylesController.php:1096 #: classes/views/frm-forms/settings-advanced.php:13 #: classes/views/styles/manage.php:36 #: classes/views/styles/_sample_form.php:12 @@ -755,248 +756,256 @@ msgstr "" msgid "Form Title" msgstr "" -#: classes/controllers/FrmFormsController.php:1237 +#: classes/controllers/FrmFormsController.php:1245 #: classes/helpers/FrmCSVExportHelper.php:464 msgid "Key" msgstr "" -#: classes/controllers/FrmFormsController.php:1240 +#: classes/controllers/FrmFormsController.php:1249 msgid "Actions" msgstr "" -#: classes/controllers/FrmFormsController.php:1243 +#: classes/controllers/FrmFormsController.php:1252 #: classes/models/FrmField.php:153 #: stripe/controllers/FrmTransLiteListsController.php:69 msgid "Date" msgstr "" -#: classes/controllers/FrmFormsController.php:1323 +#: classes/controllers/FrmFormsController.php:1255 +msgid "Embeds" +msgstr "" + +#: classes/controllers/FrmFormsController.php:1258 +msgid "List settings" +msgstr "" + +#: classes/controllers/FrmFormsController.php:1340 msgid "You can't edit the form" msgstr "" -#: classes/controllers/FrmFormsController.php:1324 +#: classes/controllers/FrmFormsController.php:1341 msgid "You are trying to edit a form that does not exist" msgstr "" -#: classes/controllers/FrmFormsController.php:1339 +#: classes/controllers/FrmFormsController.php:1356 msgid "The form you're trying to edit is in trash. You must restore it first before you can make changes" msgstr "" -#: classes/controllers/FrmFormsController.php:1349 +#: classes/controllers/FrmFormsController.php:1366 msgid "Restore form" msgstr "" #. translators: %1$s: Start link HTML, %2$s: End link HTML -#: classes/controllers/FrmFormsController.php:1356 +#: classes/controllers/FrmFormsController.php:1373 msgid "You are trying to edit a child form. Please edit from %1$shere%2$s" msgstr "" -#: classes/controllers/FrmFormsController.php:1389 +#: classes/controllers/FrmFormsController.php:1406 msgid "Template was successfully updated." msgstr "" -#: classes/controllers/FrmFormsController.php:1422 +#: classes/controllers/FrmFormsController.php:1439 msgid "Form was Successfully Copied" msgstr "" -#: classes/controllers/FrmFormsController.php:1521 -#: classes/controllers/FrmStylesController.php:1044 +#: classes/controllers/FrmFormsController.php:1538 +#: classes/controllers/FrmStylesController.php:1095 #: classes/views/styles/_field-labels.php:12 msgid "General" msgstr "" -#: classes/controllers/FrmFormsController.php:1522 +#: classes/controllers/FrmFormsController.php:1539 msgid "General Form Settings" msgstr "" -#: classes/controllers/FrmFormsController.php:1527 +#: classes/controllers/FrmFormsController.php:1544 msgid "Actions & Notifications" msgstr "" -#: classes/controllers/FrmFormsController.php:1533 -#: classes/controllers/FrmFormsController.php:1538 +#: classes/controllers/FrmFormsController.php:1550 +#: classes/controllers/FrmFormsController.php:1555 msgid "Form Permissions" msgstr "" -#: classes/controllers/FrmFormsController.php:1539 +#: classes/controllers/FrmFormsController.php:1556 msgid "Allow editing, protect forms and files, limit entries, and save drafts. Upgrade to get form and entry permissions." msgstr "" -#: classes/controllers/FrmFormsController.php:1545 +#: classes/controllers/FrmFormsController.php:1562 msgid "Form Scheduling" msgstr "" -#: classes/controllers/FrmFormsController.php:1550 +#: classes/controllers/FrmFormsController.php:1567 msgid "Form scheduling settings" msgstr "" -#: classes/controllers/FrmFormsController.php:1556 -#: classes/controllers/FrmStylesController.php:1052 +#: classes/controllers/FrmFormsController.php:1573 +#: classes/controllers/FrmStylesController.php:1103 #: classes/helpers/FrmFieldsHelper.php:2648 #: classes/views/frm-forms/settings-buttons.php:13 msgid "Buttons" msgstr "" -#: classes/controllers/FrmFormsController.php:1562 +#: classes/controllers/FrmFormsController.php:1579 msgid "Form Landing Page" msgstr "" -#: classes/controllers/FrmFormsController.php:1568 -#: classes/controllers/FrmFormsController.php:1574 +#: classes/controllers/FrmFormsController.php:1585 +#: classes/controllers/FrmFormsController.php:1591 msgid "Conversational Forms" msgstr "" -#: classes/controllers/FrmFormsController.php:1575 +#: classes/controllers/FrmFormsController.php:1592 msgid "Ask one question at a time for automated conversations." msgstr "" -#: classes/controllers/FrmFormsController.php:1582 +#: classes/controllers/FrmFormsController.php:1599 msgid "Form Abandonment" msgstr "" -#: classes/controllers/FrmFormsController.php:1588 +#: classes/controllers/FrmFormsController.php:1605 msgid "Form abandonment settings" msgstr "" -#: classes/controllers/FrmFormsController.php:1589 +#: classes/controllers/FrmFormsController.php:1606 msgid "Unlock the power of data capture to boost lead generation and master the art of form optimization." msgstr "" -#: classes/controllers/FrmFormsController.php:1596 +#: classes/controllers/FrmFormsController.php:1613 msgid "Customize HTML" msgstr "" -#: classes/controllers/FrmFormsController.php:1761 +#: classes/controllers/FrmFormsController.php:1778 msgid "Customize field values with the following parameters." msgstr "" -#: classes/controllers/FrmFormsController.php:1803 +#: classes/controllers/FrmFormsController.php:1820 msgid "Separator" msgstr "" -#: classes/controllers/FrmFormsController.php:1804 +#: classes/controllers/FrmFormsController.php:1821 msgid "Use a different separator for checkbox fields" msgstr "" -#: classes/controllers/FrmFormsController.php:1807 +#: classes/controllers/FrmFormsController.php:1824 msgid "Date Format" msgstr "" -#: classes/controllers/FrmFormsController.php:1810 +#: classes/controllers/FrmFormsController.php:1827 #: classes/views/frm-fields/back-end/settings.php:111 msgid "Field Label" msgstr "" -#: classes/controllers/FrmFormsController.php:1813 +#: classes/controllers/FrmFormsController.php:1830 msgid "No Auto P" msgstr "" -#: classes/controllers/FrmFormsController.php:1814 +#: classes/controllers/FrmFormsController.php:1831 msgid "Do not automatically add any paragraphs or line breaks" msgstr "" -#: classes/controllers/FrmFormsController.php:1830 +#: classes/controllers/FrmFormsController.php:1847 #: classes/models/FrmField.php:72 msgid "User ID" msgstr "" -#: classes/controllers/FrmFormsController.php:1831 +#: classes/controllers/FrmFormsController.php:1848 #: classes/models/fields/FrmFieldName.php:50 #: stripe/views/action-settings/payments-options.php:264 msgid "First Name" msgstr "" -#: classes/controllers/FrmFormsController.php:1832 +#: classes/controllers/FrmFormsController.php:1849 #: classes/models/fields/FrmFieldName.php:52 #: stripe/views/action-settings/payments-options.php:270 msgid "Last Name" msgstr "" -#: classes/controllers/FrmFormsController.php:1833 +#: classes/controllers/FrmFormsController.php:1850 msgid "Display Name" msgstr "" -#: classes/controllers/FrmFormsController.php:1834 +#: classes/controllers/FrmFormsController.php:1851 msgid "User Login" msgstr "" -#: classes/controllers/FrmFormsController.php:1835 +#: classes/controllers/FrmFormsController.php:1852 #: classes/controllers/FrmSettingsController.php:113 #: classes/models/FrmField.php:44 #: stripe/views/action-settings/payments-options.php:238 msgid "Email" msgstr "" -#: classes/controllers/FrmFormsController.php:1836 +#: classes/controllers/FrmFormsController.php:1853 msgid "Avatar" msgstr "" -#: classes/controllers/FrmFormsController.php:1837 +#: classes/controllers/FrmFormsController.php:1854 msgid "Author Link" msgstr "" -#: classes/controllers/FrmFormsController.php:1854 +#: classes/controllers/FrmFormsController.php:1871 #: classes/views/frm-entries/sidebar-shared.php:62 msgid "Entry ID" msgstr "" -#: classes/controllers/FrmFormsController.php:1856 +#: classes/controllers/FrmFormsController.php:1873 msgid "Post ID" msgstr "" -#: classes/controllers/FrmFormsController.php:1857 +#: classes/controllers/FrmFormsController.php:1874 msgid "User IP" msgstr "" -#: classes/controllers/FrmFormsController.php:1858 +#: classes/controllers/FrmFormsController.php:1875 msgid "Entry created" msgstr "" -#: classes/controllers/FrmFormsController.php:1859 +#: classes/controllers/FrmFormsController.php:1876 msgid "Entry updated" msgstr "" -#: classes/controllers/FrmFormsController.php:1861 +#: classes/controllers/FrmFormsController.php:1878 msgid "Site URL" msgstr "" -#: classes/controllers/FrmFormsController.php:1862 +#: classes/controllers/FrmFormsController.php:1879 msgid "Site Name" msgstr "" -#: classes/controllers/FrmFormsController.php:1863 +#: classes/controllers/FrmFormsController.php:1880 #: classes/helpers/FrmFormsHelper.php:642 msgid "Form Name" msgstr "" -#: classes/controllers/FrmFormsController.php:2047 +#: classes/controllers/FrmFormsController.php:2064 msgid "No forms were specified" msgstr "" -#: classes/controllers/FrmFormsController.php:2176 +#: classes/controllers/FrmFormsController.php:2193 msgid "There was a problem duplicating the form" msgstr "" -#: classes/controllers/FrmFormsController.php:2214 +#: classes/controllers/FrmFormsController.php:2231 msgid "Form not found" msgstr "" -#: classes/controllers/FrmFormsController.php:2245 +#: classes/controllers/FrmFormsController.php:2263 msgid "Abnormal HTML characters prevented your form from saving correctly" msgstr "" -#: classes/controllers/FrmFormsController.php:2434 -#: classes/controllers/FrmFormsController.php:2455 +#: classes/controllers/FrmFormsController.php:2452 +#: classes/controllers/FrmFormsController.php:2473 msgid "Please select a valid form" msgstr "" #. translators: %1$s: Start link HTML, %2$s: End link HTML -#: classes/controllers/FrmFormsController.php:3236 +#: classes/controllers/FrmFormsController.php:3254 msgid "%1$sClick here%2$s if you are not automatically redirected." msgstr "" -#: classes/controllers/FrmFormsController.php:3685 -#: classes/helpers/FrmAppHelper.php:2085 +#: classes/controllers/FrmFormsController.php:3703 +#: classes/helpers/FrmAppHelper.php:2087 #: classes/helpers/FrmOnSubmitHelper.php:127 msgid "Select a Page" msgstr "" @@ -1280,7 +1289,7 @@ msgid "Install WP Mail SMTP" msgstr "" #: classes/controllers/FrmSMTPController.php:325 -#: classes/helpers/FrmAppHelper.php:3965 +#: classes/helpers/FrmAppHelper.php:3967 #: classes/helpers/FrmFormMigratorsHelper.php:168 #: classes/views/shared/upgrade_overlay.php:82 #: js/src/form/views.js:20 @@ -1313,115 +1322,115 @@ msgstr "" msgid "Go to SMTP settings" msgstr "" -#: classes/controllers/FrmStylesController.php:39 -#: classes/controllers/FrmStylesController.php:57 -#: classes/controllers/FrmStylesController.php:77 -#: classes/controllers/FrmStylesController.php:78 +#: classes/controllers/FrmStylesController.php:48 +#: classes/controllers/FrmStylesController.php:66 +#: classes/controllers/FrmStylesController.php:86 +#: classes/controllers/FrmStylesController.php:87 #: classes/views/frm-settings/email/email-styles.php:19 msgid "Styles" msgstr "" -#: classes/controllers/FrmStylesController.php:60 -#: classes/helpers/FrmFormsListHelper.php:434 +#: classes/controllers/FrmStylesController.php:69 +#: classes/helpers/FrmFormsListHelper.php:476 #: classes/views/form-templates/template.php:73 #: classes/views/frm-entries/sidebar-shared.php:51 #: stripe/helpers/FrmTransLiteListHelper.php:459 #: stripe/views/payments/show.php:161 -#: js/admin/style.js:652 +#: js/admin/style.js:741 msgid "Edit" msgstr "" -#: classes/controllers/FrmStylesController.php:61 +#: classes/controllers/FrmStylesController.php:70 msgid "Create a New Style" msgstr "" -#: classes/controllers/FrmStylesController.php:62 +#: classes/controllers/FrmStylesController.php:71 msgid "Edit Style" msgstr "" -#: classes/controllers/FrmStylesController.php:344 +#: classes/controllers/FrmStylesController.php:354 msgid "No styles" msgstr "" -#: classes/controllers/FrmStylesController.php:345 +#: classes/controllers/FrmStylesController.php:355 msgid "You must have a style to use the Visual Styler." msgstr "" -#: classes/controllers/FrmStylesController.php:362 +#: classes/controllers/FrmStylesController.php:372 msgid "No forms" msgstr "" -#: classes/controllers/FrmStylesController.php:363 +#: classes/controllers/FrmStylesController.php:373 msgid "You must have a form to use the Visual Styler." msgstr "" -#: classes/controllers/FrmStylesController.php:489 +#: classes/controllers/FrmStylesController.php:499 msgid "Invalid target style" msgstr "" -#: classes/controllers/FrmStylesController.php:504 +#: classes/controllers/FrmStylesController.php:514 msgid "Invalid style value" msgstr "" -#: classes/controllers/FrmStylesController.php:511 +#: classes/controllers/FrmStylesController.php:521 msgid "No form specified" msgstr "" -#: classes/controllers/FrmStylesController.php:537 -#: classes/controllers/FrmStylesController.php:554 +#: classes/controllers/FrmStylesController.php:547 +#: classes/controllers/FrmStylesController.php:564 msgid "Successfully updated style." msgstr "" -#: classes/controllers/FrmStylesController.php:737 +#: classes/controllers/FrmStylesController.php:788 msgid "Your styling settings have been saved." msgstr "" -#: classes/controllers/FrmStylesController.php:846 +#: classes/controllers/FrmStylesController.php:897 msgid "You can add custom css here or in your theme style.css. Any CSS added here will be used anywhere the Formidable CSS is loaded." msgstr "" -#: classes/controllers/FrmStylesController.php:1046 +#: classes/controllers/FrmStylesController.php:1097 #: classes/helpers/FrmFormsHelper.php:646 #: classes/views/frm-forms/settings-advanced.php:27 msgid "Form Description" msgstr "" -#: classes/controllers/FrmStylesController.php:1047 +#: classes/controllers/FrmStylesController.php:1098 msgid "Field Labels" msgstr "" -#: classes/controllers/FrmStylesController.php:1048 +#: classes/controllers/FrmStylesController.php:1099 #: classes/helpers/FrmFormsHelper.php:606 #: classes/views/frm-fields/back-end/field-description.php:16 msgid "Field Description" msgstr "" -#: classes/controllers/FrmStylesController.php:1049 +#: classes/controllers/FrmStylesController.php:1100 msgid "Field Colors" msgstr "" -#: classes/controllers/FrmStylesController.php:1050 -#: js/src/admin/admin.js:2838 +#: classes/controllers/FrmStylesController.php:1101 +#: js/src/admin/admin.js:2844 msgid "Field Settings" msgstr "" -#: classes/controllers/FrmStylesController.php:1051 +#: classes/controllers/FrmStylesController.php:1102 msgid "Check Box & Radio Fields" msgstr "" -#: classes/controllers/FrmStylesController.php:1053 +#: classes/controllers/FrmStylesController.php:1104 msgid "Form Messages" msgstr "" -#: classes/controllers/FrmStylesController.php:1428 +#: classes/controllers/FrmStylesController.php:1523 msgid "Unable to rename style" msgstr "" -#: classes/controllers/FrmStylesController.php:1439 +#: classes/controllers/FrmStylesController.php:1534 msgid "Invalid route" msgstr "" -#: classes/controllers/FrmStylesController.php:1449 +#: classes/controllers/FrmStylesController.php:1544 msgid "The style you are renaming either does not exist or it is not a style" msgstr "" @@ -1598,26 +1607,26 @@ msgstr "" msgid "Based on %1$s reviews on %2$s" msgstr "" -#: classes/helpers/FrmAppHelper.php:1584 +#: classes/helpers/FrmAppHelper.php:1586 #: classes/views/xml/import_form.php:17 msgid "Import" msgstr "" -#: classes/helpers/FrmAppHelper.php:1618 +#: classes/helpers/FrmAppHelper.php:1620 #: classes/views/frm-settings/license_box.php:27 msgid "upgrading to PRO" msgstr "" #. translators: %1$s: Start link HTML, %2$s: CTA text ("upgrading to PRO" by default), %3$s: End link HTML -#: classes/helpers/FrmAppHelper.php:1631 +#: classes/helpers/FrmAppHelper.php:1633 msgid "You're using Formidable Forms Lite. To unlock more features consider %1$s%2$s%3$s." msgstr "" -#: classes/helpers/FrmAppHelper.php:1686 +#: classes/helpers/FrmAppHelper.php:1688 msgid "Add New" msgstr "" -#: classes/helpers/FrmAppHelper.php:1702 +#: classes/helpers/FrmAppHelper.php:1704 #: classes/views/frm-entries/list.php:43 #: classes/views/frm-forms/list.php:36 #: classes/views/shared/mb_adv_info.php:41 @@ -1625,204 +1634,204 @@ msgstr "" msgid "Search" msgstr "" -#: classes/helpers/FrmAppHelper.php:1935 +#: classes/helpers/FrmAppHelper.php:1937 msgid "Select an option" msgstr "" -#: classes/helpers/FrmAppHelper.php:2228 +#: classes/helpers/FrmAppHelper.php:2230 msgid "Add Entries from Admin Area" msgstr "" -#: classes/helpers/FrmAppHelper.php:2229 +#: classes/helpers/FrmAppHelper.php:2231 msgid "Edit Entries from Admin Area" msgstr "" -#: classes/helpers/FrmAppHelper.php:2230 +#: classes/helpers/FrmAppHelper.php:2232 msgid "View Reports" msgstr "" -#: classes/helpers/FrmAppHelper.php:2255 +#: classes/helpers/FrmAppHelper.php:2257 msgid "View Forms List" msgstr "" -#: classes/helpers/FrmAppHelper.php:2256 +#: classes/helpers/FrmAppHelper.php:2258 msgid "Add and Edit Forms" msgstr "" -#: classes/helpers/FrmAppHelper.php:2257 +#: classes/helpers/FrmAppHelper.php:2259 msgid "Delete Forms" msgstr "" -#: classes/helpers/FrmAppHelper.php:2258 +#: classes/helpers/FrmAppHelper.php:2260 msgid "Access this Settings Page" msgstr "" -#: classes/helpers/FrmAppHelper.php:2259 +#: classes/helpers/FrmAppHelper.php:2261 msgid "View Entries from Admin Area" msgstr "" -#: classes/helpers/FrmAppHelper.php:2260 +#: classes/helpers/FrmAppHelper.php:2262 msgid "Delete Entries from Admin Area" msgstr "" -#: classes/helpers/FrmAppHelper.php:3248 +#: classes/helpers/FrmAppHelper.php:3250 msgid "at" msgstr "" -#: classes/helpers/FrmAppHelper.php:3411 +#: classes/helpers/FrmAppHelper.php:3413 #: stripe/helpers/FrmTransLiteAppHelper.php:250 msgid "year" msgid_plural "years" msgstr[0] "" msgstr[1] "" -#: classes/helpers/FrmAppHelper.php:3412 +#: classes/helpers/FrmAppHelper.php:3414 msgid "years" msgstr "" -#: classes/helpers/FrmAppHelper.php:3416 +#: classes/helpers/FrmAppHelper.php:3418 #: stripe/helpers/FrmTransLiteAppHelper.php:249 msgid "month" msgid_plural "months" msgstr[0] "" msgstr[1] "" -#: classes/helpers/FrmAppHelper.php:3417 +#: classes/helpers/FrmAppHelper.php:3419 msgid "months" msgstr "" -#: classes/helpers/FrmAppHelper.php:3421 +#: classes/helpers/FrmAppHelper.php:3423 #: stripe/helpers/FrmTransLiteAppHelper.php:248 msgid "week" msgid_plural "weeks" msgstr[0] "" msgstr[1] "" -#: classes/helpers/FrmAppHelper.php:3422 +#: classes/helpers/FrmAppHelper.php:3424 msgid "weeks" msgstr "" -#: classes/helpers/FrmAppHelper.php:3426 +#: classes/helpers/FrmAppHelper.php:3428 #: stripe/helpers/FrmTransLiteAppHelper.php:247 msgid "day" msgid_plural "days" msgstr[0] "" msgstr[1] "" -#: classes/helpers/FrmAppHelper.php:3427 +#: classes/helpers/FrmAppHelper.php:3429 msgid "days" msgstr "" -#: classes/helpers/FrmAppHelper.php:3431 +#: classes/helpers/FrmAppHelper.php:3433 msgid "hour" msgstr "" -#: classes/helpers/FrmAppHelper.php:3432 +#: classes/helpers/FrmAppHelper.php:3434 msgid "hours" msgstr "" -#: classes/helpers/FrmAppHelper.php:3436 +#: classes/helpers/FrmAppHelper.php:3438 msgid "minute" msgstr "" -#: classes/helpers/FrmAppHelper.php:3437 +#: classes/helpers/FrmAppHelper.php:3439 msgid "minutes" msgstr "" -#: classes/helpers/FrmAppHelper.php:3441 +#: classes/helpers/FrmAppHelper.php:3443 msgid "second" msgstr "" -#: classes/helpers/FrmAppHelper.php:3442 +#: classes/helpers/FrmAppHelper.php:3444 #: classes/views/frm-form-actions/on_submit_redirect_settings.php:100 msgid "seconds" msgstr "" -#: classes/helpers/FrmAppHelper.php:3561 +#: classes/helpers/FrmAppHelper.php:3563 msgid "Give this action a label for easy reference." msgstr "" -#: classes/helpers/FrmAppHelper.php:3562 +#: classes/helpers/FrmAppHelper.php:3564 msgid "Add one or more recipient addresses separated by a \",\". FORMAT: Name or name@email.com. [default-email] is the address set in the global \"Default Email Address\" settings." msgstr "" -#: classes/helpers/FrmAppHelper.php:3563 +#: classes/helpers/FrmAppHelper.php:3565 msgid "Add CC addresses separated by a \",\". FORMAT: Name or name@email.com." msgstr "" -#: classes/helpers/FrmAppHelper.php:3564 +#: classes/helpers/FrmAppHelper.php:3566 msgid "Add BCC addresses separated by a \",\". FORMAT: Name or name@email.com." msgstr "" -#: classes/helpers/FrmAppHelper.php:3565 +#: classes/helpers/FrmAppHelper.php:3567 msgid "If you would like a different reply to address than the \"from\" address, add a single address here. FORMAT: Name or name@email.com." msgstr "" -#: classes/helpers/FrmAppHelper.php:3566 +#: classes/helpers/FrmAppHelper.php:3568 msgid "Enter the name and/or email address of the sender. FORMAT: John Bates or john@example.com." msgstr "" #. translators: %1$s: Form name, %2$s: Date -#: classes/helpers/FrmAppHelper.php:3568 +#: classes/helpers/FrmAppHelper.php:3570 msgid "If you leave the subject blank, the default will be used: %1$s Form submitted on %2$s" msgstr "" -#: classes/helpers/FrmAppHelper.php:3569 +#: classes/helpers/FrmAppHelper.php:3571 msgid "This option will open the link in a new browser tab. Please note that some popup blockers may prevent this from happening, in which case the link will be displayed." msgstr "" -#: classes/helpers/FrmAppHelper.php:3858 -#: classes/helpers/FrmAppHelper.php:3943 +#: classes/helpers/FrmAppHelper.php:3860 +#: classes/helpers/FrmAppHelper.php:3945 msgid "Please wait while your site updates." msgstr "" -#: classes/helpers/FrmAppHelper.php:3859 +#: classes/helpers/FrmAppHelper.php:3861 msgid "Are you sure you want to deauthorize Formidable Forms on this site?" msgstr "" -#: classes/helpers/FrmAppHelper.php:3864 -#: classes/helpers/FrmAppHelper.php:3896 +#: classes/helpers/FrmAppHelper.php:3866 +#: classes/helpers/FrmAppHelper.php:3898 msgid "Loading…" msgstr "" -#: classes/helpers/FrmAppHelper.php:3897 +#: classes/helpers/FrmAppHelper.php:3899 msgid "Remove" msgstr "" -#: classes/helpers/FrmAppHelper.php:3900 +#: classes/helpers/FrmAppHelper.php:3902 #: classes/helpers/FrmCSVExportHelper.php:463 msgid "ID" msgstr "" -#: classes/helpers/FrmAppHelper.php:3901 +#: classes/helpers/FrmAppHelper.php:3903 msgid "No results match" msgstr "" -#: classes/helpers/FrmAppHelper.php:3902 +#: classes/helpers/FrmAppHelper.php:3904 msgid "That file looks like Spam." msgstr "" -#: classes/helpers/FrmAppHelper.php:3903 +#: classes/helpers/FrmAppHelper.php:3905 msgid "There is an error in the calculation in the field with key" msgstr "" -#: classes/helpers/FrmAppHelper.php:3904 +#: classes/helpers/FrmAppHelper.php:3906 msgid "Please complete the preceding required fields before uploading a file." msgstr "" -#: classes/helpers/FrmAppHelper.php:3919 +#: classes/helpers/FrmAppHelper.php:3921 msgid "(Click to add description)" msgstr "" -#: classes/helpers/FrmAppHelper.php:3920 +#: classes/helpers/FrmAppHelper.php:3922 msgid "(Blank)" msgstr "" -#: classes/helpers/FrmAppHelper.php:3922 +#: classes/helpers/FrmAppHelper.php:3924 msgid "OK" msgstr "" -#: classes/helpers/FrmAppHelper.php:3924 +#: classes/helpers/FrmAppHelper.php:3926 #: classes/views/frm-fields/back-end/settings.php:434 #: classes/views/styles/_buttons.php:12 #: classes/views/styles/_field-colors.php:12 @@ -1831,588 +1840,588 @@ msgstr "" msgid "Default" msgstr "" -#: classes/helpers/FrmAppHelper.php:3925 +#: classes/helpers/FrmAppHelper.php:3927 msgid "Clear default value when typing" msgstr "" -#: classes/helpers/FrmAppHelper.php:3926 +#: classes/helpers/FrmAppHelper.php:3928 msgid "Do not clear default value when typing" msgstr "" -#: classes/helpers/FrmAppHelper.php:3927 +#: classes/helpers/FrmAppHelper.php:3929 msgid "Default value will pass form validation" msgstr "" -#: classes/helpers/FrmAppHelper.php:3928 +#: classes/helpers/FrmAppHelper.php:3930 msgid "Default value will NOT pass form validation" msgstr "" -#: classes/helpers/FrmAppHelper.php:3929 +#: classes/helpers/FrmAppHelper.php:3931 #: classes/views/shared/confirm-overlay.php:15 #: classes/views/shared/info-overlay.php:16 -#: js/src/admin/admin.js:396 +#: js/src/admin/admin.js:402 msgid "Are you sure?" msgstr "" -#: classes/helpers/FrmAppHelper.php:3930 +#: classes/helpers/FrmAppHelper.php:3932 msgid "Are you sure you want to delete this field and all data associated with it?" msgstr "" -#: classes/helpers/FrmAppHelper.php:3931 +#: classes/helpers/FrmAppHelper.php:3933 msgid "All fields inside this Section will be deleted along with their data. Are you sure you want to delete this group of fields?" msgstr "" -#: classes/helpers/FrmAppHelper.php:3932 +#: classes/helpers/FrmAppHelper.php:3934 msgid "Warning: If you have entries with multiple rows, all but the first row will be lost." msgstr "" -#: classes/helpers/FrmAppHelper.php:3934 +#: classes/helpers/FrmAppHelper.php:3936 #: classes/helpers/FrmFieldsHelper.php:455 msgid "The entered values do not match" msgstr "" -#: classes/helpers/FrmAppHelper.php:3935 +#: classes/helpers/FrmAppHelper.php:3937 msgid "Enter Email" msgstr "" -#: classes/helpers/FrmAppHelper.php:3936 +#: classes/helpers/FrmAppHelper.php:3938 msgid "Confirm Email" msgstr "" -#: classes/helpers/FrmAppHelper.php:3937 +#: classes/helpers/FrmAppHelper.php:3939 #: classes/views/shared/mb_adv_info.php:175 msgid "Conditional content here" msgstr "" -#: classes/helpers/FrmAppHelper.php:3938 +#: classes/helpers/FrmAppHelper.php:3940 #: classes/helpers/FrmFieldsHelper.php:744 #: classes/helpers/FrmFieldsHelper.php:745 msgid "New Option" msgstr "" -#: classes/helpers/FrmAppHelper.php:3939 +#: classes/helpers/FrmAppHelper.php:3941 msgid "In certain browsers (e.g. Firefox) text will not display correctly if the field height is too small relative to the field padding and text size. Please increase your field height or decrease your field padding." msgstr "" -#: classes/helpers/FrmAppHelper.php:3940 +#: classes/helpers/FrmAppHelper.php:3942 msgid "Enter Password" msgstr "" -#: classes/helpers/FrmAppHelper.php:3941 +#: classes/helpers/FrmAppHelper.php:3943 msgid "Confirm Password" msgstr "" -#: classes/helpers/FrmAppHelper.php:3942 +#: classes/helpers/FrmAppHelper.php:3944 msgid "Import Complete" msgstr "" -#: classes/helpers/FrmAppHelper.php:3944 +#: classes/helpers/FrmAppHelper.php:3946 msgid "Warning: There is no way to retrieve unsaved entries." msgstr "" -#: classes/helpers/FrmAppHelper.php:3945 +#: classes/helpers/FrmAppHelper.php:3947 msgid "Private" msgstr "" -#: classes/helpers/FrmAppHelper.php:3948 +#: classes/helpers/FrmAppHelper.php:3950 msgid "No new licenses were found" msgstr "" -#: classes/helpers/FrmAppHelper.php:3949 +#: classes/helpers/FrmAppHelper.php:3951 msgid "This calculation has at least one unmatched ( ) { } [ ]." msgstr "" -#: classes/helpers/FrmAppHelper.php:3950 +#: classes/helpers/FrmAppHelper.php:3952 msgid "This calculation may have shortcodes that work in Views but not forms." msgstr "" -#: classes/helpers/FrmAppHelper.php:3951 +#: classes/helpers/FrmAppHelper.php:3953 msgid "This calculation may have shortcodes that work in text calculations but not numeric calculations." msgstr "" #. translators: %d is the number of allowed actions per form -#: classes/helpers/FrmAppHelper.php:3953 +#: classes/helpers/FrmAppHelper.php:3955 msgid "This form action is limited to %d per form." msgstr "" -#: classes/helpers/FrmAppHelper.php:3954 +#: classes/helpers/FrmAppHelper.php:3956 msgid "Please edit the existing form action." msgstr "" -#: classes/helpers/FrmAppHelper.php:3955 +#: classes/helpers/FrmAppHelper.php:3957 msgid "This form already has a payment action, and is currently limited to a single payment action." msgstr "" -#: classes/helpers/FrmAppHelper.php:3956 +#: classes/helpers/FrmAppHelper.php:3958 msgid "This form already has a payment action. Multiple Stripe actions are available when using the Stripe add-on, available for Formidable Business licenses and higher." msgstr "" #. Translators: %s is the name of a Detail Page Slug that is a reserved word. -#: classes/helpers/FrmAppHelper.php:3959 +#: classes/helpers/FrmAppHelper.php:3961 msgid "The Detail Page Slug \"%s\" is reserved by WordPress. This may cause problems. Is this intentional?" msgstr "" #. Translators: %s is the name of a parameter that is a reserved word. More than one word could be listed here, though that would not be common. -#: classes/helpers/FrmAppHelper.php:3961 +#: classes/helpers/FrmAppHelper.php:3963 msgid "The parameter \"%s\" is reserved by WordPress. This may cause problems when included in the URL. Is this intentional? " msgstr "" -#: classes/helpers/FrmAppHelper.php:3962 +#: classes/helpers/FrmAppHelper.php:3964 #: classes/helpers/FrmFormsHelper.php:1869 msgid "See the list of reserved words in WordPress." msgstr "" -#: classes/helpers/FrmAppHelper.php:3963 +#: classes/helpers/FrmAppHelper.php:3965 msgid "Please enter a Repeat Limit that is greater than 1." msgstr "" -#: classes/helpers/FrmAppHelper.php:3964 +#: classes/helpers/FrmAppHelper.php:3966 msgid "Please select a limit between 0 and 200." msgstr "" -#: classes/helpers/FrmAppHelper.php:3969 +#: classes/helpers/FrmAppHelper.php:3971 #: classes/views/shared/mb_adv_info.php:118 #: classes/views/shared/mb_adv_info.php:134 msgid "Select a Field" msgstr "" -#: classes/helpers/FrmAppHelper.php:3970 +#: classes/helpers/FrmAppHelper.php:3972 #: classes/helpers/FrmListHelper.php:279 msgid "No items found." msgstr "" -#: classes/helpers/FrmAppHelper.php:3971 +#: classes/helpers/FrmAppHelper.php:3973 msgid "Oops. You have already used that field." msgstr "" #. translators: %1$s: HTML open tag, %2$s: HTML end tag. -#: classes/helpers/FrmAppHelper.php:3980 +#: classes/helpers/FrmAppHelper.php:3982 msgid "You can hold %1$sShift%2$s on your keyboard to select multiple fields" msgstr "" -#: classes/helpers/FrmAppHelper.php:4022 +#: classes/helpers/FrmAppHelper.php:4024 msgid "Setup a Payment Gateway first" msgstr "" -#: classes/helpers/FrmAppHelper.php:4023 +#: classes/helpers/FrmAppHelper.php:4025 msgid "To use the payment fields, please install and configure a payment gateway in your account settings." msgstr "" -#: classes/helpers/FrmAppHelper.php:4026 +#: classes/helpers/FrmAppHelper.php:4028 msgid "Go to Payment Settings" msgstr "" -#: classes/helpers/FrmAppHelper.php:4039 +#: classes/helpers/FrmAppHelper.php:4041 msgid "Start Accepting Payments Today!" msgstr "" -#: classes/helpers/FrmAppHelper.php:4048 +#: classes/helpers/FrmAppHelper.php:4050 msgid "Stripe" msgstr "" -#: classes/helpers/FrmAppHelper.php:4052 +#: classes/helpers/FrmAppHelper.php:4054 msgid "Square" msgstr "" #. translators: %s: Stripe or Square. -#: classes/helpers/FrmAppHelper.php:4057 +#: classes/helpers/FrmAppHelper.php:4059 msgid "You already have %s connected, so these have already been unlocked." msgstr "" -#: classes/helpers/FrmAppHelper.php:4058 +#: classes/helpers/FrmAppHelper.php:4060 msgid "and" msgstr "" -#: classes/helpers/FrmAppHelper.php:4061 +#: classes/helpers/FrmAppHelper.php:4063 msgid "I'll do it later!" msgstr "" -#: classes/helpers/FrmAppHelper.php:4062 +#: classes/helpers/FrmAppHelper.php:4064 msgid "Setup Payments Now" msgstr "" -#: classes/helpers/FrmAppHelper.php:4065 +#: classes/helpers/FrmAppHelper.php:4067 msgid "We've unlocked Product, Quantity, and Total fields for Lite users! You can now transform your forms into checkout pages. To start collecting revenue, simply connect your preferred payment gateway (Stripe, or Square) in your settings." msgstr "" -#: classes/helpers/FrmAppHelper.php:4079 +#: classes/helpers/FrmAppHelper.php:4081 msgid "(no label)" msgstr "" -#: classes/helpers/FrmAppHelper.php:4139 +#: classes/helpers/FrmAppHelper.php:4141 msgid "You are running an outdated version of Formidable. This plugin may not work correctly if you do not update Formidable." msgstr "" -#: classes/helpers/FrmAppHelper.php:4193 +#: classes/helpers/FrmAppHelper.php:4195 msgid "The version of PHP on your server is too low. If this is not corrected, you may see issues with Formidable Forms. Please contact your web host and ask to be updated to PHP 7.0+." msgstr "" -#: classes/helpers/FrmAppHelper.php:4214 +#: classes/helpers/FrmAppHelper.php:4216 msgid "English" msgstr "" -#: classes/helpers/FrmAppHelper.php:4215 +#: classes/helpers/FrmAppHelper.php:4217 msgid "Afrikaans" msgstr "" -#: classes/helpers/FrmAppHelper.php:4216 +#: classes/helpers/FrmAppHelper.php:4218 msgid "Albanian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4217 +#: classes/helpers/FrmAppHelper.php:4219 msgid "Algerian Arabic" msgstr "" -#: classes/helpers/FrmAppHelper.php:4218 +#: classes/helpers/FrmAppHelper.php:4220 msgid "Amharic" msgstr "" -#: classes/helpers/FrmAppHelper.php:4219 +#: classes/helpers/FrmAppHelper.php:4221 msgid "Arabic" msgstr "" -#: classes/helpers/FrmAppHelper.php:4220 +#: classes/helpers/FrmAppHelper.php:4222 msgid "Armenian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4221 +#: classes/helpers/FrmAppHelper.php:4223 msgid "Azerbaijani" msgstr "" -#: classes/helpers/FrmAppHelper.php:4222 +#: classes/helpers/FrmAppHelper.php:4224 msgid "Basque" msgstr "" -#: classes/helpers/FrmAppHelper.php:4223 +#: classes/helpers/FrmAppHelper.php:4225 msgid "Belarusian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4224 +#: classes/helpers/FrmAppHelper.php:4226 msgid "Bengali" msgstr "" -#: classes/helpers/FrmAppHelper.php:4225 +#: classes/helpers/FrmAppHelper.php:4227 msgid "Bosnian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4226 +#: classes/helpers/FrmAppHelper.php:4228 msgid "Bulgarian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4227 +#: classes/helpers/FrmAppHelper.php:4229 msgid "Catalan" msgstr "" -#: classes/helpers/FrmAppHelper.php:4228 +#: classes/helpers/FrmAppHelper.php:4230 msgid "Chinese Hong Kong" msgstr "" -#: classes/helpers/FrmAppHelper.php:4229 +#: classes/helpers/FrmAppHelper.php:4231 msgid "Chinese Simplified" msgstr "" -#: classes/helpers/FrmAppHelper.php:4230 +#: classes/helpers/FrmAppHelper.php:4232 msgid "Chinese Traditional" msgstr "" -#: classes/helpers/FrmAppHelper.php:4231 +#: classes/helpers/FrmAppHelper.php:4233 msgid "Croatian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4232 +#: classes/helpers/FrmAppHelper.php:4234 msgid "Czech" msgstr "" -#: classes/helpers/FrmAppHelper.php:4233 +#: classes/helpers/FrmAppHelper.php:4235 msgid "Danish" msgstr "" -#: classes/helpers/FrmAppHelper.php:4234 +#: classes/helpers/FrmAppHelper.php:4236 msgid "Dutch" msgstr "" -#: classes/helpers/FrmAppHelper.php:4235 +#: classes/helpers/FrmAppHelper.php:4237 msgid "English/UK" msgstr "" -#: classes/helpers/FrmAppHelper.php:4236 +#: classes/helpers/FrmAppHelper.php:4238 msgid "Esperanto" msgstr "" -#: classes/helpers/FrmAppHelper.php:4237 +#: classes/helpers/FrmAppHelper.php:4239 msgid "Estonian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4238 +#: classes/helpers/FrmAppHelper.php:4240 msgid "Faroese" msgstr "" -#: classes/helpers/FrmAppHelper.php:4239 +#: classes/helpers/FrmAppHelper.php:4241 msgid "Farsi/Persian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4240 +#: classes/helpers/FrmAppHelper.php:4242 msgid "Filipino" msgstr "" -#: classes/helpers/FrmAppHelper.php:4241 +#: classes/helpers/FrmAppHelper.php:4243 msgid "Finnish" msgstr "" -#: classes/helpers/FrmAppHelper.php:4242 +#: classes/helpers/FrmAppHelper.php:4244 msgid "French" msgstr "" -#: classes/helpers/FrmAppHelper.php:4243 +#: classes/helpers/FrmAppHelper.php:4245 msgid "French/Canadian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4244 +#: classes/helpers/FrmAppHelper.php:4246 msgid "French/Swiss" msgstr "" -#: classes/helpers/FrmAppHelper.php:4245 +#: classes/helpers/FrmAppHelper.php:4247 msgid "Galician" msgstr "" -#: classes/helpers/FrmAppHelper.php:4246 +#: classes/helpers/FrmAppHelper.php:4248 msgid "Georgian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4247 +#: classes/helpers/FrmAppHelper.php:4249 msgid "German" msgstr "" -#: classes/helpers/FrmAppHelper.php:4248 +#: classes/helpers/FrmAppHelper.php:4250 msgid "German/Austria" msgstr "" -#: classes/helpers/FrmAppHelper.php:4249 +#: classes/helpers/FrmAppHelper.php:4251 msgid "German/Switzerland" msgstr "" -#: classes/helpers/FrmAppHelper.php:4250 +#: classes/helpers/FrmAppHelper.php:4252 msgid "Greek" msgstr "" -#: classes/helpers/FrmAppHelper.php:4251 +#: classes/helpers/FrmAppHelper.php:4253 msgid "Gujarati" msgstr "" -#: classes/helpers/FrmAppHelper.php:4252 -#: classes/helpers/FrmAppHelper.php:4253 +#: classes/helpers/FrmAppHelper.php:4254 +#: classes/helpers/FrmAppHelper.php:4255 msgid "Hebrew" msgstr "" -#: classes/helpers/FrmAppHelper.php:4254 +#: classes/helpers/FrmAppHelper.php:4256 msgid "Hindi" msgstr "" -#: classes/helpers/FrmAppHelper.php:4255 +#: classes/helpers/FrmAppHelper.php:4257 msgid "Hungarian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4256 +#: classes/helpers/FrmAppHelper.php:4258 msgid "Icelandic" msgstr "" -#: classes/helpers/FrmAppHelper.php:4257 +#: classes/helpers/FrmAppHelper.php:4259 msgid "Indonesian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4258 +#: classes/helpers/FrmAppHelper.php:4260 msgid "Italian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4259 +#: classes/helpers/FrmAppHelper.php:4261 msgid "Japanese" msgstr "" -#: classes/helpers/FrmAppHelper.php:4260 +#: classes/helpers/FrmAppHelper.php:4262 msgid "Kannada" msgstr "" -#: classes/helpers/FrmAppHelper.php:4261 +#: classes/helpers/FrmAppHelper.php:4263 msgid "Kazakh" msgstr "" -#: classes/helpers/FrmAppHelper.php:4262 +#: classes/helpers/FrmAppHelper.php:4264 msgid "Khmer" msgstr "" -#: classes/helpers/FrmAppHelper.php:4263 +#: classes/helpers/FrmAppHelper.php:4265 msgid "Korean" msgstr "" -#: classes/helpers/FrmAppHelper.php:4264 +#: classes/helpers/FrmAppHelper.php:4266 msgid "Kyrgyz" msgstr "" -#: classes/helpers/FrmAppHelper.php:4265 +#: classes/helpers/FrmAppHelper.php:4267 msgid "Laothian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4266 +#: classes/helpers/FrmAppHelper.php:4268 msgid "Latvian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4267 +#: classes/helpers/FrmAppHelper.php:4269 msgid "Lithuanian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4268 +#: classes/helpers/FrmAppHelper.php:4270 msgid "Luxembourgish" msgstr "" -#: classes/helpers/FrmAppHelper.php:4269 +#: classes/helpers/FrmAppHelper.php:4271 msgid "Macedonian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4270 +#: classes/helpers/FrmAppHelper.php:4272 msgid "Malayalam" msgstr "" -#: classes/helpers/FrmAppHelper.php:4271 +#: classes/helpers/FrmAppHelper.php:4273 msgid "Malaysian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4272 +#: classes/helpers/FrmAppHelper.php:4274 msgid "Marathi" msgstr "" -#: classes/helpers/FrmAppHelper.php:4273 +#: classes/helpers/FrmAppHelper.php:4275 msgid "Norwegian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4274 +#: classes/helpers/FrmAppHelper.php:4276 msgid "Norwegian Bokmål" msgstr "" -#: classes/helpers/FrmAppHelper.php:4275 +#: classes/helpers/FrmAppHelper.php:4277 msgid "Norwegian Nynorsk" msgstr "" -#: classes/helpers/FrmAppHelper.php:4276 +#: classes/helpers/FrmAppHelper.php:4278 msgid "Polish" msgstr "" -#: classes/helpers/FrmAppHelper.php:4277 +#: classes/helpers/FrmAppHelper.php:4279 msgid "Portuguese" msgstr "" -#: classes/helpers/FrmAppHelper.php:4278 +#: classes/helpers/FrmAppHelper.php:4280 msgid "Portuguese/Brazilian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4279 +#: classes/helpers/FrmAppHelper.php:4281 msgid "Portuguese/Portugal" msgstr "" -#: classes/helpers/FrmAppHelper.php:4280 +#: classes/helpers/FrmAppHelper.php:4282 msgid "Romansh" msgstr "" -#: classes/helpers/FrmAppHelper.php:4281 +#: classes/helpers/FrmAppHelper.php:4283 msgid "Romanian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4282 +#: classes/helpers/FrmAppHelper.php:4284 msgid "Russian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4283 -#: classes/helpers/FrmAppHelper.php:4284 +#: classes/helpers/FrmAppHelper.php:4285 +#: classes/helpers/FrmAppHelper.php:4286 msgid "Serbian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4285 +#: classes/helpers/FrmAppHelper.php:4287 msgid "Sinhalese" msgstr "" -#: classes/helpers/FrmAppHelper.php:4286 +#: classes/helpers/FrmAppHelper.php:4288 msgid "Slovak" msgstr "" -#: classes/helpers/FrmAppHelper.php:4287 +#: classes/helpers/FrmAppHelper.php:4289 msgid "Slovenian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4288 +#: classes/helpers/FrmAppHelper.php:4290 msgid "Spanish" msgstr "" -#: classes/helpers/FrmAppHelper.php:4289 +#: classes/helpers/FrmAppHelper.php:4291 msgid "Spanish/Latin America" msgstr "" -#: classes/helpers/FrmAppHelper.php:4290 +#: classes/helpers/FrmAppHelper.php:4292 msgid "Swahili" msgstr "" -#: classes/helpers/FrmAppHelper.php:4291 +#: classes/helpers/FrmAppHelper.php:4293 msgid "Swedish" msgstr "" -#: classes/helpers/FrmAppHelper.php:4292 +#: classes/helpers/FrmAppHelper.php:4294 msgid "Tamil" msgstr "" -#: classes/helpers/FrmAppHelper.php:4293 +#: classes/helpers/FrmAppHelper.php:4295 msgid "Telugu" msgstr "" -#: classes/helpers/FrmAppHelper.php:4294 +#: classes/helpers/FrmAppHelper.php:4296 msgid "Thai" msgstr "" -#: classes/helpers/FrmAppHelper.php:4295 +#: classes/helpers/FrmAppHelper.php:4297 msgid "Tajiki" msgstr "" -#: classes/helpers/FrmAppHelper.php:4296 +#: classes/helpers/FrmAppHelper.php:4298 msgid "Turkish" msgstr "" -#: classes/helpers/FrmAppHelper.php:4297 +#: classes/helpers/FrmAppHelper.php:4299 msgid "Ukrainian" msgstr "" -#: classes/helpers/FrmAppHelper.php:4298 +#: classes/helpers/FrmAppHelper.php:4300 msgid "Urdu" msgstr "" -#: classes/helpers/FrmAppHelper.php:4299 +#: classes/helpers/FrmAppHelper.php:4301 msgid "Vietnamese" msgstr "" -#: classes/helpers/FrmAppHelper.php:4300 +#: classes/helpers/FrmAppHelper.php:4302 msgid "Welsh" msgstr "" -#: classes/helpers/FrmAppHelper.php:4301 +#: classes/helpers/FrmAppHelper.php:4303 msgid "Zulu" msgstr "" -#: classes/helpers/FrmAppHelper.php:4694 +#: classes/helpers/FrmAppHelper.php:4696 msgid "Form Landing Pages" msgstr "" -#: classes/helpers/FrmAppHelper.php:4695 +#: classes/helpers/FrmAppHelper.php:4697 msgid "Easily manage a landing page for your form. Upgrade to get form landing pages." msgstr "" -#: classes/helpers/FrmAppHelper.php:4792 +#: classes/helpers/FrmAppHelper.php:4794 #: classes/views/styles/_style-card.php:38 #: js/admin/applications.js:312 msgid "NEW" msgstr "" -#: classes/helpers/FrmAppHelper.php:4953 +#: classes/helpers/FrmAppHelper.php:4955 msgctxt "warning message: close icon label" msgid "Dismiss" msgstr "" -#: classes/helpers/FrmAppHelper.php:4995 +#: classes/helpers/FrmAppHelper.php:4997 msgid "You're using Formidable Forms Lite - no license needed. Enjoy!" msgstr "" @@ -2684,7 +2693,7 @@ msgstr "" #: classes/helpers/FrmEntriesHelper.php:934 #: classes/helpers/FrmFormsHelper.php:1522 -#: classes/helpers/FrmFormsListHelper.php:487 +#: classes/helpers/FrmFormsListHelper.php:530 msgid "Draft" msgstr "" @@ -2729,7 +2738,7 @@ msgstr "" #. translators: %s: Form name #. translators: Form title #: classes/helpers/FrmEntriesListHelper.php:351 -#: classes/helpers/FrmFormsListHelper.php:262 +#: classes/helpers/FrmFormsListHelper.php:357 msgid "Select %s" msgstr "" @@ -2743,13 +2752,13 @@ msgstr "" #: classes/helpers/FrmEntriesListHelper.php:508 #: classes/helpers/FrmFormsHelper.php:1425 -#: classes/helpers/FrmFormsListHelper.php:158 +#: classes/helpers/FrmFormsListHelper.php:168 #: classes/views/frm-form-actions/form_action.php:39 #: stripe/helpers/FrmTransLiteListHelper.php:192 #: stripe/helpers/FrmTransLiteListHelper.php:462 #: stripe/views/payments/show.php:173 #: stripe/views/subscriptions/show.php:129 -#: js/src/admin/admin.js:2865 +#: js/src/admin/admin.js:2871 msgid "Delete" msgstr "" @@ -4126,10 +4135,16 @@ msgid "Create Form from Template" msgstr "" #: classes/helpers/FrmFormsHelper.php:1251 -msgid "Duplicate Form" +#: classes/views/frm-form-actions/form_action.php:34 +#: js/admin/style.js:803 +#: js/src/admin/admin.js:2877 +msgid "Duplicate" msgstr "" #: classes/helpers/FrmFormsHelper.php:1286 +#: classes/helpers/FrmFormsListHelper.php:623 +#: js/admin/forms-list.js:234 +#: js/admin/forms-list.js:237 msgid "(no title)" msgstr "" @@ -4138,7 +4153,7 @@ msgid "Restore from Trash" msgstr "" #: classes/helpers/FrmFormsHelper.php:1410 -#: classes/helpers/FrmFormsListHelper.php:149 +#: classes/helpers/FrmFormsListHelper.php:159 msgid "Restore" msgstr "" @@ -4148,7 +4163,7 @@ msgstr "" #: classes/helpers/FrmFormsHelper.php:1415 #: classes/helpers/FrmFormsHelper.php:1523 -#: classes/helpers/FrmFormsListHelper.php:194 +#: classes/helpers/FrmFormsListHelper.php:204 msgid "Trash" msgstr "" @@ -4157,7 +4172,7 @@ msgid "Do you want to move this form to the trash?" msgstr "" #: classes/helpers/FrmFormsHelper.php:1424 -#: classes/helpers/FrmFormsListHelper.php:153 +#: classes/helpers/FrmFormsListHelper.php:163 msgid "Delete Permanently" msgstr "" @@ -4265,69 +4280,75 @@ msgstr "" #: classes/helpers/FrmFormsHelper.php:2013 #: classes/views/form-templates/modals/name-your-form-modal.php:35 -#: js/src/admin/admin.js:4666 +#: js/src/admin/admin.js:4672 msgid "Save" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:24 +#: classes/helpers/FrmFormsListHelper.php:33 msgid "Forms list" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:129 +#: classes/helpers/FrmFormsListHelper.php:139 msgid "No forms found in the trash." msgstr "" -#: classes/helpers/FrmFormsListHelper.php:133 +#: classes/helpers/FrmFormsListHelper.php:143 msgid "See all forms." msgstr "" -#: classes/helpers/FrmFormsListHelper.php:139 +#: classes/helpers/FrmFormsListHelper.php:149 #: classes/views/styles/manage.php:71 msgid "No Forms Found" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:156 +#: classes/helpers/FrmFormsListHelper.php:166 #: classes/views/form-templates/template.php:56 msgid "Move to Trash" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:181 +#: classes/helpers/FrmFormsListHelper.php:191 msgid "Empty Trash" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:192 +#: classes/helpers/FrmFormsListHelper.php:202 msgid "My Forms" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:193 +#: classes/helpers/FrmFormsListHelper.php:203 msgid "Drafts" msgstr "" #. translators: %1$s: Status, %2$s: Number of items -#: classes/helpers/FrmFormsListHelper.php:217 +#: classes/helpers/FrmFormsListHelper.php:227 msgid "%1$s (%2$s)" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:314 +#: classes/helpers/FrmFormsListHelper.php:337 msgid "Saving entries is disabled for this form" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:352 +#: classes/helpers/FrmFormsListHelper.php:376 +#: classes/helpers/FrmFormsListHelper.php:481 #: classes/models/FrmField.php:234 msgid "Embed Form" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:403 +#: classes/helpers/FrmFormsListHelper.php:427 msgid "Link to list of all views for this form." msgstr "" -#: classes/helpers/FrmFormsListHelper.php:439 +#: classes/helpers/FrmFormsListHelper.php:481 +#: classes/views/frm-forms/_publish_box.php:55 +msgid "Embed" +msgstr "" + +#: classes/helpers/FrmFormsListHelper.php:482 #: classes/views/frm-forms/_publish_box.php:22 #: classes/views/frm-settings/email/email-styles.php:54 msgid "Preview" msgstr "" -#: classes/helpers/FrmFormsListHelper.php:509 +#: classes/helpers/FrmFormsListHelper.php:552 msgid "ALL selected forms and their entries will be permanently deleted. Want to proceed?" msgstr "" @@ -4373,7 +4394,8 @@ msgid "Bulk Actions" msgstr "" #: classes/helpers/FrmListHelper.php:449 -#: js/admin/style.js:641 +#: classes/views/frm-forms/forms-list-settings.php:97 +#: js/admin/style.js:730 msgid "Apply" msgstr "" @@ -4505,7 +4527,7 @@ msgstr "" #. translators: %d: The number of styles #. translators: %d: The number of hidden items to show. #: classes/helpers/FrmStylesCardHelper.php:475 -#: js/admin/style.js:154 +#: js/admin/style.js:243 msgid "Show all (%d)" msgstr "" @@ -4556,25 +4578,25 @@ msgstr "" msgid "Placeholder inside the field" msgstr "" -#: classes/helpers/FrmStylesHelper.php:969 +#: classes/helpers/FrmStylesHelper.php:983 #: classes/views/styles/_quick-settings.php:7 msgid "Quick Settings" msgstr "" #. translators: %1$s: Anchor tag open, %2$s: Anchor tag close. -#: classes/helpers/FrmStylesPreviewHelper.php:205 +#: classes/helpers/FrmStylesPreviewHelper.php:246 msgid "Formidable styles are disabled. This needs to be enabled in %1$sGlobal Settings%2$s." msgstr "" -#: classes/helpers/FrmStylesPreviewHelper.php:231 +#: classes/helpers/FrmStylesPreviewHelper.php:272 msgid "Not all JavaScript is loaded in this preview. Some features will appear differently on the front end." msgstr "" -#: classes/helpers/FrmStylesPreviewHelper.php:241 +#: classes/helpers/FrmStylesPreviewHelper.php:282 msgid "This form is being previewed because no form was selected. Use the form dropdown to select a new preview target." msgstr "" -#: classes/helpers/FrmStylesPreviewHelper.php:261 +#: classes/helpers/FrmStylesPreviewHelper.php:302 msgid "Changes that you will make to this style will apply to every form using this style." msgstr "" @@ -4815,7 +4837,7 @@ msgid "Captcha" msgstr "" #: classes/models/fields/FrmFieldCheckbox.php:61 -#: classes/models/fields/FrmFieldRadio.php:92 +#: classes/models/fields/FrmFieldRadio.php:90 #: classes/models/fields/FrmFieldSelect.php:48 #: classes/views/styles/_sample_form.php:28 #: classes/views/styles/_sample_form.php:57 @@ -4824,7 +4846,7 @@ msgid "Option 1" msgstr "" #: classes/models/fields/FrmFieldCheckbox.php:62 -#: classes/models/fields/FrmFieldRadio.php:93 +#: classes/models/fields/FrmFieldRadio.php:91 #: classes/views/styles/_sample_form.php:58 #: classes/views/styles/_sample_form.php:66 msgid "Option 2" @@ -4915,33 +4937,33 @@ msgstr "" msgid "New Product" msgstr "" -#: classes/models/fields/FrmFieldType.php:296 +#: classes/models/fields/FrmFieldType.php:308 msgid "(Collapsed)" msgstr "" #. translators: %s: Field name #. translators: %s: Field type -#: classes/models/fields/FrmFieldType.php:547 -#: classes/models/fields/FrmFieldType.php:724 +#: classes/models/fields/FrmFieldType.php:559 +#: classes/models/fields/FrmFieldType.php:736 msgid "%s Options" msgstr "" -#: classes/models/fields/FrmFieldType.php:600 +#: classes/models/fields/FrmFieldType.php:612 #: classes/views/frm-fields/back-end/settings.php:195 #: classes/views/frm-fields/back-end/value-format.php:26 msgid "Toggle Options" msgstr "" -#: classes/models/fields/FrmFieldType.php:654 +#: classes/models/fields/FrmFieldType.php:666 #: classes/views/frm-fields/back-end/bulk-options-overlay.php:18 msgid "Bulk Edit Options" msgstr "" -#: classes/models/fields/FrmFieldType.php:859 +#: classes/models/fields/FrmFieldType.php:871 msgid "Untitled" msgstr "" -#: classes/models/fields/FrmFieldType.php:2026 +#: classes/models/fields/FrmFieldType.php:2095 msgid "Add Option" msgstr "" @@ -5488,7 +5510,7 @@ msgid "Ok, you deserve it" msgstr "" #. translators: %s is the discount percentage. -#: classes/models/FrmSalesApi.php:391 +#: classes/models/FrmSalesApi.php:408 msgid "GET %s OFF NOW" msgstr "" @@ -5615,7 +5637,7 @@ msgid "Looks like you may not have a current subscription for this solution. Ple msgstr "" #: classes/models/FrmSpamCheckDenylist.php:588 -#: classes/models/FrmSpamCheckWPDisallowedWords.php:86 +#: classes/models/FrmSpamCheckWPDisallowedWords.php:49 msgid "Your entry appears to be blocked spam!" msgstr "" @@ -5624,49 +5646,49 @@ msgstr "" msgid "New Style" msgstr "" -#: classes/models/FrmStyle.php:433 +#: classes/models/FrmStyle.php:499 msgid "WARNING: Any changes made to this file will be lost when your Formidable settings are updated" msgstr "" -#: classes/models/FrmStyle.php:531 +#: classes/models/FrmStyle.php:597 msgid "Formidable Style" msgstr "" -#: classes/models/FrmStyle.php:797 +#: classes/models/FrmStyle.php:863 msgid "Thin" msgstr "" -#: classes/models/FrmStyle.php:798 +#: classes/models/FrmStyle.php:864 msgid "Extra Light" msgstr "" -#: classes/models/FrmStyle.php:799 +#: classes/models/FrmStyle.php:865 #: classes/views/frm-fields/back-end/settings.php:404 msgid "Light" msgstr "" -#: classes/models/FrmStyle.php:800 +#: classes/models/FrmStyle.php:866 #: js/src/web-components/frm-typography-component/frm-typography-component.js:31 msgid "Regular" msgstr "" -#: classes/models/FrmStyle.php:801 +#: classes/models/FrmStyle.php:867 msgid "Medium" msgstr "" -#: classes/models/FrmStyle.php:802 +#: classes/models/FrmStyle.php:868 msgid "Semi Bold" msgstr "" -#: classes/models/FrmStyle.php:803 +#: classes/models/FrmStyle.php:869 msgid "Bold" msgstr "" -#: classes/models/FrmStyle.php:804 +#: classes/models/FrmStyle.php:870 msgid "Extra Bold" msgstr "" -#: classes/models/FrmStyle.php:805 +#: classes/models/FrmStyle.php:871 #: paypal/views/settings/button-settings.php:37 msgid "Black" msgstr "" @@ -6148,12 +6170,12 @@ msgid "Field Size" msgstr "" #: classes/views/frm-fields/back-end/product-options.php:16 -#: paypal/controllers/FrmPayPalLiteActionsController.php:2563 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2564 msgid "Product Type" msgstr "" #: classes/views/frm-fields/back-end/product-single-option.php:28 -#: paypal/controllers/FrmPayPalLiteActionsController.php:2555 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2556 msgid "Product Name" msgstr "" @@ -6353,31 +6375,31 @@ msgstr "" msgid "Register User" msgstr "" -#: classes/views/frm-form-actions/default_actions.php:90 +#: classes/views/frm-form-actions/default_actions.php:96 msgid "Scored Quiz" msgstr "" -#: classes/views/frm-form-actions/default_actions.php:102 +#: classes/views/frm-form-actions/default_actions.php:108 msgid "Quiz Outcome" msgstr "" -#: classes/views/frm-form-actions/default_actions.php:159 +#: classes/views/frm-form-actions/default_actions.php:165 msgid "Twilio SMS" msgstr "" -#: classes/views/frm-form-actions/default_actions.php:203 +#: classes/views/frm-form-actions/default_actions.php:209 msgid "The HubSpot integration is not available on your plan. Did you know you can upgrade to unlock more awesome features?" msgstr "" -#: classes/views/frm-form-actions/default_actions.php:224 +#: classes/views/frm-form-actions/default_actions.php:230 msgid "Send API data" msgstr "" -#: classes/views/frm-form-actions/default_actions.php:235 +#: classes/views/frm-form-actions/default_actions.php:241 msgid "Google Sheets" msgstr "" -#: classes/views/frm-form-actions/default_actions.php:246 +#: classes/views/frm-form-actions/default_actions.php:252 msgid "eCommerce" msgstr "" @@ -6390,12 +6412,6 @@ msgstr "" msgid "Conditional emails" msgstr "" -#: classes/views/frm-form-actions/form_action.php:34 -#: js/admin/style.js:714 -#: js/src/admin/admin.js:2871 -msgid "Duplicate" -msgstr "" - #: classes/views/frm-form-actions/form_action.php:39 msgid "Delete this form action?" msgstr "" @@ -6568,18 +6584,18 @@ msgid "Move Field" msgstr "" #: classes/views/frm-forms/add_field.php:44 -#: js/src/admin/admin.js:1617 #: js/src/admin/admin.js:1623 -#: js/src/admin/admin.js:2795 +#: js/src/admin/admin.js:1629 +#: js/src/admin/admin.js:2801 msgid "More Options" msgstr "" #: classes/views/frm-forms/add_field.php:46 -#: js/src/admin/admin.js:1609 +#: js/src/admin/admin.js:1615 msgid "Toggle More Options Dropdown" msgstr "" -#: classes/views/frm-forms/add_field.php:105 +#: classes/views/frm-forms/add_field.php:116 msgid "Add Fields Here" msgstr "" @@ -6624,6 +6640,18 @@ msgstr "" msgid "Drag and drop fields from the left or click a field to add it to your form." msgstr "" +#: classes/views/frm-forms/forms-list-settings.php:25 +msgid "Columns" +msgstr "" + +#: classes/views/frm-forms/forms-list-settings.php:70 +msgid "Description Excerpt" +msgstr "" + +#: classes/views/frm-forms/forms-list-settings.php:84 +msgid "Items per page" +msgstr "" + #: classes/views/frm-forms/insert_form_popup.php:11 msgid "Close panel" msgstr "" @@ -6783,10 +6811,6 @@ msgstr "" msgid "In Test Mode" msgstr "" -#: classes/views/frm-forms/_publish_box.php:55 -msgid "Embed" -msgstr "" - #: classes/views/frm-settings/captcha/captcha.php:7 msgid "Select Captcha Type" msgstr "" @@ -7384,7 +7408,7 @@ msgid "Get Templates" msgstr "" #: classes/views/shared/info-overlay.php:25 -#: js/src/admin/admin.js:398 +#: js/src/admin/admin.js:404 msgid "Got it!" msgstr "" @@ -7799,17 +7823,15 @@ msgstr "" msgid "Check Box" msgstr "" -#: classes/views/styles/_check-box-radio-fields.php:73 -#: classes/views/styles/_check-box-radio-fields.php:94 -msgid "Multiple Rows" +#: classes/views/styles/_check-box-radio-fields.php:68 +msgid "One Column" msgstr "" -#: classes/views/styles/_check-box-radio-fields.php:74 -#: classes/views/styles/_check-box-radio-fields.php:95 -msgid "Single Row" +#: classes/views/styles/_check-box-radio-fields.php:69 +msgid "Inline Options" msgstr "" -#: classes/views/styles/_check-box-radio-fields.php:84 +#: classes/views/styles/_check-box-radio-fields.php:94 msgid "Radio" msgstr "" @@ -8053,12 +8075,12 @@ msgid "Applied" msgstr "" #: classes/views/styles/_style-preview-container.php:10 -#: js/admin/style.js:528 +#: js/admin/style.js:617 msgid "View my form" msgstr "" #: classes/views/styles/_style-preview-container.php:10 -#: js/admin/style.js:528 +#: js/admin/style.js:617 msgid "View sample form" msgstr "" @@ -8407,40 +8429,40 @@ msgstr "" msgid "No PayPal subscription ID found." msgstr "" -#: paypal/controllers/FrmPayPalLiteActionsController.php:2567 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2568 msgid "Service" msgstr "" -#: paypal/controllers/FrmPayPalLiteActionsController.php:2568 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2569 msgid "Digital" msgstr "" -#: paypal/controllers/FrmPayPalLiteActionsController.php:2569 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2570 msgid "Physical" msgstr "" -#: paypal/controllers/FrmPayPalLiteActionsController.php:2603 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2604 msgid "PayPal Email" msgstr "" -#: paypal/controllers/FrmPayPalLiteActionsController.php:2604 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2605 msgid "PayPal Name" msgstr "" -#: paypal/controllers/FrmPayPalLiteActionsController.php:2607 +#: paypal/controllers/FrmPayPalLiteActionsController.php:2608 msgid "PayPal Address" msgstr "" #: paypal/controllers/FrmPayPalLiteAppController.php:79 #: paypal/controllers/FrmPayPalLiteAppController.php:209 -#: paypal/controllers/FrmPayPalLiteAppController.php:609 +#: paypal/controllers/FrmPayPalLiteAppController.php:610 #: square/controllers/FrmSquareLiteAppController.php:78 msgid "Invalid form ID" msgstr "" #: paypal/controllers/FrmPayPalLiteAppController.php:85 #: paypal/controllers/FrmPayPalLiteAppController.php:225 -#: paypal/controllers/FrmPayPalLiteAppController.php:615 +#: paypal/controllers/FrmPayPalLiteAppController.php:616 msgid "No PayPal actions found for this form" msgstr "" @@ -8452,31 +8474,31 @@ msgstr "" msgid "Invalid payment source" msgstr "" -#: paypal/controllers/FrmPayPalLiteAppController.php:236 +#: paypal/controllers/FrmPayPalLiteAppController.php:237 msgid "Order amount cannot be zero." msgstr "" -#: paypal/controllers/FrmPayPalLiteAppController.php:636 +#: paypal/controllers/FrmPayPalLiteAppController.php:638 msgid "A product name is required for subscriptions. Please update your PayPal action settings." msgstr "" -#: paypal/controllers/FrmPayPalLiteAppController.php:640 +#: paypal/controllers/FrmPayPalLiteAppController.php:642 msgid "A billing interval is required for subscriptions. Please update your PayPal action settings." msgstr "" -#: paypal/controllers/FrmPayPalLiteAppController.php:644 +#: paypal/controllers/FrmPayPalLiteAppController.php:646 msgid "A valid amount is required for subscriptions. Zero amounts are not allowed." msgstr "" -#: paypal/controllers/FrmPayPalLiteAppController.php:728 +#: paypal/controllers/FrmPayPalLiteAppController.php:731 msgid "Payment failed. Please try again." msgstr "" -#: paypal/controllers/FrmPayPalLiteAppController.php:826 +#: paypal/controllers/FrmPayPalLiteAppController.php:829 msgid "PayPal is not connected. Please connect your PayPal account to process payments." msgstr "" -#: paypal/controllers/FrmPayPalLiteAppController.php:829 +#: paypal/controllers/FrmPayPalLiteAppController.php:832 msgid "You can connect PayPal in Global Settings, under the Payments section." msgstr "" @@ -9478,50 +9500,59 @@ msgstr "" msgid "Successfully copied embed example" msgstr "" -#: js/admin/style.js:145 +#: js/admin/forms-list.js:226 +msgid "Embed Locations" +msgstr "" + +#: js/admin/forms-list.js:260 +msgid "View in new tab" +msgstr "" + +#: js/admin/style.js:234 msgid "Show less" msgstr "" #. translators: %s: The required license type (ie. Plus, Business, or Elite) -#: js/admin/style.js:424 +#: js/admin/style.js:513 msgid "Access to this style requires the %s plan." msgstr "" -#: js/admin/style.js:641 +#: js/admin/style.js:730 msgid "Install and apply" msgstr "" -#: js/admin/style.js:660 +#: js/admin/style.js:749 msgid "Reset to Defaults" msgstr "" -#: js/admin/style.js:743 +#: js/admin/style.js:832 msgid "Rename" msgstr "" -#: js/admin/style.js:762 -#: js/admin/style.js:853 +#: js/admin/style.js:851 +#: js/admin/style.js:942 msgid "Rename style" msgstr "" -#: js/admin/style.js:800 +#: js/admin/style.js:889 msgid "Style name" msgstr "" -#: js/admin/style.js:890 +#: js/admin/style.js:980 +#: js/admin/style.js:997 msgid "Style has been renamed successfully" msgstr "" -#: js/admin/style.js:944 -#: js/admin/style.js:971 +#: js/admin/style.js:1051 +#: js/admin/style.js:1078 msgid "Reset style" msgstr "" -#: js/admin/style.js:955 +#: js/admin/style.js:1062 msgid "Reset this style back to the default?" msgstr "" -#: js/admin/style.js:1016 +#: js/admin/style.js:1123 msgid "Style has been reset successfully" msgstr "" @@ -9546,10 +9577,25 @@ msgstr "" #: js/formidable_admin.js:1 #: js/frm_testing_mode.js:2 #: js/src/admin/addon-state.js:175 -#: js/src/admin/admin.js:8847 +#: js/src/admin/admin.js:8858 msgid "Save and Reload" msgstr "" +#: js/formidable_admin.js:1 +#: js/src/admin/settings/validateRangeSettings.js:76 +msgid "Minimum value cannot be greater than or equal to maximum value." +msgstr "" + +#: js/formidable_admin.js:1 +#: js/src/admin/settings/validateRangeSettings.js:108 +msgid "Step value must be greater than 0." +msgstr "" + +#: js/formidable_admin.js:1 +#: js/src/admin/settings/validateRangeSettings.js:121 +msgid "Step value cannot be greater than the difference between the minimum and maximum values." +msgstr "" + #: js/formidable_admin.js:1 #: js/frm_testing_mode.js:2 #: js/src/admin/upgrade-popup.js:71 @@ -9584,95 +9630,95 @@ msgstr "" msgid "Sorry, we didn't find any add-ons that match your criteria." msgstr "" -#: js/src/admin/admin.js:1036 +#: js/src/admin/admin.js:1042 msgid "Field Group" msgstr "" -#: js/src/admin/admin.js:1568 +#: js/src/admin/admin.js:1574 msgid "Set Row Layout" msgstr "" -#: js/src/admin/admin.js:1575 +#: js/src/admin/admin.js:1581 msgid "Move Field Group" msgstr "" -#: js/src/admin/admin.js:2407 +#: js/src/admin/admin.js:2413 msgid "This field type has reached its limit." msgstr "" #. translators: %1$d: Maximum number of fields allowed in a field group. -#: js/src/admin/admin.js:2529 +#: js/src/admin/admin.js:2535 msgid "You can only have a maximum of %1$d fields in a field group. Delete or move out a field from the group and try again." msgstr "" -#: js/src/admin/admin.js:2865 +#: js/src/admin/admin.js:2871 msgid "Delete Group" msgstr "" -#: js/src/admin/admin.js:2871 +#: js/src/admin/admin.js:2877 msgid "Duplicate Group" msgstr "" #. translators: %1$s: Number of fields that are selected to be deleted. -#: js/src/admin/admin.js:4116 +#: js/src/admin/admin.js:4122 msgid "Are you sure you want to delete these %1$s selected field(s)?" msgstr "" -#: js/src/admin/admin.js:4347 +#: js/src/admin/admin.js:4353 msgid "Custom layout" msgstr "" -#: js/src/admin/admin.js:4370 +#: js/src/admin/admin.js:4376 msgid "Break into rows" msgstr "" -#: js/src/admin/admin.js:4380 +#: js/src/admin/admin.js:4386 msgid "Row Layout" msgstr "" -#: js/src/admin/admin.js:4646 +#: js/src/admin/admin.js:4652 msgid "Enter number of columns for each field" msgstr "" -#: js/src/admin/admin.js:4650 +#: js/src/admin/admin.js:4656 msgid "Layouts are based on a 12-column grid system" msgstr "" -#: js/src/admin/admin.js:5094 +#: js/src/admin/admin.js:5100 msgid "Merge into row" msgstr "" #. translators: %s: The detected option value. -#: js/src/admin/admin.js:6694 +#: js/src/admin/admin.js:6700 msgid "Duplicate option value \"%s\" detected" msgstr "" #. translators: %s: Form Setting section name (ie Form Permissions, Form Scheduling). -#: js/src/admin/admin.js:7409 +#: js/src/admin/admin.js:7418 msgid "%s are not installed" msgstr "" -#: js/src/admin/admin.js:8828 +#: js/src/admin/admin.js:8839 msgid "You are changing the field type. Not all field settings will appear as expected until you reload the page. Would you like to reload the page now?" msgstr "" -#: js/src/admin/admin.js:8833 +#: js/src/admin/admin.js:8844 msgid "Save and Reload?" msgstr "" -#: js/src/admin/admin.js:9678 +#: js/src/admin/admin.js:9689 msgid "Unable to install template" msgstr "" -#: js/src/admin/admin.js:9972 +#: js/src/admin/admin.js:9983 msgid "Please enter a valid number." msgstr "" -#: js/src/admin/admin.js:10255 +#: js/src/admin/admin.js:10266 msgid "Only 10 columns can be selected at a time." msgstr "" -#: js/src/admin/admin.js:10430 +#: js/src/admin/admin.js:10441 msgid "Thank you for signing up!" msgstr "" diff --git a/package-lock.json b/package-lock.json index 6ba4700f37..70c07f9b84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8660,6 +8660,17 @@ } } }, + "node_modules/@wordpress/url/node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, "node_modules/@wordpress/url/node_modules/commander": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", diff --git a/readme.txt b/readme.txt index e77cd3e729..da76574ca3 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: forms, form builder, custom form, contact form, payment form Requires at least: 6.3 Tested up to: 7.0 Requires PHP: 7.0 -Stable tag: 6.31 +Stable tag: 6.32 The most powerful drag and drop WordPress form builder for contact forms, payment forms, calculators, quizzes, surveys, and data-driven applications. @@ -364,6 +364,22 @@ Using our Zapier integration, you can easily connect your website with over 5,00 See all [Formidable Zapier Integrations](https://zapier.com/apps/formidable/integrations). == Changelog == += 6.32 = +* New: The form listing table now includes new Embeds and List Settings columns, for displaying every post and page where a form is embedded, and an added gear icon for controlling screen options. +* New: The generated Formidable CSS file can now work from the uploads directory instead of the plugin directory. This will automatically work based on the DISALLOW_FILE_MODS constant, and can additionally be controlled using a new frm_add_css_to_uploads_dir filter. +* New: Field errors will now get removed automatically on change events regardless of the JS validation setting. +* Fix: The aria-describedby attribute would not update properly when a form was submitted with errors for fields with multiple inputs. +* Fix: A small styling rule has been added to prevent HTML fields from overflowing past their container when using long strings. +* Fix: Color pickers used on the form styler page have been updated to help maintain the active color format, preventing automatic conversions from rgb to hex. +* Fix: Validation for Square has been modified to prevent the submit button from remaining disabled when the Square inputs do not include a postal code input, which happens in some countries including Japan and Australia. +* Fix: A cannot modify header information - headers already sent by FrmTransLiteHooksController.php:108 warning has been fixed. +* Fix: Custom CSS saved in form styles would not appear as expected after duplicating, showing additional CSS selectors for the original style. +* Fix: A possible TypeError when calling wp_is_valid_utf8 with a null value has been fixed. +* Fix: A new form style would not properly rename when it did not yet have a style ID. +* Fix: PayPal Commerce has been updated to prevent issues where Google Pay and Apple Pay options would not appear if the SDKs had not loaded in time. +* Fix: PayPal Commerce orders and products were not including the payment action description setting. +* The overdue subscription cron message will no longer get logged when there are no active subscriptions. + = 6.31 = * New: Formidable now supports PayPal Commerce. This is built into the Lite plugin. To get started, go to Global Settings > Payments > PayPal to connect your business account. * New: Form action settings have been redesigned. @@ -383,20 +399,6 @@ See all [Formidable Zapier Integrations](https://zapier.com/apps/formidable/inte * Fix: Attempting to refund a Square payment would result in a fatal error when the Stripe or Authorize.Net add-ons were also active. * Fix: A check has been added to prevent a possible Cannot access offset of type string on string fatal PHP error issue. -= 6.29 = -* New: Additional validation has been added to prevent people from manipulating amount values when making Stripe payments. -* Fix: When updating the Stripe processing message global setting with strings contained backslashes, extra backslashes would get added with each time the global settings were updated. -* Fix: Usage tracking code would trigger a str_contains(): Argument 1 must be string, stdClass given warning. -* Fix: Credit card fields would appear blank in some previews, like when previewing a Gutenberg block. -* Fix: The field options dropdown for the far left field would render underneath the field settings sidebar in rows with a lot of fields. -* Fix: An Undefined array key "slug" PHP Warning has been fixed. -* Fix: When a missing payment field is automatically added to a form with a payment action, the new field would incorrectly appear below the submit button. -* Breaking: The deprecated FrmDb constructor method has been removed. - -= 6.28 = -* New: Required changes to support the new option limits settings in Pro and the new redesigned fields in Views settings. -* Performance: The cached license data has been reduced significantly, omitting change log data and data for invalid plugins. The size of the auto-loaded option should be about 40% of its previous size. - [See changelog for all versions](https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt) == Upgrade Notice == diff --git a/stripe/models/FrmTransLiteSubscription.php b/stripe/models/FrmTransLiteSubscription.php index b1b90bb8a7..88e7b01366 100755 --- a/stripe/models/FrmTransLiteSubscription.php +++ b/stripe/models/FrmTransLiteSubscription.php @@ -96,7 +96,7 @@ public function get_overdue_subscriptions() { /** * Get all active or future_cancel subscriptions without next_bill_date check. * - * @since x.x + * @since 6.32 * * @return array */