auth_check_menu() 둜 ν•¨μˆ˜λͺ… μˆ˜μ • auth_check_menu($auth, $sub_menu, 'r'); if ($is_admin != 'super') { alert('μ΅œκ³ κ΄€λ¦¬μžλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•©λ‹ˆλ‹€.'); } $g5['title'] = '메뉴 μ„€μ •'; include_once('./admin.head.php'); // ν…Œμ΄λΈ” μžλ™ 생성 둜직 if (!isset($g5['menu_table'])) { die('dbconfig.php νŒŒμΌμ— $g5[\'menu_table\'] = G5_TABLE_PREFIX.\'menu\'; λ₯Ό μΆ”κ°€ν•΄ μ£Όμ„Έμš”.'); } if (!sql_query(" DESCRIBE {$g5['menu_table']} ", false)) { sql_query( " CREATE TABLE `{$g5['menu_table']}` ( `me_id` int NOT NULL AUTO_INCREMENT, `me_parent_id` int NOT NULL DEFAULT '0' COMMENT 'λΆ€λͺ¨ 메뉴 ID', `me_depth` tinyint NOT NULL DEFAULT '1' COMMENT '메뉴 깊이 (1뎁슀=1)', `me_code` varchar(255) NOT NULL DEFAULT '', `me_name` varchar(255) NOT NULL DEFAULT '', `me_link` varchar(255) NOT NULL DEFAULT '', `me_target` varchar(255) NOT NULL DEFAULT '', `me_order` int NOT NULL DEFAULT '0', `me_use` tinyint NOT NULL DEFAULT '0', `me_mobile_use` tinyint NOT NULL DEFAULT '0', `me_level` tinyint NOT NULL DEFAULT '1' COMMENT 'μ ‘κ·ΌκΆŒν•œ', `me_level_opt` tinyint NOT NULL DEFAULT '1' COMMENT 'κΆŒν•œμ˜΅μ…˜', `me_created_by` varchar(20) NOT NULL DEFAULT '' COMMENT 'μƒμ„±μž', `me_updated_by` varchar(20) NOT NULL DEFAULT '' COMMENT 'μˆ˜μ •μž', `me_created_at` datetime DEFAULT NULL COMMENT '생성일', `me_updated_at` datetime DEFAULT NULL COMMENT 'μˆ˜μ •μΌ', `me_deleted_at` datetime DEFAULT NULL COMMENT 'μ‚­μ œμΌ', PRIMARY KEY (`me_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ", true ); } if (!sql_query(" DESCRIBE g5_menu_history ", false)) { sql_query( " CREATE TABLE `g5_menu_history` ( `mh_id` int NOT NULL AUTO_INCREMENT COMMENT '이λ ₯ ID', `me_id` int NOT NULL COMMENT '메뉴 ID', `mh_action` enum('생성','μˆ˜μ •','μ‚­μ œ') NOT NULL COMMENT 'μž‘μ—… μ’…λ₯˜', `mh_data_before` json DEFAULT NULL COMMENT 'λ³€κ²½ μ „ 데이터', `mh_data_after` json DEFAULT NULL COMMENT 'λ³€κ²½ ν›„ 데이터', `mh_editor` varchar(20) NOT NULL COMMENT 'μž‘μ—…μž', `mh_ip` varchar(100) NOT NULL COMMENT 'μž‘μ—…μž IP', `mh_datetime` datetime NOT NULL COMMENT 'μž‘μ—…μΌμ‹œ', PRIMARY KEY (`mh_id`), KEY `me_id` (`me_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='메뉴 λ³€κ²½ 이λ ₯' ", true ); } // jsTree 라이브러리λ₯Ό 이 νŽ˜μ΄μ§€μ—μ„œλ§Œ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. add_stylesheet('', 0); add_javascript('', 0); // 1. λͺ¨λ“  메뉴 데이터λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€. $sql = "SELECT * FROM {$g5['menu_table']} WHERE me_deleted_at IS NULL ORDER BY me_parent_id, me_order, me_id"; $result = sql_query($sql); // 2. jsTreeμ—μ„œ μ‚¬μš©ν•  JSON 데이터 ν˜•μ‹μœΌλ‘œ κ°€κ³΅ν•©λ‹ˆλ‹€. $menu_data_for_tree = []; while ($row = sql_fetch_array($result)) { $prefix = ($row['me_depth'] > 1) ? 'β”” ' : ''; $menu_data_for_tree[] = [ 'id' => $row['me_id'], 'parent' => $row['me_parent_id'] > 0 ? $row['me_parent_id'] : '#', 'text' => $prefix . get_text($row['me_name']), 'data' => $row ]; } // πŸ’‘ [핡심] ν…Œλ§ˆμ˜ page μŠ€ν‚¨ 폴더 λͺ©λ‘μ„ κ°€μ Έμ˜΅λ‹ˆλ‹€. $page_path = G5_THEME_PATH . '/skin/page'; $page_list = []; if (is_dir($page_path)) { $handle = opendir($page_path); while ($file = readdir($handle)) { if ($file == '.' || $file == '..') { continue; } if (is_dir($page_path . '/' . $file)) { $page_list[] = $file; } } closedir($handle); sort($page_list); } ?>

μ™Όμͺ½ νŠΈλ¦¬μ—μ„œ 메뉴λ₯Ό λ“œλž˜κ·Έν•˜μ—¬ μˆœμ„œμ™€ 계측을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. (μ΅œλŒ€ 2뎁슀)
메뉴λ₯Ό ν΄λ¦­ν•˜λ©΄ 였λ₯Έμͺ½μ—μ„œ 상세 정보λ₯Ό μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  변경사항은 '전체 메뉴 μ €μž₯' λ²„νŠΌμ„ λˆŒλŸ¬μ•Ό μ΅œμ’… λ°˜μ˜λ©λ‹ˆλ‹€.