update admin menu

This commit is contained in:
Amberstone 2024-09-21 10:14:04 +09:00
parent e44492d5fc
commit 0efc73a251
Signed by: amber
GPG key ID: 094B0E55F98D8BF1
15 changed files with 235 additions and 100 deletions

View file

@ -0,0 +1,22 @@
<?php
$menu["board"] = new MenuCategory("board", "board", "게시판관리", "/board_list.php", true, 2, "", 0);
$menu["board"]->addChildMenu("member", "게시판관리", G5_ADMIN_URL . "/board_list.php", true, 1, "gear-wide-connected", 0);
$menu["board"]->getLastAddedMenu()->addSubURL("/board_list_update.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/board_form.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/board_form_update.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/board_delete.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/board_copy.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/board_copy_update.php");
$menu["board"]->addChildMenu("member", "게시판그룹관리", G5_ADMIN_URL . "/boardgroup_list.php", true, 2, "gear-wide-connected", 0);
$menu["board"]->getLastAddedMenu()->addSubURL("/boardgroup_list_update.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/boardgroup_form.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/boardgroup_form_update.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/boardgroupmember_list.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/boardgroupmember_update.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/boardgroupmember_form.php");
$menu["board"]->addChildMenu("member", "내용관리", G5_ADMIN_URL . "/contentlist.php", true, 2, "gear-wide-connected", 0);
$menu["board"]->getLastAddedMenu()->addSubURL("/contentform.php");
$menu["board"]->getLastAddedMenu()->addSubURL("/contentformupdate.php");

View file

@ -0,0 +1,22 @@
<?php
$menu["member"] = new MenuCategory("member", "member", "회원관리", "/member_list.php", true, 1, "", 0);
$menu["member"]->addChildMenu("member", "회원관리", G5_ADMIN_URL . "/member_list.php", true, 1, "gear-wide-connected", 0);
$menu["member"]->getLastAddedMenu()->addSubURL("/member_form.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/member_delete.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/member_list_update.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/member_list_delete.php");
$menu["member"]->addChildMenu("member", "접속자집계", G5_ADMIN_URL . "/visit_list.php", true, 2, "grid-1x2", 0);
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_domain.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_browser.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_os.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_device.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_hour.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_date.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_week.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_month.php");
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_year.php");
$menu["member"]->addChildMenu("member", "접속자로그삭제", G5_ADMIN_URL . "/visit_delete.php", true, 3, "palette2", 0);
$menu["member"]->getLastAddedMenu()->addSubURL("/visit_delete_update.php");

View file

@ -0,0 +1,8 @@
<?php
$menu["other"] = new MenuCategory("other", "other", "기타관리", "/config_form.php", true, 99, "", 0);
$menu["other"]->addChildMenu("other", "홈페이지 상세관리", G5_ADMIN_URL . "/config_form.php", true, 1, "gear-wide-connected", 0);
$menu["other"]->getLastAddedMenu()->addSubURL("/config_form_update.php");
$menu["other"]->addChildMenu("other", "세션파일 일괄삭제", G5_ADMIN_URL . "/session_file_delete.php", true, 1, "gear-wide-connected", 0);
$menu["other"]->addChildMenu("other", "캐시파일 일괄삭제", G5_ADMIN_URL . "/cache_file_delete.php", true, 1, "gear-wide-connected", 0);

View file

