From e1e471ab738a80dd4f15f92b8e0f2e4d247707b1 Mon Sep 17 00:00:00 2001 From: camer0n <e107inc@gmail.com> Date: Sat, 19 Apr 2025 09:01:14 -0700 Subject: [PATCH] #5473 Refined active page against sub-link. --- e107_handlers/admin_ui.php | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/e107_handlers/admin_ui.php b/e107_handlers/admin_ui.php index a50835827..80055e145 100755 --- a/e107_handlers/admin_ui.php +++ b/e107_handlers/admin_ui.php @@ -1579,6 +1579,7 @@ class e_admin_dispatcher $var = array(); $selected = false; + foreach($this->adminMenu as $key => $val) { if(isset($val['perm']) && $val['perm'] !== '' && !getperms($val['perm'])) @@ -1632,6 +1633,12 @@ class e_admin_dispatcher } } + if(!$selected) + { + $request = $this->getRequest(); + $selected = $request->getMode() . '/' . $request->getAction(); + } + // Handle links and collapse attributes foreach($var as $key => &$item) { @@ -1647,22 +1654,16 @@ class e_admin_dispatcher $item['caret'] = true; // Indicate caret for sub-menu parents // Check if any sub-item is active to expand the parent - $isSubItemActive = false; foreach($item['sub'] as $subKey => &$subItem) { - $fullSubPath = $key; - if($selected === $key) + if($selected === $subKey && !empty($subItem['group'])) { - $subItem['selected'] = $subKey; // Mark sub-item as active - $isSubItemActive = true; + $parent = $subItem['group']; + $var[$parent]['link_data']['aria-expanded'] = 'true'; } + } - // Expand the parent if a sub-item is active or if the parent itself is selected - if($selected === $key || $isSubItemActive || strpos($selected, $key . '/') === 0) - { - $item['link_data']['aria-expanded'] = 'true'; - } } elseif(!isset($item['link'])) { @@ -1676,11 +1677,6 @@ class e_admin_dispatcher return ''; } - $request = $this->getRequest(); - if(!$selected) - { - $selected = $request->getMode() . '/' . $request->getAction(); - } $selected = vartrue($this->adminMenuAliases[$selected], $selected); @@ -1699,8 +1695,9 @@ class e_admin_dispatcher $var['_extras_'] = array('icon' => $icon, 'return' => true); -//e107::getMessage()->addInfo(print_a($var, true)); + // e107::getMessage()->addDebug(print_a($var, true)); return $toggle . e107::getNav()->admin($this->menuTitle, $selected, $var); + } /**