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() ) ) ); ?> -