refactor: unify bag and admin layout routing
This commit is contained in:
41
app/Controllers/Admin/WorkMovedToBag.php
Normal file
41
app/Controllers/Admin/WorkMovedToBag.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Controllers\Admin;
|
||||
|
||||
use App\Controllers\BaseController;
|
||||
|
||||
/**
|
||||
* 구 관리자 업무 URL(admin/…) → 메인 사이트 업무 URL(bag/…) 영구 이전.
|
||||
* POST 폼은 307로 메서드·본문 유지를 시도하고, GET 은 301.
|
||||
*/
|
||||
class WorkMovedToBag extends BaseController
|
||||
{
|
||||
public function toBag(string $prefix, string $rest = ''): \CodeIgniter\HTTP\RedirectResponse
|
||||
{
|
||||
$rest = trim($rest, '/');
|
||||
|
||||
if ($prefix === 'packaging-units') {
|
||||
$path = 'packaging-units/manage';
|
||||
if ($rest !== '') {
|
||||
$path .= '/' . $rest;
|
||||
}
|
||||
} else {
|
||||
$path = $prefix;
|
||||
if ($rest !== '') {
|
||||
$path .= '/' . $rest;
|
||||
}
|
||||
}
|
||||
|
||||
$target = site_url('bag/' . $path);
|
||||
$query = $this->request->getUri()->getQuery();
|
||||
if ($query !== '') {
|
||||
$target .= '?' . $query;
|
||||
}
|
||||
|
||||
$code = $this->request->getMethod() === 'post' ? 307 : 301;
|
||||
|
||||
return redirect()->to($target)->setStatusCode($code);
|
||||
}
|
||||
}
|
||||
@@ -42,4 +42,31 @@ abstract class BaseController extends Controller
|
||||
// Preload any models, libraries, etc, here.
|
||||
// $this->session = service('session');
|
||||
}
|
||||
|
||||
/**
|
||||
* /admin/* 또는 /bag/* 업무 화면 공통: 요청이 bag 이면 메인 사이트 레이아웃, 아니면 관리자 레이아웃.
|
||||
*
|
||||
* @param array<string, mixed> $contentData
|
||||
*/
|
||||
protected function renderWorkPage(string $title, string $contentView, array $contentData = []): string
|
||||
{
|
||||
$content = view($contentView, $contentData);
|
||||
$uri = service('request')->getUri();
|
||||
$seg1 = $uri->getSegment(1);
|
||||
$seg2 = $uri->getSegment(2);
|
||||
|
||||
// 지정판매소 관리는 관리자 전용 기능으로, /bag 경로여도 관리자 레이아웃을 유지한다.
|
||||
$forceAdminLayoutOnBag = ($seg1 === 'bag' && $seg2 === 'designated-shops');
|
||||
if ($seg1 === 'bag' && ! $forceAdminLayoutOnBag) {
|
||||
return view('bag/layout/main', [
|
||||
'title' => $title,
|
||||
'content' => $content,
|
||||
]);
|
||||
}
|
||||
|
||||
return view('admin/layout', [
|
||||
'title' => $title,
|
||||
'content' => $content,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,11 +16,16 @@ class Home extends BaseController
|
||||
}
|
||||
|
||||
/**
|
||||
* 로그인 후 원래 메인 화면 (admin 유사 레이아웃 + site 메뉴 호버 드롭다운)
|
||||
* 로그인 후 메인 — site 메뉴 레이아웃 + 종합·그래프(blend) 본문
|
||||
*/
|
||||
public function dashboard()
|
||||
{
|
||||
return view('bag/daily_inventory');
|
||||
return view('bag/layout/main', [
|
||||
'title' => '업무 현황 · 종합·그래프',
|
||||
'content' => view('bag/dashboard_blend_inner', [
|
||||
'lgLabel' => $this->resolveLgLabel(),
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,13 +67,11 @@ class Home extends BaseController
|
||||
}
|
||||
|
||||
/**
|
||||
* dense(표·KPI) + charts(Chart.js) 혼합. URL: /dashboard/blend
|
||||
* /dashboard 와 동일 본문(호환 URL)
|
||||
*/
|
||||
public function dashboardBlend()
|
||||
{
|
||||
return view('bag/lg_dashboard_blend', [
|
||||
'lgLabel' => $this->resolveLgLabel(),
|
||||
]);
|
||||
return $this->dashboard();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,4 +117,5 @@ class Home extends BaseController
|
||||
|
||||
return '북구 (데모)';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user