This commit is contained in:
Amberstone 2024-11-09 16:31:59 +09:00
commit 023e6a2638
Signed by: amber
GPG key ID: 094B0E55F98D8BF1
3 changed files with 568 additions and 0 deletions

171
adm/menu_form.php Normal file
View file

@ -0,0 +1,171 @@
<?php
$sub_menu = "100320";
include_once('./_common.php');
if ($is_admin != 'super')
alert_close('최고관리자만 접근 가능합니다.');
$g5['title'] = '메뉴 추가';
include_once(G5_PATH . '/head.sub.php');
// 코드
if ($new == 'new' || !$code) {
$code = base_convert(substr($code, 0, 2), 36, 10);
$code += 36;
$code = base_convert($code, 10, 36);
}
?>
<style>
body {
min-width: 100%;
}
</style>
<div id="menu_frm" class="new_win">
<h1><?php echo $g5['title']; ?></h1>
<form name="fmenuform" id="fmenuform" enctype="multipart/form-data">
<div class="new_win_desc">
<label for="me_type">대상선택</label>
<select name="me_type" id="me_type">
<option value="">직접입력</option>
<option value="board">게시판</option>
<option value="content">페이지</option>
</select>
</div>
<div id="menu_result"></div>
</form>
</div>
<script>
$(function () {
$("#menu_result").load(
"./menu_form_search.php"
);
$("#me_type").on("change", function () {
var type = $(this).val();
$("#menu_result").empty().load(
"./menu_form_search.php",
{ type: type }
);
});
$(document).on("click", "#add_manual", function () {
var me_name = $.trim($("#me_name").val());
var me_link = $.trim($("#me_link").val());
add_menu_list(me_name, me_link, "<?php echo $code; ?>");
});
$(document).on("click", ".add_select", function () {
var me_name = $.trim($(this).siblings("input[name='subject[]']").val());
var me_link = $.trim($(this).siblings("input[name='link[]']").val());
add_menu_list(me_name, me_link, "<?php echo $code; ?>");
});
});
function add_menu_list(name, link, code) {
var $menulist = $("#menulist", opener.document);
var ms = new Date().getTime();
var sub_menu_class;
<?php if ($new == 'new') { ?>
sub_menu_class = " class=\"td_category\"";
<?php } else { ?>
sub_menu_class = " class=\"td_category sub_menu_class\"";
<?php } ?>
var list = "<tr class=\"menu_list menu_group_<?php echo $code; ?>\">";
list += "<td" + sub_menu_class + ">";
list += "<input type=\"hidden\" name=\"code[]\" value=\"<?php echo $code; ?>\">";
list += "<input type=\"text\" name=\"me_name[]\" value=\"" + name + "\" id=\"me_name_" + ms + "\" required class=\"required frm_input full_input\">";
list += "</td>";
list += "<td>";
list += "<?php echo $code; ?>";
list += "</td>";
list += "<td>";
list += "<input type=\"text\" name=\"me_parent[]\" value=\"\" id=\"me_parent_" + ms + "\" class=\"frm_input\" size=8>";
list += "</td>";
list += "<td>";
list += "<input type=\"text\" name=\"me_depth[]\" value=\"\" id=\"me_depth_" + ms + "\" class=\"frm_input\" size=8>";
list += "</td>";
list += "<td>-</td><td class='txt-left'>";
list += "파일 <input type=\"file\" name=\"me_img_file[]\" id=\"me_img_" + ms + "\" class=\"frm_input full_input\" style=\"width:80%\">";
list += "<p>외부링크 <input type=\"text\" name=\"me_img[]\" id=\"me_img_" + ms + "\" class=\"frm_input full_input\" style=\"width:80%\"></p>";
list += "</td>";
list += "<td>-</td><td class='txt-left'>";
list += "파일 <input type=\"file\" name=\"me_img2_file[]\" id=\"me_img2_" + ms + "\" class=\"frm_input full_input\" style=\"width:80%\">";
list += "<p>외부링크 <input type=\"text\" name=\"me_img2[]\" id=\"me_img2_" + ms + "\" class=\"frm_input full_input\" style=\"width:80%\"></p>";
list += "</td>";
list += "<td>";
list += "<input type=\"text\" name=\"me_link[]\" value=\"" + link + "\" id=\"me_link_" + ms + "\" required class=\"required frm_input full_input\" style=\"width:90%\">";
list += "</td>";
list += "<td class=\"td_mng\">";
list += "<select name=\"me_target[]\" id=\"me_target_" + ms + "\">";
list += "<option value=\"self\">현재창</option>";
list += "<option value=\"blank\">새창</option>";
list += "</select>";
list += "</td>";
list += "<td class=\"td_numsmall\">";
list += "<input type=\"text\" name=\"me_order[]\" value=\"0\" id=\"me_order_" + ms + "\" required class=\"required frm_input\" size=\"5\">";
list += "</td>";
list += "<td class=\"td_mngsmall\">";
list += "<select name=\"me_level[]\" id=\"me_level_" + ms + "\">";
list += "<option value=\"1\">1</option>";
list += "<option value=\"2\">2</option>";
list += "<option value=\"3\">3</option>";
list += "<option value=\"4\">4</option>";
list += "<option value=\"5\">5</option>";
list += "<option value=\"6\">6</option>";
list += "<option value=\"7\">7</option>";
list += "<option value=\"8\">8</option>";
list += "<option value=\"9\">9</option>";
list += "<option value=\"10\">10</option>";
list += "</select>";
list += "</td>";
list += "<td class=\"td_numsmall\">";
// input -> select 박스로 변경 @221024
list += "<select name=\"me_use[]\" id=\"me_use_" + ms + "\" >";
list += "<option value=\"1\" selected >사용</option>";
list += "<option value=\"0\" >사용안함</option>";
list += "</select>";
list += "</td>";
list += "<td class=\"td_mngsmall\">";
list += "<button type=\"button\" class=\"btn_del_menu\">삭제</button>";
list += "</td>";
list += "</tr>";
var $menu_last = null;
if (code)
$menu_last = $menulist.find("tr.menu_group_" + code + ":last");
else
$menu_last = $menulist.find("tr.menu_list:last");
if ($menu_last.size() > 0) {
$menu_last.after(list);
} else {
if ($menulist.find("#empty_menu_list").size() > 0)
$menulist.find("#empty_menu_list").remove();
$menulist.find("table tbody").append(list);
}
$menulist.find("tr.menu_list").each(function (index) {
$(this).removeClass("bg0 bg1")
.addClass("bg" + (index % 2));
});
window.close();
}
</script>
<?php
include_once(G5_PATH . '/tail.sub.php');
?>

