feat: 모든 상위메뉴 소메뉴에 아이콘 표시(기본정보관리 방식 확대)

기본정보관리에만 적용되던 사이드바 소메뉴 아이콘을 전체 상위메뉴로 확대.
전화접수·발주·입고·재고·판매·수불·분석·반품/취소·바코드 등 실제 메뉴명에
맞는 Font Awesome 아이콘 키워드 매핑 확장(서버 렌더 + JS 재구성 동일 유지).
This commit is contained in:
taekyoungc
2026-07-14 12:09:31 +09:00
parent b814892352
commit f624c13b5b
2 changed files with 73 additions and 24 deletions

View File

@@ -6,17 +6,31 @@
var listEl = document.getElementById('portalSidebarList'); var listEl = document.getElementById('portalSidebarList');
var titleEl = document.getElementById('portalSidebarTitle'); var titleEl = document.getElementById('portalSidebarTitle');
// 기본정보관리 소메뉴 아이콘(Font Awesome solid) — 이름 키워드 기준(구체적인 것 먼저) // 모든 상위메뉴의 소메뉴 아이콘(Font Awesome solid) — 이름 키워드 기준(구체적인 것 먼저).
// 서버 렌더(_dashboard_gov_portal_sidebar.php)의 매핑과 동일하게 유지할 것.
function sidebarIcon(name) { function sidebarIcon(name) {
var n = String(name || ''); var n = String(name || '');
var rules = [ var rules = [
['바코드', 'fa-barcode'], ['조회', 'fa-magnifying-glass'], ['바코드', 'fa-barcode'], ['스캐너', 'fa-barcode'], ['번호', 'fa-hashtag'],
['신규', 'fa-chart-column'], ['현황', 'fa-chart-column'], ['판매대장', 'fa-book'], ['대장', 'fa-book'],
['판매소', 'fa-store'], ['대행소', 'fa-handshake'], ['집계표', 'fa-table-list'], ['일계표', 'fa-table-list'],
['담당자', 'fa-user-tie'], ['업체', 'fa-building'], ['수불', 'fa-right-left'], ['입출고', 'fa-right-left'],
['무료', 'fa-gift'], ['포장', 'fa-box'], ['무료', 'fa-gift'], ['반품', 'fa-rotate-left'], ['파기', 'fa-trash-can'],
['단가', 'fa-won-sign'], ['코드', 'fa-list-ol'], ['신규', 'fa-chart-column'], ['취소', 'fa-ban'],
['비밀번호', 'fa-key'], ['설정', 'fa-gear'] ['발주파일', 'fa-file-arrow-down'], ['발주', 'fa-cart-shopping'],
['입고', 'fa-dolly'], ['재고', 'fa-warehouse'], ['불출', 'fa-truck-ramp-box'],
['전화', 'fa-phone'], ['접수', 'fa-clipboard-list'],
['판매현황', 'fa-chart-column'], ['판매소', 'fa-store'], ['대행소', 'fa-handshake'],
['담당자', 'fa-user-tie'], ['대상자', 'fa-user-check'], ['업체', 'fa-building'],
['단가', 'fa-won-sign'], ['코드', 'fa-list-ol'], ['포장', 'fa-box'],
['계획', 'fa-clipboard-check'], ['실사', 'fa-clipboard-check'],
['분석', 'fa-chart-line'], ['추이', 'fa-chart-line'], ['통계', 'fa-chart-line'],
['홈텍스', 'fa-file-invoice-dollar'], ['판매', 'fa-cash-register'],
['현황', 'fa-chart-column'], ['조회', 'fa-magnifying-glass'],
['대시보드', 'fa-gauge-high'], ['회원', 'fa-users'], ['승인', 'fa-user-check'],
['로그', 'fa-clock-rotate-left'], ['이력', 'fa-clock-rotate-left'],
['메뉴', 'fa-bars'], ['지자체', 'fa-city'], ['문의', 'fa-comment-dots'],
['비밀번호', 'fa-key'], ['설정', 'fa-gear'], ['관리', 'fa-folder-open']
]; ];
for (var i = 0; i < rules.length; i++) { for (var i = 0; i < rules.length; i++) {
if (n.indexOf(rules[i][0]) !== -1) return rules[i][1]; if (n.indexOf(rules[i][0]) !== -1) return rules[i][1];
@@ -25,7 +39,6 @@
return 'fa-angle-right'; return 'fa-angle-right';
} }
function iconHtml(parentName, childName) { function iconHtml(parentName, childName) {
if (String(parentName || '').replace(/\s/g, '') !== '기본정보관리') return '';
return '<i class="fa-solid ' + sidebarIcon(childName) + '" style="width:1.15em;margin-right:.45em;opacity:.85;"></i>'; return '<i class="fa-solid ' + sidebarIcon(childName) + '" style="width:1.15em;margin-right:.45em;opacity:.85;"></i>';
} }

View File

@@ -7,24 +7,60 @@ $activeParent = $govNavItems[$govActiveParentIdx] ?? $govNavItems[0] ?? null;
$sidebarTitle = $activeParent['name'] ?? 'MY MENU'; $sidebarTitle = $activeParent['name'] ?? 'MY MENU';
$activeChildHref = strtolower(ltrim((string) ($govActiveChildHref ?? ''), '/')); $activeChildHref = strtolower(ltrim((string) ($govActiveChildHref ?? ''), '/'));
// 기본정보관리 소메뉴에 어울리는 아이콘(Font Awesome solid) 매핑 — 이름 키워드 기준(구체적인 것 먼저) // 모든 상위메뉴의 소메뉴에 어울리는 아이콘(Font Awesome solid) 매핑 — 이름 키워드 기준(구체적인 것 먼저).
$showSidebarIcons = (str_replace(' ', '', (string) $sidebarTitle) === '기본정보관리'); $showSidebarIcons = true;
$sidebarIconFor = static function (string $name): string { $sidebarIconFor = static function (string $name): string {
$rules = [ $rules = [
'바코드' => 'fa-barcode', // 지정판매소 바코드 출력 '바코드' => 'fa-barcode',
'조회' => 'fa-magnifying-glass', // 지정 판매소 조회 '스캐너' => 'fa-barcode',
'신규' => 'fa-chart-column', // 지정 판매소 신규/취소 현황 '번호' => 'fa-hashtag',
'현황' => 'fa-chart-column', '판매대장' => 'fa-book',
'판매소' => 'fa-store', // 지정 판매소 관리 '대장' => 'fa-book',
'집계표' => 'fa-table-list',
'일계표' => 'fa-table-list',
'수불' => 'fa-right-left',
'입출고' => 'fa-right-left',
'무료' => 'fa-gift',
'반품' => 'fa-rotate-left',
'파기' => 'fa-trash-can',
'신규' => 'fa-chart-column',
'취소' => 'fa-ban',
'발주파일' => 'fa-file-arrow-down',
'발주' => 'fa-cart-shopping',
'입고' => 'fa-dolly',
'재고' => 'fa-warehouse',
'불출' => 'fa-truck-ramp-box',
'전화' => 'fa-phone',
'접수' => 'fa-clipboard-list',
'판매현황' => 'fa-chart-column',
'판매소' => 'fa-store',
'대행소' => 'fa-handshake', '대행소' => 'fa-handshake',
'담당자' => 'fa-user-tie', '담당자' => 'fa-user-tie',
'대상자' => 'fa-user-check',
'업체' => 'fa-building', '업체' => 'fa-building',
'무료' => 'fa-gift',
'포장' => 'fa-box',
'단가' => 'fa-won-sign', '단가' => 'fa-won-sign',
'코드' => 'fa-list-ol', '코드' => 'fa-list-ol',
'포장' => 'fa-box',
'계획' => 'fa-clipboard-check',
'실사' => 'fa-clipboard-check',
'분석' => 'fa-chart-line',
'추이' => 'fa-chart-line',
'통계' => 'fa-chart-line',
'홈텍스' => 'fa-file-invoice-dollar',
'판매' => 'fa-cash-register',
'현황' => 'fa-chart-column',
'조회' => 'fa-magnifying-glass',
'대시보드' => 'fa-gauge-high',
'회원' => 'fa-users',
'승인' => 'fa-user-check',
'로그' => 'fa-clock-rotate-left',
'이력' => 'fa-clock-rotate-left',
'메뉴' => 'fa-bars',
'지자체' => 'fa-city',
'문의' => 'fa-comment-dots',
'비밀번호' => 'fa-key', '비밀번호' => 'fa-key',
'설정' => 'fa-gear', '설정' => 'fa-gear',
'관리' => 'fa-folder-open',
]; ];
foreach ($rules as $kw => $icon) { foreach ($rules as $kw => $icon) {
if (mb_stripos($name, $kw) !== false) { if (mb_stripos($name, $kw) !== false) {