운영 Whoops 방지를 위해 메뉴 활성 계산 의존성을 단순화
레이아웃에서 내부 헬퍼 함수를 직접 호출하지 않고 공개 메뉴 매칭 함수만 사용하도록 변경해 운영 환경 차이에 따른 오류 가능성을 줄였습니다.
This commit is contained in:
@@ -14,21 +14,17 @@ if ($effectiveLgIdx) {
|
||||
}
|
||||
$userNav = session_user_nav_display();
|
||||
|
||||
$resolveNavNodeMatchLen = static function (object $node) use ($currentPath, $dashboardPathAliases): int {
|
||||
$maxLen = -1;
|
||||
foreach (menu_link_candidate_paths($node->mm_link ?? null, $currentPath) as $cand) {
|
||||
if (menu_single_path_matches_request($cand, $currentPath, $dashboardPathAliases)) {
|
||||
$maxLen = max($maxLen, strlen($cand));
|
||||
}
|
||||
}
|
||||
return $maxLen;
|
||||
};
|
||||
|
||||
$activeTopNav = null;
|
||||
$activeTopLen = -1;
|
||||
$activeTopNum = PHP_INT_MAX;
|
||||
foreach ($siteNavTree as $topNode) {
|
||||
$nodeLen = $resolveNavNodeMatchLen($topNode);
|
||||
$nodeLen = -1;
|
||||
$activeChild = site_nav_active_child_for_parent($topNode, $currentPath, $dashboardPathAliases);
|
||||
if ($activeChild !== null) {
|
||||
$nodeLen = strlen(menu_link_preferred_href_path($activeChild->mm_link ?? null, $currentPath));
|
||||
} elseif (site_nav_link_matches_current($topNode->mm_link ?? null, $currentPath, $dashboardPathAliases)) {
|
||||
$nodeLen = strlen(menu_link_preferred_href_path($topNode->mm_link ?? null, $currentPath));
|
||||
}
|
||||
if ($nodeLen > $activeTopLen || ($nodeLen === $activeTopLen && (int) ($topNode->mm_num ?? 0) < $activeTopNum)) {
|
||||
$activeTop = $topNode;
|
||||
$activeTopLen = $nodeLen;
|
||||
|
||||
Reference in New Issue
Block a user