@ -0,0 +1,22 @@
<?php
$menu["config"] = new MenuCategory("config", "config", "사이트 설정", "/site_config_form.php", true, 0, "", 0);
$menu["config"]->addChildMenu("config", "환경설정", G5_ADMIN_URL . "/site_config_form.php", true, 1, "gear-wide-connected", 0);
$menu["config"]->getLastAddedMenu()->addSubURL("/site_config_form_update.php");
$menu["config"]->addChildMenu("config", "메인 편집", G5_ADMIN_URL . "/viewer_form.php", true, 2, "grid-1x2", 0);
$menu["config"]->getLastAddedMenu()->addSubURL("/viewer_form_update.php");
$menu["config"]->addChildMenu("config", "테마 설정", G5_ADMIN_URL . "/theme.php", true, 3, "palette2", 0);
$menu["config"]->getLastAddedMenu()->addSubURL("/theme_config_load.php");
$menu["config"]->getLastAddedMenu()->addSubURL("/theme_detail.php");
$menu["config"]->getLastAddedMenu()->addSubURL("/theme_update.php");
$menu["config"]->getLastAddedMenu()->addSubURL("/theme_preview.php");
$menu["config"]->addChildMenu("config", "디자인 설정", G5_ADMIN_URL . "/design_form.php", true, 4, "brush", 0);
$menu["config"]->getLastAddedMenu()->addSubURL("/design_form_update.php");
$menu["config"]->addChildMenu("config", "메뉴 설정", G5_ADMIN_URL . "/menu_list.php", true, 5, "list", 0);
$menu["config"]->getLastAddedMenu()->addSubURL("/menu_list_update.php");
$menu["config"]->getLastAddedMenu()->addSubURL("/menu_form.php");
$menu["config"]->getLastAddedMenu()->addSubURL("/menu_form_search.php");

View file

@ -1,49 +0,0 @@
<?php
if (!defined('_GNUBOARD_'))
exit;
class Menu
{
public $mid;
public $name;
public $order;
public $target;
public $icon;
public $gnb_grp_div;
public function __construct($mid, $name, $target, $order = 0, $icon = "", $gnb_grp_div = 0)
{
$this->mid = $mid;
$this->name = $name;
$this->order = $order;
$this->target = $target;
$this->icon = $icon;
$this->gnb_grp_div = $gnb_grp_div;
}
}
class MenuCategory extends Menu
{
public $key;
public $childmenu;
public function __construct($key, $mid, $name, $target, $order = 0, $icon = '', $gnb_grp_div = 0)
{
$this->key = $key;
$this->childmenu = [];
parent::__construct($mid, $name, $target, $order, $icon, $gnb_grp_div);
}
public function addChildMenu($mid, $name, $target, $order = 0, $icon = '', $gnb_grp_div = 0)
{
$this->childmenu[] = new Menu($mid, $name, $target, $order, $icon, $gnb_grp_div);
usort($this->childmenu, function($a, $b) {
return $a->order - $b->order;
});
}
public function buildHtml()
{
global $g5, $is_admin, $auth, $menu, $auth_menu, $sub_menu;
}
}

View file

