From 91faadf4b7000c67407ad36345a247353839a63f Mon Sep 17 00:00:00 2001
From: Mike Letellier
Date: Mon, 17 Aug 2026 18:12:07 -0300
Subject: [PATCH 1/2] Open external links in new tabs
---
classes/controllers/FrmAppController.php | 1 +
classes/helpers/FrmAppHelper.php | 2 +-
classes/models/FrmAntiSpam.php | 2 +-
classes/models/FrmMigrate.php | 4 ++--
classes/views/addons/min-version-notice.php | 2 +-
classes/views/applications/header.php | 2 +-
classes/views/frm-forms/error-modal.php | 2 +-
classes/views/frm-settings/license_box.php | 4 ++--
classes/views/inbox/list.php | 11 ++++++++++-
classes/views/shared/admin-header.php | 2 +-
classes/views/shared/upgrade_overlay.php | 2 +-
classes/views/shared/views-info.php | 4 ++--
classes/views/summary-emails/base.php | 2 +-
classes/views/test-mode/container.php | 2 +-
js/admin/applications.js | 2 ++
15 files changed, 28 insertions(+), 16 deletions(-)
diff --git a/classes/controllers/FrmAppController.php b/classes/controllers/FrmAppController.php
index 490e04ec0a..5f7cefee91 100644
--- a/classes/controllers/FrmAppController.php
+++ b/classes/controllers/FrmAppController.php
@@ -1419,6 +1419,7 @@ public static function show_error_modal( $error_args ) {
'cancel_classes' => '',
'continue_url' => '',
'continue_classes' => '',
+ 'continue_target' => '',
'icon' => 'frm_lock_simple',
);
diff --git a/classes/helpers/FrmAppHelper.php b/classes/helpers/FrmAppHelper.php
index 7d1532ea75..924d0bdacf 100644
--- a/classes/helpers/FrmAppHelper.php
+++ b/classes/helpers/FrmAppHelper.php
@@ -1632,7 +1632,7 @@ public static function print_admin_banner( $should_show_lite_upgrade ) {
printf(
/* translators: %1$s: Start link HTML, %2$s: CTA text ("upgrading to PRO" by default), %3$s: End link HTML */
esc_html__( 'You\'re using Formidable Forms Lite. To unlock more features consider %1$s%2$s%3$s.', 'formidable' ),
- '',
+ '',
esc_html( $cta_text ),
''
);
diff --git a/classes/models/FrmAntiSpam.php b/classes/models/FrmAntiSpam.php
index cdb490b2ca..330fe74259 100644
--- a/classes/models/FrmAntiSpam.php
+++ b/classes/models/FrmAntiSpam.php
@@ -309,7 +309,7 @@ private function maybe_get_support_text() {
return ' ' . sprintf(
// translators: %1$s start link, %2$s end link.
esc_html__( 'Please check out our %1$stroubleshooting guide%2$s for details on resolving this issue.', 'formidable' ),
- '',
+ '',
''
);
}
diff --git a/classes/models/FrmMigrate.php b/classes/models/FrmMigrate.php
index cee115c6da..831fba9ede 100644
--- a/classes/models/FrmMigrate.php
+++ b/classes/models/FrmMigrate.php
@@ -160,8 +160,8 @@ private function check_that_tables_exist() {
$message = array(
'key' => 'failed-to-create-tables',
'subject' => 'Something went wrong setting up the database',
- 'message' => 'For steps to continue, see our documentation. If you need assistance, we recommend that you reach out to your hosting provider. Then click here to try again.', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
- 'cta' => 'Learn More',
+ 'message' => 'For steps to continue, see our documentation. If you need assistance, we recommend that you reach out to your hosting provider. Then click here to try again.', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
+ 'cta' => 'Learn More', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
'type' => 'error',
);
diff --git a/classes/views/addons/min-version-notice.php b/classes/views/addons/min-version-notice.php
index f8b1f0ad05..a012fbaff9 100644
--- a/classes/views/addons/min-version-notice.php
+++ b/classes/views/addons/min-version-notice.php
@@ -13,7 +13,7 @@
'content' => 'min-pro-version-notice',
);
?>
- Please renew now to get the latest version.
+ Please renew now to get the latest version.
Please update now.
diff --git a/classes/views/applications/header.php b/classes/views/applications/header.php
index 39b1342a41..36067aaec9 100644
--- a/classes/views/applications/header.php
+++ b/classes/views/applications/header.php
@@ -28,7 +28,7 @@
-
+
diff --git a/classes/views/frm-forms/error-modal.php b/classes/views/frm-forms/error-modal.php
index b4f18427fe..2889f8003c 100644
--- a/classes/views/frm-forms/error-modal.php
+++ b/classes/views/frm-forms/error-modal.php
@@ -26,7 +26,7 @@
if ( ! empty( $error_args['continue_text'] ) ) :
?>
-
+ >
diff --git a/classes/views/frm-settings/license_box.php b/classes/views/frm-settings/license_box.php
index 69b3ba1e4c..0c497f8249 100644
--- a/classes/views/frm-settings/license_box.php
+++ b/classes/views/frm-settings/license_box.php
@@ -41,7 +41,7 @@
?>
-
+
@@ -59,7 +59,7 @@
printf(
/* translators: %1$s: Start link HTML, %2$s: CTA Text (Default is "upgrading to PRO"), %3$s: End link HTML */
esc_html__( 'To unlock more features consider %1$s%2$s%3$s.', 'formidable' ),
- '',
+ '',
esc_html( $unlock_more_upgrade_text ),
''
);
diff --git a/classes/views/inbox/list.php b/classes/views/inbox/list.php
index 0aadcffbff..a0f9b516a1 100644
--- a/classes/views/inbox/list.php
+++ b/classes/views/inbox/list.php
@@ -59,7 +59,16 @@
- array( 'href' => true ) ) ); ?>
+ array(
+ 'href' => true,
+ 'target' => true,
+ 'rel' => true,
+ ),
+ );
+ echo wp_kses( $message['cta'], $cta_allowed_html );
+ ?>
diff --git a/classes/views/shared/admin-header.php b/classes/views/shared/admin-header.php
index d37d2da3af..fe6ec931eb 100644
--- a/classes/views/shared/admin-header.php
+++ b/classes/views/shared/admin-header.php
@@ -60,7 +60,7 @@
}
} elseif ( ! FrmAppHelper::pro_is_installed() ) {
?>
-
+
-
+
'view-demos-button',
);
?>
-
+
diff --git a/classes/views/summary-emails/base.php b/classes/views/summary-emails/base.php
index 8728aee752..57849d1cdd 100644
--- a/classes/views/summary-emails/base.php
+++ b/classes/views/summary-emails/base.php
@@ -51,7 +51,7 @@
|
-
+
|
diff --git a/classes/views/test-mode/container.php b/classes/views/test-mode/container.php
index 8640a86f51..7ad06db62e 100644
--- a/classes/views/test-mode/container.php
+++ b/classes/views/test-mode/container.php
@@ -136,7 +136,7 @@
-
+
'true' ) ); ?>
diff --git a/js/admin/applications.js b/js/admin/applications.js
index 87fde619c5..170da92183 100644
--- a/js/admin/applications.js
+++ b/js/admin/applications.js
@@ -525,6 +525,8 @@
if ( data.upgradeUrl ) {
primaryActionButton.classList.remove( 'dismiss' );
primaryActionButton.setAttribute( 'href', data.upgradeUrl );
+ primaryActionButton.target = '_blank';
+ primaryActionButton.rel = 'noopener noreferrer';
}
const hookName = 'frm_view_application_modal_primary_action_button';
From da174fb9975f391dbc5358f895813934bf11e0e6 Mon Sep 17 00:00:00 2001
From: Mike Letellier
Date: Mon, 17 Aug 2026 18:18:48 -0300
Subject: [PATCH 2/2] Use noopener
---
classes/helpers/FrmAppHelper.php | 2 +-
classes/models/FrmAntiSpam.php | 2 +-
classes/models/FrmMigrate.php | 4 ++--
classes/views/addons/min-version-notice.php | 2 +-
classes/views/applications/header.php | 2 +-
classes/views/frm-forms/error-modal.php | 2 +-
classes/views/frm-settings/license_box.php | 4 ++--
classes/views/shared/admin-header.php | 2 +-
classes/views/shared/upgrade_overlay.php | 2 +-
classes/views/shared/views-info.php | 4 ++--
classes/views/summary-emails/base.php | 2 +-
classes/views/test-mode/container.php | 2 +-
js/admin/applications.js | 2 +-
13 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/classes/helpers/FrmAppHelper.php b/classes/helpers/FrmAppHelper.php
index 924d0bdacf..46443b2b4c 100644
--- a/classes/helpers/FrmAppHelper.php
+++ b/classes/helpers/FrmAppHelper.php
@@ -1632,7 +1632,7 @@ public static function print_admin_banner( $should_show_lite_upgrade ) {
printf(
/* translators: %1$s: Start link HTML, %2$s: CTA text ("upgrading to PRO" by default), %3$s: End link HTML */
esc_html__( 'You\'re using Formidable Forms Lite. To unlock more features consider %1$s%2$s%3$s.', 'formidable' ),
- '',
+ '',
esc_html( $cta_text ),
''
);
diff --git a/classes/models/FrmAntiSpam.php b/classes/models/FrmAntiSpam.php
index 330fe74259..117848f3e8 100644
--- a/classes/models/FrmAntiSpam.php
+++ b/classes/models/FrmAntiSpam.php
@@ -309,7 +309,7 @@ private function maybe_get_support_text() {
return ' ' . sprintf(
// translators: %1$s start link, %2$s end link.
esc_html__( 'Please check out our %1$stroubleshooting guide%2$s for details on resolving this issue.', 'formidable' ),
- '',
+ '',
''
);
}
diff --git a/classes/models/FrmMigrate.php b/classes/models/FrmMigrate.php
index 831fba9ede..eac9b08678 100644
--- a/classes/models/FrmMigrate.php
+++ b/classes/models/FrmMigrate.php
@@ -160,8 +160,8 @@ private function check_that_tables_exist() {
$message = array(
'key' => 'failed-to-create-tables',
'subject' => 'Something went wrong setting up the database',
- 'message' => 'For steps to continue, see our documentation. If you need assistance, we recommend that you reach out to your hosting provider. Then click here to try again.', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
- 'cta' => 'Learn More', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
+ 'message' => 'For steps to continue, see our documentation. If you need assistance, we recommend that you reach out to your hosting provider. Then click here to try again.', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
+ 'cta' => 'Learn More', // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong
'type' => 'error',
);
diff --git a/classes/views/addons/min-version-notice.php b/classes/views/addons/min-version-notice.php
index a012fbaff9..79fa97ff42 100644
--- a/classes/views/addons/min-version-notice.php
+++ b/classes/views/addons/min-version-notice.php
@@ -13,7 +13,7 @@
'content' => 'min-pro-version-notice',
);
?>
- Please renew now to get the latest version.
+ Please renew now to get the latest version.
Please update now.
diff --git a/classes/views/applications/header.php b/classes/views/applications/header.php
index 36067aaec9..d66acb924c 100644
--- a/classes/views/applications/header.php
+++ b/classes/views/applications/header.php
@@ -28,7 +28,7 @@
-
+
diff --git a/classes/views/frm-forms/error-modal.php b/classes/views/frm-forms/error-modal.php
index 2889f8003c..76ef6c7d66 100644
--- a/classes/views/frm-forms/error-modal.php
+++ b/classes/views/frm-forms/error-modal.php
@@ -26,7 +26,7 @@
if ( ! empty( $error_args['continue_text'] ) ) :
?>
- >
+ >
diff --git a/classes/views/frm-settings/license_box.php b/classes/views/frm-settings/license_box.php
index 0c497f8249..456730aa1f 100644
--- a/classes/views/frm-settings/license_box.php
+++ b/classes/views/frm-settings/license_box.php
@@ -41,7 +41,7 @@
?>
-
+
@@ -59,7 +59,7 @@
printf(
/* translators: %1$s: Start link HTML, %2$s: CTA Text (Default is "upgrading to PRO"), %3$s: End link HTML */
esc_html__( 'To unlock more features consider %1$s%2$s%3$s.', 'formidable' ),
- '',
+ '',
esc_html( $unlock_more_upgrade_text ),
''
);
diff --git a/classes/views/shared/admin-header.php b/classes/views/shared/admin-header.php
index fe6ec931eb..c9e4215e2c 100644
--- a/classes/views/shared/admin-header.php
+++ b/classes/views/shared/admin-header.php
@@ -60,7 +60,7 @@
}
} elseif ( ! FrmAppHelper::pro_is_installed() ) {
?>
-
+
-
+
'view-demos-button',
);
?>
-
+
diff --git a/classes/views/summary-emails/base.php b/classes/views/summary-emails/base.php
index 57849d1cdd..380fb5e2fb 100644
--- a/classes/views/summary-emails/base.php
+++ b/classes/views/summary-emails/base.php
@@ -51,7 +51,7 @@
|
-
+
|
diff --git a/classes/views/test-mode/container.php b/classes/views/test-mode/container.php
index 7ad06db62e..a26c3f1625 100644
--- a/classes/views/test-mode/container.php
+++ b/classes/views/test-mode/container.php
@@ -136,7 +136,7 @@
-
+
'true' ) ); ?>
diff --git a/js/admin/applications.js b/js/admin/applications.js
index 170da92183..87ebef3360 100644
--- a/js/admin/applications.js
+++ b/js/admin/applications.js
@@ -526,7 +526,7 @@
primaryActionButton.classList.remove( 'dismiss' );
primaryActionButton.setAttribute( 'href', data.upgradeUrl );
primaryActionButton.target = '_blank';
- primaryActionButton.rel = 'noopener noreferrer';
+ primaryActionButton.rel = 'noopener';
}
const hookName = 'frm_view_application_modal_primary_action_button';