fix: 기본코드 등록/수정 화면 탭 안 중첩 셸 제거

- CodeKind/CodeDetail create·edit 가 view('admin/layout') 직접 사용 → 탭(iframe) 안에서 풀셸 중첩
- renderWorkPage 로 교체 + renderWorkPage 가 embed 요청이면 경로 무관하게 embed 레이아웃 사용하도록 일반화

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
taekyoungc
2026-06-25 23:16:57 +09:00
parent 003cf28183
commit 41b6ccc339
3 changed files with 20 additions and 24 deletions

View File

@@ -56,14 +56,11 @@ class CodeDetail extends BaseController
helper('admin');
return view('admin/layout', [
'title' => '세부코드 등록 — ' . $kind->ck_name,
'content' => view('admin/code_detail/create', [
return $this->renderWorkPage('세부코드 등록 — ' . $kind->ck_name, 'admin/code_detail/create', [
'kind' => $kind,
'canPlatformScope' => $canPlatformScope,
'localGovernments' => $govs,
'effectiveLgIdx' => admin_effective_lg_idx(),
]),
]);
}
@@ -156,12 +153,9 @@ class CodeDetail extends BaseController
$kind = $this->kindModel->find($item->cd_ck_idx);
return view('admin/layout', [
'title' => '세부코드 수정 — ' . ($kind->ck_name ?? ''),
'content' => view('admin/code_detail/edit', [
return $this->renderWorkPage('세부코드 수정 — ' . ($kind->ck_name ?? ''), 'admin/code_detail/edit', [
'item' => $item,
'kind' => $kind,
]),
]);
}

View File

@@ -34,10 +34,7 @@ class CodeKind extends BaseController
return $r;
}
return view('admin/layout', [
'title' => '기본코드 종류 등록',
'content' => view('admin/code_kind/create'),
]);
return $this->renderWorkPage('기본코드 종류 등록', 'admin/code_kind/create');
}
public function store()
@@ -76,10 +73,7 @@ class CodeKind extends BaseController
return redirect()->to(site_url('bag/code-kinds'))->with('error', '코드 종류를 찾을 수 없습니다.');
}
return view('admin/layout', [
'title' => '기본코드 종류 수정',
'content' => view('admin/code_kind/edit', ['item' => $item]),
]);
return $this->renderWorkPage('기본코드 종류 수정', 'admin/code_kind/edit', ['item' => $item]);
}
public function update(int $id)

View File

@@ -74,9 +74,17 @@ abstract class BaseController extends Controller
while (str_starts_with($path, 'index.php/')) {
$path = substr($path, strlen('index.php/'));
}
// 워크스페이스 탭(iframe) 안이면 경로와 무관하게 임베드 레이아웃 → 셸 중첩 방지
// (예: bag/code-kinds 탭에서 admin/code-kinds/create 등록 화면을 열 때)
if ($this->isEmbeddedRequest()) {
return view('bag/layout/embed', [
'title' => $title,
'content' => $content,
]);
}
if ($path === 'bag' || str_starts_with($path, 'bag/')) {
// /workspace 탭(iframe) 안에서는 임베드 레이아웃, 아니면 gov-portal 셸
return view($this->isEmbeddedRequest() ? 'bag/layout/embed' : 'bag/layout/portal', [
return view('bag/layout/portal', [
'title' => $title,
'content' => $content,
]);