From a23b069bf824fee79c1944e479322dfa5d5c188d Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Oct 2024 10:29:22 +0300 Subject: [PATCH 01/41] Add/remove some shortcodes contextually --- js/formidable_admin.js | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index d6ae438955..194636b15d 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8447,6 +8447,39 @@ function frmAdminBuildJS() { jQuery( tinymce.get( input.id ) ).trigger( 'focus' ); } } + maybeAddContextualShortcodesToPopup( input ); + } + } + + function maybeAddContextualShortcodesToPopup( input ) { + const shortcodes = getContextualShortcodes(); + if ( ! input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { + return; + } + let newAdvancedShortcode, + codeList = document.querySelector( '#frm-adv-info-tab .frm_code_list' ); + for ( let shortcode in shortcodes ) { + if ( codeList.querySelector( '[data-code="' + shortcode + '"]' ) ) { + return; + } + const anchor = frmDom.a({ + className: 'frm_insert_code', + href: 'javascript:void(0)', + child: frmDom.span({ + text: `[${shortcode}]` + }), + data: { + code: shortcode + } + }); + anchor.prepend( document.createTextNode( shortcodes[ shortcode ] ) ); + newAdvancedShortcode = tag( 'li', { + className: 'frm-advanced-list', + children: [ + anchor + ] + }); + codeList.prepend( newAdvancedShortcode ); } } @@ -8546,7 +8579,26 @@ function frmAdminBuildJS() { return moreIcon; } + function getContextualShortcodes() { + return { + admin_email: __( 'admin_email', 'formidable' ), + 'default-from-email': __( 'Default from email', 'formidable' ) + }; + } + + function removeContextualShortcodes() { + const shortcodes = getContextualShortcodes(); + const codeList = document.querySelector( '#frm-adv-info-tab .frm_code_list' ); + for ( let shortcode in shortcodes ) { + const shortcodeLi = codeList.querySelector( '[data-code="' + shortcode + '"]' ); + if ( shortcodeLi ) { + shortcodeLi.remove(); + } + } + } + function hideShortcodes( box ) { + removeContextualShortcodes(); let i, u, closeIcons, closeSvg; if ( typeof box === 'undefined' ) { box = document.getElementById( 'frm_adv_info' ); From cbba4497cd55c22544a828e84ff05e04523828fe Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:17:16 +0300 Subject: [PATCH 02/41] Simplify solution --- classes/controllers/FrmFormsController.php | 2 ++ classes/views/shared/mb_adv_info.php | 4 +++ js/formidable_admin.js | 36 ++++++---------------- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 065d25baaf..df36711f8d 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1637,6 +1637,8 @@ private static function user_shortcodes() { */ private static function get_shortcode_helpers( $settings_tab ) { $entry_shortcodes = array( + 'admin_email' => __( 'Admin email', 'formidable' ), + 'default-from-email' => __( 'Default from email', 'formidable' ), 'id' => __( 'Entry ID', 'formidable' ), 'key' => __( 'Entry Key', 'formidable' ), 'post_id' => __( 'Post ID', 'formidable' ), diff --git a/classes/views/shared/mb_adv_info.php b/classes/views/shared/mb_adv_info.php index 87b5448f27..9d1e8308da 100644 --- a/classes/views/shared/mb_adv_info.php +++ b/classes/views/shared/mb_adv_info.php @@ -210,6 +210,10 @@ $classes .= in_array( $skey, array( 'siteurl', 'sitename', 'entry_count' ), true ) ? ' show_before_content show_after_content' : ''; $classes .= strpos( $skey, 'default-' ) === 0 ? ' hide_frm_not_email_subject' : ''; + if ( in_array( $skey, array( 'admin_email', 'default-from-email' ) ) ) { + $classes .= ' frm_hidden'; + } + FrmFormsHelper::insert_code_html( array( 'code' => $skey, diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 194636b15d..526922bdbe 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8447,39 +8447,21 @@ function frmAdminBuildJS() { jQuery( tinymce.get( input.id ) ).trigger( 'focus' ); } } - maybeAddContextualShortcodesToPopup( input ); + showContextualShortcodesToPopup( input ); } } - function maybeAddContextualShortcodesToPopup( input ) { + function showContextualShortcodesToPopup( input ) { const shortcodes = getContextualShortcodes(); if ( ! input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { return; } - let newAdvancedShortcode, - codeList = document.querySelector( '#frm-adv-info-tab .frm_code_list' ); for ( let shortcode in shortcodes ) { - if ( codeList.querySelector( '[data-code="' + shortcode + '"]' ) ) { + const anchor = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' ); + if ( ! anchor ) { return; } - const anchor = frmDom.a({ - className: 'frm_insert_code', - href: 'javascript:void(0)', - child: frmDom.span({ - text: `[${shortcode}]` - }), - data: { - code: shortcode - } - }); - anchor.prepend( document.createTextNode( shortcodes[ shortcode ] ) ); - newAdvancedShortcode = tag( 'li', { - className: 'frm-advanced-list', - children: [ - anchor - ] - }); - codeList.prepend( newAdvancedShortcode ); + anchor.closest( 'li' ).classList.remove( 'frm_hidden' ); } } @@ -8586,19 +8568,19 @@ function frmAdminBuildJS() { }; } - function removeContextualShortcodes() { + function hideContextualShortcodes() { const shortcodes = getContextualShortcodes(); const codeList = document.querySelector( '#frm-adv-info-tab .frm_code_list' ); for ( let shortcode in shortcodes ) { - const shortcodeLi = codeList.querySelector( '[data-code="' + shortcode + '"]' ); + const shortcodeLi = codeList.querySelector( '[data-code="' + shortcode + '"]' )?.closest( 'li' ); if ( shortcodeLi ) { - shortcodeLi.remove(); + shortcodeLi.classList.add( 'frm_hidden' ); } } } function hideShortcodes( box ) { - removeContextualShortcodes(); + hideContextualShortcodes(); let i, u, closeIcons, closeSvg; if ( typeof box === 'undefined' ) { box = document.getElementById( 'frm_adv_info' ); From fd6a263e91d22f21839b865868e74319d36bf898 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:31:29 +0300 Subject: [PATCH 03/41] Correct a check for form settings page --- classes/controllers/FrmFormsController.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index df36711f8d..98fc365812 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1537,7 +1537,7 @@ public static function mb_tags_box( $form_id, $class = '' ) { $fields = apply_filters( 'frm_fields_in_tags_box', $fields, compact( 'form_id' ) ); $linked_forms = array(); $col = 'one'; - $settings_tab = FrmAppHelper::is_admin_page( 'formidable' ); + $settings_tab = self::is_form_settings_page(); $cond_shortcodes = apply_filters( 'frm_conditional_shortcodes', array() ); $entry_shortcodes = self::get_shortcode_helpers( $settings_tab ); @@ -1547,6 +1547,19 @@ public static function mb_tags_box( $form_id, $class = '' ) { include FrmAppHelper::plugin_path() . '/classes/views/shared/mb_adv_info.php'; } + /** + * Check if the current page is the form settings page + * + * @since x.x + * + * @return bool + */ + private static function is_form_settings_page() { + $page = FrmAppHelper::simple_get( 'page', 'sanitize_title' ); + $action = FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' ); + return 'formidable' === $page && 'settings' === $action; + } + /** * @since 3.04.01 */ From 337021f0e2b465a5b0787f927ebc195fe2c62773 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:38:19 +0300 Subject: [PATCH 04/41] Document new functions --- js/formidable_admin.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 526922bdbe..aedc0b4089 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8451,17 +8451,22 @@ function frmAdminBuildJS() { } } + /** + * @since x.x + * + * @param {HTMLElement} input + * @returns {Void} + */ function showContextualShortcodesToPopup( input ) { const shortcodes = getContextualShortcodes(); if ( ! input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { return; } - for ( let shortcode in shortcodes ) { + for ( let shortcode of shortcodes ) { const anchor = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' ); - if ( ! anchor ) { - return; + if ( anchor ) { + anchor.closest( 'li' ).classList.remove( 'frm_hidden' ); } - anchor.closest( 'li' ).classList.remove( 'frm_hidden' ); } } @@ -8561,17 +8566,27 @@ function frmAdminBuildJS() { return moreIcon; } + /** + * Returns shortcodes that are contextual to the current input field. + * + * @since x.x + * + * @returns {Array} + */ function getContextualShortcodes() { - return { - admin_email: __( 'admin_email', 'formidable' ), - 'default-from-email': __( 'Default from email', 'formidable' ) - }; + return [ 'admin_email', 'default-from-email' ]; } + /** + * Hide shortcodes that are contextual to the current input field. + * + * @since x.x + * @returns {Void} + */ function hideContextualShortcodes() { const shortcodes = getContextualShortcodes(); const codeList = document.querySelector( '#frm-adv-info-tab .frm_code_list' ); - for ( let shortcode in shortcodes ) { + for ( let shortcode of shortcodes ) { const shortcodeLi = codeList.querySelector( '[data-code="' + shortcode + '"]' )?.closest( 'li' ); if ( shortcodeLi ) { shortcodeLi.classList.add( 'frm_hidden' ); From d73e57d9e422eb9a4b2e37117c14b021b7c8f470 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:40:19 +0300 Subject: [PATCH 05/41] Fix code alignment --- classes/controllers/FrmFormsController.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 98fc365812..51273546ec 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1650,17 +1650,17 @@ private static function user_shortcodes() { */ private static function get_shortcode_helpers( $settings_tab ) { $entry_shortcodes = array( - 'admin_email' => __( 'Admin email', 'formidable' ), + 'admin_email' => __( 'Admin email', 'formidable' ), 'default-from-email' => __( 'Default from email', 'formidable' ), - 'id' => __( 'Entry ID', 'formidable' ), - 'key' => __( 'Entry Key', 'formidable' ), - 'post_id' => __( 'Post ID', 'formidable' ), - 'ip' => __( 'User IP', 'formidable' ), - 'created-at' => __( 'Entry created', 'formidable' ), - 'updated-at' => __( 'Entry updated', 'formidable' ), - '' => '', - 'siteurl' => __( 'Site URL', 'formidable' ), - 'sitename' => __( 'Site Name', 'formidable' ), + 'id' => __( 'Entry ID', 'formidable' ), + 'key' => __( 'Entry Key', 'formidable' ), + 'post_id' => __( 'Post ID', 'formidable' ), + 'ip' => __( 'User IP', 'formidable' ), + 'created-at' => __( 'Entry created', 'formidable' ), + 'updated-at' => __( 'Entry updated', 'formidable' ), + '' => '', + 'siteurl' => __( 'Site URL', 'formidable' ), + 'sitename' => __( 'Site Name', 'formidable' ), ); if ( ! FrmAppHelper::pro_is_installed() ) { From 94da727f4f21756c1c3288398b8f097bf17ae393 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:32:33 +0300 Subject: [PATCH 06/41] Fix PHPCS error --- classes/views/shared/mb_adv_info.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/views/shared/mb_adv_info.php b/classes/views/shared/mb_adv_info.php index 9d1e8308da..af0f2fcbdf 100644 --- a/classes/views/shared/mb_adv_info.php +++ b/classes/views/shared/mb_adv_info.php @@ -223,7 +223,7 @@ ); unset( $skey, $sname, $classes ); - } + }//end foreach foreach ( $advanced_helpers as $helper_type => $helper ) { if ( 'user_id' === $helper_type && ! isset( $uid ) ) { From f07497e48d95f6cdf23a2e6572af7db6f2f8c817 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:45:10 +0300 Subject: [PATCH 07/41] Improve code clarity --- js/formidable_admin.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index aedc0b4089..f2c0cbb60c 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8463,9 +8463,9 @@ function frmAdminBuildJS() { return; } for ( let shortcode of shortcodes ) { - const anchor = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' ); - if ( anchor ) { - anchor.closest( 'li' ).classList.remove( 'frm_hidden' ); + const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); + if ( shortcodeLi ) { + shortcodeLi.classList.remove( 'frm_hidden' ); } } } @@ -8585,9 +8585,8 @@ function frmAdminBuildJS() { */ function hideContextualShortcodes() { const shortcodes = getContextualShortcodes(); - const codeList = document.querySelector( '#frm-adv-info-tab .frm_code_list' ); for ( let shortcode of shortcodes ) { - const shortcodeLi = codeList.querySelector( '[data-code="' + shortcode + '"]' )?.closest( 'li' ); + const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li' ); if ( shortcodeLi ) { shortcodeLi.classList.add( 'frm_hidden' ); } From deecf6af3424ce3ae767d7739463c8926de2f338 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:45:34 +0300 Subject: [PATCH 08/41] Get contextual shortcodes from PHP --- classes/controllers/FrmFormsController.php | 28 ++++++++++++-------- classes/views/frm-forms/mb_insert_fields.php | 4 ++- classes/views/shared/mb_adv_info.php | 2 +- js/formidable_admin.js | 4 +-- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 51273546ec..78527abab1 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1643,6 +1643,13 @@ private static function user_shortcodes() { return apply_filters( 'frm_user_shortcodes', $options ); } + public static function get_contextual_shortcodes() { + return array( + 'admin_email' => __( 'Admin email', 'formidable' ), + 'default-from-email' => __( 'Default from email', 'formidable' ), + ); + } + /** * Get an array of the helper shortcodes to display in the customization panel * @@ -1650,19 +1657,18 @@ private static function user_shortcodes() { */ private static function get_shortcode_helpers( $settings_tab ) { $entry_shortcodes = array( - 'admin_email' => __( 'Admin email', 'formidable' ), - 'default-from-email' => __( 'Default from email', 'formidable' ), - 'id' => __( 'Entry ID', 'formidable' ), - 'key' => __( 'Entry Key', 'formidable' ), - 'post_id' => __( 'Post ID', 'formidable' ), - 'ip' => __( 'User IP', 'formidable' ), - 'created-at' => __( 'Entry created', 'formidable' ), - 'updated-at' => __( 'Entry updated', 'formidable' ), - '' => '', - 'siteurl' => __( 'Site URL', 'formidable' ), - 'sitename' => __( 'Site Name', 'formidable' ), + 'id' => __( 'Entry ID', 'formidable' ), + 'key' => __( 'Entry Key', 'formidable' ), + 'post_id' => __( 'Post ID', 'formidable' ), + 'ip' => __( 'User IP', 'formidable' ), + 'created-at' => __( 'Entry created', 'formidable' ), + 'updated-at' => __( 'Entry updated', 'formidable' ), + '' => '', + 'siteurl' => __( 'Site URL', 'formidable' ), + 'sitename' => __( 'Site Name', 'formidable' ), ); + $entry_shortcodes = array_merge( self::get_contextual_shortcodes(), $entry_shortcodes ); if ( ! FrmAppHelper::pro_is_installed() ) { unset( $entry_shortcodes['post_id'] ); } diff --git a/classes/views/frm-forms/mb_insert_fields.php b/classes/views/frm-forms/mb_insert_fields.php index d33347edaf..db8c6f329b 100644 --- a/classes/views/frm-forms/mb_insert_fields.php +++ b/classes/views/frm-forms/mb_insert_fields.php @@ -2,8 +2,10 @@ if ( ! defined( 'ABSPATH' ) ) { die( 'You are not allowed to call this page directly.' ); } + +$data_attrs = array( 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( array_keys( FrmFormsController::get_contextual_shortcodes() ) ) ); ?> -
+
>
diff --git a/classes/views/shared/mb_adv_info.php b/classes/views/shared/mb_adv_info.php index af0f2fcbdf..b6b8bb368e 100644 --- a/classes/views/shared/mb_adv_info.php +++ b/classes/views/shared/mb_adv_info.php @@ -210,7 +210,7 @@ $classes .= in_array( $skey, array( 'siteurl', 'sitename', 'entry_count' ), true ) ? ' show_before_content show_after_content' : ''; $classes .= strpos( $skey, 'default-' ) === 0 ? ' hide_frm_not_email_subject' : ''; - if ( in_array( $skey, array( 'admin_email', 'default-from-email' ) ) ) { + if ( in_array( $skey, array( 'admin_email', 'default-from-email' ), true ) ) { $classes .= ' frm_hidden'; } diff --git a/js/formidable_admin.js b/js/formidable_admin.js index f2c0cbb60c..dc96a44f80 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8458,10 +8458,10 @@ function frmAdminBuildJS() { * @returns {Void} */ function showContextualShortcodesToPopup( input ) { - const shortcodes = getContextualShortcodes(); if ( ! input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { return; } + const shortcodes = getContextualShortcodes(); for ( let shortcode of shortcodes ) { const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); if ( shortcodeLi ) { @@ -8574,7 +8574,7 @@ function frmAdminBuildJS() { * @returns {Array} */ function getContextualShortcodes() { - return [ 'admin_email', 'default-from-email' ]; + return JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); } /** From 54054bf850f5dedae04b56a9d73741f5573cdf51 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:46:18 +0300 Subject: [PATCH 09/41] Comment new function --- classes/controllers/FrmFormsController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 78527abab1..c63e282b7e 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1643,6 +1643,12 @@ private static function user_shortcodes() { return apply_filters( 'frm_user_shortcodes', $options ); } + /** + * Returns shortcodes that are shown/hidden based on the context. + * + * @since x.x + * @return array + */ public static function get_contextual_shortcodes() { return array( 'admin_email' => __( 'Admin email', 'formidable' ), From f512f6f35adbf83b7be14f063729fb35d346e6c4 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:48:46 +0300 Subject: [PATCH 10/41] Remove code mixed from other PR --- classes/controllers/FrmFormsController.php | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index c63e282b7e..50c93b8d61 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1537,7 +1537,7 @@ public static function mb_tags_box( $form_id, $class = '' ) { $fields = apply_filters( 'frm_fields_in_tags_box', $fields, compact( 'form_id' ) ); $linked_forms = array(); $col = 'one'; - $settings_tab = self::is_form_settings_page(); + $settings_tab = FrmAppHelper::is_admin_page( 'formidable' ); $cond_shortcodes = apply_filters( 'frm_conditional_shortcodes', array() ); $entry_shortcodes = self::get_shortcode_helpers( $settings_tab ); @@ -1547,19 +1547,6 @@ public static function mb_tags_box( $form_id, $class = '' ) { include FrmAppHelper::plugin_path() . '/classes/views/shared/mb_adv_info.php'; } - /** - * Check if the current page is the form settings page - * - * @since x.x - * - * @return bool - */ - private static function is_form_settings_page() { - $page = FrmAppHelper::simple_get( 'page', 'sanitize_title' ); - $action = FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' ); - return 'formidable' === $page && 'settings' === $action; - } - /** * @since 3.04.01 */ From 1614aabbb71f9d2bce0f6baff93692c4a71e56a6 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:51:04 +0300 Subject: [PATCH 11/41] Rename function --- js/formidable_admin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index dc96a44f80..f8b9ac4b7b 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8447,7 +8447,7 @@ function frmAdminBuildJS() { jQuery( tinymce.get( input.id ) ).trigger( 'focus' ); } } - showContextualShortcodesToPopup( input ); + showContextualShortcodes( input ); } } @@ -8457,7 +8457,7 @@ function frmAdminBuildJS() { * @param {HTMLElement} input * @returns {Void} */ - function showContextualShortcodesToPopup( input ) { + function showContextualShortcodes( input ) { if ( ! input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { return; } From a77ab149747e984170cfc6d45b1734dd43994b9b Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:56:56 +0300 Subject: [PATCH 12/41] Refactor new code --- js/formidable_admin.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index f8b9ac4b7b..89dd509441 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8447,7 +8447,7 @@ function frmAdminBuildJS() { jQuery( tinymce.get( input.id ) ).trigger( 'focus' ); } } - showContextualShortcodes( input ); + showOrHideContextualShortcodes( input ); } } @@ -8457,10 +8457,21 @@ function frmAdminBuildJS() { * @param {HTMLElement} input * @returns {Void} */ - function showContextualShortcodes( input ) { - if ( ! input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { + function showOrHideContextualShortcodes( input ) { + if ( input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { + showContextualShortcodes(); return; } + hideContextualShortcodes(); + } + + /** + * Show shortcodes that are contextual to the current input field. + * + * @since x.x + * @returns {Void} + */ + function showContextualShortcodes() { const shortcodes = getContextualShortcodes(); for ( let shortcode of shortcodes ) { const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); @@ -8594,7 +8605,6 @@ function frmAdminBuildJS() { } function hideShortcodes( box ) { - hideContextualShortcodes(); let i, u, closeIcons, closeSvg; if ( typeof box === 'undefined' ) { box = document.getElementById( 'frm_adv_info' ); From 59458f1d81721ffd3defe349a381acf45d84b596 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:58:09 +0300 Subject: [PATCH 13/41] Organize new code together --- js/formidable_admin.js | 54 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 89dd509441..1e3198f7cf 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8465,6 +8465,17 @@ function frmAdminBuildJS() { hideContextualShortcodes(); } + /** + * Returns shortcodes that are contextual to the current input field. + * + * @since x.x + * + * @returns {Array} + */ + function getContextualShortcodes() { + return JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); + } + /** * Show shortcodes that are contextual to the current input field. * @@ -8481,6 +8492,22 @@ function frmAdminBuildJS() { } } + /** + * Hide shortcodes that are contextual to the current input field. + * + * @since x.x + * @returns {Void} + */ + function hideContextualShortcodes() { + const shortcodes = getContextualShortcodes(); + for ( let shortcode of shortcodes ) { + const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li' ); + if ( shortcodeLi ) { + shortcodeLi.classList.add( 'frm_hidden' ); + } + } + } + function fieldUpdated() { if ( ! fieldsUpdated ) { fieldsUpdated = 1; @@ -8577,33 +8604,6 @@ function frmAdminBuildJS() { return moreIcon; } - /** - * Returns shortcodes that are contextual to the current input field. - * - * @since x.x - * - * @returns {Array} - */ - function getContextualShortcodes() { - return JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); - } - - /** - * Hide shortcodes that are contextual to the current input field. - * - * @since x.x - * @returns {Void} - */ - function hideContextualShortcodes() { - const shortcodes = getContextualShortcodes(); - for ( let shortcode of shortcodes ) { - const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li' ); - if ( shortcodeLi ) { - shortcodeLi.classList.add( 'frm_hidden' ); - } - } - } - function hideShortcodes( box ) { let i, u, closeIcons, closeSvg; if ( typeof box === 'undefined' ) { From 1eb532c4e9c85f410120a9b19ac3b42ff680c570 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Oct 2024 21:30:53 +0300 Subject: [PATCH 14/41] Reuse existing function --- classes/views/shared/mb_adv_info.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/views/shared/mb_adv_info.php b/classes/views/shared/mb_adv_info.php index b6b8bb368e..ecb194f703 100644 --- a/classes/views/shared/mb_adv_info.php +++ b/classes/views/shared/mb_adv_info.php @@ -210,7 +210,7 @@ $classes .= in_array( $skey, array( 'siteurl', 'sitename', 'entry_count' ), true ) ? ' show_before_content show_after_content' : ''; $classes .= strpos( $skey, 'default-' ) === 0 ? ' hide_frm_not_email_subject' : ''; - if ( in_array( $skey, array( 'admin_email', 'default-from-email' ), true ) ) { + if ( in_array( $skey, array_keys( FrmFormsController::get_contextual_shortcodes() ), true ) ) { $classes .= ' frm_hidden'; } From d5826b0d340dad1f8b6be2a6f880528221554b14 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 23 Oct 2024 20:02:57 +0300 Subject: [PATCH 15/41] Reduce repeated code --- js/formidable_admin.js | 43 +++++++----------------------------------- 1 file changed, 7 insertions(+), 36 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 1e3198f7cf..29dc230643 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8458,54 +8458,25 @@ function frmAdminBuildJS() { * @returns {Void} */ function showOrHideContextualShortcodes( input ) { - if ( input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ) ) { - showContextualShortcodes(); - return; - } - hideContextualShortcodes(); - } - - /** - * Returns shortcodes that are contextual to the current input field. - * - * @since x.x - * - * @returns {Array} - */ - function getContextualShortcodes() { - return JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); - } - - /** - * Show shortcodes that are contextual to the current input field. - * - * @since x.x - * @returns {Void} - */ - function showContextualShortcodes() { + const shouldShowShortcodes = input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ); const shortcodes = getContextualShortcodes(); for ( let shortcode of shortcodes ) { const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); if ( shortcodeLi ) { - shortcodeLi.classList.remove( 'frm_hidden' ); + shortcodeLi.classList.toggle( 'frm_hidden', ! shouldShowShortcodes ); } } } /** - * Hide shortcodes that are contextual to the current input field. + * Returns shortcodes that are contextual to the current input field. * * @since x.x - * @returns {Void} + * + * @returns {Array} */ - function hideContextualShortcodes() { - const shortcodes = getContextualShortcodes(); - for ( let shortcode of shortcodes ) { - const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li' ); - if ( shortcodeLi ) { - shortcodeLi.classList.add( 'frm_hidden' ); - } - } + function getContextualShortcodes() { + return JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); } function fieldUpdated() { From 8a624414b0d161719ede60234bca8c81ad0c0567 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:01:13 +0300 Subject: [PATCH 16/41] Implement contextual shortcode for more shortcodes --- classes/controllers/FrmFormsController.php | 16 +++++++++++----- classes/views/frm-forms/mb_insert_fields.php | 9 ++++++++- classes/views/shared/mb_adv_info.php | 4 +++- js/formidable_admin.js | 20 +++++++++++++++++--- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 50c93b8d61..9b4393dda2 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1638,8 +1638,15 @@ private static function user_shortcodes() { */ public static function get_contextual_shortcodes() { return array( - 'admin_email' => __( 'Admin email', 'formidable' ), - 'default-from-email' => __( 'Default from email', 'formidable' ), + 'address' => array( + 'admin_email' => __( 'Admin email', 'formidable' ), + 'default-from-email' => __( 'Default from email', 'formidable' ), + 'default-email' => __( 'Default email', 'formidable' ), + ), + 'body' => array( + 'default-message' => __( 'Default Msg', 'formidable' ), + 'default-html' => __( 'Default HTML', 'formidable' ), + ) ); } @@ -1661,14 +1668,13 @@ private static function get_shortcode_helpers( $settings_tab ) { 'sitename' => __( 'Site Name', 'formidable' ), ); - $entry_shortcodes = array_merge( self::get_contextual_shortcodes(), $entry_shortcodes ); + $contextual_shortcodes = self::get_contextual_shortcodes(); + $entry_shortcodes = array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'], $entry_shortcodes ); if ( ! FrmAppHelper::pro_is_installed() ) { unset( $entry_shortcodes['post_id'] ); } if ( $settings_tab ) { - $entry_shortcodes['default-message'] = __( 'Default Msg', 'formidable' ); - $entry_shortcodes['default-html'] = __( 'Default HTML', 'formidable' ); $entry_shortcodes['default-plain'] = __( 'Default Plain', 'formidable' ); $entry_shortcodes['form_name'] = __( 'Form Name', 'formidable' ); } diff --git a/classes/views/frm-forms/mb_insert_fields.php b/classes/views/frm-forms/mb_insert_fields.php index db8c6f329b..36f2b94f5c 100644 --- a/classes/views/frm-forms/mb_insert_fields.php +++ b/classes/views/frm-forms/mb_insert_fields.php @@ -2,8 +2,15 @@ if ( ! defined( 'ABSPATH' ) ) { die( 'You are not allowed to call this page directly.' ); } +$contextual_shortcodes = FrmFormsController::get_contextual_shortcodes(); -$data_attrs = array( 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( array_keys( FrmFormsController::get_contextual_shortcodes() ) ) ); +$data_attrs = array( 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( + array( + 'address' => array_keys( $contextual_shortcodes['address'] ), + 'body' => array_keys( $contextual_shortcodes['body'] ) + ) + ) + ); ?>
>
diff --git a/classes/views/shared/mb_adv_info.php b/classes/views/shared/mb_adv_info.php index ecb194f703..da44ce3a2e 100644 --- a/classes/views/shared/mb_adv_info.php +++ b/classes/views/shared/mb_adv_info.php @@ -210,7 +210,9 @@ $classes .= in_array( $skey, array( 'siteurl', 'sitename', 'entry_count' ), true ) ? ' show_before_content show_after_content' : ''; $classes .= strpos( $skey, 'default-' ) === 0 ? ' hide_frm_not_email_subject' : ''; - if ( in_array( $skey, array_keys( FrmFormsController::get_contextual_shortcodes() ), true ) ) { + $contextual_shortcodes = FrmFormsController::get_contextual_shortcodes(); + + if ( in_array( $skey, array_keys( array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'] ) ), true ) ) { $classes .= ' frm_hidden'; } diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 29dc230643..77151ba220 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8458,9 +8458,23 @@ function frmAdminBuildJS() { * @returns {Void} */ function showOrHideContextualShortcodes( input ) { - const shouldShowShortcodes = input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ); - const shortcodes = getContextualShortcodes(); - for ( let shortcode of shortcodes ) { + const contextualShortcodes = getContextualShortcodes(); + toggleContextualShortcodes( input, '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]', contextualShortcodes.address ); + toggleContextualShortcodes( input, '[id^=email_message_]', contextualShortcodes.body ); + } + + /** + * @since x.x + * + * @param {HTMLElement} input + * @param {string} selector + * @param {Array} contextualShortcodes + * + * @returns {Void} + */ + function toggleContextualShortcodes( input, selector, contextualShortcodes ) { + let shouldShowShortcodes = input.matches( selector ); + for ( let shortcode of contextualShortcodes ) { const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); if ( shortcodeLi ) { shortcodeLi.classList.toggle( 'frm_hidden', ! shouldShowShortcodes ); From a52a38b3db1de0a7a5ad1496c6bd62abb2fc3450 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:01:45 +0300 Subject: [PATCH 17/41] Align variables in JSDoc --- js/formidable_admin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 77151ba220..f7f7bbbba1 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8467,8 +8467,8 @@ function frmAdminBuildJS() { * @since x.x * * @param {HTMLElement} input - * @param {string} selector - * @param {Array} contextualShortcodes + * @param {string} selector + * @param {Array} contextualShortcodes * * @returns {Void} */ From db0549e4e6ff98f01d5e04061e274fba70e9aa3d Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 11 Nov 2024 12:14:35 +0300 Subject: [PATCH 18/41] Consider search results --- classes/controllers/FrmFormsController.php | 2 +- js/formidable_admin.js | 27 ++++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 9b4393dda2..5943dcc295 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1646,6 +1646,7 @@ public static function get_contextual_shortcodes() { 'body' => array( 'default-message' => __( 'Default Msg', 'formidable' ), 'default-html' => __( 'Default HTML', 'formidable' ), + 'default-plain' => __( 'Default Plain', 'formidable' ), ) ); } @@ -1675,7 +1676,6 @@ private static function get_shortcode_helpers( $settings_tab ) { } if ( $settings_tab ) { - $entry_shortcodes['default-plain'] = __( 'Default Plain', 'formidable' ); $entry_shortcodes['form_name'] = __( 'Form Name', 'formidable' ); } diff --git a/js/formidable_admin.js b/js/formidable_admin.js index f7f7bbbba1..dafb3f01e5 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8451,6 +8451,25 @@ function frmAdminBuildJS() { } } + function isContextualShortcode( item ) { + const contextualShortcodes = getContextualShortcodes(); + const shortcode = item.querySelector( 'a' ).dataset.code; + return contextualShortcodes.address.includes( shortcode ) || contextualShortcodes.body.includes( shortcode ); + } + + function canShowContextualShortcode( item ) { + const shortcode = item.querySelector( 'a' ).dataset.code; + const inputId = document.getElementById( 'frm_adv_info' ).dataset.fills; + const input = document.getElementById( inputId ); + if ( getContextualShortcodes().address.includes( shortcode ) ) { + return input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ); + } + if ( getContextualShortcodes().body.includes( shortcode ) ) { + return input.matches( '[id^=email_message_]' ); + } + return true; + } + /** * @since x.x * @@ -9499,12 +9518,16 @@ function frmAdminBuildJS() { const itemCanBeShown = ! ( getExportOption() === 'xml' && items[i].classList.contains( 'frm-is-repeater' ) ); if ( searchText === '' ) { if ( itemCanBeShown ) { - items[i].classList.remove( 'frm_hidden' ); + if ( ! isContextualShortcode( items[i] ) || canShowContextualShortcode( items[i] ) ) { + items[i].classList.remove( 'frm_hidden' ); + } } items[i].classList.remove( 'frm-search-result' ); } else if ( ( regEx && new RegExp( searchText ).test( innerText ) ) || innerText.indexOf( searchText ) >= 0 || textMatchesPlural( innerText, searchText ) ) { if ( itemCanBeShown ) { - items[i].classList.remove( 'frm_hidden' ); + if ( ! isContextualShortcode( items[i] ) || canShowContextualShortcode( items[i] ) ) { + items[i].classList.remove( 'frm_hidden' ); + } } items[i].classList.add( 'frm-search-result' ); } else { From ad25f2e83dd231103cce1930516f1cdbd9b47612 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 11 Nov 2024 12:15:21 +0300 Subject: [PATCH 19/41] Simplify logic --- js/formidable_admin.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index dafb3f01e5..740d4b7f69 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8464,10 +8464,7 @@ function frmAdminBuildJS() { if ( getContextualShortcodes().address.includes( shortcode ) ) { return input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ); } - if ( getContextualShortcodes().body.includes( shortcode ) ) { - return input.matches( '[id^=email_message_]' ); - } - return true; + return input.matches( '[id^=email_message_]' ); } /** From dbd0f28b4c43d1dec1db5db9f79203705a0cbd7a Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 11 Nov 2024 14:04:56 +0300 Subject: [PATCH 20/41] Refactor code to make some lines reusable --- js/formidable_admin.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 740d4b7f69..186145198c 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8451,12 +8451,38 @@ function frmAdminBuildJS() { } } + /** + * Returns true if a shortcode could be shown in the search result. + * + * @since x.x + * + * @param {HTMLElement} item + * @returns {Boolean} + */ + function checkContextualShortcode( item ) { + return ! isContextualShortcode( item ) || canShowContextualShortcode( item ) + } + + /** + * Returns true if a shortcode is contextual to fields. + * + * @since x.x + * + * @param {HTMLElement} item + * @returns {Boolean} + */ function isContextualShortcode( item ) { const contextualShortcodes = getContextualShortcodes(); const shortcode = item.querySelector( 'a' ).dataset.code; return contextualShortcodes.address.includes( shortcode ) || contextualShortcodes.body.includes( shortcode ); } + /** + * @since x.x + * + * @param {HTMLElement} item + * @returns {Boolean} + */ function canShowContextualShortcode( item ) { const shortcode = item.querySelector( 'a' ).dataset.code; const inputId = document.getElementById( 'frm_adv_info' ).dataset.fills; @@ -9515,14 +9541,14 @@ function frmAdminBuildJS() { const itemCanBeShown = ! ( getExportOption() === 'xml' && items[i].classList.contains( 'frm-is-repeater' ) ); if ( searchText === '' ) { if ( itemCanBeShown ) { - if ( ! isContextualShortcode( items[i] ) || canShowContextualShortcode( items[i] ) ) { + if ( checkContextualShortcode( items[i] ) ) { items[i].classList.remove( 'frm_hidden' ); } } items[i].classList.remove( 'frm-search-result' ); } else if ( ( regEx && new RegExp( searchText ).test( innerText ) ) || innerText.indexOf( searchText ) >= 0 || textMatchesPlural( innerText, searchText ) ) { if ( itemCanBeShown ) { - if ( ! isContextualShortcode( items[i] ) || canShowContextualShortcode( items[i] ) ) { + if ( checkContextualShortcode( items[i] ) ) { items[i].classList.remove( 'frm_hidden' ); } } From 3d9735aac8b5ee5f8189605189b5a31ae276e164 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 11 Nov 2024 14:12:31 +0300 Subject: [PATCH 21/41] Fix PHPCS errors --- classes/controllers/FrmFormsController.php | 10 +++++----- classes/views/frm-forms/mb_insert_fields.php | 13 +++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 5943dcc295..238965da06 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1643,11 +1643,11 @@ public static function get_contextual_shortcodes() { 'default-from-email' => __( 'Default from email', 'formidable' ), 'default-email' => __( 'Default email', 'formidable' ), ), - 'body' => array( - 'default-message' => __( 'Default Msg', 'formidable' ), - 'default-html' => __( 'Default HTML', 'formidable' ), - 'default-plain' => __( 'Default Plain', 'formidable' ), - ) + 'body' => array( + 'default-message' => __( 'Default Msg', 'formidable' ), + 'default-html' => __( 'Default HTML', 'formidable' ), + 'default-plain' => __( 'Default Plain', 'formidable' ), + ), ); } diff --git a/classes/views/frm-forms/mb_insert_fields.php b/classes/views/frm-forms/mb_insert_fields.php index 36f2b94f5c..d689661c0b 100644 --- a/classes/views/frm-forms/mb_insert_fields.php +++ b/classes/views/frm-forms/mb_insert_fields.php @@ -4,13 +4,14 @@ } $contextual_shortcodes = FrmFormsController::get_contextual_shortcodes(); -$data_attrs = array( 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( - array( - 'address' => array_keys( $contextual_shortcodes['address'] ), - 'body' => array_keys( $contextual_shortcodes['body'] ) - ) +$data_attrs = array( + 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( + array( + 'address' => array_keys( $contextual_shortcodes['address'] ), + 'body' => array_keys( $contextual_shortcodes['body'] ), ) - ); + ), +); ?>
>
From a05a8a94c39947d1a6e47d095663cd0e5448d412 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 11 Nov 2024 14:15:22 +0300 Subject: [PATCH 22/41] Fix PHPCS errors --- classes/controllers/FrmFormsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 238965da06..70539efe0b 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1670,7 +1670,7 @@ private static function get_shortcode_helpers( $settings_tab ) { ); $contextual_shortcodes = self::get_contextual_shortcodes(); - $entry_shortcodes = array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'], $entry_shortcodes ); + $entry_shortcodes = array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'], $entry_shortcodes ); if ( ! FrmAppHelper::pro_is_installed() ) { unset( $entry_shortcodes['post_id'] ); } From ec6e0992b04a3dab4770930f73adbcc9e2b9287f Mon Sep 17 00:00:00 2001 From: Mike Letellier Date: Tue, 12 Nov 2024 11:31:50 -0400 Subject: [PATCH 23/41] Remove some change log entries --- readme.txt | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/readme.txt b/readme.txt index 96d369b006..bc2563153a 100644 --- a/readme.txt +++ b/readme.txt @@ -403,23 +403,6 @@ See all [Formidable Zapier Integrations](https://zapier.com/apps/formidable/inte * Fix: Turnstile elements are now only rendered when the field is visible. * Fix: Some new checkbox and radio button styles were being overwritten by certain themes, resulting in various styling issues. -= 6.13 = -* Fix: A JavaScript error triggered after detecting an error with a form field before processing the payment would cause the form to stop responding. -* Fix: A Call to undefined method FrmProAppHelper::use_chosen_js fatal error would happen when using versions of Formidable Pro older than version 6.8. - -= 6.12 = -* New: Many default form style settings have been updated. Existing sites will continue to use their existing default settings. To experience the new default style settings, access the list of styles from the style tab in form settings and select Reset to Defaults from the dropdown menu for a target style. -* New: Hidden screen reader labels have been added to the entries list admin pages bulk checkboxes to improve accessibility. -* Fix: Turnstile captcha widgets were rendering twice. -* Fix: An extra check has been added to improve compatibility with older versions of WordPress before version 6.5. -* Fix: The submit button would appear as an entry table row on the entry view admin page. -* Fix: When validating field length limits, some characters including types with accents were not getting counted as expected and could fail validation. -* Checks have been added to no longer include fields with form state on servers where open SSL is not installed. This is to improve compatibility. -* Some updates have been made to improve the syncing of field option updates and conditional logic settings. -* The option to use HTML5 has been removed. HTML5 is now enforced for all sites. -* Some old deprecated PHP functions have been removed including FrmAppController::include_embed_form_icons and FrmAppController::get_form_shortcode. -* The deprecated JavaScript function frmFrontForm.savingDraft has been removed. - [See changelog for all versions](https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt) == Upgrade Notice == From c221f0b671e0b89076fe95ef560f58103f12923e Mon Sep 17 00:00:00 2001 From: Mike Letellier Date: Tue, 12 Nov 2024 11:35:03 -0400 Subject: [PATCH 24/41] Swap tags --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index bc2563153a..d7fdf784f9 100644 --- a/readme.txt +++ b/readme.txt @@ -1,7 +1,7 @@ === Formidable Forms - Contact Form Plugin, Survey, Quiz, Payment, Calculator Form & Custom Form Builder === Plugin Name: Formidable Forms - Contact Form, Survey & Quiz Form Builder for WordPress Contributors: formidableforms, sswells, srwells -Tags: forms, form builder, survey, free, custom form, contact form, form maker, form creator, paypal, stripe, stripe form, quote form, contact button, form manager, payment form, survey form, email subscription, donation form, user registration form, wordpress registration, feedback form +Tags: forms, form builder, survey, payment form, custom form, contact form, form maker, form creator, paypal, stripe, stripe form, quote form, contact button, form manager, free, survey form, email subscription, donation form, user registration form, wordpress registration, feedback form Requires at least: 5.2 Tested up to: 6.6.2 Requires PHP: 7.0 From 5bb1a40a388599dfe39bb6c42a276ffe57168236 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:05:45 +0300 Subject: [PATCH 25/41] Incorporate review feedbacks --- classes/controllers/FrmFormsController.php | 24 +------------- classes/helpers/FrmShortcodeHelper.php | 35 ++++++++++++++++++++ classes/views/frm-forms/mb_insert_fields.php | 11 ++---- classes/views/shared/mb_adv_info.php | 5 ++- js/formidable_admin.js | 28 ++++++++-------- 5 files changed, 54 insertions(+), 49 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 70539efe0b..bbf0e3a399 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1630,27 +1630,6 @@ private static function user_shortcodes() { return apply_filters( 'frm_user_shortcodes', $options ); } - /** - * Returns shortcodes that are shown/hidden based on the context. - * - * @since x.x - * @return array - */ - public static function get_contextual_shortcodes() { - return array( - 'address' => array( - 'admin_email' => __( 'Admin email', 'formidable' ), - 'default-from-email' => __( 'Default from email', 'formidable' ), - 'default-email' => __( 'Default email', 'formidable' ), - ), - 'body' => array( - 'default-message' => __( 'Default Msg', 'formidable' ), - 'default-html' => __( 'Default HTML', 'formidable' ), - 'default-plain' => __( 'Default Plain', 'formidable' ), - ), - ); - } - /** * Get an array of the helper shortcodes to display in the customization panel * @@ -1669,8 +1648,7 @@ private static function get_shortcode_helpers( $settings_tab ) { 'sitename' => __( 'Site Name', 'formidable' ), ); - $contextual_shortcodes = self::get_contextual_shortcodes(); - $entry_shortcodes = array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'], $entry_shortcodes ); + $entry_shortcodes = array_merge( FrmShortcodeHelper::get_contextual_shortcode_values(), $entry_shortcodes ); if ( ! FrmAppHelper::pro_is_installed() ) { unset( $entry_shortcodes['post_id'] ); } diff --git a/classes/helpers/FrmShortcodeHelper.php b/classes/helpers/FrmShortcodeHelper.php index 638c6f7a06..9ea2df2bef 100644 --- a/classes/helpers/FrmShortcodeHelper.php +++ b/classes/helpers/FrmShortcodeHelper.php @@ -30,6 +30,41 @@ public static function get_shortcode_attribute_array( $text ) { return $atts; } + /** + * Returns shortcodes that are shown/hidden based on the context. + * + * @since x.x + * @return array + */ + public static function get_contextual_shortcodes() { + return array( + 'address' => array( + 'admin_email' => __( 'Admin email', 'formidable' ), + 'default-from-email' => __( 'Default from email', 'formidable' ), + 'default-email' => __( 'Default email', 'formidable' ), + ), + 'body' => array( + 'default-message' => __( 'Default Msg', 'formidable' ), + 'default-html' => __( 'Default HTML', 'formidable' ), + 'default-plain' => __( 'Default Plain', 'formidable' ), + ), + ); + } + + public static function get_contextual_shortcode_values() { + $contextual_shortcodes = self::get_contextual_shortcodes(); + return array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'] ); + } + + public static function get_contextual_codes() { + $contextual_shortcodes = self::get_contextual_shortcodes(); + $result = array(); + foreach ( $contextual_shortcodes as $type => $shortcodes ) { + $result[ $type ] = array_keys( $shortcodes ); + } + return $result; + } + /** * Get the name of the shortcode from the regEx * diff --git a/classes/views/frm-forms/mb_insert_fields.php b/classes/views/frm-forms/mb_insert_fields.php index d689661c0b..631e9ceeff 100644 --- a/classes/views/frm-forms/mb_insert_fields.php +++ b/classes/views/frm-forms/mb_insert_fields.php @@ -2,16 +2,9 @@ if ( ! defined( 'ABSPATH' ) ) { die( 'You are not allowed to call this page directly.' ); } -$contextual_shortcodes = FrmFormsController::get_contextual_shortcodes(); +$contextual_shortcodes = FrmShortcodeHelper::get_contextual_shortcodes(); -$data_attrs = array( - 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( - array( - 'address' => array_keys( $contextual_shortcodes['address'] ), - 'body' => array_keys( $contextual_shortcodes['body'] ), - ) - ), -); +$data_attrs = array( 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( FrmShortcodeHelper::get_contextual_codes() ) ); ?>
>
diff --git a/classes/views/shared/mb_adv_info.php b/classes/views/shared/mb_adv_info.php index da44ce3a2e..c83fa7dc13 100644 --- a/classes/views/shared/mb_adv_info.php +++ b/classes/views/shared/mb_adv_info.php @@ -200,6 +200,7 @@
    $sname ) { if ( ! $skey ) { echo '
  • '; @@ -210,9 +211,7 @@ $classes .= in_array( $skey, array( 'siteurl', 'sitename', 'entry_count' ), true ) ? ' show_before_content show_after_content' : ''; $classes .= strpos( $skey, 'default-' ) === 0 ? ' hide_frm_not_email_subject' : ''; - $contextual_shortcodes = FrmFormsController::get_contextual_shortcodes(); - - if ( in_array( $skey, array_keys( array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'] ) ), true ) ) { + if ( in_array( $skey, array_keys( $contextual_codes ), true ) ) { $classes .= ' frm_hidden'; } diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 186145198c..0ee760b603 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8487,10 +8487,11 @@ function frmAdminBuildJS() { const shortcode = item.querySelector( 'a' ).dataset.code; const inputId = document.getElementById( 'frm_adv_info' ).dataset.fills; const input = document.getElementById( inputId ); - if ( getContextualShortcodes().address.includes( shortcode ) ) { - return input.matches( '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]' ); + const contextualShortcodes = getContextualShortcodes(); + if ( contextualShortcodes.address.includes( shortcode ) ) { + return input.matches( contextualShortcodes.addressSelector ); } - return input.matches( '[id^=email_message_]' ); + return input.matches( contextualShortcodes.bodySelector ); } /** @@ -8501,8 +8502,8 @@ function frmAdminBuildJS() { */ function showOrHideContextualShortcodes( input ) { const contextualShortcodes = getContextualShortcodes(); - toggleContextualShortcodes( input, '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]', contextualShortcodes.address ); - toggleContextualShortcodes( input, '[id^=email_message_]', contextualShortcodes.body ); + toggleContextualShortcodes( input, contextualShortcodes.addressSelector, contextualShortcodes.address ); + toggleContextualShortcodes( input, contextualShortcodes.bodySelector, contextualShortcodes.body ); } /** @@ -8532,7 +8533,10 @@ function frmAdminBuildJS() { * @returns {Array} */ function getContextualShortcodes() { - return JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); + const contextualShortcodes = JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); + contextualShortcodes.addressSelector = '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]'; + contextualShortcodes.bodySelector = '[id^=email_message_]'; + return contextualShortcodes; } function fieldUpdated() { @@ -9540,17 +9544,13 @@ function frmAdminBuildJS() { const itemCanBeShown = ! ( getExportOption() === 'xml' && items[i].classList.contains( 'frm-is-repeater' ) ); if ( searchText === '' ) { - if ( itemCanBeShown ) { - if ( checkContextualShortcode( items[i] ) ) { - items[i].classList.remove( 'frm_hidden' ); - } + if ( itemCanBeShown && checkContextualShortcode( items[i] ) ) { + items[i].classList.remove( 'frm_hidden' ); } items[i].classList.remove( 'frm-search-result' ); } else if ( ( regEx && new RegExp( searchText ).test( innerText ) ) || innerText.indexOf( searchText ) >= 0 || textMatchesPlural( innerText, searchText ) ) { - if ( itemCanBeShown ) { - if ( checkContextualShortcode( items[i] ) ) { - items[i].classList.remove( 'frm_hidden' ); - } + if ( itemCanBeShown && checkContextualShortcode( items[i] ) ) { + items[i].classList.remove( 'frm_hidden' ); } items[i].classList.add( 'frm-search-result' ); } else { From 86660bc18ef838a3f5236804179929f8385b6869 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:17:44 +0300 Subject: [PATCH 26/41] Comment functions --- classes/helpers/FrmShortcodeHelper.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/classes/helpers/FrmShortcodeHelper.php b/classes/helpers/FrmShortcodeHelper.php index 9ea2df2bef..c3d36dc25b 100644 --- a/classes/helpers/FrmShortcodeHelper.php +++ b/classes/helpers/FrmShortcodeHelper.php @@ -51,11 +51,25 @@ public static function get_contextual_shortcodes() { ); } + /** + * Get contextual shortcodes. + * + * @since x.x + * + * @return array + */ public static function get_contextual_shortcode_values() { $contextual_shortcodes = self::get_contextual_shortcodes(); return array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'] ); } + /** + * Get flattened format of contextual shortcodes. + * + * @since x.x + * + * @return array + */ public static function get_contextual_codes() { $contextual_shortcodes = self::get_contextual_shortcodes(); $result = array(); From 53bf322062c3891a4386f528f2880a79fb6fd4d6 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:18:18 +0300 Subject: [PATCH 27/41] Align equal sign --- classes/helpers/FrmShortcodeHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/helpers/FrmShortcodeHelper.php b/classes/helpers/FrmShortcodeHelper.php index c3d36dc25b..8f0915a34a 100644 --- a/classes/helpers/FrmShortcodeHelper.php +++ b/classes/helpers/FrmShortcodeHelper.php @@ -72,7 +72,7 @@ public static function get_contextual_shortcode_values() { */ public static function get_contextual_codes() { $contextual_shortcodes = self::get_contextual_shortcodes(); - $result = array(); + $result = array(); foreach ( $contextual_shortcodes as $type => $shortcodes ) { $result[ $type ] = array_keys( $shortcodes ); } From b67d6371c35352cd0007a0f230f72da1cac6dabd Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:50:26 +0300 Subject: [PATCH 28/41] Reduce repeated code --- js/formidable_admin.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index c8b43d94d4..ed2a8e2e55 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -241,6 +241,7 @@ function frmAdminBuildJS() { const { tag, div, span, a, svg, img } = frmDom; const { onClickPreventDefault } = frmDom.util; const { doJsonFetch, doJsonPost } = frmDom.ajax; + frmAdminJs.contextualShortcodes = getContextualShortcodes(); const icons = { save: svg({ href: '#frm_save_icon' }), drag: svg({ href: '#frm_drag_icon', classList: [ 'frm_drag_icon', 'frm-drag' ] }) @@ -8497,21 +8498,27 @@ function frmAdminBuildJS() { * @returns {Void} */ function showOrHideContextualShortcodes( input ) { - const contextualShortcodes = getContextualShortcodes(); - toggleContextualShortcodes( input, contextualShortcodes.addressSelector, contextualShortcodes.address ); - toggleContextualShortcodes( input, contextualShortcodes.bodySelector, contextualShortcodes.body ); + toggleContextualShortcodes( input, 'address' ); + toggleContextualShortcodes( input, 'body' ); } /** * @since x.x * * @param {HTMLElement} input - * @param {string} selector - * @param {Array} contextualShortcodes + * @param {string} type * * @returns {Void} */ - function toggleContextualShortcodes( input, selector, contextualShortcodes ) { + function toggleContextualShortcodes( input, type ) { + let selector, contextualShortcodes; + if ( type === 'address' ) { + selector = frmAdminJs.contextualShortcodes.addressSelector; + contextualShortcodes = frmAdminJs.contextualShortcodes.address; + } else { + selector = frmAdminJs.contextualShortcodes.bodySelector; + contextualShortcodes = frmAdminJs.contextualShortcodes.body; + } let shouldShowShortcodes = input.matches( selector ); for ( let shortcode of contextualShortcodes ) { const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); From 4acc6e57553cfe78257bdb1a643312d34e568bef Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:56:12 +0300 Subject: [PATCH 29/41] Reduce repeated code --- js/formidable_admin.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index ed2a8e2e55..ab56e1dec0 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8498,8 +8498,9 @@ function frmAdminBuildJS() { * @returns {Void} */ function showOrHideContextualShortcodes( input ) { - toggleContextualShortcodes( input, 'address' ); - toggleContextualShortcodes( input, 'body' ); + [ 'address', 'body' ].forEach( type => { + toggleContextualShortcodes( input, type ); + }); } /** @@ -8512,6 +8513,8 @@ function frmAdminBuildJS() { */ function toggleContextualShortcodes( input, type ) { let selector, contextualShortcodes; + selector = frmAdminJs.contextualShortcodes[ type + 'Selector' ]; + contextualShortcodes = frmAdminJs.contextualShortcodes[ type ]; if ( type === 'address' ) { selector = frmAdminJs.contextualShortcodes.addressSelector; contextualShortcodes = frmAdminJs.contextualShortcodes.address; From 4fafd127db9cb06f431bbf26303e1787c308e2db Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 15:58:59 +0300 Subject: [PATCH 30/41] Reduce repeated code --- js/formidable_admin.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index ab56e1dec0..bf67ec555b 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8469,9 +8469,8 @@ function frmAdminBuildJS() { * @returns {Boolean} */ function isContextualShortcode( item ) { - const contextualShortcodes = getContextualShortcodes(); const shortcode = item.querySelector( 'a' ).dataset.code; - return contextualShortcodes.address.includes( shortcode ) || contextualShortcodes.body.includes( shortcode ); + return frmAdminJs.contextualShortcodes.address.includes( shortcode ) || frmAdminJs.contextualShortcodes.body.includes( shortcode ); } /** @@ -8484,7 +8483,7 @@ function frmAdminBuildJS() { const shortcode = item.querySelector( 'a' ).dataset.code; const inputId = document.getElementById( 'frm_adv_info' ).dataset.fills; const input = document.getElementById( inputId ); - const contextualShortcodes = getContextualShortcodes(); + const contextualShortcodes = frmAdminJs.contextualShortcodes; if ( contextualShortcodes.address.includes( shortcode ) ) { return input.matches( contextualShortcodes.addressSelector ); } From a4a69499beb3bad61d666a5f7f853f671746832b Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:15:05 +0300 Subject: [PATCH 31/41] Delete code not needed --- classes/controllers/FrmFormsController.php | 7 ++++--- js/formidable_admin.js | 10 +++------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 7cb7b38fdf..8e49bc9e8e 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1653,9 +1653,10 @@ private static function get_shortcode_helpers( $settings_tab ) { unset( $entry_shortcodes['post_id'] ); } - if ( $settings_tab ) { - $entry_shortcodes['form_name'] = __( 'Form Name', 'formidable' ); - } + // if ( $settings_tab ) { + // $entry_shortcodes['form_name'] = __( 'Form Name', 'formidable' ); + // } + $entry_shortcodes['form_name'] = __( 'Form Name', 'formidable' ); /** * Use this hook to add or remove buttons in the helpers section diff --git a/js/formidable_admin.js b/js/formidable_admin.js index bf67ec555b..d76a66d542 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8514,13 +8514,6 @@ function frmAdminBuildJS() { let selector, contextualShortcodes; selector = frmAdminJs.contextualShortcodes[ type + 'Selector' ]; contextualShortcodes = frmAdminJs.contextualShortcodes[ type ]; - if ( type === 'address' ) { - selector = frmAdminJs.contextualShortcodes.addressSelector; - contextualShortcodes = frmAdminJs.contextualShortcodes.address; - } else { - selector = frmAdminJs.contextualShortcodes.bodySelector; - contextualShortcodes = frmAdminJs.contextualShortcodes.body; - } let shouldShowShortcodes = input.matches( selector ); for ( let shortcode of contextualShortcodes ) { const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); @@ -8538,6 +8531,9 @@ function frmAdminBuildJS() { * @returns {Array} */ function getContextualShortcodes() { + if ( ! document.getElementById( 'frm_adv_info' ) ) { + return []; + } const contextualShortcodes = JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); contextualShortcodes.addressSelector = '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]'; contextualShortcodes.bodySelector = '[id^=email_message_]'; From dc7efc74197ae5b41d0fff7db0c8b73fd87562a0 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:28:45 +0300 Subject: [PATCH 32/41] Delete more code --- classes/views/frm-forms/mb_insert_fields.php | 2 -- js/formidable_admin.js | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/classes/views/frm-forms/mb_insert_fields.php b/classes/views/frm-forms/mb_insert_fields.php index 631e9ceeff..a3fea7ce48 100644 --- a/classes/views/frm-forms/mb_insert_fields.php +++ b/classes/views/frm-forms/mb_insert_fields.php @@ -2,8 +2,6 @@ if ( ! defined( 'ABSPATH' ) ) { die( 'You are not allowed to call this page directly.' ); } -$contextual_shortcodes = FrmShortcodeHelper::get_contextual_shortcodes(); - $data_attrs = array( 'data-contextual-shortcodes' => FrmAppHelper::maybe_json_encode( FrmShortcodeHelper::get_contextual_codes() ) ); ?>
    > diff --git a/js/formidable_admin.js b/js/formidable_admin.js index d76a66d542..dcf3b2b625 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8531,10 +8531,11 @@ function frmAdminBuildJS() { * @returns {Array} */ function getContextualShortcodes() { - if ( ! document.getElementById( 'frm_adv_info' ) ) { + let contextualShortcodes = document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes; + if ( ! contextualShortcodes) { return []; } - const contextualShortcodes = JSON.parse( document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes ); + contextualShortcodes = JSON.parse( contextualShortcodes ); contextualShortcodes.addressSelector = '[id^=email_to], [id^=from_], [id^=cc], [id^=bcc]'; contextualShortcodes.bodySelector = '[id^=email_message_]'; return contextualShortcodes; From e361a8c223afcf8c535e70401766dd9262fbe48b Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 20 Nov 2024 14:58:00 +0300 Subject: [PATCH 33/41] Fix potential bug --- js/formidable_admin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index dcf3b2b625..803faa2aa8 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8531,7 +8531,7 @@ function frmAdminBuildJS() { * @returns {Array} */ function getContextualShortcodes() { - let contextualShortcodes = document.getElementById( 'frm_adv_info' ).dataset.contextualShortcodes; + let contextualShortcodes = document.getElementById( 'frm_adv_info' )?.dataset.contextualShortcodes; if ( ! contextualShortcodes) { return []; } From de09eafebbc980291598721e3b46f82041e1c289 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 20 Nov 2024 15:54:35 +0300 Subject: [PATCH 34/41] Support form_name shortcode in more places --- classes/helpers/FrmFieldsHelper.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/classes/helpers/FrmFieldsHelper.php b/classes/helpers/FrmFieldsHelper.php index 41930e33dc..09a2626c40 100644 --- a/classes/helpers/FrmFieldsHelper.php +++ b/classes/helpers/FrmFieldsHelper.php @@ -1082,6 +1082,9 @@ public static function dynamic_default_values( $tag, $atts = array(), $return_ar break; case 'get': $new_value = self::process_get_shortcode( $atts, $return_array ); + case 'form_name': + $new_value = FrmForm::getName( $atts['form_id'] ); + break; }//end switch return $new_value; From 0ab4f895d00acf384108854e5565cb515c96aec7 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 20 Nov 2024 15:55:33 +0300 Subject: [PATCH 35/41] Support form_name shortcode in more places --- classes/helpers/FrmFieldsHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/helpers/FrmFieldsHelper.php b/classes/helpers/FrmFieldsHelper.php index 09a2626c40..e8cd59a76e 100644 --- a/classes/helpers/FrmFieldsHelper.php +++ b/classes/helpers/FrmFieldsHelper.php @@ -1083,7 +1083,7 @@ public static function dynamic_default_values( $tag, $atts = array(), $return_ar case 'get': $new_value = self::process_get_shortcode( $atts, $return_array ); case 'form_name': - $new_value = FrmForm::getName( $atts['form_id'] ); + $new_value = isset( $atts['form_id'] ) ? FrmForm::getOne( $atts['form_id'] )->name : ''; break; }//end switch From d84fe3f5506c6dd43f8327542ef4e9dad47d4a0b Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:36:17 +0300 Subject: [PATCH 36/41] Add form_name to the list of shortcodes --- classes/controllers/FrmFormsController.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index 8e49bc9e8e..ef41400d2e 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1646,18 +1646,14 @@ private static function get_shortcode_helpers( $settings_tab ) { '' => '', 'siteurl' => __( 'Site URL', 'formidable' ), 'sitename' => __( 'Site Name', 'formidable' ), + 'form_name' => __( 'Form Name', 'formidable' ), ); - $entry_shortcodes = array_merge( FrmShortcodeHelper::get_contextual_shortcode_values(), $entry_shortcodes ); + $entry_shortcodes = array_merge( FrmShortcodeHelper::get_contextual_shortcode_values(), $entry_shortcodes ); if ( ! FrmAppHelper::pro_is_installed() ) { unset( $entry_shortcodes['post_id'] ); } - // if ( $settings_tab ) { - // $entry_shortcodes['form_name'] = __( 'Form Name', 'formidable' ); - // } - $entry_shortcodes['form_name'] = __( 'Form Name', 'formidable' ); - /** * Use this hook to add or remove buttons in the helpers section * in the customization panel From 115508e0f77c632aa97d0eb0fe6a8a67847baaae Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:42:05 +0300 Subject: [PATCH 37/41] Fix potential bug --- js/formidable_admin.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 803faa2aa8..ec0ea300fc 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8457,7 +8457,10 @@ function frmAdminBuildJS() { * @returns {Boolean} */ function checkContextualShortcode( item ) { - return ! isContextualShortcode( item ) || canShowContextualShortcode( item ) + if ( frmAdminJs.contextualShortcodes.length === 0 ) { + return true; + } + return ! isContextualShortcode( item ) || canShowContextualShortcode( item ); } /** From 63a5d56001e140a8e96abf7923b36860c9f34d42 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:52:05 +0300 Subject: [PATCH 38/41] Use FrmForm::getName to get form name from form id --- classes/helpers/FrmFieldsHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/helpers/FrmFieldsHelper.php b/classes/helpers/FrmFieldsHelper.php index e8cd59a76e..d9dc1fd9fa 100644 --- a/classes/helpers/FrmFieldsHelper.php +++ b/classes/helpers/FrmFieldsHelper.php @@ -1083,7 +1083,7 @@ public static function dynamic_default_values( $tag, $atts = array(), $return_ar case 'get': $new_value = self::process_get_shortcode( $atts, $return_array ); case 'form_name': - $new_value = isset( $atts['form_id'] ) ? FrmForm::getOne( $atts['form_id'] )->name : ''; + $new_value = isset( $atts['form_id'] ) ? FrmForm::getName( $atts['form_id'] ) : ''; break; }//end switch From 8cb313af78d4e98adc3bcd41602a4cd947755dcf Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:12:02 +0300 Subject: [PATCH 39/41] Improve code readability --- js/formidable_admin.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index ec0ea300fc..afba83ab0d 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -8472,7 +8472,7 @@ function frmAdminBuildJS() { * @returns {Boolean} */ function isContextualShortcode( item ) { - const shortcode = item.querySelector( 'a' ).dataset.code; + const shortcode = item.querySelector( 'a' ).dataset.code; return frmAdminJs.contextualShortcodes.address.includes( shortcode ) || frmAdminJs.contextualShortcodes.body.includes( shortcode ); } @@ -8520,9 +8520,7 @@ function frmAdminBuildJS() { let shouldShowShortcodes = input.matches( selector ); for ( let shortcode of contextualShortcodes ) { const shortcodeLi = document.querySelector( '#frm-adv-info-tab .frm_code_list [data-code="' + shortcode + '"]' )?.closest( 'li'); - if ( shortcodeLi ) { - shortcodeLi.classList.toggle( 'frm_hidden', ! shouldShowShortcodes ); - } + shortcodeLi?.classList.toggle( 'frm_hidden', ! shouldShowShortcodes ); } } From 096ec74a5cdbe7bb0bb7fd1e6dbf5636b894fdc1 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:33:23 +0300 Subject: [PATCH 40/41] Fix PHPCS error --- classes/helpers/FrmFieldsHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/helpers/FrmFieldsHelper.php b/classes/helpers/FrmFieldsHelper.php index d9dc1fd9fa..cdaa87ed0a 100644 --- a/classes/helpers/FrmFieldsHelper.php +++ b/classes/helpers/FrmFieldsHelper.php @@ -1082,9 +1082,9 @@ public static function dynamic_default_values( $tag, $atts = array(), $return_ar break; case 'get': $new_value = self::process_get_shortcode( $atts, $return_array ); + break; case 'form_name': $new_value = isset( $atts['form_id'] ) ? FrmForm::getName( $atts['form_id'] ) : ''; - break; }//end switch return $new_value; From efbc82730dc6e3c8fc60820e60724a7d1da9d191 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:18:41 +0300 Subject: [PATCH 41/41] Change approach to form name shortcode --- classes/helpers/FrmFieldsHelper.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/classes/helpers/FrmFieldsHelper.php b/classes/helpers/FrmFieldsHelper.php index cdaa87ed0a..273e7c039f 100644 --- a/classes/helpers/FrmFieldsHelper.php +++ b/classes/helpers/FrmFieldsHelper.php @@ -853,6 +853,7 @@ public static function allowed_shortcodes( $fields = array() ) { 'updated[-|_]at', 'updated[-|_]by', 'parent[-|_]id', + 'form_name', ); foreach ( $fields as $field ) { @@ -1082,9 +1083,6 @@ public static function dynamic_default_values( $tag, $atts = array(), $return_ar break; case 'get': $new_value = self::process_get_shortcode( $atts, $return_array ); - break; - case 'form_name': - $new_value = isset( $atts['form_id'] ) ? FrmForm::getName( $atts['form_id'] ) : ''; }//end switch return $new_value;