277
adm/menu_list.php Normal file
View file

@ -0,0 +1,277 @@
<?php
$sub_menu = "100320";
include_once('./_common.php');
if ($is_admin != 'super')
alert('최고관리자만 접근 가능합니다.');
// 메뉴테이블 생성
if (!isset($g5['menu_table'])) {
die('<meta charset="utf-8">dbconfig.php 파일에 <strong>$g5[\'menu_table\'] = G5_TABLE_PREFIX.\'menu\';</strong> 를 추가해 주세요.');
}
if (!sql_query(" DESCRIBE {$g5['menu_table']} ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['menu_table']}` (
`me_id` int(11) NOT NULL AUTO_INCREMENT,
`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 '0',
`me_order` int(11) NOT NULL DEFAULT '0',
`me_use` tinyint(4) NOT NULL DEFAULT '0',
`me_mobile_use` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`me_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ", true);
}
$temp = sql_fetch("select * from {$g5['menu_table']}");
if (!isset($temp['me_level'])) {
sql_query(" ALTER TABLE `{$g5['menu_table']}` ADD `me_level` int(11) NOT NULL DEFAULT '1' after `me_mobile_use`, ADD `me_img` varchar(255) NOT NULL DEFAULT '' after `me_name`", false);
}
if (!isset($temp['me_img2'])) {
sql_query(" ALTER TABLE `{$g5['menu_table']}` ADD `me_img2` varchar(255) NOT NULL DEFAULT '' after `me_img`", false);
}
if (!in_array("me_depth", $columns)) {
sql_query("ALTER TABLE {$g5['menu_table']} ADD COLUMN me_depth INT DEFAULT 0");
}
if (!in_array("me_parent", $columns)) {
sql_query("ALTER TABLE {$g5['menu_table']} ADD COLUMN me_parent VARCHAR(50) DEFAULT ''");
}
$sql = " select * from {$g5['menu_table']} order by me_order*1, me_id ";
$result = sql_query($sql);
$g5['title'] = "메뉴설정";
include_once('./admin.head.php');
$colspan = 14;
?>
<div class="local_desc01 local_desc">
<p><strong>주의!</strong> 메뉴설정 작업 반드시 <strong>확인</strong> 누르셔야 저장됩니다.</p>
</div>
<form name="fmenulist" id="fmenulist" method="post" action="./menu_list_update.php"
onsubmit="return fmenulist_submit(this);" enctype="multipart/form-data">
<input type="hidden" name="token" value="">
<div class="btn_add01 btn_add">
<button type="button" onclick="return add_menu();">메뉴추가<span class="sound_only"> 새창</span></button>
</div>
<div id="menulist" class="tbl_head01 tbl_wrap">
<table>
<caption><?php echo $g5['title']; ?> 목록</caption>
<colgroup>
<col style="width:100px;">
<col style="width:80px;">
<col style="width:80px;">
<col style="width:80px;">
<col style="width:80px;">
<col>
<col style="width:80px;">
<col>
<col>
<col style="width:80px;">
<col style="width:80px;">
<col style="width:80px;">
<col style="width:50px;">
<col style="width:80px;">
</colgroup>
<thead>
<tr>
<th scope="col">메뉴</th>
<th scope="col">ID</th>
<th scope="col">부모ID</th>
<th scope="col">깊이</th>
<th scope="col" colspan="2">이미지
<?= help('* 사용하지 않을 경우 공란으로 남겨두시면 됩니다.') ?>
</th>
<th scope="col" colspan="2">마우스오버
<?= help('* 사용하지 않을 경우 공란으로 남겨두시면 됩니다.') ?>
</th>
<th scope="col">링크</th>
<th scope="col">새창</th>
<th scope="col">순서</th>
<th scope="col">권한</th>
<th scope="col">사용</th>
<th scope="col">관리</th>
</tr>
</thead>
<tbody>
<?php
for ($i = 0; $row = sql_fetch_array($result); $i++) {
$bg = 'bg' . ($i % 2);
$sub_menu_class = '';
if (strlen($row['me_code']) == 4) {
$sub_menu_class = ' sub_menu_class';
$sub_menu_info = '<span class="sound_only">' . $row['me_name'] . '의 서브</span>';
$sub_menu_ico = '<span class="sub_menu_ico"></span>';
}
$search = array('"', "'");
$replace = array('&#034;', '&#039;');
$me_name = str_replace($search, $replace, $row['me_name']);
?>
<tr class="<?php echo $bg; ?> menu_list menu_group_<?php echo substr($row['me_code'], 0, 2); ?>">
<td class="td_category<?php echo $sub_menu_class; ?>">
<input type="hidden" name="code[]" value="<?php echo substr($row['me_code'], 0, 2) ?>">
<input type="text" name="me_name[]" value="<?php echo $me_name; ?>"
id="me_name_<?php echo $i; ?>" required class="required frm_input full_input"
style="width:100%;">
</td>
<td>
<?php echo substr($row['me_code'], 0, 2) ?>
</td>
<td>
<input type="text" name="me_parent[]" value="<?php echo $row['me_parent']; ?>"
id="me_name_<?php echo $i; ?>" required class="frm_input"
style="width:100%;" size=8>
</td>
<td>
<input type="text" name="me_depth[]" value="<?php echo $row['me_depth']; ?>"
id="me_name_<?php echo $i; ?>" required class="frm_input"
style="width:100%;" size=8>
</td>
<td>
<?= $row['me_img'] ? '<img src="' . $row['me_img'] . '" style="height:35px;">' : "-"; ?>
</td>
<td class="txt-left">
<p>파일 <input type="file" name="me_img_file[]" " id=" me_img_file_<?php echo $i; ?>"
class=" frm_input full_input" style="width:80%"></p>
<p>외부링크 <input type="text" name="me_img[]" value="<?php echo $row['me_img'] ?>"
id="me_img_<?php echo $i; ?>" class=" frm_input full_input" style="width:80%"></p>
</td>
<td>
<?= $row['me_img2'] ? '<img src="' . $row['me_img2'] . '" style="height:35px;">' : "-"; ?>
</td>
<td class="txt-left">
<p>파일 <input type="file" name="me_img2_file[]" " id=" me_img2_file_<?php echo $i; ?>"
class=" frm_input full_input" style="width:80%"></p>
<p>외부링크 <input type="text" name="me_img2[]" value="<?php echo $row['me_img2'] ?>"
id="me_img2_<?php echo $i; ?>" class=" frm_input full_input" style="width:80%"></p>
</td>
<td>
<input type="text" name="me_link[]" value="<?php echo $row['me_link'] ?>"
id="me_link_<?php echo $i; ?>" required class="required frm_input full_input"
style="width:100%;">
</td>
<td class="td_mng">
<select name="me_target[]" id="me_target_<?php echo $i; ?>">
<option value="self" <?php echo get_selected($row['me_target'], 'self'); ?>>
현재창
</option>
<option value="blank" <?php echo get_selected($row['me_target'], 'blank'); ?>>
새창
</option>
</select>
</td>
<td class="td_num">
<input type="text" name="me_order[]" value="<?php echo $row['me_order'] ?>"
id="me_order_<?php echo $i; ?>" class="frm_input" size="5">
</td>
<td class="td_num">
<select name="me_level[]" id="me_level_<?php echo $i; ?>">
<option value="1" <?= $row['me_level'] == "1" ? "selected" : ""; ?>>1</option>
<option value="2" <?= $row['me_level'] == "2" ? "selected" : ""; ?>>2</option>
<option value="3" <?= $row['me_level'] == "3" ? "selected" : ""; ?>>3</option>
<option value="4" <?= $row['me_level'] == "4" ? "selected" : ""; ?>>4</option>
<option value="5" <?= $row['me_level'] == "5" ? "selected" : ""; ?>>5</option>
<option value="6" <?= $row['me_level'] == "6" ? "selected" : ""; ?>>6</option>
<option value="7" <?= $row['me_level'] == "7" ? "selected" : ""; ?>>7</option>
<option value="8" <?= $row['me_level'] == "8" ? "selected" : ""; ?>>8</option>
<option value="9" <?= $row['me_level'] == "9" ? "selected" : ""; ?>>9</option>
<option value="10" <?= $row['me_level'] == "10" ? "selected" : ""; ?>>10</option>
</select>
</td>
<td class="td_mng"> <?// input -> select 박스로 변경 @221024 ?>
<select name="me_use[]" id="me_use_<?= $i ?>">
<option value="1" <?= $row['me_use'] == 1 ? "selected" : ""; ?>>사용</option>
<option value="0" <?= $row['me_use'] == 0 ? "selected" : ""; ?>>사용안함</option>
</select>
</td>
<td class="td_mng">
<button type="button" class="btn_del_menu">삭제</button>
</td>
</tr>
<?php
}
if ($i == 0)
echo '<tr id="empty_menu_list"><td colspan="' . $colspan . '" class="empty_table">자료가 없습니다.</td></tr>';
?>
</tbody>
</table>
</div>
<div class="btn_confirm01 btn_confirm">
<input type="submit" name="act_button" value="확인" class="btn_submit">
</div>
</form>
<script>
$(function () {
$(document).on("click", ".btn_add_submenu", function () {
var code = $(this).closest("tr").find("input[name='code[]']").val().substr(0, 2);
add_submenu(code);
});
$(document).on("click", ".btn_del_menu", function () {
if (!confirm("메뉴를 삭제하시겠습니까?"))
return false;
var $tr = $(this).closest("tr");
if ($tr.find("td.sub_menu_class").size() > 0) {
$tr.remove();
} else {
var code = $(this).closest("tr").find("input[name='code[]']").val().substr(0, 2);
$("tr.menu_group_" + code).remove();
}
if ($("#menulist tr.menu_list").size() < 1) {
var list = "<tr id=\"empty_menu_list\"><td colspan=\"<?php echo $colspan; ?>\" class=\"empty_table\">자료가 없습니다.</td></tr>\n";
$("#menulist table tbody").append(list);
} else {
$("#menulist tr.menu_list").each(function (index) {
$(this).removeClass("bg0 bg1")
.addClass("bg" + (index % 2));
});
}
});
});
function add_menu() {
var max_code = base_convert(0, 10, 36);
$("#menulist tr.menu_list").each(function () {
var me_code = $(this).find("input[name='code[]']").val().substr(0, 2);
if (max_code < me_code)
max_code = me_code;
});
var url = "./menu_form.php?code=" + max_code + "&new=new";
window.open(url, "add_menu", "left=100,top=100,width=550,height=650,scrollbars=yes,resizable=yes");
return false;
}
function add_submenu(code) {
var url = "./menu_form.php?code=" + code;
window.open(url, "add_menu", "left=100,top=100,width=550,height=650,scrollbars=yes,resizable=yes");
return false;
}
function base_convert(number, frombase, tobase) {
// discuss at: http://phpjs.org/functions/base_convert/
// original by: Philippe Baumann
// improved by: Rafał Kukawski (http://blog.kukawski.pl)
// example 1: base_convert('A37334', 16, 2);
// returns 1: '101000110111001100110100'
return parseInt(number + '', frombase | 0)
.toString(tobase | 0);
}
function fmenulist_submit(f) {
return true;
}
</script>
<?php
include_once('./admin.tail.php');
?>

120
adm/menu_list_update.php Normal file
View file

@ -0,0 +1,120 @@
<?php
$sub_menu = "100320";
include_once('./_common.php');
check_demo();
if ($is_admin != 'super')
alert('최고관리자만 접근 가능합니다.');
check_admin_token();
// 이전 메뉴정보 삭제
$sql = " delete from {$g5['menu_table']} ";
sql_query($sql);
$group_code = null;
$primary_code = null;
$count = count($_POST['code']);
$site_path = G5_DATA_PATH . '/site';
$site_url = G5_DATA_URL . '/site';
@mkdir($site_path, G5_DIR_PERMISSION);
@chmod($site_path, G5_DIR_PERMISSION);
for ($i = 0; $i < $count; $i++) {
$img_link = $_POST['me_img'][$i];
if ($_FILES['me_img_file']['name'][$i]) {
if (!preg_match("/\.(gif|jpg|png)$/i", $_FILES['me_img_file']['name'][$i])) {
alert("이미지가 gif, jpg, png 파일이 아닙니다.");
} else {
// 확장자 따기
$exp = explode(".", $_FILES['me_img_file']['name'][$i]);
$exp = $exp[count($exp) - 1];
$image_name = time() . $i . "." . $exp;
upload_file($_FILES['me_img_file']['tmp_name'][$i], $image_name, $site_path);
$img_link = $site_url . "/" . $image_name;
}
}
$img_link2 = $_POST['me_img2'][$i];
if ($_FILES['me_img2_file']['name'][$i]) {
if (!preg_match("/\.(gif|jpg|png)$/i", $_FILES['me_img2_file']['name'][$i])) {
alert("이미지가 gif, jpg, png 파일이 아닙니다.");
} else {
// 확장자 따기
$exp = explode(".", $_FILES['me_img2_file']['name'][$i]);
$exp = $exp[count($exp) - 1];
$image_name = time() . $i . "_o." . $exp;
upload_file($_FILES['me_img2_file']['tmp_name'][$i], $image_name, $site_path);
$img_link2 = $site_url . "/" . $image_name;
}
}
$_POST = array_map_deep('trim', $_POST);
$code = $_POST['code'][$i];
$me_name = $_POST['me_name'][$i];
$me_link = $_POST['me_link'][$i];
$me_depth = 0;
$me_parent = 0;
if (array_key_exists("me_depth", $_POST) && $_POST["me_depth"][$i] != "") {
$me_depth = intval($_POST["me_depth"][$i]);
}
if (array_key_exists("me_parent", $_POST) && $_POST["me_parent"][$i] != "") {
$me_parent = intval($_POST["me_parent"][$i]);
}
if (!$code || !$me_name || !$me_link)
continue;
$sub_code = '';
if ($group_code == $code) {
$sql = " select MAX(SUBSTRING(me_code,3,2)) as max_me_code
from {$g5['menu_table']}
where SUBSTRING(me_code,1,2) = '$primary_code' ";
$row = sql_fetch($sql);
$sub_code = base_convert($row['max_me_code'], 36, 10);
$sub_code += 36;
$sub_code = base_convert($sub_code, 10, 36);
$me_code = $primary_code . $sub_code;
} else {
$sql = " select MAX(SUBSTRING(me_code,1,2)) as max_me_code
from {$g5['menu_table']}
where LENGTH(me_code) = '2' ";
$row = sql_fetch($sql);
$me_code = base_convert($row['max_me_code'], 36, 10);
$me_code += 36;
$me_code = base_convert($me_code, 10, 36);
$group_code = $code;
$primary_code = $me_code;
}
// 메뉴 등록
$sql = " insert into {$g5['menu_table']}
set me_code = '$me_code',
me_name = '$me_name',
me_link = '$me_link',
me_img = '{$img_link}',
me_img2 = '{$img_link2}',
me_depth = '{$me_depth}',
me_parent = '{$me_parent}',
me_target = '{$_POST['me_target'][$i]}',
me_order = '{$_POST['me_order'][$i]}',
me_use = '{$_POST['me_use'][$i]}',
me_mobile_use = '{$_POST['me_use'][$i]}',
me_level = '{$_POST['me_level'][$i]}' ";
sql_query($sql);
}
goto_url('./menu_list.php');
?>