From 7f37e7090ec1b36b1654e1395f3603feb5311c47 Mon Sep 17 00:00:00 2001 From: Squidly271 Date: Fri, 3 Oct 2025 14:26:44 -0400 Subject: [PATCH 1/2] Support Focus on page tabs --- .../include/DefaultPageLayout/MainContentTabbed.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php index 7f251740ec..8284d70cc1 100644 --- a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php @@ -19,6 +19,9 @@ aria-controls="-panel" tabindex="" aria-selected="" + + data-focus="" + > @@ -137,6 +140,14 @@ class="tab-content content" }); $.cookie(cookieName, tab.id); tab.focus(); + // call the focus function if it exists + if (tab.getAttribute('data-focus') ) { + try { + eval(tab.getAttribute('data-focus')); + } catch (e) { + console.error('Error calling focus function: ' + e); + } + } }); tab.addEventListener('keydown', e => { let idx = Array.prototype.indexOf.call(tabs, document.activeElement); From cdbd2e9a696c55cf9f8acad943301f792c73d4a9 Mon Sep 17 00:00:00 2001 From: Squidly271 Date: Fri, 3 Oct 2025 14:42:26 -0400 Subject: [PATCH 2/2] Fix xss issues --- .../include/DefaultPageLayout/MainContentTabbed.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php index 8284d70cc1..aa01fee64f 100644 --- a/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout/MainContentTabbed.php @@ -20,7 +20,7 @@ tabindex="" aria-selected="" - data-focus="" + data-focus="" > @@ -142,10 +142,11 @@ class="tab-content content" tab.focus(); // call the focus function if it exists if (tab.getAttribute('data-focus') ) { - try { - eval(tab.getAttribute('data-focus')); - } catch (e) { - console.error('Error calling focus function: ' + e); + const focusFnName = tab.getAttribute('data-focus'); + if (typeof window[focusFnName] === 'function') { + window[focusFnName](); + } else { + console.error('Focus function not found: ' + focusFnName); } } });