feat: improve admin master data management

This commit is contained in:
taekyoungc
2026-04-08 00:19:00 +09:00
parent 89f80edc5d
commit 984ddb403e
35 changed files with 490 additions and 320 deletions

View File

@@ -4,6 +4,27 @@ $list = $list ?? [];
$mtIdx = (int) ($mtIdx ?? 0);
$mtCode = (string) ($mtCode ?? '');
$levelNames = $levelNames ?? [];
helper('admin');
$adminMenusNavPath = current_nav_request_path();
/**
* 메뉴 관리 목록용: 저장된 mm_link → 실제 href (외부 http(s) 또는 base_url).
*/
$adminMenuListResolveHref = static function (string $rawLink) use ($adminMenusNavPath): string {
$rawLink = trim($rawLink);
if ($rawLink === '') {
return '';
}
if (preg_match('#^https?://#i', $rawLink)) {
return $rawLink;
}
$pathSeg = menu_link_preferred_href_path($rawLink, $adminMenusNavPath);
if ($pathSeg === '') {
$pathSeg = normalize_menu_link_for_url($rawLink);
}
return $pathSeg !== '' ? base_url($pathSeg) : '';
};
?>
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<div class="flex flex-wrap items-center justify-between gap-y-2">
@@ -48,6 +69,10 @@ $levelNames = $levelNames ?? [];
</thead>
<tbody>
<?php foreach ($list as $i => $row): ?>
<?php
$rawLink = trim((string) $row->mm_link);
$listItemHref = $rawLink !== '' ? $adminMenuListResolveHref($rawLink) : '';
?>
<tr class="menu-row" data-mm-idx="<?= (int) $row->mm_idx ?>" data-mm-pidx="<?= (int) $row->mm_pidx ?>" data-mm-dep="<?= (int) $row->mm_dep ?>">
<td class="text-center align-middle">
<span class="menu-drag-handle cursor-move text-gray-400 select-none" title="드래그해서 순서를 변경하세요">↕</span>
@@ -67,9 +92,21 @@ $levelNames = $levelNames ?? [];
└─
<?php endif; ?>
</span>
<?php if ($listItemHref !== ''): ?>
<a href="<?= esc($listItemHref) ?>" class="ml-1 text-gray-900 hover:text-blue-700 hover:underline font-medium" target="_blank" rel="noopener noreferrer"><?= esc($row->mm_name) ?></a>
<?php else: ?>
<span class="ml-1"><?= esc($row->mm_name) ?></span>
<?php endif; ?>
</td>
<td class="text-left pl-2 text-xs">
<?php if ($rawLink === ''): ?>
<span class="text-gray-400">—</span>
<?php elseif ($listItemHref !== ''): ?>
<a href="<?= esc($listItemHref) ?>" class="text-blue-600 hover:underline font-medium break-all" target="_blank" rel="noopener noreferrer"><?= esc($rawLink) ?></a>
<?php else: ?>
<span class="text-amber-700" title="URL로 해석되지 않는 링크입니다"><?= esc($rawLink) ?></span>
<?php endif; ?>
</td>
<td class="text-left pl-2 text-xs"><?= esc($row->mm_link) ?></td>
<td class="text-left pl-2 text-xs">
<?php
if ((string) $row->mm_level === '') {