fix: keep selected menu type while applying site fallback
Preserve the selected site mt_idx in the UI and use a separate effective mt_idx for data fallback, so choosing site no longer appears as admin. Made-with: Cursor
This commit is contained in:
@@ -32,20 +32,21 @@ class Menu extends BaseController
|
||||
$types = $this->typeModel->orderBy('mt_sort', 'ASC')->findAll();
|
||||
$requestedMtIdx = (int) ($this->request->getGet('mt_idx') ?? 0);
|
||||
$mtIdx = $this->resolveMtIdx($requestedMtIdx, $types);
|
||||
$effectiveMtIdx = $mtIdx;
|
||||
$debugMode = $this->request->getGet('debug') === '1';
|
||||
$fallbackApplied = false;
|
||||
$list = $mtIdx > 0 ? $this->menuModel->getAllByType($mtIdx, $lgIdx) : [];
|
||||
$list = $effectiveMtIdx > 0 ? $this->menuModel->getAllByType($effectiveMtIdx, $lgIdx) : [];
|
||||
$currentType = $mtIdx > 0 ? $this->typeModel->find($mtIdx) : null;
|
||||
$currentTypeCode = (string) ($currentType->mt_code ?? '');
|
||||
|
||||
// 현재 지자체에 메뉴가 없으면, mt_idx별로 기본 지자체(lg_idx=1)의 메뉴를 한 번 복사한다.
|
||||
if ($mtIdx > 0 && empty($list)) {
|
||||
$this->menuModel->copyDefaultsFromLg($mtIdx, 1, $lgIdx);
|
||||
$list = $this->menuModel->getAllByType($mtIdx, $lgIdx);
|
||||
if ($effectiveMtIdx > 0 && empty($list)) {
|
||||
$this->menuModel->copyDefaultsFromLg($effectiveMtIdx, 1, $lgIdx);
|
||||
$list = $this->menuModel->getAllByType($effectiveMtIdx, $lgIdx);
|
||||
}
|
||||
|
||||
// 운영 DB 불일치 대응: site 타입인데 mt_idx 매핑이 어긋난 경우(예: menu_type=2, menu는 4 사용)
|
||||
if (empty($list) && $currentTypeCode === 'site' && $mtIdx !== 4) {
|
||||
if (empty($list) && $currentTypeCode === 'site' && $effectiveMtIdx !== 4) {
|
||||
$fallbackMtIdx = 4;
|
||||
$fallbackList = $this->menuModel->getAllByType($fallbackMtIdx, $lgIdx);
|
||||
if (empty($fallbackList)) {
|
||||
@@ -53,7 +54,7 @@ class Menu extends BaseController
|
||||
$fallbackList = $this->menuModel->getAllByType($fallbackMtIdx, $lgIdx);
|
||||
}
|
||||
if (! empty($fallbackList)) {
|
||||
$mtIdx = $fallbackMtIdx;
|
||||
$effectiveMtIdx = $fallbackMtIdx;
|
||||
$list = $fallbackList;
|
||||
$fallbackApplied = true;
|
||||
}
|
||||
@@ -78,6 +79,7 @@ class Menu extends BaseController
|
||||
'lg_idx' => $lgIdx,
|
||||
'requested_mt_idx' => $requestedMtIdx,
|
||||
'resolved_mt_idx' => $mtIdx,
|
||||
'effective_mt_idx' => $effectiveMtIdx,
|
||||
'resolved_mt_code' => $currentTypeCode,
|
||||
'list_count' => count($list),
|
||||
'fallback_applied' => $fallbackApplied ? 'Y' : 'N',
|
||||
|
||||
@@ -52,6 +52,7 @@ $adminMenuListResolveHref = static function (string $rawLink) use ($adminMenusNa
|
||||
lg_idx=<?= esc((string) ($debugInfo['lg_idx'] ?? '')) ?>,
|
||||
requested_mt_idx=<?= esc((string) ($debugInfo['requested_mt_idx'] ?? '')) ?>,
|
||||
resolved_mt_idx=<?= esc((string) ($debugInfo['resolved_mt_idx'] ?? '')) ?>,
|
||||
effective_mt_idx=<?= esc((string) ($debugInfo['effective_mt_idx'] ?? '')) ?>,
|
||||
resolved_mt_code=<?= esc((string) ($debugInfo['resolved_mt_code'] ?? '')) ?>,
|
||||
list_count=<?= esc((string) ($debugInfo['list_count'] ?? '')) ?>,
|
||||
fallback_applied=<?= esc((string) ($debugInfo['fallback_applied'] ?? 'N')) ?>
|
||||
|
||||
Reference in New Issue
Block a user