@ -95,20 +95,13 @@ function print_menu2($key, $no)
</ul>
<?php
$gnb_str = "<ul>";
foreach ($amenu as $key => $value) {
$href1 = $href2 = '';
if ($menu['menu' . $key][0][2]) {
$href1 = '<a href="' . $menu['menu' . $key][0][2] . '" class="gnb_1da" data-text="' . $menu['menu' . $key][0][1] . '">';
$href2 = '</a>';
} else {
continue;
}
foreach ($menu as $key => $menuitem) {
$current_class = "";
if (isset($sub_menu) && (substr($sub_menu, 0, 3) == substr($menu['menu' . $key][0][0], 0, 3)))
$current_class = " gnb_1dli_air";
$gnb_str .= '<li class="gnb_1dli' . $current_class . '">' . PHP_EOL;
$gnb_str .= $href1 . $menu['menu' . $key][0][1] . $href2;
$gnb_str .= print_menu1('menu' . $key, 1);
$gnb_str .= "<li class=\"gnb_1dli{$current_class}\" data-text=\"{$menuitem->name}\">" . PHP_EOL;
$gnb_str .= "<a href=\"" . G5_ADMIN_URL . $menuitem->url . "\" class=\"gnb_1da\">";
$gnb_str .= $menuitem->name;
$gnb_str .= "</a>";
$gnb_str .= $menuitem->buildHtml();//print_menu1('menu' . $key, 1);
$gnb_str .= "</li>";
}
$gnb_str .= "</ul>";

View file

@ -444,20 +444,19 @@ if (get_session('ss_mb_key') !== $admin_key) {
// 가변 메뉴
unset($auth_menu);
unset($menu);
unset($amenu);
$tmp = dir(G5_ADMIN_PATH);
$menu = [];
$amenu = [];
while ($entry = $tmp->read()) {
if (preg_match('/(.*?)\.menu\.php$/', $entry, $m)) {
include_once implode(DIRECTORY_SEPARATOR, [G5_ADMIN_PATH, $entry]);
$amenu[$m[1]] = $entry;
}
}
@ksort($amenu);
usort($menu, function($a, $b) {
return $a->order - $b->order;
});
$arr_query = [];
if (isset($sst))

View file

@ -1,10 +0,0 @@
<?php
$menu['menu100'] = [
['100000', '사이트 설정', G5_ADMIN_URL . '/site_config_form.php', 'config'],
['100100', '환경설정', G5_ADMIN_URL . '/site_config_form.php', ''],
['100250', '메인 편집', G5_ADMIN_URL . '/viewer_form.php', ''],
['100280', '테마 설정', G5_ADMIN_URL . '/theme.php', 'cf_theme', 1],
['100300', '디자인 설정', G5_ADMIN_URL . '/design_form.php', ''],
['100400', '메뉴 설정', G5_ADMIN_URL . '/menu_list.php', ''],
['100990', 'DB관리', G5_DB_URL, '']
];

View file

@ -1,7 +0,0 @@
<?php
$menu['menu200'] = [
['200000', '회원관리', G5_ADMIN_URL . '/member_list.php', ''],
['200100', '회원관리', G5_ADMIN_URL . '/member_list.php', ''],
['200800', '접속자집계', G5_ADMIN_URL . '/visit_list.php', ''],
['200820', '접속자로그삭제', G5_ADMIN_URL . '/visit_delete.php', ''],
];

View file

@ -1,7 +0,0 @@
<?php
$menu['menu300'] = [
['300000', '게시판관리', '' . G5_ADMIN_URL . '/board_list.php', 'board'],
['300100', '게시판관리', '' . G5_ADMIN_URL . '/board_list.php', 'bbs_board'],
['300200', '게시판그룹관리', '' . G5_ADMIN_URL . '/boardgroup_list.php', 'bbs_group'],
['300600', '내용관리', G5_ADMIN_URL . '/contentlist.php', 'scf_contents', 1],
];

View file

@ -1,7 +0,0 @@
<?php
$menu['menu900'] = [
['900000', '기타관리', G5_ADMIN_URL . '/session_file_delete.php', ''],
['900100', '홈페이지 상세관리', G5_ADMIN_URL . '/config_form.php', 'cf_thumbnail', 1],
['900200', '세션파일 일괄삭제', G5_ADMIN_URL . '/session_file_delete.php', 'cf_session', 1],
['900300', '캐시파일 일괄삭제', G5_ADMIN_URL . '/cache_file_delete.php', 'cf_cache', ],
];

View file

@ -0,0 +1,3 @@
<?php
if (!defined('_GNUBOARD_'))
exit;

View file

@ -0,0 +1,32 @@
<?php
if (!defined("__ADVDIR__"))
exit();
class Menu
{
public $mid;
public $name;
public $order;
public $url;
public $suburl;
public $icon;
public $gnb_grp_div;
public $display;
public function __construct($mid, $name, $url, $display = true, $order = 0, $icon = "", $gnb_grp_div = 0)
{
$this->display = $display;
$this->mid = $mid;
$this->name = $name;
$this->order = $order;
$this->url = $url;
$this->icon = $icon;
$this->gnb_grp_div = $gnb_grp_div;
}
public function addSubURL($url)
{
if (!in_array($url, $this->suburl))
$this->suburl[] = $url;
}
}

View file

@ -0,0 +1,82 @@
<?php
if (!defined("__ADVDIR__"))
exit();
// if not loaded load directly
include_once __ADVDIR__ . "/classes/menu/menu.class.php";
class MenuCategory extends Menu
{
public $last_menu;
public $key;
public $childmenu;
public function __construct($key, $mid, $name, $url, $display = true, $order = 0, $icon = '', $gnb_grp_div = 0)
{
$this->key = $key;
$this->childmenu = [];
parent::__construct($mid, $name, $url, $display, $order, $icon, $gnb_grp_div);
}
public function addChild($childMenu)
{
$this->last_menu = $childMenu;
$this->childmenu[] = $childMenu;
$this->orderMenu();
}
public function addChildMenu($mid, $name, $url, $display = true, $order = 0, $icon = '', $gnb_grp_div = 0)
{
$menuitem = new Menu($mid, $name, $url, $display, $order, $icon, $gnb_grp_div);
$this->last_menu = $menuitem;
$this->childmenu[] = $menuitem;
$this->orderMenu();
}
public function orderMenu()
{
usort($this->childmenu, function($a, $b) {
return $a->order - $b->order;
});
}
public function getLastAddedMenu()
{
return $this->last_menu;
}
public function buildHtml()
{
global $g5, $is_admin, $auth, $menu, $auth_menu;
$sub_menu = str_replace([G5_ADMIN_URL, "/adm"], ["", ""], $_SERVER["SCRIPT_NAME"]);
$str = "<ul class=\"gnb_2dul\">";
foreach($this->childmenu as $key => $menu) {
if ($is_admin != 'super')
continue;
if (!$menu->display) continue;
if (($menu->gnb_grp_div == 1 && $gnb_grp_style == false) || ($menu->gnb_grp_div != 1 && $gnb_grp_style == true))
$gnb_grp_div = 'gnb_grp_div';
else
$gnb_grp_div = '';
if ($menu->gnb_grp_div == 1)
$gnb_grp_style = 'gnb_grp_style';
else
$gnb_grp_style = '';
$check_gnb_grp_style = "";
if (str_replace([G5_ADMIN_URL, "/adm"], ["", ""], $menu->url) == $sub_menu || in_array($sub_menu, $menu->suburl)) {
$check_gnb_grp_style = "check";
}
$str .= '<li class="gnb_2dli ' . $check_gnb_grp_style . '"><a href="' . $menu->url . '" class="gnb_2da ' . $gnb_grp_style . ' ' . $gnb_grp_div . '" data-text="' . $menu->name . '">' . $menu->name . '</a></li>';
}
$str .= "</ul>";
return $str;
}
}

View file

@ -9,8 +9,11 @@ header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV
if (!defined('G5_SET_TIME_LIMIT'))
define('G5_SET_TIME_LIMIT', 0);
@set_time_limit(G5_SET_TIME_LIMIT);
define("__ADVDIR__", __DIR__);
//==========================================================================================================================
// extract($_GET); 명령으로 인해 page.php?_POST[var1]=data1&_POST[var2]=data2 와 같은 코드가 _POST 변수로 사용되는 것을 막음
// 081029 : letsgolee 님께서 도움 주셨습니다.
@ -44,6 +47,38 @@ for ($i = 0; $i < $ext_cnt; $i++) {
}
//==========================================================================================================================
/**
* Summary of load_libs
* @param mixed $base_dir
* @throws \Exception
* @return string[]
*/
function load_libs($base_dir)
{
$base_path = realpath($base_dir);
if ($base_path === false) {
throw new Exception("지정된 기본 디렉토리를 찾을 수 없습니다: $base_dir");
}
$loaded_files = [];
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($base_path, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $file) {
if ($file->isDir()) {
$parent_folder_name = $file->getFilename();
$class_file = $file->getPathname() . DIRECTORY_SEPARATOR . $parent_folder_name . '.class.php';
if (file_exists($class_file)) {
require_once $class_file;
$loaded_files[] = $class_file;
}
}
}
return $loaded_files;
}
$_system = new stdClass;
$_system->classes = load_libs(__DIR__ . "/classes");
function g5_path()
{
@ -704,15 +739,12 @@ $faq_skin_url = get_skin_url('faq', $config['cf_faq_skin']);
//==============================================================================
// 방문자수의 접속을 남김
include_once (G5_BBS_PATH . '/visit_insert.inc.php');
// 일정 기간이 지난 DB 데이터 삭제 및 최적화
include_once (G5_BBS_PATH . '/db_table.optimize.php');
// common.php 파일을 수정할 필요가 없도록 확장합니다.
$extend_file = array();
$tmp = dir(G5_EXTEND_PATH);