2 Commits

Author SHA1 Message Date
taekyoungc
41b6ccc339 fix: 기본코드 등록/수정 화면 탭 안 중첩 셸 제거
- CodeKind/CodeDetail create·edit 가 view('admin/layout') 직접 사용 → 탭(iframe) 안에서 풀셸 중첩
- renderWorkPage 로 교체 + renderWorkPage 가 embed 요청이면 경로 무관하게 embed 레이아웃 사용하도록 일반화

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 23:16:57 +09:00
taekyoungc
003cf28183 style: 활동 로그 조회 작업 필터 셀렉트 너비 확대
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 23:16:56 +09:00
4 changed files with 21 additions and 25 deletions

View File

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

View File

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

View File

@@ -74,9 +74,17 @@ abstract class BaseController extends Controller
while (str_starts_with($path, 'index.php/')) { while (str_starts_with($path, 'index.php/')) {
$path = substr($path, strlen('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/')) { if ($path === 'bag' || str_starts_with($path, 'bag/')) {
// /workspace 탭(iframe) 안에서는 임베드 레이아웃, 아니면 gov-portal 셸 return view('bag/layout/portal', [
return view($this->isEmbeddedRequest() ? 'bag/layout/embed' : 'bag/layout/portal', [
'title' => $title, 'title' => $title,
'content' => $content, 'content' => $content,
]); ]);

View File

@@ -28,7 +28,7 @@ $actionBadge = static function (string $a): string {
<span>~</span> <span>~</span>
<input type="date" name="end" class="border border-gray-300 rounded px-2 py-1 text-sm" value="<?= esc($end) ?>"/> <input type="date" name="end" class="border border-gray-300 rounded px-2 py-1 text-sm" value="<?= esc($end) ?>"/>
<select name="action" class="border border-gray-300 rounded px-2 py-1 text-sm"> <select name="action" class="border border-gray-300 rounded px-2 py-1 text-sm min-w-[8rem]">
<option value="">작업 전체</option> <option value="">작업 전체</option>
<?php foreach ($actionLabels as $k => $lbl): ?> <?php foreach ($actionLabels as $k => $lbl): ?>
<option value="<?= esc($k, 'attr') ?>" <?= $action === $k ? 'selected' : '' ?>><?= esc($lbl) ?></option> <option value="<?= esc($k, 'attr') ?>" <?= $action === $k ? 'selected' : '' ?>><?= esc($lbl) ?></option>