관리자 페이지 디자인 개선

관리자 페이지 수정 및 일부 페이지 기능 개선
This commit is contained in:
TATECK 2024-06-21 03:16:11 +09:00
parent e852dcf9a3
commit 9c418778ba
30 changed files with 2912 additions and 3007 deletions

View file

@ -1,5 +1,8 @@
<?php <?php
define('G5_IS_ADMIN', true); define('G5_IS_ADMIN', true);
include_once ('../common.php'); include_once ('../common.php');
include_once(G5_ADMIN_PATH.'/admin.lib.php');
if(!defined("_LOGIN_PAGE_") || (defined("_LOGIN_PAGE_") && !_LOGIN_PAGE_)) {
include_once(G5_ADMIN_PATH.'/admin.lib.php');
}
?> ?>

View file

@ -3,86 +3,60 @@ if (!defined('_GNUBOARD_')) exit;
$begin_time = get_microtime(); $begin_time = get_microtime();
include_once(G5_PATH.'/head.sub.php'); include_once(G5_PATH.'/head.sub.php');
function print_menu1($key, $no) function print_menu1($key, $no){
{ global $menu;
global $menu; $str = print_menu2($key, $no);
return $str;
$str = print_menu2($key, $no);
return $str;
} }
function print_menu2($key, $no) function print_menu2($key, $no){
{ global $menu, $auth_menu, $is_admin, $auth, $g5, $sub_menu;
global $menu, $auth_menu, $is_admin, $auth, $g5, $sub_menu;
$str .= "<ul class=\"gnb_2dul\">"; $str .= "<div class=\"gnb_2dul\"><ul>";
for($i=1; $i<count($menu[$key]); $i++) for($i=1; $i<count($menu[$key]); $i++) {
{ if ($is_admin != 'super' && (!array_key_exists($menu[$key][$i][0],$auth) || !strstr($auth[$menu[$key][$i][0]], 'r')))
if ($is_admin != 'super' && (!array_key_exists($menu[$key][$i][0],$auth) || !strstr($auth[$menu[$key][$i][0]], 'r'))) continue;
continue;
if (($menu[$key][$i][4] == 1 && $gnb_grp_style == false) || ($menu[$key][$i][4] != 1 && $gnb_grp_style == true)) $gnb_grp_div = 'gnb_grp_div'; if (($menu[$key][$i][4] == 1 && $gnb_grp_style == false) || ($menu[$key][$i][4] != 1 && $gnb_grp_style == true)) $gnb_grp_div = 'gnb_grp_div';
else $gnb_grp_div = ''; else $gnb_grp_div = '';
if ($menu[$key][$i][4] == 1) $gnb_grp_style = 'gnb_grp_style'; if ($menu[$key][$i][4] == 1) $gnb_grp_style = 'on';
else $gnb_grp_style = ''; else $gnb_grp_style = '';
$check_gnb_grp_style = ""; $check_gnb_grp_style = "";
if($menu[$key][$i][0] && isset($sub_menu) && $menu[$key][$i][0] == $sub_menu) { if($menu[$key][$i][0] && isset($sub_menu) && $menu[$key][$i][0] == $sub_menu) {
$check_gnb_grp_style = "check"; $check_gnb_grp_style = "check";
} }
$str .= '<li class="gnb_2dli '.$check_gnb_grp_style.'"><a href="'.$menu[$key][$i][2].'" class="gnb_2da '.$gnb_grp_style.' '.$gnb_grp_div.'" data-text="'.$menu[$key][$i][1].'">'.$menu[$key][$i][1].'</a></li>'; $str .= '<li class="gnb_2dli '.$check_gnb_grp_style.'"><a href="'.$menu[$key][$i][2].'" class="gnb_2da '.$gnb_grp_style.' '.$gnb_grp_div.'" data-text="'.$menu[$key][$i][1].'">'.$menu[$key][$i][1].'</a></li>';
$auth_menu[$menu[$key][$i][0]] = $menu[$key][$i][1]; $auth_menu[$menu[$key][$i][0]] = $menu[$key][$i][1];
} }
$str .= "</ul>"; $str .= "</ul></div>";
return $str; return $str;
} }
?> ?>
<script> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" />
var tempX = 0;
var tempY = 0;
function imageview(id, w, h) <div class="adminWrap">
{
menu(id); <header class="adminHeader">
<div class="inner">
var el_id = document.getElementById(id);
//submenu = eval(name+".style");
submenu = el_id.style;
submenu.left = tempX - ( w + 11 );
submenu.top = tempY - ( h / 2 );
selectBoxVisible();
if (el_id.style.display != 'none')
selectBoxHidden(id);
}
</script>
<div id="wrap">
<header id="header">
<div id="admin_prof">
<h1> <h1>
<a href="<?php echo G5_ADMIN_URL ?>"><img src="<?=G5_ADMIN_URL?>/img/logo.png" alt="Avocado Edition" /></a> <a href="<?php echo G5_ADMIN_URL ?>"><strong><?=$config['cf_title']?> Management</strong></a>
<i><?=G5_GNUBOARD_VER?></i> <i><?=G5_GNUBOARD_VER?></i>
</h1> </h1>
<p> <aside>
<a href="<?php echo G5_ADMIN_URL ?>/member_form.php?w=u&amp;mb_id=<?php echo $member['mb_id'] ?>" class="name"> <a href="<?php echo G5_BBS_URL ?>/logout.php" ><span class="material-symbols-outlined">logout</span></a>
<?=$member['mb_name']?> <a href="<?=G5_URL?>" target="_blank"><span class="material-symbols-outlined">home</span></a>
</a> <a href="https://avocado-edition-rout.postype.com/" target="_blank"><span class="material-symbols-outlined">developer_guide</span></a>
<a href="<?php echo G5_BBS_URL ?>/logout.php" class="logout">로그아웃</a> </aside>
</p>
</div> </div>
</header>
<nav id="gnb"> <nav class="adminGnbArea auto-horiz">
<div id="gnb" class="inner">
<?php <?php
$gnb_str = "<ul>"; $gnb_str = "<ul>";
foreach($amenu as $key=>$value) { foreach($amenu as $key=>$value) {
@ -95,7 +69,7 @@ function imageview(id, w, h)
} }
$current_class = ""; $current_class = "";
if (isset($sub_menu) && (substr($sub_menu, 0, 3) == substr($menu['menu'.$key][0][0], 0, 3))) if (isset($sub_menu) && (substr($sub_menu, 0, 3) == substr($menu['menu'.$key][0][0], 0, 3)))
$current_class = " gnb_1dli_air"; $current_class = " on";
$gnb_str .= '<li class="gnb_1dli'.$current_class.'">'.PHP_EOL; $gnb_str .= '<li class="gnb_1dli'.$current_class.'">'.PHP_EOL;
$gnb_str .= $href1 . $menu['menu'.$key][0][1] . $href2; $gnb_str .= $href1 . $menu['menu'.$key][0][1] . $href2;
$gnb_str .= print_menu1('menu'.$key, 1); $gnb_str .= print_menu1('menu'.$key, 1);
@ -104,22 +78,12 @@ function imageview(id, w, h)
$gnb_str .= "</ul>"; $gnb_str .= "</ul>";
echo $gnb_str; echo $gnb_str;
?> ?>
</nav> </div>
</nav>
</header> <section class="adminBody">
<? if($g5['title'] != "관리자메인") { ?>
<div class="pageTitle">
<section id="wrapper">
<aside id="page_top">
<h2><?php echo $g5['title'] ?></h2> <h2><?php echo $g5['title'] ?></h2>
</div>
<a href="<?=G5_URL?>" class="ico-home" target="_blank"> <? } ?>
커뮤니티 <div class="container">
</a>
<a href="https://avocado-edition-rout.postype.com/" class="ico-dev" target="_blank">
아보카도 솔루션
</a>
</aside>
<div id="container">

View file

@ -1,129 +1,249 @@
function check_all(f) function check_all(f)
{ {
var chk = document.getElementsByName("chk[]"); var chk = document.getElementsByName("chk[]");
for (i=0; i<chk.length; i++) for (i=0; i<chk.length; i++)
chk[i].checked = f.chkall.checked; chk[i].checked = f.chkall.checked;
} }
function btn_check(f, act) function btn_check(f, act)
{ {
if (act == "update") // 선택수정 if (act == "update") // 선택수정
{ {
f.action = list_update_php; f.action = list_update_php;
str = "수정"; str = "수정";
} }
else if (act == "delete") // 선택삭제 else if (act == "delete") // 선택삭제
{ {
f.action = list_delete_php; f.action = list_delete_php;
str = "삭제"; str = "삭제";
} }
else else
return; return;
var chk = document.getElementsByName("chk[]"); var chk = document.getElementsByName("chk[]");
var bchk = false; var bchk = false;
for (i=0; i<chk.length; i++) for (i=0; i<chk.length; i++)
{ {
if (chk[i].checked) if (chk[i].checked)
bchk = true; bchk = true;
} }
if (!bchk) if (!bchk)
{ {
alert(str + "할 자료를 하나 이상 선택하세요."); alert(str + "할 자료를 하나 이상 선택하세요.");
return; return;
} }
if (act == "delete") if (act == "delete")
{ {
if (!confirm("선택한 자료를 정말 삭제 하시겠습니까?")) if (!confirm("선택한 자료를 정말 삭제 하시겠습니까?"))
return; return;
} }
f.submit(); f.submit();
} }
function is_checked(elements_name) function is_checked(elements_name)
{ {
var checked = false; var checked = false;
var chk = document.getElementsByName(elements_name); var chk = document.getElementsByName(elements_name);
for (var i=0; i<chk.length; i++) { for (var i=0; i<chk.length; i++) {
if (chk[i].checked) { if (chk[i].checked) {
checked = true; checked = true;
} }
} }
return checked; return checked;
} }
function delete_confirm(el) function delete_confirm(el)
{ {
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) { if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
var token = get_ajax_token(); var token = get_ajax_token();
var href = el.href.replace(/&token=.+$/g, ""); var href = el.href.replace(/&token=.+$/g, "");
if(!token) { if(!token) {
alert("토큰 정보가 올바르지 않습니다."); alert("토큰 정보가 올바르지 않습니다.");
return false; return false;
} }
el.href = href+"&token="+token; el.href = href+"&token="+token;
return true; return true;
} else { } else {
return false; return false;
} }
} }
function delete_confirm2(msg) function delete_confirm2(msg)
{ {
if(confirm(msg)) if(confirm(msg))
return true; return true;
else else
return false; return false;
} }
function get_ajax_token() function get_ajax_token()
{ {
var token = ""; var token = "";
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: g5_admin_url+"/ajax.token.php", url: g5_admin_url+"/ajax.token.php",
cache: false, cache: false,
async: false, async: false,
dataType: "json", dataType: "json",
success: function(data) { success: function(data) {
if(data.error) { if(data.error) {
alert(data.error); alert(data.error);
if(data.url) if(data.url)
document.location.href = data.url; document.location.href = data.url;
return false; return false;
} }
token = data.token; token = data.token;
} }
}); });
return token; return token;
} }
$(function() { $(function() {
$(document).on("click", "form input:submit", function() { $(document).on("click", "form input:submit", function() {
var f = this.form; var f = this.form;
var token = get_ajax_token(); var token = get_ajax_token();
if(!token) { if(!token) {
alert("토큰 정보가 올바르지 않습니다."); alert("토큰 정보가 올바르지 않습니다.");
return false; return false;
} }
var $f = $(f); var $f = $(f);
if(typeof f.token === "undefined") if(typeof f.token === "undefined")
$f.prepend('<input type="hidden" name="token" value="">'); $f.prepend('<input type="hidden" name="token" value="">');
$f.find("input[name=token]").val(token);
return true;
});
if($('.anchor').length > 0) {
$('.anchor').hide();
$('.anchor').addClass('auto-horiz');
$('.anchor').eq(0).addClass('actived').show();
$('.adminBody').addClass('has-amchor');
$(document).scroll(function() {set_achor();});
set_achor();
}
});
function set_achor() {
const $sections = $('section[id*="anc_"]');
const $anchorList = $(".anchor");
let current=""
const scrollTop = $(window).scrollTop();
const scrollLeft = $(window).scrollLeft();
const w_height = $(window).height();
$sections.each(function(index, item) {
if($(item).is(':visible')) {
const sectionTop = $(item).offset().top;
const checkTop = sectionTop - (w_height / 3);
if(scrollTop >= checkTop) {
current = $(item).attr('id');
}
}
});
$anchorList.find('.on').removeClass('on');
$anchorList.find('a[href="#'+current+'"]').addClass('on');
$(".auto-horiz").css("transform", "translateX(-"+scrollLeft+"px)");
$(".auto-horiz").css("-webkit-transform", "translateX(-"+scrollLeft+"px)");
}
/***************************************
Repeat Item
***************************************/
function fn_add_repeatFrom(id, max_count) {
const $repeat_pannel = $('#'+id);
const $original_item = $repeat_pannel.find('.repeat-original');
const originam_tag = $original_item[0].tagName.toLowerCase();
const now_count = $repeat_pannel.find(originam_tag).not('.repeat-original').length;
if(typeof(max_count) != "undefined" && max_count != 0 && now_count + 1 > max_count) {
alert("최대 등록 가능한 갯수를 초과하였습니다.");
return false;
}
let $add_item = $original_item.clone();
$add_item.removeClass('repeat-original');
$repeat_pannel.append($add_item);
}
function fn_del_itemFrom(obj) {
const $repeat_pannel = $(obj).closest('.repeatFormArea');
const $original_item = $repeat_pannel.find('.repeat-original');
const originam_tag = $original_item[0].tagName.toLowerCase();
$(obj).closest(originam_tag).remove();
}
/***************************************
Layout Setting
***************************************/
$(function() {
//$('.local_desc').prepend($('<span class="material-symbols-outlined">emergency</span>'));
$('input[type="checkbox"]').each(function() {
let $label = $(this).next('label');
if($label.length > 0) {
$(this).addClass('hidden');
} else {
$(this).addClass('show');
}
});
$('.local_sch a').addClass('btn_link');
$('.color-preview').each(function() {
let $input = $(this).prev('input[type="text"]');
let $color = $(this);
let is_input = false;
$color.on('change', function() {
if(!is_input) {
let _color = $(this).val();
$input.val(_color);
} else {
is_input = false;
}
});
$input.on('change', function() {
is_input = true;
let _color = $(this).val();
$color.val(_color);
});
});
if($('.btn_add').length > 0 && $('.btn_list').length) {
$('.btn_add').addClass('btn_list');
} else if($('.btn_add').length > 0) {
$('.btn_add').addClass('btn_confirm');
}
if($('.btn_list').length > 0 && $('.btn_confirm').length > 0) {
$('.btn_confirm').closest('section').addClass('writeFromArea');
$('.container').addClass('writeFromAreaContainer');
}
});
$f.find("input[name=token]").val(token);
return true;
});
});

View file

@ -1,449 +1,420 @@
<?php <?php
if (!defined('_GNUBOARD_')) exit; if (!defined('_GNUBOARD_')) exit;
/*
// 081022 : CSRF 방지를 위해 코드를 작성했으나 효과가 없어 주석처리 함
if (!get_session('ss_admin')) {
set_session('ss_admin', true);
goto_url('.');
}
*/
// 스킨디렉토리를 SELECT 형식으로 얻음 // 스킨디렉토리를 SELECT 형식으로 얻음
function get_skin_select($skin_gubun, $id, $name, $selected='', $event='') function get_skin_select($skin_gubun, $id, $name, $selected='', $event=''){
{ global $config;
global $config;
$skins = array(); $skins = array();
if(defined('G5_THEME_PATH') && $config['cf_theme']) { if(defined('G5_THEME_PATH') && $config['cf_theme']) {
$dirs = get_skin_dir($skin_gubun, G5_THEME_PATH.'/'.G5_SKIN_DIR); $dirs = get_skin_dir($skin_gubun, G5_THEME_PATH.'/'.G5_SKIN_DIR);
if(!empty($dirs)) { if(!empty($dirs)) {
foreach($dirs as $dir) { foreach($dirs as $dir) {
$skins[] = 'theme/'.$dir; $skins[] = 'theme/'.$dir;
} }
} }
} }
$skins = array_merge($skins, get_skin_dir($skin_gubun)); $skins = array_merge($skins, get_skin_dir($skin_gubun));
$str = "<select id=\"$id\" name=\"$name\" $event>\n"; $str = "<select id=\"$id\" name=\"$name\" $event>\n";
for ($i=0; $i<count($skins); $i++) { for ($i=0; $i<count($skins); $i++) {
if ($i == 0) $str .= "<option value=\"\">선택</option>"; if ($i == 0) $str .= "<option value=\"\">선택</option>";
if(preg_match('#^theme/(.+)$#', $skins[$i], $match)) if(preg_match('#^theme/(.+)$#', $skins[$i], $match))
$text = '(테마) '.$match[1]; $text = '(테마) '.$match[1];
else else
$text = $skins[$i]; $text = $skins[$i];
$str .= option_selected($skins[$i], $selected, $text); $str .= option_selected($skins[$i], $selected, $text);
} }
$str .= "</select>"; $str .= "</select>";
return $str; return $str;
} }
// 모바일 스킨디렉토리를 SELECT 형식으로 얻음 // 모바일 스킨디렉토리를 SELECT 형식으로 얻음
function get_mobile_skin_select($skin_gubun, $id, $name, $selected='', $event='') function get_mobile_skin_select($skin_gubun, $id, $name, $selected='', $event=''){
{ global $config;
global $config;
$skins = array(); $skins = array();
if(defined('G5_THEME_PATH') && $config['cf_theme']) { if(defined('G5_THEME_PATH') && $config['cf_theme']) {
$dirs = get_skin_dir($skin_gubun, G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR); $dirs = get_skin_dir($skin_gubun, G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR);
if(!empty($dirs)) { if(!empty($dirs)) {
foreach($dirs as $dir) { foreach($dirs as $dir) {
$skins[] = 'theme/'.$dir; $skins[] = 'theme/'.$dir;
} }
} }
} }
$skins = array_merge($skins, get_skin_dir($skin_gubun, G5_MOBILE_PATH.'/'.G5_SKIN_DIR)); $skins = array_merge($skins, get_skin_dir($skin_gubun, G5_MOBILE_PATH.'/'.G5_SKIN_DIR));
$str = "<select id=\"$id\" name=\"$name\" $event>\n"; $str = "<select id=\"$id\" name=\"$name\" $event>\n";
for ($i=0; $i<count($skins); $i++) { for ($i=0; $i<count($skins); $i++) {
if ($i == 0) $str .= "<option value=\"\">선택</option>"; if ($i == 0) $str .= "<option value=\"\">선택</option>";
if(preg_match('#^theme/(.+)$#', $skins[$i], $match)) if(preg_match('#^theme/(.+)$#', $skins[$i], $match))
$text = '(테마) '.$match[1]; $text = '(테마) '.$match[1];
else else
$text = $skins[$i]; $text = $skins[$i];
$str .= option_selected($skins[$i], $selected, $text); $str .= option_selected($skins[$i], $selected, $text);
} }
$str .= "</select>"; $str .= "</select>";
return $str; return $str;
} }
// 스킨경로를 얻는다 // 스킨경로를 얻는다
function get_skin_dir($skin, $skin_path=G5_SKIN_PATH) function get_skin_dir($skin, $skin_path=G5_SKIN_PATH){
{ global $g5;
global $g5;
$result_array = array(); $result_array = array();
$dirname = $skin_path.'/'.$skin.'/'; $dirname = $skin_path.'/'.$skin.'/';
if(!is_dir($dirname)) if(!is_dir($dirname))
return; return;
$handle = opendir($dirname); $handle = opendir($dirname);
while ($file = readdir($handle)) { while ($file = readdir($handle)) {
if($file == '.'||$file == '..') continue; if($file == '.'||$file == '..') continue;
if (is_dir($dirname.$file)) $result_array[] = $file; if (is_dir($dirname.$file)) $result_array[] = $file;
} }
closedir($handle); closedir($handle);
sort($result_array); sort($result_array);
return $result_array; return $result_array;
} }
// 테마 // 테마
function get_theme_dir() function get_theme_dir(){
{ $result_array = array();
$result_array = array();
$dirname = G5_PATH.'/'.G5_THEME_DIR.'/'; $dirname = G5_PATH.'/'.G5_THEME_DIR.'/';
$handle = opendir($dirname); $handle = opendir($dirname);
while ($file = readdir($handle)) { while ($file = readdir($handle)) {
if($file == '.'||$file == '..') continue; if($file == '.'||$file == '..') continue;
if (is_dir($dirname.$file)) { if (is_dir($dirname.$file)) {
$theme_path = $dirname.$file; $theme_path = $dirname.$file;
if(is_file($theme_path.'/index.php') && is_file($theme_path.'/head.php') && is_file($theme_path.'/tail.php')) if(is_file($theme_path.'/index.php') && is_file($theme_path.'/head.php') && is_file($theme_path.'/tail.php'))
$result_array[] = $file; $result_array[] = $file;
} }
} }
closedir($handle); closedir($handle);
natsort($result_array); natsort($result_array);
return $result_array; return $result_array;
} }
// 테마디렉토리를 SELECT 형식으로 얻음 // 테마디렉토리를 SELECT 형식으로 얻음
function get_theme_select($id, $name, $selected='', $event='') function get_theme_select($id, $name, $selected='', $event=''){
{ global $config;
global $config;
$theme = array(); $theme = array();
$theme = array_merge($theme, get_theme_dir()); $theme = array_merge($theme, get_theme_dir());
$str = "<select id=\"$id\" name=\"$name\" $event>\n"; $str = "<select id=\"$id\" name=\"$name\" $event>\n";
for ($i=0; $i<count($theme); $i++) { for ($i=0; $i<count($theme); $i++) {
if ($i == 0) $str .= "<option value=\"\">-</option>"; if ($i == 0) $str .= "<option value=\"\">-</option>";
$text = $theme[$i]; $text = $theme[$i];
$str .= option_selected($theme[$i], $selected, $text); $str .= option_selected($theme[$i], $selected, $text);
} }
$str .= "</select>"; $str .= "</select>";
return $str; return $str;
} }
// 테마정보 // 테마정보
function get_theme_info($dir) function get_theme_info($dir){
{ $info = array();
$info = array(); $path = G5_PATH.'/'.G5_THEME_DIR.'/'.$dir;
$path = G5_PATH.'/'.G5_THEME_DIR.'/'.$dir;
if(is_dir($path)) { if(is_dir($path)) {
$screenshot = $path.'/screenshot.png'; $screenshot = $path.'/screenshot.png';
if(is_file($screenshot)) { if(is_file($screenshot)) {
$size = @getimagesize($screenshot); $size = @getimagesize($screenshot);
if($size[2] == 3) if($size[2] == 3)
$screenshot_url = str_replace(G5_PATH, G5_URL, $screenshot); $screenshot_url = str_replace(G5_PATH, G5_URL, $screenshot);
} }
$info['screenshot'] = $screenshot_url; $info['screenshot'] = $screenshot_url;
$text = $path.'/readme.txt'; $text = $path.'/readme.txt';
if(is_file($text)) { if(is_file($text)) {
$content = file($text, false); $content = file($text, false);
$content = array_map('trim', $content); $content = array_map('trim', $content);
preg_match('#^Theme Name:(.+)$#i', $content[0], $m0); preg_match('#^Theme Name:(.+)$#i', $content[0], $m0);
preg_match('#^Theme URI:(.+)$#i', $content[1], $m1); preg_match('#^Theme URI:(.+)$#i', $content[1], $m1);
preg_match('#^Maker:(.+)$#i', $content[2], $m2); preg_match('#^Maker:(.+)$#i', $content[2], $m2);
preg_match('#^Maker URI:(.+)$#i', $content[3], $m3); preg_match('#^Maker URI:(.+)$#i', $content[3], $m3);
preg_match('#^Version:(.+)$#i', $content[4], $m4); preg_match('#^Version:(.+)$#i', $content[4], $m4);
preg_match('#^Detail:(.+)$#i', $content[5], $m5); preg_match('#^Detail:(.+)$#i', $content[5], $m5);
preg_match('#^License:(.+)$#i', $content[6], $m6); preg_match('#^License:(.+)$#i', $content[6], $m6);
preg_match('#^License URI:(.+)$#i', $content[7], $m7); preg_match('#^License URI:(.+)$#i', $content[7], $m7);
$info['theme_name'] = trim($m0[1]); $info['theme_name'] = trim($m0[1]);
$info['theme_uri'] = trim($m1[1]); $info['theme_uri'] = trim($m1[1]);
$info['maker'] = trim($m2[1]); $info['maker'] = trim($m2[1]);
$info['maker_uri'] = trim($m3[1]); $info['maker_uri'] = trim($m3[1]);
$info['version'] = trim($m4[1]); $info['version'] = trim($m4[1]);
$info['detail'] = trim($m5[1]); $info['detail'] = trim($m5[1]);
$info['license'] = trim($m6[1]); $info['license'] = trim($m6[1]);
$info['license_uri'] = trim($m7[1]); $info['license_uri'] = trim($m7[1]);
} }
if(!$info['theme_name']) if(!$info['theme_name'])
$info['theme_name'] = $dir; $info['theme_name'] = $dir;
} }
return $info; return $info;
} }
// 테마설정 정보 // 테마설정 정보
function get_theme_config_value($dir, $key='*') function get_theme_config_value($dir, $key='*'){
{ $tconfig = array();
$tconfig = array();
$theme_config_file = G5_PATH.'/'.G5_THEME_DIR.'/'.$dir.'/theme.config.php'; $theme_config_file = G5_PATH.'/'.G5_THEME_DIR.'/'.$dir.'/theme.config.php';
if(is_file($theme_config_file)) { if(is_file($theme_config_file)) {
include($theme_config_file); include($theme_config_file);
if($key == '*') { if($key == '*') {
$tconfig = $theme_config; $tconfig = $theme_config;
} else { } else {
$keys = array_map('trim', explode(',', $key)); $keys = array_map('trim', explode(',', $key));
foreach($keys as $v) { foreach($keys as $v) {
$tconfig[$v] = isset($theme_config[$v]) ? trim($theme_config[$v]) : ''; $tconfig[$v] = isset($theme_config[$v]) ? trim($theme_config[$v]) : '';
} }
} }
} }
return $tconfig; return $tconfig;
} }
// 회원권한을 SELECT 형식으로 얻음 // 회원권한을 SELECT 형식으로 얻음
function get_member_level_select($name, $start_id=0, $end_id=10, $selected="", $event="") function get_member_level_select($name, $start_id=0, $end_id=10, $selected="", $event=""){
{ global $g5;
global $g5;
$level_name[1] = "방문자"; $level_name[1] = "방문자";
$level_name[2] = "일반멤버"; $level_name[2] = "일반멤버";
$level_name[10] = "운영자"; $level_name[10] = "운영자";
$str = "\n<select id=\"{$name}\" name=\"{$name}\""; $str = "\n<select id=\"{$name}\" name=\"{$name}\"";
if ($event) $str .= " $event"; if ($event) $str .= " $event";
$str .= ">\n"; $str .= ">\n";
for ($i=$start_id; $i<=$end_id; $i++) { for ($i=$start_id; $i<=$end_id; $i++) {
if(!$level_name[$i]) continue; if(!$level_name[$i]) continue;
$str .= '<option value="'.$i.'"'; $str .= '<option value="'.$i.'"';
if ($i == $selected) if ($i == $selected)
$str .= ' selected="selected"'; $str .= ' selected="selected"';
$str .= ">{$level_name[$i]}&nbsp;&nbsp;</option>\n"; $str .= ">{$level_name[$i]}&nbsp;&nbsp;</option>\n";
} }
$str .= "</select>\n"; $str .= "</select>\n";
return $str; return $str;
} }
// 회원아이디를 SELECT 형식으로 얻음 // 회원아이디를 SELECT 형식으로 얻음
function get_member_id_select($name, $level, $selected="", $event="") function get_member_id_select($name, $level, $selected="", $event=""){
{ global $g5;
global $g5;
$sql = " select mb_id from {$g5['member_table']} where mb_level >= '{$level}' "; $sql = " select mb_id from {$g5['member_table']} where mb_level >= '{$level}' ";
$result = sql_query($sql); $result = sql_query($sql);
$str = '<select id="'.$name.'" name="'.$name.'" '.$event.'><option value="">선택안함</option>'; $str = '<select id="'.$name.'" name="'.$name.'" '.$event.'><option value="">선택안함</option>';
for ($i=0; $row=sql_fetch_array($result); $i++) for ($i=0; $row=sql_fetch_array($result); $i++)
{ {
$str .= '<option value="'.$row['mb_id'].'"'; $str .= '<option value="'.$row['mb_id'].'"';
if ($row['mb_id'] == $selected) $str .= ' selected'; if ($row['mb_id'] == $selected) $str .= ' selected';
$str .= '>'.$row['mb_id'].'</option>'; $str .= '>'.$row['mb_id'].'</option>';
} }
$str .= '</select>'; $str .= '</select>';
return $str; return $str;
} }
// 권한 검사 // 권한 검사
function auth_check($auth, $attr, $return=false) function auth_check($auth, $attr, $return=false){
{ global $is_admin;
global $is_admin;
if ($is_admin == 'super') return; if ($is_admin == 'super') return;
if (!trim($auth)) { if (!trim($auth)) {
$msg = '이 메뉴에는 접근 권한이 없습니다.\\n\\n접근 권한은 최고관리자만 부여할 수 있습니다.'; $msg = '이 메뉴에는 접근 권한이 없습니다.\\n\\n접근 권한은 최고관리자만 부여할 수 있습니다.';
if($return) if($return)
return $msg; return $msg;
else else
alert($msg); alert($msg);
} }
$attr = strtolower($attr); $attr = strtolower($attr);
if (!strstr($auth, $attr)) { if (!strstr($auth, $attr)) {
if ($attr == 'r') { if ($attr == 'r') {
$msg = '읽을 권한이 없습니다.'; $msg = '읽을 권한이 없습니다.';
if($return) if($return)
return $msg; return $msg;
else else
alert($msg); alert($msg);
} else if ($attr == 'w') { } else if ($attr == 'w') {
$msg = '입력, 추가, 생성, 수정 권한이 없습니다.'; $msg = '입력, 추가, 생성, 수정 권한이 없습니다.';
if($return) if($return)
return $msg; return $msg;
else else
alert($msg); alert($msg);
} else if ($attr == 'd') { } else if ($attr == 'd') {
$msg = '삭제 권한이 없습니다.'; $msg = '삭제 권한이 없습니다.';
if($return) if($return)
return $msg; return $msg;
else else
alert($msg); alert($msg);
} else { } else {
$msg = '속성이 잘못 되었습니다.'; $msg = '속성이 잘못 되었습니다.';
if($return) if($return)
return $msg; return $msg;
else else
alert($msg); alert($msg);
} }
} }
} }
// 작업아이콘 출력 // 작업아이콘 출력
function icon($act, $link='', $target='_parent') function icon($act, $link='', $target='_parent'){
{ global $g5;
global $g5;
$img = array('입력'=>'insert', '추가'=>'insert', '생성'=>'insert', '수정'=>'modify', '삭제'=>'delete', '이동'=>'move', '그룹'=>'move', '보기'=>'view', '미리보기'=>'view', '복사'=>'copy'); $img = array('입력'=>'insert', '추가'=>'insert', '생성'=>'insert', '수정'=>'modify', '삭제'=>'delete', '이동'=>'move', '그룹'=>'move', '보기'=>'view', '미리보기'=>'view', '복사'=>'copy');
$icon = '<img src="'.G5_ADMIN_PATH.'/img/icon_'.$img[$act].'.gif" title="'.$act.'">'; $icon = '<img src="'.G5_ADMIN_PATH.'/img/icon_'.$img[$act].'.gif" title="'.$act.'">';
if ($link) if ($link)
$s = '<a href="'.$link.'">'.$icon.'</a>'; $s = '<a href="'.$link.'">'.$icon.'</a>';
else else
$s = $icon; $s = $icon;
return $s; return $s;
} }
// rm -rf 옵션 : exec(), system() 함수를 사용할 수 없는 서버 또는 win32용 대체 // rm -rf 옵션 : exec(), system() 함수를 사용할 수 없는 서버 또는 win32용 대체
// www.php.net 참고 : pal at degerstrom dot com // www.php.net 참고 : pal at degerstrom dot com
function rm_rf($file) function rm_rf($file){
{ if (file_exists($file)) {
if (file_exists($file)) { if (is_dir($file)) {
if (is_dir($file)) { $handle = opendir($file);
$handle = opendir($file); while($filename = readdir($handle)) {
while($filename = readdir($handle)) { if ($filename != '.' && $filename != '..')
if ($filename != '.' && $filename != '..') rm_rf($file.'/'.$filename);
rm_rf($file.'/'.$filename); }
} closedir($handle);
closedir($handle);
@chmod($file, G5_DIR_PERMISSION); @chmod($file, G5_DIR_PERMISSION);
@rmdir($file); @rmdir($file);
} else { } else {
@chmod($file, G5_FILE_PERMISSION); @chmod($file, G5_FILE_PERMISSION);
@unlink($file); @unlink($file);
} }
} }
} }
// 출력순서 // 출력순서
function order_select($fld, $sel='') function order_select($fld, $sel=''){
{ $s = '<select name="'.$fld.'" id="'.$fld.'">';
$s = '<select name="'.$fld.'" id="'.$fld.'">'; for ($i=1; $i<=100; $i++) {
for ($i=1; $i<=100; $i++) { $s .= '<option value="'.$i.'" ';
$s .= '<option value="'.$i.'" '; if ($sel) {
if ($sel) { if ($i == $sel) {
if ($i == $sel) { $s .= 'selected';
$s .= 'selected'; }
} } else {
} else { if ($i == 50) {
if ($i == 50) { $s .= 'selected';
$s .= 'selected'; }
} }
} $s .= '>'.$i.'</option>';
$s .= '>'.$i.'</option>'; }
} $s .= '</select>';
$s .= '</select>';
return $s; return $s;
} }
// 불법접근을 막도록 토큰을 생성하면서 토큰값을 리턴 // 불법접근을 막도록 토큰을 생성하면서 토큰값을 리턴
function get_admin_token() function get_admin_token(){
{ $token = md5(uniqid(rand(), true));
$token = md5(uniqid(rand(), true)); set_session('ss_admin_token', $token);
set_session('ss_admin_token', $token);
return $token; return $token;
} }
// POST로 넘어온 토큰과 세션에 저장된 토큰 비교 // POST로 넘어온 토큰과 세션에 저장된 토큰 비교
function check_admin_token() function check_admin_token(){
{ $token = get_session('ss_admin_token');
$token = get_session('ss_admin_token'); set_session('ss_admin_token', '');
set_session('ss_admin_token', '');
if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token']) if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])
alert('올바른 방법으로 이용해 주십시오.', G5_URL); alert('올바른 방법으로 이용해 주십시오.', G5_URL);
return true; return true;
} }
// 관리자 페이지 referer 체크 // 관리자 페이지 referer 체크
function admin_referer_check($return=false) function admin_referer_check($return=false){
{ $referer = trim($_SERVER['HTTP_REFERER']);
$referer = trim($_SERVER['HTTP_REFERER']); if(!$referer) {
if(!$referer) { $msg = '정보가 올바르지 않습니다.';
$msg = '정보가 올바르지 않습니다.';
if($return) if($return)
return $msg; return $msg;
else else
alert($msg, G5_URL); alert($msg, G5_URL);
} }
$p = @parse_url($referer); $p = @parse_url($referer);
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']); $host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
if($host != $p['host']) { if($host != $p['host']) {
$msg = '올바른 방법으로 이용해 주십시오.'; $msg = '올바른 방법으로 이용해 주십시오.';
if($return) if($return)
return $msg; return $msg;
else else
alert($msg, G5_URL); alert($msg, G5_URL);
} }
} }
// 접근 권한 검사 // 접근 권한 검사
if (!$member['mb_id']) if (!$member['mb_id']) {
{ goto_url(G5_ADMIN_URL.'/login.php');
goto_url(G5_BBS_URL.'/login.php?url=' . urlencode(G5_ADMIN_URL)); } else if ($is_admin != 'super'){
} $auth = array();
else if ($is_admin != 'super') $sql = " select au_menu, au_auth from {$g5['auth_table']} where mb_id = '{$member['mb_id']}' ";
{ $result = sql_query($sql);
$auth = array();
$sql = " select au_menu, au_auth from {$g5['auth_table']} where mb_id = '{$member['mb_id']}' ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++)
{
$auth[$row['au_menu']] = $row['au_auth'];
}
if (!$i) for($i=0; $row=sql_fetch_array($result); $i++) {
{ $auth[$row['au_menu']] = $row['au_auth'];
goto_url(G5_URL); }
} if (!$i) {
//goto_url(G5_URL);
}
} }
// 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다. // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.
$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); $admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
if (get_session('ss_mb_key') !== $admin_key) { if (get_session('ss_mb_key') !== $admin_key) {
session_destroy(); session_destroy();
include_once(G5_LIB_PATH.'/mailer.lib.php'); //include_once(G5_LIB_PATH.'/mailer.lib.php');
// 메일 알림 // 메일 알림
mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n'.G5_URL, 0); //mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n'.G5_URL, 0);
alert_close('정상적으로 로그인하여 접근하시기 바랍니다.'); //alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');
} }
@ksort($auth); @ksort($auth);
@ -454,11 +425,10 @@ unset($menu);
unset($amenu); unset($amenu);
$tmp = dir(G5_ADMIN_PATH); $tmp = dir(G5_ADMIN_PATH);
while ($entry = $tmp->read()) { while ($entry = $tmp->read()) {
if (!preg_match('/^admin.menu([0-9]{3}).*\.php$/', $entry, $m)) if (!preg_match('/^admin.menu([0-9]{3}).*\.php$/', $entry, $m))
continue; // 파일명이 menu 으로 시작하지 않으면 무시한다. continue; // 파일명이 menu 으로 시작하지 않으면 무시한다.
$amenu[$m[1]] = $entry;
$amenu[$m[1]] = $entry; include_once(G5_ADMIN_PATH.'/'.$entry);
include_once(G5_ADMIN_PATH.'/'.$entry);
} }
@ksort($amenu); @ksort($amenu);
@ -470,6 +440,4 @@ if (isset($stx)) $arr_query[] = 'stx='.$stx;
if (isset($page)) $arr_query[] = 'page='.$page; if (isset($page)) $arr_query[] = 'page='.$page;
$qstr = implode("&amp;", $arr_query); $qstr = implode("&amp;", $arr_query);
// 관리자에서는 추가 스크립트는 사용하지 않는다.
//$config['cf_add_script'] = '';
?> ?>

View file

@ -6,7 +6,7 @@ $menu['menu100'] = array (
array('100250', '화면 설정', G5_ADMIN_URL.'/viewer_form.php', 'cf_view_basic'), array('100250', '화면 설정', G5_ADMIN_URL.'/viewer_form.php', 'cf_view_basic'),
array('100280', '테마설정', G5_ADMIN_URL.'/theme.php', 'cf_theme', 1), array('100280', '테마설정', G5_ADMIN_URL.'/theme.php', 'cf_theme', 1),
array('100300', '디자인 설정', G5_ADMIN_URL.'/design_form.php', 'cf_design_basic'), array('100300', '디자인 설정', G5_ADMIN_URL.'/design_form.php', 'cf_design_basic'),
array('100310', '팝업레이어관리', G5_ADMIN_URL.'/newwinlist.php', 'scf_poplayer'), /*array('100310', '팝업레이어관리', G5_ADMIN_URL.'/newwinlist.php', 'scf_poplayer'),*/
array('100320', '메인슬라이드 관리', G5_ADMIN_URL.'/banner_list.php', 'cf_banner'), array('100320', '메인슬라이드 관리', G5_ADMIN_URL.'/banner_list.php', 'cf_banner'),
array('100330', '인트로 관리', G5_ADMIN_URL.'/intro_list.php', 'cf_banner'), array('100330', '인트로 관리', G5_ADMIN_URL.'/intro_list.php', 'cf_banner'),
array('100990', 'DB관리', G5_DB_URL, '') array('100990', 'DB관리', G5_DB_URL, '')

View file

@ -6,7 +6,6 @@ $menu['menu200'] = array (
array('200800', '접속자집계', G5_ADMIN_URL.'/visit_list.php', ''), array('200800', '접속자집계', G5_ADMIN_URL.'/visit_list.php', ''),
array('200810', '접속자검색', G5_ADMIN_URL.'/visit_search.php', ''), array('200810', '접속자검색', G5_ADMIN_URL.'/visit_search.php', ''),
array('200820', '접속자로그삭제', G5_ADMIN_URL.'/visit_delete.php', ''), array('200820', '접속자로그삭제', G5_ADMIN_URL.'/visit_delete.php', '')
array('200900', '투표관리', G5_ADMIN_URL.'/poll_list.php', '')
); );
?> ?>

View file

@ -1,7 +1,7 @@
<?php <?php
if (!defined('_GNUBOARD_')) exit; if (!defined('_GNUBOARD_')) exit;
?> ?>
</div>
</section> </section>
</div> </div>
@ -14,26 +14,20 @@ if (!defined('_GNUBOARD_')) exit;
<script src="<?php echo G5_ADMIN_URL ?>/admin.ajax.js?ver=<?php echo G5_JS_VER; ?>"></script> <script src="<?php echo G5_ADMIN_URL ?>/admin.ajax.js?ver=<?php echo G5_JS_VER; ?>"></script>
<script> <script>
$(function(){ $(function(){
var hide_menu = false; var hide_menu = false;
var mouse_event = false; var mouse_event = false;
var oldX = oldY = 0; var oldX = oldY = 0;
$(document).mousemove(function(e) { $(document).mousemove(function(e) {
if(oldX == 0) { if(oldX == 0) {
oldX = e.pageX; oldX = e.pageX;
oldY = e.pageY; oldY = e.pageY;
} }
if(oldX != e.pageX || oldY != e.pageY) { if(oldX != e.pageX || oldY != e.pageY) {
mouse_event = true; mouse_event = true;
} }
}); });
// 폰트 리사이즈 쿠키있으면 실행
var font_resize_act = get_cookie("ck_font_resize_act");
if(font_resize_act != "") {
font_resize("container", font_resize_act);
}
$('.gnb_1da').bind('click', function(){ $('.gnb_1da').bind('click', function(){
var gnb_parent = $(this).closest('li'); var gnb_parent = $(this).closest('li');

View file

@ -1,6 +1,7 @@
<?php <?php
$sub_menu = "100200"; $sub_menu = "100200";
include_once('./_common.php'); include_once('./_common.php');
include_once(G5_ADMIN_PATH."/config_form_prev.php");
include_once(G5_EDITOR_LIB); include_once(G5_EDITOR_LIB);
auth_check($auth[$sub_menu], 'r'); auth_check($auth[$sub_menu], 'r');
@ -14,6 +15,7 @@ include_once ('./admin.head.php');
$pg_anchor = '<ul class="anchor"> $pg_anchor = '<ul class="anchor">
<li><a href="#anc_001">기본설정</a></li> <li><a href="#anc_001">기본설정</a></li>
<li><a href="#anc_002">기능설정</a></li> <li><a href="#anc_002">기능설정</a></li>
<li><a href="#anc_004">카테고리 설정</a></li>
<li><a href="#anc_003">기타항목설정</a></li> <li><a href="#anc_003">기타항목설정</a></li>
</ul>'; </ul>';
@ -98,24 +100,10 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
<input type="text" name="cf_twitter" value="<?php echo $config['cf_twitter'] ?>" id="cf_twitter" size="40" /> <input type="text" name="cf_twitter" value="<?php echo $config['cf_twitter'] ?>" id="cf_twitter" size="40" />
</td> </td>
</tr> </tr>
<tr>
<th scope="row">기능설정</th>
<td>
<input type="checkbox" name="cf_4" value="1" id="cf_4" <?php echo $config['cf_4']?'checked':''; ?>>
<label for="cf_4">탐색사용</label>
&nbsp;&nbsp;
<input type="checkbox" name="cf_6" value="1" id="cf_6" <?php echo $config['cf_6']?'checked':''; ?>>
<label for="cf_6">탐색 수행 가능</label>
&nbsp;&nbsp;
<input type="checkbox" name="cf_5" value="1" id="cf_5" <?php echo $config['cf_5']?'checked':''; ?>>
<label for="cf_5">조합(레시피)사용</label>
</td>
</tr>
<tr> <tr>
<th scope="row">기타설정</th> <th scope="row">기타설정</th>
<td> <td>
<?php echo help('디자인 관리 사용을 하시면, 기본 디자인 + 관리자 디자인 설정을 사용하실 수 있습니다.') ?> <?php echo help('디자인 관리 사용을 하시면, 기본 디자인 + 관리자 디자인 설정을 사용하실 수 있습니다. <br> 직접 디자인 수정을 원하신다면, 디자인 관리 사용하지 않음에 체크 하세요.') ?>
<?php echo help('직접 디자인 수정을 원하신다면, 디자인 관리 사용하지 않음에 체크 하세요.') ?>
<input type="checkbox" name="cf_7" value="1" id="cf_7" <?php echo $config['cf_7']?'checked':''; ?>> <input type="checkbox" name="cf_7" value="1" id="cf_7" <?php echo $config['cf_7']?'checked':''; ?>>
<label for="cf_7">디자인 관리 사용하지 않음</label> <label for="cf_7">디자인 관리 사용하지 않음</label>
@ -138,27 +126,41 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
<colgroup> <colgroup>
<col style="width: 150px;"> <col style="width: 150px;">
<col> <col>
<col style="width: 150px;">
<col>
</colgroup> </colgroup>
<tbody> <tbody>
<tr>
<th scope="row">기능설정</th>
<td colspan="3">
<input type="checkbox" name="cf_4" value="1" id="cf_4" <?php echo $config['cf_4']?'checked':''; ?>>
<label for="cf_4">탐색사용</label>
&nbsp;&nbsp;
<input type="checkbox" name="cf_6" value="1" id="cf_6" <?php echo $config['cf_6']?'checked':''; ?>>
<label for="cf_6">탐색 수행 가능</label>
&nbsp;&nbsp;
<input type="checkbox" name="cf_5" value="1" id="cf_5" <?php echo $config['cf_5']?'checked':''; ?>>
<label for="cf_5">조합(레시피)사용</label>
</td>
</tr>
<tr> <tr>
<th scope="row">캐릭터 최대 생성 갯수</th> <th scope="row">캐릭터 최대 생성 갯수</th>
<td> <td>
<input type="text" name="cf_character_count" value="<?php echo get_text($config['cf_character_count']) ?>" id="cf_character_count" size="10"> <input type="text" name="cf_character_count" value="<?php echo get_text($config['cf_character_count']) ?>" id="cf_character_count" class="taC" size="5">
</td>
<th scope="row">하루 탐색 횟수</th>
<td>
<input type="text" name="cf_search_count" value="<?php echo get_text($config['cf_search_count']) ?>" id="cf_search_count" class="taC" size="5">
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row">최초 스탯 포인트</th> <th scope="row">최초 스탯 포인트</th>
<td> <td colspan="3">
<?php echo help('스탯 사용 설정 시, 캐릭터가 최초로 획득하는 스탯 포인트를 설정합니다.') ?> <?php echo help('스탯 사용 설정 시, 캐릭터가 최초로 획득하는 스탯 포인트를 설정합니다.') ?>
<input type="text" name="cf_status_point" value="<?php echo get_text($config['cf_status_point']) ?>" id="cf_status_point" size="10"> <input type="text" name="cf_status_point" value="<?php echo get_text($config['cf_status_point']) ?>" id="cf_status_point" class="taC" size="5">
</td>
</tr>
<tr>
<th scope="row">하루 탐색 횟수</th>
<td>
<input type="text" name="cf_search_count" value="<?php echo get_text($config['cf_search_count']) ?>" id="cf_search_count" size="10">
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -166,6 +168,122 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
<?php echo $frm_submit; ?> <?php echo $frm_submit; ?>
<section id="anc_004">
<h2 class="h2_frm">카테고리 설정</h2>
<?php echo $pg_anchor ?>
<div class="tbl_frm01 tbl_wrap">
<table>
<colgroup>
<col style="width:165px;">
<col>
</colgroup>
<tbody>
<tr>
<th scope="row" class="pad vT">
<span class="lb">프로필 항목</span>
<button type="button" onclick="fn_add_repeatFrom('profileAddTable');" class="btn_small_add"><span class="material-symbols-outlined">add</span></button>
</th>
<td>
<ul id="profileAddTable" class="repeatFormArea fit">
<li class="repeat-original">
<div class="form">
<input type="text" name="cf_profile_group_spr[]" value="" class="full" />
</div>
<div class="control">
<button type="button" onclick="fn_del_itemFrom(this);" class="btn_small_del"><span class="material-symbols-outlined">remove</span></button>
</div>
</li>
<?
$repeat_item = explode("||", $config['cf_profile_group']);
for($i=0; $i < count($repeat_item); $i++) {
?>
<li>
<div class="form">
<input type="text" name="cf_profile_group_spr[]" value="<?=$repeat_item[$i]?>" class="full" />
</div>
<div class="control">
<button type="button" onclick="fn_del_itemFrom(this);" class="btn_small_del"><span class="material-symbols-outlined">remove</span></button>
</div>
</li>
<? } ?>
</ul>
</td>
</tr>
<tr>
<th scope="row" class="pad vT">
<span class="lb">상점 분류</span>
<button type="button" onclick="fn_add_repeatFrom('shopAddTable');" class="btn_small_add"><span class="material-symbols-outlined">add</span></button>
</th>
<td>
<ul id="shopAddTable" class="repeatFormArea fit">
<li class="repeat-original">
<div class="form">
<input type="text" name="cf_shop_category_spr[]" value="" class="full" />
</div>
<div class="control">
<button type="button" onclick="fn_del_itemFrom(this);" class="btn_small_del"><span class="material-symbols-outlined">remove</span></button>
</div>
</li>
<?
$repeat_item = explode("||", $config['cf_shop_category']);
for($i=0; $i < count($repeat_item); $i++) {
?>
<li>
<div class="form">
<input type="text" name="cf_shop_category_spr[]" value="<?=$repeat_item[$i]?>" class="full" />
</div>
<div class="control">
<button type="button" onclick="fn_del_itemFrom(this);" class="btn_small_del"><span class="material-symbols-outlined">remove</span></button>
</div>
</li>
<? } ?>
</ul>
</td>
</tr>
<tr>
<th scope="row" class="pad vT">
<span class="lb">아이템 기능</span>
<button type="button" onclick="fn_add_repeatFrom('itemAddTable');" class="btn_small_add"><span class="material-symbols-outlined">add</span></button>
</th>
<td>
<ul id="itemAddTable" class="repeatFormArea fit">
<li class="repeat-original">
<div class="form">
<input type="text" name="cf_item_category_spr[]" value="" class="full" />
</div>
<div class="control">
<button type="button" onclick="fn_del_itemFrom(this);" class="btn_small_del"><span class="material-symbols-outlined">remove</span></button>
</div>
</li>
<?
$repeat_item = explode("||", $config['cf_item_category']);
for($i=0; $i < count($repeat_item); $i++) {
?>
<li>
<div class="form">
<input type="text" name="cf_item_category_spr[]" value="<?=$repeat_item[$i]?>" class="full" />
</div>
<div class="control">
<button type="button" onclick="fn_del_itemFrom(this);" class="btn_small_del"><span class="material-symbols-outlined">remove</span></button>
</div>
</li>
<? } ?>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
</section>
<?php echo $frm_submit; ?>
<section id="anc_003"> <section id="anc_003">
<h2 class="h2_frm">기타 항목명 설정</h2> <h2 class="h2_frm">기타 항목명 설정</h2>
<?php echo $pg_anchor ?> <?php echo $pg_anchor ?>
@ -179,35 +297,24 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th scope="row" rowspan="2"><?=$config['cf_money']?> 설정</th> <th scope="row"><?=$config['cf_money']?></th>
<td>명칭</td> <td>명칭/단위</td>
<td> <td>
<input type="text" name="cf_money" value="<?php echo get_text($config['cf_money']) ?>" id="cf_money" size="30"> <input type="text" name="cf_money" value="<?php echo get_text($config['cf_money']) ?>" id="cf_money" size="5" placeholder="명칭"> <input type="text" name="cf_money_pice" value="<?php echo get_text($config['cf_money_pice']) ?>" id="cf_money_pice" size="5" placeholder="단위">
</td>
</tr>
<tr>
<td>단위</td>
<td>
<input type="text" name="cf_money_pice" value="<?php echo get_text($config['cf_money_pice']) ?>" id="cf_money_pice" size="30">
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row" rowspan="2"><?=$config['cf_exp_name']?> 설정</th> <th scope="row"><?=$config['cf_exp_name']?></th>
<td>명칭</td> <td>명칭/단위</td>
<td> <td>
<input type="text" name="cf_exp_name" value="<?php echo get_text($config['cf_exp_name']) ?>" id="cf_exp_name" size="30"> <input type="text" name="cf_exp_name" value="<?php echo get_text($config['cf_exp_name']) ?>" id="cf_exp_name" size="5" placeholder="명칭">
</td> <input type="text" name="cf_exp_pice" value="<?php echo get_text($config['cf_exp_pice']) ?>" id="cf_exp_pice" size="5" placeholder="단위">
</tr>
<tr>
<td>단위</td>
<td>
<input type="text" name="cf_exp_pice" value="<?php echo get_text($config['cf_exp_pice']) ?>" id="cf_exp_pice" size="30">
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row"><?=$config['cf_rank_name']?> 설정</th> <th scope="row"><?=$config['cf_rank_name']?></th>
<td>명칭</td> <td>명칭</td>
<td> <td>
<input type="text" name="cf_rank_name" value="<?php echo get_text($config['cf_rank_name']) ?>" id="cf_rank_name" size="30"> <input type="text" name="cf_rank_name" value="<?php echo get_text($config['cf_rank_name']) ?>" id="cf_rank_name" size="30">
@ -215,7 +322,7 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
</tr> </tr>
<tr> <tr>
<th scope="row"><?=$config['cf_side_title']?> (선택A)설정</th> <th scope="row"><?=$config['cf_side_title']?> (선택A)</th>
<td>명칭</td> <td>명칭</td>
<td> <td>
<?php echo help('명칭이 입력되지 않을 시, 프로필에 출력되지 않습니다.') ?> <?php echo help('명칭이 입력되지 않을 시, 프로필에 출력되지 않습니다.') ?>
@ -223,30 +330,13 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row"><?=$config['cf_class_title']?> (선택B)설정</th> <th scope="row"><?=$config['cf_class_title']?> (선택B)</th>
<td>명칭</td> <td>명칭</td>
<td> <td>
<?php echo help('명칭이 입력되지 않을 시, 프로필에 출력되지 않습니다.') ?> <?php echo help('명칭이 입력되지 않을 시, 프로필에 출력되지 않습니다.') ?>
<input type="text" name="cf_class_title" value="<?php echo get_text($config['cf_class_title']) ?>" id="cf_class_title" size="30"> <input type="text" name="cf_class_title" value="<?php echo get_text($config['cf_class_title']) ?>" id="cf_class_title" size="30">
</td> </td>
</tr> </tr>
<tr>
<th scope="row">상점 카테고리</th>
<td>-</td>
<td>
<?php echo help('카테고리 구분은 || 를 사용합니다. ex) 일반||프로필수정||기타') ?>
<input type="text" name="cf_shop_category" value="<?php echo get_text($config['cf_shop_category']) ?>" id="cf_shop_category" size="100">
</td>
</tr>
<tr>
<th scope="row">아이템 기능</th>
<td>-</td>
<td>
<?php echo help('기능 구분은 || 를 사용합니다. ex) 일반||프로필수정||아이템추가') ?>
<input type="text" name="cf_item_category" value="<?php echo get_text($config['cf_item_category']) ?>" id="cf_item_category" size="100">
</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -254,7 +344,6 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
<?php echo $frm_submit; ?> <?php echo $frm_submit; ?>
</form> </form>
<script> <script>

View file

@ -39,7 +39,32 @@ if ($_FILES['cf_favicon_file']['name']) {
$cf_favicon = $site_style_url."/".$image_name; $cf_favicon = $site_style_url."/".$image_name;
} }
$cf_profile_group = "";
$add_str = "";
for($i=0; $i < count($_POST['cf_profile_group_spr']); $i++) {
if($_POST['cf_profile_group_spr'][$i]) {
$cf_profile_group .= $add_str.$_POST['cf_profile_group_spr'][$i];
$add_str = "||";
}
}
$cf_shop_category = "";
$add_str = "";
for($i=0; $i < count($_POST['cf_shop_category_spr']); $i++) {
if($_POST['cf_shop_category_spr'][$i]) {
$cf_shop_category .= $add_str.$_POST['cf_shop_category_spr'][$i];
$add_str = "||";
}
}
$cf_item_category = "";
$add_str = "";
for($i=0; $i < count($_POST['cf_item_category_spr']); $i++) {
if($_POST['cf_item_category_spr'][$i]) {
$cf_item_category .= $add_str.$_POST['cf_item_category_spr'][$i];
$add_str = "||";
}
}
$sql = " update {$g5['config_table']} $sql = " update {$g5['config_table']}
set cf_title = '{$_POST['cf_title']}', set cf_title = '{$_POST['cf_title']}',
@ -47,8 +72,9 @@ $sql = " update {$g5['config_table']}
cf_twitter = '{$_POST['cf_twitter']}', cf_twitter = '{$_POST['cf_twitter']}',
cf_side_title = '{$_POST['cf_side_title']}', cf_side_title = '{$_POST['cf_side_title']}',
cf_class_title = '{$_POST['cf_class_title']}', cf_class_title = '{$_POST['cf_class_title']}',
cf_shop_category = '{$_POST['cf_shop_category']}', cf_profile_group = '{$cf_profile_group}',
cf_item_category = '{$_POST['cf_item_category']}', cf_shop_category = '{$cf_shop_category}',
cf_item_category = '{$cf_item_category}',
cf_open = '{$_POST['cf_open']}', cf_open = '{$_POST['cf_open']}',
cf_site_descript = '{$_POST['cf_site_descript']}', cf_site_descript = '{$_POST['cf_site_descript']}',
cf_site_img = '{$cf_site_img}', cf_site_img = '{$cf_site_img}',

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,199 @@
<?php
if (!defined('_GNUBOARD_')) exit;
if (!isset($config['cf_add_script'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_add_script` TEXT NOT NULL AFTER `cf_admin_email_name` ", true);
}
if (!isset($config['cf_mobile_new_skin'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_mobile_new_skin` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
ADD `cf_mobile_search_skin` VARCHAR(255) NOT NULL AFTER `cf_mobile_new_skin`,
ADD `cf_mobile_connect_skin` VARCHAR(255) NOT NULL AFTER `cf_mobile_search_skin`,
ADD `cf_mobile_member_skin` VARCHAR(255) NOT NULL AFTER `cf_mobile_connect_skin` ", true);
}
if (isset($config['cf_gcaptcha_mp3'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
CHANGE `cf_gcaptcha_mp3` `cf_captcha_mp3` VARCHAR(255) NOT NULL DEFAULT '' ", true);
} else if (!isset($config['cf_captcha_mp3'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_captcha_mp3` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_mobile_member_skin` ", true);
}
if(!isset($config['cf_editor'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_editor` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_captcha_mp3` ", true);
}
if(!isset($config['cf_googl_shorturl_apikey'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_googl_shorturl_apikey` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_captcha_mp3` ", true);
}
if(!isset($config['cf_mobile_pages'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_mobile_pages` INT(11) NOT NULL DEFAULT '0' AFTER `cf_write_pages` ", true);
sql_query(" UPDATE `{$g5['config_table']}` SET cf_mobile_pages = '5' ", true);
}
if(!isset($config['cf_facebook_appid'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_facebook_appid` VARCHAR(255) NOT NULL AFTER `cf_googl_shorturl_apikey`,
ADD `cf_facebook_secret` VARCHAR(255) NOT NULL AFTER `cf_facebook_appid`,
ADD `cf_twitter_key` VARCHAR(255) NOT NULL AFTER `cf_facebook_secret`,
ADD `cf_twitter_secret` VARCHAR(255) NOT NULL AFTER `cf_twitter_key` ", true);
}
// uniqid 테이블이 없을 경우 생성
if(!sql_query(" DESC {$g5['uniqid_table']} ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['uniqid_table']}` (
`uq_id` bigint(20) unsigned NOT NULL,
`uq_ip` varchar(255) NOT NULL,
PRIMARY KEY (`uq_id`)
) ", false);
}
if(!sql_query(" SELECT uq_ip from {$g5['uniqid_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE {$g5['uniqid_table']} ADD `uq_ip` VARCHAR(255) NOT NULL ");
}
// 임시저장 테이블이 없을 경우 생성
if(!sql_query(" DESC {$g5['autosave_table']} ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['autosave_table']}` (
`as_id` int(11) NOT NULL AUTO_INCREMENT,
`mb_id` varchar(20) NOT NULL,
`as_uid` bigint(20) unsigned NOT NULL,
`as_subject` varchar(255) NOT NULL,
`as_content` text NOT NULL,
`as_datetime` datetime NOT NULL,
PRIMARY KEY (`as_id`),
UNIQUE KEY `as_uid` (`as_uid`),
KEY `mb_id` (`mb_id`)
) ", false);
}
if(!isset($config['cf_admin_email'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_admin_email` VARCHAR(255) NOT NULL AFTER `cf_admin` ", true);
}
if(!isset($config['cf_admin_email_name'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_admin_email_name` VARCHAR(255) NOT NULL AFTER `cf_admin_email` ", true);
}
if(!isset($config['cf_cert_use'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_cert_use` TINYINT(4) NOT NULL DEFAULT '0' AFTER `cf_editor`,
ADD `cf_cert_ipin` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_use`,
ADD `cf_cert_hp` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_ipin`,
ADD `cf_cert_kcb_cd` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_hp`,
ADD `cf_cert_kcp_cd` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_kcb_cd`,
ADD `cf_cert_limit` INT(11) NOT NULL DEFAULT '0' AFTER `cf_cert_kcp_cd` ", true);
sql_query(" ALTER TABLE `{$g5['member_table']}`
CHANGE `mb_hp_certify` `mb_certify` VARCHAR(20) NOT NULL DEFAULT '' ", true);
sql_query(" update {$g5['member_table']} set mb_certify = 'hp' where mb_certify = '1' ");
sql_query(" update {$g5['member_table']} set mb_certify = '' where mb_certify = '0' ");
sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['cert_history_table']}` (
`cr_id` int(11) NOT NULL auto_increment,
`mb_id` varchar(255) NOT NULL DEFAULT '',
`cr_company` varchar(255) NOT NULL DEFAULT '',
`cr_method` varchar(255) NOT NULL DEFAULT '',
`cr_ip` varchar(255) NOT NULL DEFAULT '',
`cr_date` date NOT NULL DEFAULT '0000-00-00',
`cr_time` time NOT NULL DEFAULT '00:00:00',
PRIMARY KEY (`cr_id`),
KEY `mb_id` (`mb_id`)
)", true);
}
if(!isset($config['cf_analytics'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_analytics` TEXT NOT NULL AFTER `cf_intercept_ip` ", true);
}
if(!isset($config['cf_add_meta'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_add_meta` TEXT NOT NULL AFTER `cf_analytics` ", true);
}
if (!isset($config['cf_syndi_token'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_syndi_token` VARCHAR(255) NOT NULL AFTER `cf_add_meta` ", true);
}
if (!isset($config['cf_syndi_except'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_syndi_except` TEXT NOT NULL AFTER `cf_syndi_token` ", true);
}
if(!isset($config['cf_sms_use'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_sms_use` varchar(255) NOT NULL DEFAULT '' AFTER `cf_cert_limit`,
ADD `cf_icode_id` varchar(255) NOT NULL DEFAULT '' AFTER `cf_sms_use`,
ADD `cf_icode_pw` varchar(255) NOT NULL DEFAULT '' AFTER `cf_icode_id`,
ADD `cf_icode_server_ip` varchar(255) NOT NULL DEFAULT '' AFTER `cf_icode_pw`,
ADD `cf_icode_server_port` varchar(255) NOT NULL DEFAULT '' AFTER `cf_icode_server_ip` ", true);
}
if(!isset($config['cf_mobile_page_rows'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_mobile_page_rows` int(11) NOT NULL DEFAULT '0' AFTER `cf_page_rows` ", true);
}
if(!isset($config['cf_cert_req'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_cert_req` tinyint(4) NOT NULL DEFAULT '0' AFTER `cf_cert_limit` ", true);
}
if(!isset($config['cf_faq_skin'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_faq_skin` varchar(255) NOT NULL DEFAULT '' AFTER `cf_connect_skin`,
ADD `cf_mobile_faq_skin` varchar(255) NOT NULL DEFAULT '' AFTER `cf_mobile_connect_skin` ", true);
}
// LG유플러스 본인확인 필드 추가
if(!isset($config['cf_lg_mid'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_lg_mid` varchar(255) NOT NULL DEFAULT '' AFTER `cf_cert_kcp_cd`,
ADD `cf_lg_mert_key` varchar(255) NOT NULL DEFAULT '' AFTER `cf_lg_mid` ", true);
}
if(!isset($config['cf_optimize_date'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_optimize_date` date NOT NULL default '0000-00-00' AFTER `cf_popular_del` ", true);
}
// 카카오톡링크 api 키
if(!isset($config['cf_kakao_js_apikey'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_kakao_js_apikey` varchar(255) NOT NULL DEFAULT '' AFTER `cf_googl_shorturl_apikey` ", true);
}
// 캐릭터 프로필 항목 분류 추가
if(!isset($config['cf_profile_group'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_profile_group` text NOT NULL AFTER `cf_10` ", true);
}
if(!isset($config['cf_profile_group_use'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_profile_group_use` varchar(255) NOT NULL DEFAULT '' AFTER `cf_profile_group` ", true);
}
// SMS 전송유형 필드 추가
if(!isset($config['cf_sms_type'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_sms_type` varchar(10) NOT NULL DEFAULT '' AFTER `cf_sms_use` ", true);
}
// 접속자 정보 필드 추가
if(!sql_query(" select vi_browser from {$g5['visit_table']} limit 1 ")) {
sql_query(" ALTER TABLE `{$g5['visit_table']}`
ADD `vi_browser` varchar(255) NOT NULL DEFAULT '' AFTER `vi_agent`,
ADD `vi_os` varchar(255) NOT NULL DEFAULT '' AFTER `vi_browser`,
ADD `vi_device` varchar(255) NOT NULL DEFAULT '' AFTER `vi_os` ", true);
}
?>

View file

@ -0,0 +1,280 @@
@charset "utf-8";
html,
body { height: 100%; }
#wrap {
display: table;
width: 100%;
min-height: 100%;
}
#header {
display: table-cell;
position: relative;
width: 200px;
min-height: 100%;
background: #1d1d1f;
vertical-align: top;
}
#header:after {
content: "";
display: block;
position: absolute;
top: 0;
bottom: 0;
right: 0;
width: 1px;
background: #171b26;
z-index: 0;
}
#admin_prof {
display: block;
position: relative;
width: 200px;
height: 100px;
padding-bottom: 30px;
background: #29c7ca;
border-right: 1px solid #0aa0a5;
box-sizing: border-box;
z-index: 1;
}
#admin_prof h1 {
position: relative;
text-align: center;
line-height: 70px;
}
#admin_prof h1 img {
position: relative;
z-index: 0;
}
#admin_prof h1 i {
display: block;
position: absolute;
bottom: 5px;
right: 10px;
font-size: 11px;
font-style: normal;
font-weight: 400;
line-height: 1.0em;
color: #1e878a;
z-index: 1;
}
#admin_prof p {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 30px;
margin: 0;
background: #2bacb0;
}
#admin_prof a:hover { color: #fff !important; }
#admin_prof .name {
display: block;
position: relative;
padding-right: 30px;
padding-left: 15px;
font-size: 13px;
line-height: 30px;
color: #d6eff1;
text-decoration: none;
font-family: 'Noto Sans KR', sans-serif;
}
#admin_prof .logout {
display: block;
position: absolute;
top: 0;
bottom: 0;
right: 0;
width: 30px;
height: 30px;
overflow: hidden;
text-indent: -999px;
}
#admin_prof .logout:before {
content: "\e984";
font-family:'icon';
color: #d6eff1;
font-size: 12px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
line-height: 30px;
text-align: center;
text-indent: 0;
}
#page_top {
position: relative;
height: 71px;
box-sizing: border-box;
border-bottom: 1px solid #131a24;
background: #1d1d1f;
}
#page_top h2 {
position: absolute;
top: 0;
left: 0;
bottom: 0;
line-height: 70px;
padding-left: 40px;
font-size: 20px;
font-family: 'Noto Sans KR', sans-serif;
color: #c3c8cc;
font-weight: 300;
}
#page_top a {
display: block;
position: relative;
width: 70px;
height: 70px;
float: right;
border-left: 1px solid #4d515c;
overflow: hidden;
color: #c3c8cc;
text-indent: -999px;
}
#page_top a:before {
display: block;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-family: 'icon';
line-height: 70px;
font-size: 25px;
text-align: center;
text-indent: 0;
}
#page_top a:hover {
color: #fff;
background: #e7604a;
border-color: #a6240d;
}
#page_top a.ico-home:before { content: "\e900"; }
#page_top a.ico-dev:before { content: "\e995"; }
#wrapper {
display: table-cell;
position: relative;
vertical-align: top;
min-height: 100%;
}
#gnb {
display: block;
position: relative;
padding-top: 20px;
font-family: 'Noto Sans KR', sans-serif;
}
#gnb > ul > li > a {
display: block;
padding: 10px 20px;
color: #9da4b3;
font-size: 15px;
text-decoration: none;
}
#gnb .gnb_2dli { position: relative; }
#gnb .gnb_2dli > a {
display: block;
padding: 10px 20px 10px 25px;
color: #acaeb2;
font-size: 13px;
}
#gnb .gnb_2dli > a:before {
font-family: 'icon';
padding-right: 7px;
}
#gnb .gnb_2dli.check:after {
content: "\ea10";
font-family: 'icon';
display: block;
position: absolute;
top: 0;
right: 10px;
line-height: 39px;
color: #e76148;
}
#gnb .gnb_2dli > a:hover {
color: #fff;
background: #484c58;
text-decoration: none;
font-weight: 100;
}
#gnb .gnb_2dul {
display: none;
background: #262931;
}
#gnb .gnb_2dli.check > a:after {
content: "";
display: block;
position: absolute;
}
#gnb .gnb_2dli > a:before { content: "\e994"; }
#gnb .gnb_2dli > a[data-text="기본환경설정"]:before { content: "\e994"; }
#gnb .gnb_2dli > a[data-text="팝업레이어관리"]:before { content: "\e925"; }
#gnb .gnb_2dli > a[data-text="세션파일 일괄삭제"]:before { content: "\e94d"; }
#gnb .gnb_2dli > a[data-text="캐시파일 일괄삭제"]:before { content: "\e94d"; }
#gnb .gnb_2dli > a[data-text="썸네일파일 일괄삭제"]:before { content: "\e90e"; }
#gnb .gnb_2dli > a[data-text="커뮤니티 설정"]:before { content: "\e96f"; }
#gnb .gnb_2dli > a[data-text="화면 설정"]:before { content: "\e956"; }
#gnb .gnb_2dli > a[data-text="디자인 설정"]:before { content: "\e90c"; }
#gnb .gnb_2dli > a[data-text="메인슬라이드 관리"]:before { content: "\e913"; }
#gnb .gnb_2dli > a[data-text="회원관리"]:before { content: "\e923"; }
#gnb .gnb_2dli > a[data-text="접속자집계"]:before { content: "\e99c"; }
#gnb .gnb_2dli > a[data-text="접속자검색"]:before { content: "\e986"; }
#gnb .gnb_2dli > a[data-text="접속자로그삭제"]:before { content: "\e988"; }
#gnb .gnb_2dli > a[data-text="투표관리"]:before { content: "\e926"; }
#gnb .gnb_2dli > a[data-text="게시판관리"]:before { content: "\e9ba"; }
#gnb .gnb_2dli > a[data-text="게시판그룹관리"]:before { content: "\e9bc"; }
#gnb .gnb_2dli > a[data-text="내용관리"]:before { content: "\e908"; }
#gnb .gnb_2dli > a[data-text="이모티콘관리"]:before { content: "\e9e1"; }
#gnb .gnb_2dli > a[data-text="프로필 양식 관리"]:before { content: "\ea72"; }
#gnb .gnb_2dli > a[data-text="캐릭터 관리"]:before { content: "\e9b2"; }
#gnb .gnb_2dli > a[data-text="타이틀 관리"]:before { content: "\e935"; }
#gnb .gnb_2dli > a[data-text="보유타이틀 관리"]:before { content: "\e936"; }
#gnb .gnb_2dli > a[data-text="레벨설정 관리"]:before { content: "\ea4f"; }
#gnb .gnb_2dli > a[data-text="경험치 관리"]:before { content: "\e993"; }
#gnb .gnb_2dli > a[data-text="커플 관리"]:before { content: "\e9da"; }
#gnb .gnb_2dli > a[data-text="스탯 관리"]:before { content: "\e99d"; }
#gnb .gnb_2dli > a[data-text="상점관리"]:before { content: "\e93a"; }
#gnb .gnb_2dli > a[data-text="아이템관리"]:before { content: "\e99f"; }
#gnb .gnb_2dli > a[data-text="아이템 보유현황"]:before { content: "\e9ae"; }
#gnb .gnb_2dli > a[data-text="아이템 구매기록"]:before { content: "\e9ba"; }
#gnb .gnb_2dli > a[data-text="레시피 관리"]:before { content: "\e996"; }
#gnb .gnb_2dli > a[data-text="소지금관리"]:before { content: "\e93f"; }
#container { padding: 25px; }
#fsearch input { margin: 0; }
#fsearch .btn_submit {
border: none;
background: #29c7c9;
color: #fff;
font-size: 13px;
width: 50px;
height: 28px;
cursor: pointer;
line-height: 1.0em;
}

View file

@ -1,413 +1,308 @@
@charset "utf-8"; @charset "utf-8";
@import url(//fonts.googleapis.com/earlyaccess/notosanskr.css); @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap');
@font-face {
font-family: 'icon'; * {box-sizing:border-box; font-family:"Noto Sans KR", sans-serif; outline:0;}
src: url('../../css/fonts/icomoon.eot?y5isk6');
src: url('../../css/fonts/icomoon.eot?y5isk6#iefix') format('embedded-opentype'), html {overflow-y:scroll;}
url('../../css/fonts/icomoon.ttf?y5isk6') format('truetype'), html,
url('../../css/fonts/icomoon.woff?y5isk6') format('woff'), body {margin:0; padding:0; color:#333; font-size:12px; height:100%; min-width:1400px;}
url('../../css/fonts/icomoon.svg?y5isk6#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
/* 초기화 */
html {overflow-y:scroll}
body {margin:0;padding:0;background:#fff;color:#000;font-size:12px; min-width: 1400px;}
html, h1, h2, h3, h4, h5, h6, form, fieldset, img {margin:0;padding:0;border:0} html, h1, h2, h3, h4, h5, h6, form, fieldset, img {margin:0;padding:0;border:0}
h1, h2, h3, h4, h5, h6 {} h1, h2, h3, h4, h5, h6 {font-size:inherit; margin:0;}
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {display:block} article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {display:block}
header ul, nav ul, aside ul, footer ul {margin:0;padding:0;list-style:none} header ul, nav ul, aside ul, footer ul {margin:0;padding:0;list-style:none}
label, input, button, select, img {vertical-align:middle} label, input, button, select, img {vertical-align:middle}
textarea, select {} textarea, select {}
input {margin:0;padding:0;border-radius:0;}
input[type=text], input[type=password], input[type=submit], input[type=image] {-webkit-appearance:none} button {border-radius:0; -webkit-appearance:none;cursor:pointer}
button {border-radius:0;-webkit-appearance:none;cursor:pointer}
p {margin:0;padding:0;word-break:break-all} p {margin:0;padding:0;word-break:break-all}
hr {display:none} hr {display:none}
pre {overflow-x:scroll;} pre {overflow-x:scroll;}
a {color:#000;text-decoration:none} a {color:inherit;text-decoration:none}
a:focus, a:hover, a:active {text-decoration:underline} a:focus, a:hover, a:active {text-decoration:none;}
caption { display: none; } caption, .cke_sc, .sound_only {display:none;}
.cke_sc,
.sound_only { display: none; }
input[type="file"] { font-size: 12px; } label {cursor:pointer;}
input[type="text"],
input[type="password"],
select,
textarea {
border: 1px solid #dde3e0;
box-sizing: border-box;
font-family: 'Dotum';
font-size: 12px;
}
input[type="text"],
input[type="password"] { padding: 0 8px; }
input[type="text"],
input[type="password"],
select { height: 28px; padding-left: 8px; }
textarea { width: 100%; height: 150px; }
label {cursor: pointer; } ul,li {margin:0; padding:0; list-style:none;}
label + input { margin-left: 10px; } .material-symbols-outlined {font-size:1em !important;}
/****************************************
Layout
*****************************************/
.txt-center { text-align: center !important; } .taC,
.txt-left { text-align: left !important; } .txt-center {text-align:center !important; }
.txt-right { text-align: right !important; } .taL,
.txt-left {text-align:left !important; }
.taR,
.txt-right {text-align:right !important; }
.frm_info { .vT {vertical-align:top !important;}
display: block; .vM {vertical-align:middle !important;}
margin-bottom: 5px; .vB {vertical-align:bottom !important;}
font-size: 11px;
font-family: 'Dotum'; .mT5 {margin-top:5px !important;}
color: #ebb4ab; .mT10 {margin-top:10px !important;}
} .mT15 {margin-top:15px !important;}
.mT20 {margin-top:20px !important;}
.mT25 {margin-top:25px !important;}
.mT30 {margin-top:30px !important;}
.mT35 {margin-top:35px !important;}
.mT40 {margin-top:40px !important;}
.full {width:100% !important;} .full {width:100% !important;}
.empty_table { line-height: 200px; }
#container { font-family: 'Noto Sans KR', sans-serif; } .red {color:#ffa8a8;}
#container section {
position: relative;
padding-bottom: 50px; /****************************************
} Form
#container h2 { *****************************************/
font-size: 18px;
font-weight: 300; input {margin:0;padding:0;border-radius:0;}
margin-bottom: 10px; input[type="text"],
line-height: 30px; input[type="number"],
} input[type="password"],
#container h2:before { input[type="submit"],
content: "\e90b"; input[type="image"] {-webkit-appearance:none}
font-family: 'icon'; input[type="file"] {font-size:inherit;}
padding-right: 5px; select,
color: #4b4b47; input[type="text"],
input[type="number"],
input[type="password"],
textarea {border:1px solid #eaeaea; box-sizing:border-box; font-size:inherit; border-radius:5px; max-width:100%;}
select,
input[type="text"],
input[type="number"],
input[type="password"] {height:30px; padding:0 10px;}
textarea {width:100%; height:150px; line-height:30px; padding:0 10px;
background-image:-webkit-linear-gradient(left, white 10px, transparent 10px), -webkit-linear-gradient(right, white 10px, transparent 10px), -webkit-linear-gradient(white 30px, #f1f1f1 30px, #f1f1f1 31px, white 31px);
background-image:-moz-linear-gradient(left, white 10px, transparent 10px), -moz-linear-gradient(right, white 10px, transparent 10px), -moz-linear-gradient(white 30px, #f1f1f1 30px, #f1f1f1 31px, white 31px);
background-image:-ms-linear-gradient(left, white 10px, transparent 10px), -ms-linear-gradient(right, white 10px, transparent 10px), -ms-linear-gradient(white 30px, #f1f1f1 30px, #f1f1f1 31px, white 31px);
background-image:-o-linear-gradient(left, white 10px, transparent 10px), -o-linear-gradient(right, white 10px, transparent 10px), -o-linear-gradient(white 30px, #f1f1f1 30px, #f1f1f1 31px, white 31px);
background-image:linear-gradient(left, white 10px, transparent 10px), linear-gradient(right, white 10px, transparent 10px), linear-gradient(white 30px, #f1f1f1 30px, #f1f1f1 31px, white 31px);
background-size:100% 100%, 100% 100%, 100% 31px;
line-height:31px;
} }
.local_ov { input[type="checkbox"].show,
border-bottom: 1px solid #efeff1; input[type="radio"].show {display:inline-block; width:25px; height:25px; vertical-align:middle; background:no-repeat 0 0; background-size:auto 100%; appearance:none; -webkit-appearance:none; cursor:pointer;}
margin-bottom: 10px; input[type="checkbox"].show:checked,
padding-bottom: 10px; input[type="radio"].show:checked {background-position:100% 0;}
font-size: 13px; input[type="checkbox"].show {background-image:url(../img/spr_checkbox.png);}
font-weight: 300; input[type="radio"].show {background-image:url(../img/spr_radio.png);}
}
.ov_listall{
display: block;
position: relative;
float: left;
padding: 0 10px 0 0;
margin-right: 10px;
text-decoration: none;
color: #29c7c9;
}
.ov_listall:before {
content: "";
display: block;
position: absolute;
right: 0;
top: 3px;
bottom: 3px;
width: 1px;
background: #e1e1e1;
}
.local_desc { input[type="checkbox"]:not(.show) {position:absolute; top:0; left:0; z-index:-9999; opacity:0;}
background: #f9f9f9; input[type="checkbox"] + label {display:inline-block; position:relative; vertical-align:middle; padding:0 10px 0 45px; height:30px; line-height:30px;}
padding: 5px 10px; input[type="checkbox"] + label:before,
border: 1px solid #efeff1; input[type="checkbox"] + label:after {content:""; display:block; position:absolute; top:50%; border-radius:9em; transform:translateY(-50%); -webkit-transform:translateY(-50%); transition:.3s all; -webkit-transition:.3s all;}
color: #5b5b5a; input[type="checkbox"] + label:before {border:2px solid #ddd; left:0; width:35px; height:20px;}
margin-bottom: 10px; input[type="checkbox"] + label:after {left:4px; width:15px; height:15px; border-radius:100%; background:#ddd;}
line-height: 1.8em; input[type="checkbox"]:checked + label:before {border-color:#81c9c9;}
} input[type="checkbox"]:checked + label:after {left:19px; background:#81c9c9;}
.local_desc .point {
color: #29c7c9;
}
.local_desc.pos-top {
margin-top: 10px;
margin-bottom: 0;
}
.pg_wrap { display: block; position: relative; text-align: center; padding: 0 0 30px 0; }
.pg_wrap strong,
.pg_wrap a {
display: inline-block;
padding: 0 10px;
min-width: 10px;
height: 30px;
line-height: 30px;
text-align: center;
border: 1px solid #dadada;
text-decoration: none;
}
.pg_wrap strong { background: #29c7c9; color: #fff; border-color: #22a3a5; }
.btn_list01 { position: relative; padding: 20px 0;} /****************************************
.local_desc.pos-top + .btn_list01 { padding-top: 10px; } Index
.btn_list01 * { padding: 10px 15px; vertical-align: middle; } *****************************************/
.btn_list03 { position: absolute; top: 5px; right: 0; }
.btn_list03 * { padding: 5px 10px; }
.btn_add01 * { padding: 10px 15px; }
.btn_list a,
.btn_list button,
.btn_list input {
display: inline-block;
background: #29c7c9;
color: #fff;
font-weight: 400;
text-decoration: none;
border: none;
line-height: 1.0em;
cursor: pointer;
}
.btn_add {
float: right;
clear: both;
margin-bottom: 10px;
}
.btn_add a,
.btn_add button,
.btn_add input {
display: inline-block;
background: #29c7c9;
color: #fff;
font-size: 13px;
font-weight: 400;
text-decoration: none;
border: none;
line-height: 1.0em;
cursor: pointer;
}
.btn_confirm {
text-align: center;
padding: 50px 0;
}
section + .btn_confirm { padding-top: 0; }
.btn_confirm a,
.btn_confirm input[type="submit"],
.btn_confirm input[type="button"]{
display: inline-block;
vertical-align: middle;
box-sizing: border-box;
margin: 2px;
font-size: 13px;
line-height: 1.0em;
padding: 10px 25px;
border: none;
background: #f2f4f3;
color: #494c55;
cursor: pointer;
text-decoration: none;
}
.btn_confirm .btn_submit { background: #29c7c9 !important; color: #fff !important; }
.sv { display: none !important; }
.anchor {
display: block;
position: relative;
clear: both;
padding: 0;
margin: 0 0 10px 0;
overflow: hidden;
}
.anchor li {
display: block;
float: left;
list-style: none;
margin: 0;
}
.anchor li a {
display: block;
position: relative;
padding: 5px 10px;
text-decoration: none;
margin: 0 1px;
color: #62656c;
border-radius: 9.0em;
box-sizing: border-box;
z-index: 1;
}
.anchor li:first-child a { border-left-width: 0; }
.anchor li.on a,
#anc_001 a[href="#anc_001"],
#anc_002 a[href="#anc_002"],
#anc_003 a[href="#anc_003"],
#anc_004 a[href="#anc_004"],
#anc_005 a[href="#anc_005"],
#anc_006 a[href="#anc_006"],
#anc_007 a[href="#anc_007"],
#anc_008 a[href="#anc_008"],
#anc_009 a[href="#anc_009"],
#anc_010 a[href="#anc_010"],
#anc_011 a[href="#anc_011"],
#anc_012 a[href="#anc_012"],
#anc_013 a[href="#anc_013"],
#anc_014 a[href="#anc_014"],
#anc_015 a[href="#anc_015"],
#anc_016 a[href="#anc_016"]{
background: #e66149;
color: #fff;
}
.color-preview { display: inline-block; width: 25px; height: 25px; border: 1px solid #cacaca; vertical-align: middle; }
.admin-icon-box { display: inline-block; min-width: 25px; height: 25px; border: 1px solid #cacaca; vertical-align: middle; }
table { border-spacing:0px; }
.tbl_wrap table { width: 100%; border-collapse: collapse;}
.tbl_head01 thead { }
.tbl_head01 thead th {
background: #f9f9f9;
font-weight: 300;
padding: 8px 10px;
border: 1px solid #efeff1;
font-size: 13px;
color: #5b5b5a;
}
.tbl_head01 .bo-right { border-right-width: 1px !important; }
.tbl_head01 .bo-left { border-left-width: 1px !important; }
.tbl_head01 .bo-top { border-top-width: 1px !important; }
.tbl_head01 .bo-no-right { border-right-width: 0px !important; }
.tbl_head01 .bo-no-left { border-left-width: 0px !important; }
.tbl_head01 .bo-no-top { border-top-width: 0px !important; }
.tbl_head01 .bo-no-bottom { border-bottom-width: 0px !important; }
.tbl_head01 tbody td {
text-align: center;
padding: 7px 10px;
color: #5b5b5a;
border: 1px solid #efeff1;
border-top-width: 0;
border-left-width: 0;
}
.tbl_head01 tbody td:first-child { border-left-width: 1px; }
.tbl_head01 tbody td a { color: #29c7ca; }
.tbl_head01 tfoot th,
.tbl_head01 tfoot td {
background: #f9f9f9;
font-weight: 300;
padding: 8px 10px;
border: 1px solid #efeff1;
border-top-width: 0;
border-left-width: 0;
font-size: 13px;
color: #5b5b5a;
}
.tbl_head01 tfoot td:first-child,
.tbl_head01 tfoot th:first-child { border-left-width: 1px; }
.tbl_frm01 table { border-top: 1px solid #efeff5; }
.tbl_frm01 tbody th,
.tbl_frm01 tbody td {
color: #5b5b5a;
font-weight: 400;
padding: 10px;
border: 0px solid #efeff5;
border-bottom-width: 1px;
}
.tbl_frm01 tbody th { background: #f9f9f9; border-right-width: 1px; }
.tbl_frm01 tbody th.bo-right,
.tbl_frm01 tbody td.bo-right { border-right-width: 1px; }
.tbl_frm01 tbody th.bo-left,
.tbl_frm01 tbody td.bo-left { border-left-width: 1px; }
.tbl_frm01 tbody th.bo-top,
.tbl_frm01 tbody td.bo-top { border-top-width: 1px; }
.tbl_frm01 tbody th + td.bo-left { border-left-width: 0px !important; }
.index-gnb {display:block; font-size:13px;} .index-gnb {display:block; font-size:13px;}
.index-gnb > ul > li {display:table; width:100%; table-layout:fixed; overflow:hidden; border-bottom:1px solid rgba(255,255,255,.2);} .index-gnb .gnb_1dli {border:1px solid #ddd; border-radius:10px; padding:10px;}
.index-gnb > ul > li > * {display:table-cell;} .index-gnb .gnb_1dli > div {display:table; width:100%; table-layout:fixed; overflow:hidden;}
.index-gnb > ul > li > a {width:130px; background:#353942; color:#fff; text-align:center; vertical-align:middle; font-size:14px;} .index-gnb .gnb_1dli + .gnb_1dli {margin-top:10px;}
.index-gnb > ul > li > ul {display:block; padding:10px; background:#eaeaea;} .index-gnb .gnb_1dli > div > * {display:table-cell;}
.index-gnb > ul > li > ul > li {display:inline-block; min-width:130px; vertical-align:middle; padding:5px 0;} .index-gnb .gnb_1dli > div > a {width:130px; background:#4e5e79; border-radius:10px; color:#fff; text-align:center; vertical-align:middle; font-size:14px;}
.index-gnb .gnb_2dul {padding-left:15px;}
.index-gnb .gnb_2dul ul {display:flex; flex-wrap:wrap;}
.index-gnb .gnb_2dul ul li {display:block; position:relative;}
.index-gnb .gnb_2dul ul li + li:before {content:""; display:block; position:absolute; top:50%; left:0; width:1px; height:20px; margin-top:-10px; background:#ddd;}
.index-gnb .gnb_2dul a {display:block; position:relative; padding:4px 10px;}
.index-gnb .gnb_2dul a:hover,
.index-gnb .gnb_2dul a:focus {color:#ffa8a8; font-weight:800;}
.prev_thumb { max-width: 100px; max-height: 50px; } /****************************************
.banner-thumb { max-width: 200px; max-height: 100px; } Paging
.character-thumb { max-width: 200px; max-height: 500px; } *****************************************/
.pg_wrap {display:block; position:relative; text-align:center; padding:0 0 30px 0; }
.ajax-list-box { .pg_wrap strong,
height: 70px; .pg_wrap a {display:inline-block; padding:0 10px; min-width:10px; height:30px; line-height:30px; text-align:center; border:1px solid #dadada; text-decoration:none;}
overflow-y: auto; .pg_wrap strong {background:#81c9c9; color:#fff; border-color:#22a3a5; }
border: 1px solid #eaeaea;
margin-top: 10px;
padding: 5px;
}
.ajax-list-box ul,
.ajax-list-box li { display: block; margin: 0; padding: 0; position: relative; }
.ajax-list-box li { margin-bottom: 5px; }
.ajax-list-box li a {
display: block;
position: relative;
padding: 10px;
border-radius: 3px;
color: #2a2d2a;
background: #fafafa;
text-decoration: none;
font-size: 12px;
}
.ajax-list-box li a p.point { color: #29c7c9; }
.ajax-list-box li a:hover { color: #fff; background: #3a3a3a; }
.ajax-list-box li a .ui-thumb { position: absolute; top: 10px; left: 10px; width: 30px; line-height: 30px; overflow: hidden; text-align: center; }
.ajax-list-box li a .ui-thumb img { max-width: 100%; }
.ajax-list-box li a .ui-info {margin-left:40px;}
.ajax-list-box .no-data { line-height: 50px; text-align: center; margin-top: 10px; }
.visit_bar {position:relative} .visit_bar {position:relative}
.visit_bar span {position:absolute;top:-8px;left:0;height:15px;background:#29c7c9} .visit_bar span {position:absolute;top:-8px;left:0;height:15px;background:#81c9c9}
/****************************************
Guide Box
*****************************************/
.frm_info {display:block; position:relative; margin-bottom:10px; color:#ffa8a8;}
* ~ .frm_info {margin-top:10px; margin-bottom:0;}
.local_desc {display:block; position:relative; font-size:13px; margin-bottom:10px; background:#e6edf7; padding:10px; border-radius:5px; color:#4b4b4b;}
.local_desc p {display:inline;}
.local_desc .material-symbols-outlined {font-size:18px !important; vertical-align:middle;}
.local_ov {margin-bottom:10px; padding-bottom:10px; font-size:14px;}
.ov_listall {display:block; position:relative; float:left; padding:0 10px 0 0; margin-right:10px; text-decoration:none; color:#81c9c9; font-weight:600;}
.ov_listall:before {content:""; display:block; position:absolute; right:0; top:3px; bottom:3px; width:1px; background:#e1e1e1;}
.local_sch {display:flex; flex-wrap:nowrap; margin-bottom:10px; gap:5px; justify-content:center; background:#eaeef3; border-radius:5px; padding:10px;}
.local_sch select,
.local_sch input[type="text"],
.local_sch *[class*="btn_"] {height:35px;}
.local_sch *[class*="btn_"] {border-radius:5px;}
.local_sch a[class*="btn_"] {line-height:31px;}
.local_sch .btn_list {margin:0 !important;}
.color-preview {display:inline-block; width:30px; height:30px; border:1px solid #eaeaea; border-left-width:0; background:#fff; border-radius:0 5px 5px 0; z-index:1; margin-left:-6px; vertical-align:middle; cursor:pointer;}
.admin-icon-box {display:inline-block; min-width:25px; height:25px; border:1px solid #cacaca; vertical-align:middle;}
/**************************************************
Table Style
***************************************************/
table {width:100%; table-layout:fixed; border-spacing:0; border-collapse:collapse;}
table col.grid_4 {width:140px;}
table th {font-size:13px; font-weight:400; word-break:keep-all;}
table th,
table td {position:relative; vertical-align:middle; border:0px solid #fafafa; border-bottom-color:#eaeaea;}
table td {color:#888;}
table .bo-right {border-right-width:1px !important;}
table .bo-left {border-left-width:1px !important;}
.tbl_frm01 {margin-bottom:20px;}
.tbl_frm01 > table > tbody {border-top:2px solid #000; border-bottom:1px solid #eaeaea;}
.tbl_frm01 > table > tbody > tr > th,
.tbl_frm01 > table > tbody > tr > td {padding:10px; border-bottom-width:1px; height:50px;}
.tbl_frm01 > table > tbody > tr > th {text-align:left;}
.tbl_frm01 > table > tbody > tr > .pad {padding:20px 10px;}
.tbl_frm01 .lb {display:inline-block; vertical-align:middle; min-width:8em;}
.tbl_frm01 .design-th {text-align:center; background:#f5f9ff;}
.tbl_frm01 .design-th input[type="text"] {width:100%; margin:10px 0 5px; height:20px; font-size:12px; text-align:center; opacity:.7; background:rgba(255,255,255,.8) !important; border:none !important; outline:0; color:#81c9c9 !important;}
.tbl_frm01 .design-th em {font-style:normal; font-weight:bold; color:#81c9c9; margin-right:5px;}
.tbl_frm01 .design-th em:before {content:"[";}
.tbl_frm01 .design-th em:after {content:"]";}
.tbl_frm01 .design-th a {display:inline-block; vertical-align:middle; padding:3px 10px; background:#81c9c9; color:#fff; margin:5px 0 0;}
.tbl_frm01 .design-th a + a {margin-top:3px;}
.tbl_frm01 tr + tr .btn_confirm {margin-bottom:10px;}
.tbl_frm01 .btn_confirm .btn-item-add {height:auto !important; font-size:12px; padding:2px 10px !important;}
.tbl_frm01 td.btn_confirm {text-align:center; width:60px;}
.tbl_frm01 .btn-item-dell {width:50px; height:25px; background:#ffa8a8 !important; border-radius:5px; border:none; color:#fff; padding:0 !important;}
.tbl_head01 {text-align:center; margin-bottom:20px;}
.tbl_head01 > table > thead {border-top:2px solid #000;}
.tbl_head01 > table > tbody {border-top:1px solid #000; border-bottom:1px solid #eaeaea;}
.tbl_head01 > table > thead > tr > th {height:40px; font-weight:600; border:0px solid #000;}
.tbl_head01 > table > tbody > tr > th,
.tbl_head01 > table > tbody > tr > td {padding:10px; border-bottom-width:1px; height:50px;}
.tbl_head01 a {display:inline-block; max-width:100%; vertical-align:middle; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.empty_table {text-align:center; font-size:14px; padding:50px 20px !important; color:#ccc;}
/******************************************
Button Style
*******************************************/
input[class*="btn_"],
a[class*="btn_"],
button[class*="btn_"] {display:inline-block; position:relative; vertical-align:middle; height:30px; padding:0 20px; border-radius:9em; font-size:1em; border:2px solid #81c9c9; background:#fff; color:#81c9c9; cursor:pointer;}
a[class*="btn_"] {line-height:26px;}
.btn_confirm input[class*="btn_"],
.btn_confirm a,
.btn_confirm button {display:inline-block; position:relative; vertical-align:middle; height:35px; padding:0 20px; border-radius:9em; font-size:1em; border:2px solid #81c9c9; background:#fff; color:#81c9c9; cursor:pointer;}
.btn_confirm a {line-height:31px;}
.btn_list {margin:20px 0;}
.btn_list input[type="button"],
.btn_list input[type="submit"],
.btn_list a,
.btn_list button {display:inline-block; position:relative; vertical-align:middle; height:35px; padding:0 20px; border-radius:9em; font-size:1em; border:2px solid #81c9c9; background:#fff; color:#41b1b1; cursor:pointer; font-weight:600;}
.btn_list a {line-height:31px;}
.btn_list input[value*="삭제"] {border-color:#ffa8a8 !important; color:#ffa8a8 !important;}
.btn_list input[value*="탈퇴"] {border-color:#ffd5a8 !important; color:#ffd5a8 !important;}
.btn_submit {background:#81c9c9 !important; color:#fff !important;}
.btn_small_add,
.btn_small_del {padding:0 !important; width:30px; font-size:18px !important; border-radius:5px !important;}
.btn_small_del {border-color:#ffa8a8 !important; background:#ffa8a8 !important; color:#fff !important;}
.container > .btn_add01,
section > .btn_add01 {position:absolute; top:0; right:0; transform:translateY(-100%); -webkit-transform:translateY(-100%); margin-top:-45px;}
/**************************************************
Repeat List
***************************************************/
/*.repeatFormArea.fit {width:400px;}*/
.repeatFormArea .repeat-original {display:none;}
ul.repeatFormArea {display:flex; flex-wrap:wrap; align-items:top; margin:10px 0;}
ul.repeatFormArea li {display:inline-block; position:relative; margin-bottom:10px; padding-right:50px;}
ul.repeatFormArea li:last-child {margin-bottom:0;}
ul.repeatFormArea li .control {display:block; position:absolute; top:0; right:0; width:50px; padding-left:10px;}
/**************************************************
Ajaxt List
***************************************************/
.ajax-list-box {height:70px; overflow-y:auto; border:1px solid #eaeaea; margin-top:10px; padding:5px;}
.ajax-list-box ul,
.ajax-list-box li {display:block; margin:0; padding:0; position:relative; }
.ajax-list-box li {margin-bottom:5px; }
.ajax-list-box li a {display:block; position:relative; padding:10px; border-radius:3px; color:#2a2d2a; background:#fafafa; text-decoration:none; font-size:12px;}
.ajax-list-box li a p.point {color:#29c7c9; }
.ajax-list-box li a:hover {color:#fff; background:#3a3a3a; }
.ajax-list-box li a .ui-thumb {position:absolute; top:10px; left:10px; width:30px; line-height:30px; overflow:hidden; text-align:center; }
.ajax-list-box li a .ui-thumb img {max-width:100%; }
.ajax-list-box li a .ui-info {margin-left:40px;}
.ajax-list-box .no-data {line-height:50px; text-align:center; margin-top:10px; }
/**************************************************
Theme
***************************************************/
/*테마*/
.theme_p{margin:0 0 10px } .theme_p{margin:0 0 10px }
#theme_list{padding:0;margin:0;list-style:none; width: 1000px;position:relative} #theme_list{padding:0;margin:0;list-style:none; width:1000px;position:relative}
#theme_list:after{display:block;visibility:hidden;clear:both;content:""} #theme_list:after{display:block;visibility:hidden;clear:both;content:""}
#theme_list li{margin:10px 10px 10px 0;float:left} #theme_list li{margin:10px 10px 10px 0;float:left}
#theme_list li:after{display:block;visibility:hidden;clear:both;content:""} #theme_list li:after{display:block;visibility:hidden;clear:both;content:""}
#theme_list li .tmli_if{border: 1px solid #d1dee2;width:302px;} #theme_list li .tmli_if{border:1px solid #d1dee2;width:302px;}
#theme_list li .tmli_if>img{width:300px;height:225px;} #theme_list li .tmli_if>img{width:300px;height:225px;}
#theme_list li .tmli_if:hover>img{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter: alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity: 0.5;opacity: 0.5;} #theme_list li .tmli_if:hover>img{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity:0.5;opacity:0.5;}
#theme_list li .tmli_tit{position:relative; border-top: 1px solid #d1dee2; background: #e5ecef;} #theme_list li .tmli_tit{position:relative; border-top:1px solid #d1dee2; background:#e5ecef;}
#theme_list li .tmli_tit p{height:40px;line-height:40px;padding:0 10px 0;font-weight:bold;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} #theme_list li .tmli_tit p{height:40px;line-height:40px;padding:0 10px 0;font-weight:bold;text-overflow:ellipsis; overflow:hidden; white-space:nowrap;}
#theme_list li .tmli_tit button.tmli_dt{position:absolute;top:8px;right:10px;padding:5px;background:#111;color:#fff;display:none;border:none} #theme_list li .tmli_tit button.tmli_dt{position:absolute;top:8px;right:10px;padding:5px;background:#111;color:#fff;display:none;border:none}
#theme_list li .tmli_if:hover button.tmli_dt{display:block} #theme_list li .tmli_if:hover button.tmli_dt{display:block}
#theme_list li .theme_sl{float:left;border:none;margin-top:5px;padding:0 5px;height:26px;background:#999;color:#fff} #theme_list li .theme_sl{float:left;border:none;margin-top:5px;padding:0 5px;height:26px;background:#999;color:#fff}
#theme_list li .theme_sl:hover{background:#ff3061} #theme_list li .theme_sl:hover{background:#ff3061}
#theme_list li .theme_deactive{margin-left:4px} #theme_list li .theme_deactive{margin-left:4px}
#theme_list li .theme_sl_use{background:#ff3061;line-height:26px} #theme_list li .theme_sl_use{background:#ff3061;line-height:26px}
#theme_list li .theme_pr{float:right;margin-top:5px;padding:0 5px;height:26px;line-height:24px; border: 1px solid #ccc; background: #fafafa; } #theme_list li .theme_pr{float:right;margin-top:5px;padding:0 5px;height:26px;line-height:24px; border:1px solid #ccc; background:#fafafa; }
#theme_list li .theme_preview{ float: right; margin-top: 5px; padding:0 5px;height:26px; border: 1px solid #ccc; background: #fafafa; margin-right:3px} #theme_list li .theme_preview{float:right; margin-top:5px; padding:0 5px;height:26px; border:1px solid #ccc; background:#fafafa; margin-right:3px}
#theme_detail{position:fixed;top:50%;height:540px;width:900px;margin-top:-271px;background:#fff;background:#f3f3f3;border:1px solid #000; #theme_detail{position:fixed;top:50%;height:540px;width:900px;margin-top:-271px;background:#fff;background:#f3f3f3;border:1px solid #000;
-webkit-box-shadow: 1px 2px 5px rgba(150,150,150,100.5); -webkit-box-shadow:1px 2px 5px rgba(150,150,150,100.5);
-moz-box-shadow: 1px 2px 5px rgba(150,150,150,0.5); -moz-box-shadow:1px 2px 5px rgba(150,150,150,0.5);
box-shadow: 1px 2px 5px rgba(150,150,150,0.5);z-index:1000} box-shadow:1px 2px 5px rgba(150,150,150,0.5);z-index:1000}
#theme_detail:after{display:block;visibility:hidden;clear:both;content:""} #theme_detail:after{display:block;visibility:hidden;clear:both;content:""}
#theme_detail h2{font-size:1.25em;background:#fff;padding:0 15px;line-height:40px;border-bottom:1px solid #d8d8d8;margin:0} #theme_detail h2{font-size:1.25em;background:#fff;padding:0 15px;line-height:40px;border-bottom:1px solid #d8d8d8;margin:0}
.theme_dt_img{float:left;padding:20px} .theme_dt_img{float:left;padding:20px}
@ -424,3 +319,10 @@ box-shadow: 1px 2px 5px rgba(150,150,150,0.5);z-index:1000}
#theme_detail .theme_dt_btn .close_btn:hover{background-color:#eceffc} #theme_detail .theme_dt_btn .close_btn:hover{background-color:#eceffc}
#theme_detail .theme_dt_btn .btn_03{line-height:28px;display:inline-block;vertical-align:top;margin-top:6px;padding:0 6px;border-radius:5px} #theme_detail .theme_dt_btn .btn_03{line-height:28px;display:inline-block;vertical-align:top;margin-top:6px;padding:0 6px;border-radius:5px}
.manager-wrap {position:relative !important; top:auto !important; left:auto !important; right:auto !important; bottom:auto !important; height:80vh !important;}
label[for="cf_dungeon_open"],
label[for="cf_dungeon_map"] {text-indent:-999px;}
#itemAddTable thead th {background:#000; color:#fff; height:30px;}
#itemAddTable tbody tr > * {padding:4px; border-bottom:1px solid #ddd; text-align:center;}

View file

@ -1,280 +1,93 @@
@charset "utf-8"; @charset "utf-8";
html, :root {
body { height: 100%; } --header-height:80px;
#wrap { --menu-width:230px;
display: table; --frame-color:#24324a /*#18202e*/;
width: 100%;
min-height: 100%;
}
#header {
display: table-cell;
position: relative;
width: 200px;
min-height: 100%;
background: #1d1d1f;
vertical-align: top;
}
#header:after {
content: "";
display: block;
position: absolute;
top: 0;
bottom: 0;
right: 0;
width: 1px;
background: #171b26;
z-index: 0;
}
#admin_prof {
display: block;
position: relative;
width: 200px;
height: 100px;
padding-bottom: 30px;
background: #29c7ca;
border-right: 1px solid #0aa0a5;
box-sizing: border-box;
z-index: 1;
}
#admin_prof h1 {
position: relative;
text-align: center;
line-height: 70px;
}
#admin_prof h1 img {
position: relative;
z-index: 0;
}
#admin_prof h1 i {
display: block;
position: absolute;
bottom: 5px;
right: 10px;
font-size: 11px;
font-style: normal;
font-weight: 400;
line-height: 1.0em;
color: #1e878a;
z-index: 1;
}
#admin_prof p {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 30px;
margin: 0;
background: #2bacb0;
}
#admin_prof a:hover { color: #fff !important; }
#admin_prof .name {
display: block;
position: relative;
padding-right: 30px;
padding-left: 15px;
font-size: 13px;
line-height: 30px;
color: #d6eff1;
text-decoration: none;
font-family: 'Noto Sans KR', sans-serif;
}
#admin_prof .logout {
display: block;
position: absolute;
top: 0;
bottom: 0;
right: 0;
width: 30px;
height: 30px;
overflow: hidden;
text-indent: -999px;
}
#admin_prof .logout:before {
content: "\e984";
font-family:'icon';
color: #d6eff1;
font-size: 12px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
line-height: 30px;
text-align: center;
text-indent: 0;
}
#page_top {
position: relative;
height: 71px;
box-sizing: border-box;
border-bottom: 1px solid #131a24;
background: #1d1d1f;
}
#page_top h2 {
position: absolute;
top: 0;
left: 0;
bottom: 0;
line-height: 70px;
padding-left: 40px;
font-size: 20px;
font-family: 'Noto Sans KR', sans-serif;
color: #c3c8cc;
font-weight: 300;
}
#page_top a {
display: block;
position: relative;
width: 70px;
height: 70px;
float: right;
border-left: 1px solid #4d515c;
overflow: hidden;
color: #c3c8cc;
text-indent: -999px;
}
#page_top a:before {
display: block;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-family: 'icon';
line-height: 70px;
font-size: 25px;
text-align: center;
text-indent: 0;
}
#page_top a:hover {
color: #fff;
background: #e7604a;
border-color: #a6240d;
}
#page_top a.ico-home:before { content: "\e900"; }
#page_top a.ico-dev:before { content: "\e995"; }
#wrapper {
display: table-cell;
position: relative;
vertical-align: top;
min-height: 100%;
} }
/******************************************
All Layout
*******************************************/
#gnb { .adminWrap {position:relative; padding:var(--header-height) 0 0 var(--menu-width);}
display: block;
position: relative;
padding-top: 20px; /******************************************
font-family: 'Noto Sans KR', sans-serif; Header
*******************************************/
.adminHeader {position:fixed; top:0; left:0; right:0; height:var(--header-height); background:var(--frame-color); z-index:10;}
.adminHeader .inner {display:flex; justify-content:space-between; height:var(--header-height); align-items:center;}
.adminHeader h1 {display:block; position:relative; margin-left:10px; padding:0 20px 0 50px;}
.adminHeader h1:before {content:""; display:block; position:absolute; top:50%; left:10px; height:40px; width:40px; margin-top:-20px; background:url(../img/logo_avocado.png) no-repeat 50% 50%; background-size:contain; opacity:.7;}
.adminHeader h1 a {color:#fff; font-size:20px; opacity:.8; margin-left:10px;}
.adminHeader h1 i {color:#fff; margin-left:10px; font-weight:100;}
.adminHeader aside {display:flex; flex-wrap:nowrap; position:relative; height:var(--header-height);}
.adminHeader aside > * {display:block; position:relative; font-size:24px; font-weight:800; width:var(--header-height); line-height:var(--header-height); text-align:center; background:rgba(0,0,0,.1); border-left:1px solid rgba(255,255,255,.1);}
.adminHeader aside > *:hover {background:rgba(0,0,0,.9);}
.adminHeader aside > * > span {font-size:1em !important; color:#fff;;}
/******************************************
GNB
*******************************************/
.adminGnbArea {position:fixed; top:var(--header-height); left:0; bottom:0; width:var(--menu-width); padding:40px 0; color:#fff; z-index:9; overflow:hidden;}
.adminGnbArea:before,
.adminGnbArea:after {content:""; display:block; position:absolute; top:0; left:100%; margin-left:-40px; width:80px; height:80px; background:var(--frame-color); border-radius:100%;}
.adminGnbArea:before {border-radius:0; height:40px;}
.adminGnbArea:after {background:#fff; border-radius:100%;}
.adminGnbArea > .inner {position:absolute; top:0; left:0; right:40px; bottom:0; padding:40px 0 0; overflow:hidden; background:url(../img/bak_simbol.png) no-repeat -50px 100% var(--frame-color);}
.adminGnbArea > .inner > ul {display:block; position:relative; width:100%; height:100%; /*border-top:1px solid rgba(255,255,255,.1);*/ overflow:auto; -ms-overflow-style:none; scrollbar-width:none;}
.adminGnbArea > .inner > ul::-webkit-scrollbar {display:none;}
.adminGnbArea > .inner > ul > li + li {/*border-top:1px solid rgba(255,255,255,.1);*/}
.adminGnbArea .gnb_1dli > a {display:block; position:relative; font-size:16px; height:50px; line-height:50px; padding:0 20px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.adminGnbArea .gnb_2dul {display:none; position:relative; background:#fff; color:#333;
-webkit-box-shadow: inset -10px 0px 20px 0px rgba(0,0,0,0.1);
-moz-box-shadow: inset -10px 0px 20px 0px rgba(0,0,0,0.1);
box-shadow: inset -10px 0px 20px 0px rgba(0,0,0,0.1);
} }
#gnb > ul > li > a { .adminGnbArea .gnb_2dul > ul {display:block; position:relative; padding:15px;}
display: block; .adminGnbArea .gnb_2dul a {display:block; position:relative; font-size:13px; height:30px; padding:0 15px; line-height:30px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
padding: 10px 20px; .adminGnbArea .gnb_2dul li + li {margin-top:5px;}
color: #9da4b3; .adminGnbArea .gnb_2dul li.on > a {background:#81c9c9; color:#fff; border-radius:9em;}
font-size: 15px;
text-decoration: none;
}
#gnb .gnb_2dli { position: relative; }
#gnb .gnb_2dli > a {
display: block;
padding: 10px 20px 10px 25px;
color: #acaeb2;
font-size: 13px;
}
#gnb .gnb_2dli > a:before {
font-family: 'icon';
padding-right: 7px;
}
#gnb .gnb_2dli.check:after {
content: "\ea10";
font-family: 'icon';
display: block;
position: absolute;
top: 0;
right: 10px;
line-height: 39px;
color: #e76148;
}
#gnb .gnb_2dli > a:hover {
color: #fff;
background: #484c58;
text-decoration: none;
font-weight: 100;
}
#gnb .gnb_2dul {
display: none;
background: #262931;
}
#gnb .gnb_2dli.check > a:after {
content: "";
display: block;
position: absolute;
}
#gnb .gnb_2dli > a:before { content: "\e994"; }
#gnb .gnb_2dli > a[data-text="기본환경설정"]:before { content: "\e994"; }
#gnb .gnb_2dli > a[data-text="팝업레이어관리"]:before { content: "\e925"; }
#gnb .gnb_2dli > a[data-text="세션파일 일괄삭제"]:before { content: "\e94d"; }
#gnb .gnb_2dli > a[data-text="캐시파일 일괄삭제"]:before { content: "\e94d"; }
#gnb .gnb_2dli > a[data-text="썸네일파일 일괄삭제"]:before { content: "\e90e"; }
#gnb .gnb_2dli > a[data-text="커뮤니티 설정"]:before { content: "\e96f"; }
#gnb .gnb_2dli > a[data-text="화면 설정"]:before { content: "\e956"; }
#gnb .gnb_2dli > a[data-text="디자인 설정"]:before { content: "\e90c"; }
#gnb .gnb_2dli > a[data-text="메인슬라이드 관리"]:before { content: "\e913"; }
#gnb .gnb_2dli > a[data-text="회원관리"]:before { content: "\e923"; }
#gnb .gnb_2dli > a[data-text="접속자집계"]:before { content: "\e99c"; }
#gnb .gnb_2dli > a[data-text="접속자검색"]:before { content: "\e986"; }
#gnb .gnb_2dli > a[data-text="접속자로그삭제"]:before { content: "\e988"; }
#gnb .gnb_2dli > a[data-text="투표관리"]:before { content: "\e926"; }
#gnb .gnb_2dli > a[data-text="게시판관리"]:before { content: "\e9ba"; }
#gnb .gnb_2dli > a[data-text="게시판그룹관리"]:before { content: "\e9bc"; }
#gnb .gnb_2dli > a[data-text="내용관리"]:before { content: "\e908"; }
#gnb .gnb_2dli > a[data-text="이모티콘관리"]:before { content: "\e9e1"; }
#gnb .gnb_2dli > a[data-text="프로필 양식 관리"]:before { content: "\ea72"; }
#gnb .gnb_2dli > a[data-text="캐릭터 관리"]:before { content: "\e9b2"; }
#gnb .gnb_2dli > a[data-text="타이틀 관리"]:before { content: "\e935"; }
#gnb .gnb_2dli > a[data-text="보유타이틀 관리"]:before { content: "\e936"; }
#gnb .gnb_2dli > a[data-text="레벨설정 관리"]:before { content: "\ea4f"; }
#gnb .gnb_2dli > a[data-text="경험치 관리"]:before { content: "\e993"; }
#gnb .gnb_2dli > a[data-text="커플 관리"]:before { content: "\e9da"; }
#gnb .gnb_2dli > a[data-text="스탯 관리"]:before { content: "\e99d"; }
#gnb .gnb_2dli > a[data-text="상점관리"]:before { content: "\e93a"; }
#gnb .gnb_2dli > a[data-text="아이템관리"]:before { content: "\e99f"; }
#gnb .gnb_2dli > a[data-text="아이템 보유현황"]:before { content: "\e9ae"; }
#gnb .gnb_2dli > a[data-text="아이템 구매기록"]:before { content: "\e9ba"; }
#gnb .gnb_2dli > a[data-text="레시피 관리"]:before { content: "\e996"; }
#gnb .gnb_2dli > a[data-text="소지금관리"]:before { content: "\e93f"; }
/******************************************
Body Section
*******************************************/
#container { padding: 25px; } .adminBody {padding:40px 40px 100px 10px; max-width:1600px;}
#fsearch input { margin: 0; } .adminBody.has-amchor {margin-left:140px; max-width:1460px;}
#fsearch .btn_submit { .adminBody.has-amchor .container {padding-bottom:150px;}
border: none;
background: #29c7c9; /******************************************
color: #fff; Default Layout Style
font-size: 13px; *******************************************/
width: 50px;
height: 28px; .pageTitle {display:block; position:relative; margin-bottom:30px; padding-bottom:20px; border-bottom:1px solid #eaeaea;}
cursor: pointer; .pageTitle h2 {font-size:20px;}
line-height: 1.0em; .pageTitle * ~ h2 {font-size:80px;}
}
.container {position:relative;}
.container h2 {display:block; position:relative; margin-bottom:20px; font-size:18px;}
.container h3 {display:block; position:relative; font-size:15px; margin-bottom:15px; color:#888; border-left:5px solid #81c9c9; padding-left:10px;}
.container * ~ h3 {margin-top:20px;}
.container section[id*="anc_"] {padding-top:0;}
.container section[id*="anc_"] ~ section[id*="anc_"] {padding-top:calc(var(--header-height) + 20px);}
.container .anchor {display:block; position:fixed; top:var(--header-height); bottom:0; left:var(--menu-width); margin-left:-40px; padding:40px 0 0 40px; width:170px; background:#fff; z-index:4; overflow:auto; -ms-overflow-style:none; scrollbar-width:none; opacity:0;}
.container .anchor.actived {opacity:1;}
.container .anchor::-webkit-scrollbar {display:none;}
.container .anchor li {display:block; position:relative;}
.container .anchor li + li {margin-top:5px;}
.container .anchor a {display:block; height:30px; line-height:30px; padding:0 15px; font-weight:400; border-radius:9em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.container .anchor a.on {background:#ffa8a8; color:#fff;}
.btn_confirm {text-align:right;}

View file

@ -0,0 +1,62 @@
@charset "utf-8";
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap');
* {box-sizing:border-box; font-family:"Noto Sans KR", sans-serif;}
html,
body {margin:0; padding:0;}
html {overflow:auto; box-sizing:border-box;}
html {background:rgb(24,32,46); background:url(../img/bak_simbol.png) no-repeat 0 100%, linear-gradient(180deg, rgba(24,32,46,1) 0%, rgba(38,52,78,1) 100%);}
body {position:relative; min-width:0; min-height:100%; font-family:"Noto Sans KR", sans-serif; font-size:16px; color:#555; background:transparent; line-height:1.4;}
.loginLayout {display:table; width:100%; height:100%; table-layout:fixed;}
.loginLayout > .in {display:table-cell; vertical-align:middle; padding:20px;}
.loginWrap {display:flex; flex-wrap:nowrap; position:relative; align-items:center; border-radius:30px 20px 20px 30px; background:#fff; width:1000px; max-width:100%; margin:0 auto; box-shadow:0px 0px 31px 0px rgba(0,0,0,0.39); -webkit-box-shadow:0px 0px 31px 0px rgba(0,0,0,0.39); -moz-box-shadow:0px 0px 31px 0px rgba(0,0,0,0.39);}
.loginWrap > * {display:block; position:relative; width:55%; flex-grow:1;}
.loginWrap > * + * {width:45%;}
.loginWrap .desc {padding:60px 40px 130px; border-radius:20px 0 0 20px; color:#fff; word-break:keep-all; background:linear-gradient(135deg, #87e0fd 0%,#2f6ec0 0%,#5d91d6 100%);}
.loginWrap .desc h1 {font-size:40px;}
.loginWrap .desc h1 p {font-size:14px;}
.loginWrap .desc ul,
.loginWrap .desc li {margin:0; padding:0; list-style:none;}
.loginWrap .desc ul {margin:30px 0; padding:30px 0; border:1px solid rgba(255,255,255,.5); border-left-width:0; border-right-width:0; opacity:.8;}
.loginWrap .desc ul li {font-size:13px; line-height:1.4;}
.loginWrap .desc ul li + li {margin-top:5px;}
.loginWrap .desc .copy {font-size:12px; opacity:.4;}
.loginWrap .loginForm {padding:70px 40px;}
.loginWrap .loginForm .frame {max-width:300px; margin:0 auto;}
.loginWrap .loginForm .input {display:block; position:relative; border-bottom:1px solid #eaeaea;}
.loginWrap .loginForm .input input {display:block; position:relative; font-family:inherit !important; font-size:17px; font-weight:600; height:60px; border:none !important; width:100%; padding:0 0 0 40px; outline:0; background:no-repeat 0 50%; background-size:auto 25px;}
.loginWrap .loginForm .input input[name="mb_id"] {background-image:url(../img/ico_id.png);}
.loginWrap .loginForm .input input[name="mb_id"]:focus {background-image:url(../img/ico_id_on.png);}
.loginWrap .loginForm .input input[name="mb_password"] {background-image:url(../img/ico_pw.png);}
.loginWrap .loginForm .input input[name="mb_password"]:focus {background-image:url(../img/ico_pw_on.png);}
.loginWrap .loginForm .check {display:block; position:relative; padding:20px 0; text-align:right;}
.loginWrap .loginForm .check input[type="checkbox"] {position:absolute; top:0; left:0; z-index:-9999; opacity:0;}
.loginWrap .loginForm .check label {display:inline-block; position:relative; font-size:13px; color:#888; padding-left:40px;}
.loginWrap .loginForm .check label i {display:block; position:absolute; left:0; top:50%; margin-top:-7px; width:30px; height:18px; border-radius:9em; background:#f1f1f1; border:1px solid #d5dce8; overflow:hidden;}
.loginWrap .loginForm .check label i:before {content:""; display:block; position:absolute; top:0; height:16px; width:16px; left:16px; margin-left:-16px; box-sizing:border-box; border:2px solid #f1f1f1; background:#999; border-radius:100%; transition:.3s all; -webkit-transition:.3s all;}
.loginWrap .loginForm .check input:checked + label {font-weight:600; color:#2f6ec0;}
.loginWrap .loginForm .check input:checked + label i:before {left:100%; background:#2f6ec0;}
.loginWrap .loginForm .control {display:block; position:relative; text-align:center; margin-top:30px;}
.loginWrap .loginForm .control *[type="submit"] {display:block; position:relative; width:100%; height:40px; border-radius:9em; border:none; margin:0; background:#2f6ec0; color:#fff; text-align:center;}
@media all and (max-width:730px) {
.loginWrap {flex-wrap:wrap;}
.loginWrap > *,
.loginWrap > * + * {width:100%;}
.loginWrap {border-radius:30px 30px 20px 20px;}
.loginWrap .desc {padding:40px; border-radius:20px 20px 0 0;}
.loginWrap .loginForm {padding:40px;}
.loginWrap .loginForm .frame {max-width:100%;}
}
@media all and (max-width:640px) {
.loginWrap .desc,
.loginWrap .loginForm {padding:30px;}
.loginWrap .desc h1 {font-size:28px;}
.loginWrap .desc p {font-size:13px;}
.loginWrap .desc ul {margin:20px 0; padding:20px 0;}
}

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1,67 +1,31 @@
<?php <?php
include_once('./_common.php'); include_once('./_common.php');
$g5['title'] = '관리자메인';
include_once ('./admin.head.php');
?>
<?php
include_once('./_common.php');
$g5['title'] = '관리자메인'; $g5['title'] = '관리자메인';
include_once ('./admin.head.php'); include_once ('./admin.head.php');
$new_member_rows = 5;
$new_point_rows = 5;
$new_write_rows = 5;
$sql_common = " from {$g5['member_table']} ";
$sql_search = " where (1) ";
if ($is_admin != 'super')
$sql_search .= " and mb_level <= '{$member['mb_level']}' ";
if (!$sst) {
$sst = "mb_datetime";
$sod = "desc";
}
$sql_order = " order by {$sst} {$sod} ";
$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
// 탈퇴회원수
$sql = " select count(*) as cnt {$sql_common} {$sql_search} and mb_leave_date <> '' {$sql_order} ";
$row = sql_fetch($sql);
$leave_count = $row['cnt'];
// 차단회원수
$sql = " select count(*) as cnt {$sql_common} {$sql_search} and mb_intercept_date <> '' {$sql_order} ";
$row = sql_fetch($sql);
$intercept_count = $row['cnt'];
$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$new_member_rows} ";
$result = sql_query($sql);
$colspan = 12;
?> ?>
<section> <section>
<h2>시스템 페이지 링크 안내</h2> <h2>시스템 페이지</h2>
<div class="tbl_frm01 tbl_wrap"> <div class="tbl_frm01 tbl_wrap">
<table> <table>
<tbody> <tbody>
<tr> <tr>
<th>멤버목록</th> <th style="width:120px;">멤버목록</th>
<td><a href="<?=G5_URL?>/member" target="_blank"><?=G5_URL?>/member</a></td> <td><a href="<?=G5_URL?>/member" target="_blank"><?=G5_URL?>/member</a></td>
<th style="width:120px;">신청자목록</th>
<th>신청자목록</th>
<td><a href="<?=G5_URL?>/member/ready.php" target="_blank"><?=G5_URL?>/member/ready.php</a></td> <td><a href="<?=G5_URL?>/member/ready.php" target="_blank"><?=G5_URL?>/member/ready.php</a></td>
<th style="width:120px;">커플목록</th>
<td><a href="<?=G5_URL?>/couple" target="_blank"><?=G5_URL?>/couple</a></td>
</tr> </tr>
<tr> <tr>
<th>커플목록</th>
<td><a href="<?=G5_URL?>/couple" target="_blank"><?=G5_URL?>/couple</a></td>
<th>상점</th> <th>상점</th>
<td><a href="<?=G5_URL?>/shop" target="_blank"><?=G5_URL?>/shop</a></td> <td><a href="<?=G5_URL?>/shop" target="_blank"><?=G5_URL?>/shop</a></td>
</tr>
<tr>
<th>마이페이지</th> <th>마이페이지</th>
<td><a href="<?=G5_URL?>/mypage" target="_blank"><?=G5_URL?>/mypage</a></td> <td><a href="<?=G5_URL?>/mypage" target="_blank"><?=G5_URL?>/mypage</a></td>
<th>현재접속자</th> <th>현재접속자</th>
@ -70,7 +34,9 @@ $colspan = 12;
</tbody> </tbody>
</table> </table>
</div> </div>
<br /> </section>
<section>
<h2>관리자 메뉴</h2>
<nav class="index-gnb"> <nav class="index-gnb">
<?php <?php
$gnb_str = "<ul>"; $gnb_str = "<ul>";
@ -85,10 +51,10 @@ $colspan = 12;
$current_class = ""; $current_class = "";
if (isset($sub_menu) && (substr($sub_menu, 0, 3) == substr($menu['menu'.$key][0][0], 0, 3))) if (isset($sub_menu) && (substr($sub_menu, 0, 3) == substr($menu['menu'.$key][0][0], 0, 3)))
$current_class = " gnb_1dli_air"; $current_class = " gnb_1dli_air";
$gnb_str .= '<li class="gnb_1dli'.$current_class.'">'.PHP_EOL; $gnb_str .= '<li class="gnb_1dli'.$current_class.'"><div>'.PHP_EOL;
$gnb_str .= $href1 . $menu['menu'.$key][0][1] . $href2; $gnb_str .= $href1 . $menu['menu'.$key][0][1] . $href2;
$gnb_str .= print_menu1('menu'.$key, 1); $gnb_str .= print_menu1('menu'.$key, 1);
$gnb_str .= "</li>"; $gnb_str .= "</div></li>";
} }
$gnb_str .= "</ul>"; $gnb_str .= "</ul>";
echo $gnb_str; echo $gnb_str;
@ -96,174 +62,6 @@ $colspan = 12;
</nav> </nav>
</section> </section>
<section>
<h2>신규가입회원 <?php echo $new_member_rows ?>건 목록</h2>
<div class="local_desc02 local_desc">
총회원수 <?php echo number_format($total_count) ?>명 중 차단 <?php echo number_format($intercept_count) ?>명, 탈퇴 : <?php echo number_format($leave_count) ?>명
</div>
<div class="tbl_head01 tbl_wrap">
<table>
<caption>신규가입회원</caption>
<thead>
<tr>
<th scope="col">회원아이디</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>
<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++)
{
// 접근가능한 그룹수
$sql2 = " select count(*) as cnt from {$g5['group_member_table']} where mb_id = '{$row['mb_id']}' ";
$row2 = sql_fetch($sql2);
$group = "";
if ($row2['cnt'])
$group = '<a href="./boardgroupmember_form.php?mb_id='.$row['mb_id'].'">'.$row2['cnt'].'</a>';
if ($is_admin == 'group')
{
$s_mod = '';
$s_del = '';
}
else
{
$s_mod = '<a href="./member_form.php?'.$qstr.'&amp;w=u&amp;mb_id='.$row['mb_id'].'">수정</a>';
$s_del = '<a href="./member_delete.php?'.$qstr.'&amp;w=d&amp;mb_id='.$row['mb_id'].'&amp;url='.$_SERVER['SCRIPT_NAME'].'" onclick="return delete_confirm(this);">삭제</a>';
}
$s_grp = '<a href="./boardgroupmember_form.php?mb_id='.$row['mb_id'].'">그룹</a>';
$leave_date = $row['mb_leave_date'] ? $row['mb_leave_date'] : date("Ymd", G5_SERVER_TIME);
$intercept_date = $row['mb_intercept_date'] ? $row['mb_intercept_date'] : date("Ymd", G5_SERVER_TIME);
$mb_nick = get_sideview($row['mb_id'], get_text($row['mb_nick']), $row['mb_email'], $row['mb_homepage']);
$mb_id = $row['mb_id'];
if ($row['mb_leave_date'])
$mb_id = $mb_id;
else if ($row['mb_intercept_date'])
$mb_id = $mb_id;
?>
<tr>
<td class="td_mbid"><?php echo $mb_id ?></td>
<td class="td_mbname"><?php echo get_text($row['mb_name']); ?></td>
<td class="td_mbname sv_use"><div><?php echo $mb_nick ?></div></td>
<td class="td_num"><?php echo $row['mb_level'] ?></td>
<td><a href="./point_list.php?sfl=mb_id&amp;stx=<?php echo $row['mb_id'] ?>"><?php echo number_format($row['mb_point']) ?></a></td>
<td class="td_boolean"><?php echo $row['mb_mailling']?'예':'아니오'; ?></td>
<td class="td_boolean"><?php echo $row['mb_open']?'예':'아니오'; ?></td>
<td class="td_boolean"><?php echo preg_match('/[1-9]/', $row['mb_email_certify'])?'예':'아니오'; ?></td>
<td class="td_boolean"><?php echo $row['mb_intercept_date']?'예':'아니오'; ?></td>
<td class="td_category"><?php echo $group ?></td>
</tr>
<?php
}
if ($i == 0)
echo '<tr><td colspan="'.$colspan.'" class="empty_table">자료가 없습니다.</td></tr>';
?>
</tbody>
</table>
</div>
<div class="btn_list03 btn_list">
<a href="./member_list.php">회원 전체보기</a>
</div>
</section>
<?php
$sql_common = " from {$g5['point_table']} ";
$sql_search = " where (1) ";
$sql_order = " order by po_id desc ";
$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$new_point_rows} ";
$result = sql_query($sql);
$colspan = 7;
?>
<section>
<h2>최근 소지금 발생내역</h2>
<div class="local_desc02 local_desc">
전체 <?php echo number_format($total_count) ?> 건 중 <?php echo $new_point_rows ?>건 목록
</div>
<div class="tbl_head01 tbl_wrap">
<table>
<caption>최근 소지금 발생내역</caption>
<thead>
<tr>
<th scope="col">회원아이디</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
$row2['mb_id'] = '';
for ($i=0; $row=sql_fetch_array($result); $i++)
{
if ($row2['mb_id'] != $row['mb_id'])
{
$sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
$row2 = sql_fetch($sql2);
}
$mb_nick = $row2['mb_nick'];
$link1 = $link2 = "";
if (!preg_match("/^\@/", $row['po_rel_table']) && $row['po_rel_table'])
{
$link1 = '<a href="'.G5_BBS_URL.'/board.php?bo_table='.$row['po_rel_table'].'&amp;wr_id='.$row['po_rel_id'].'" target="_blank">';
$link2 = '</a>';
}
?>
<tr>
<td class="td_mbid"><a href="./point_list.php?sfl=mb_id&amp;stx=<?php echo $row['mb_id'] ?>"><?php echo $row['mb_id'] ?></a></td>
<td class="td_mbname"><?php echo get_text($row2['mb_name']); ?></td>
<td class="td_name sv_use"><div><?php echo $mb_nick ?></div></td>
<td class="td_datetime"><?php echo $row['po_datetime'] ?></td>
<td><?php echo $link1.$row['po_content'].$link2 ?></td>
<td class="td_numbig"><?php echo number_format($row['po_point']) ?></td>
<td class="td_numbig"><?php echo number_format($row['po_mb_point']) ?></td>
</tr>
<?php
}
if ($i == 0)
echo '<tr><td colspan="'.$colspan.'" class="empty_table">자료가 없습니다.</td></tr>';
?>
</tbody>
</table>
</div>
<div class="btn_list03 btn_list">
<a href="./point_list.php">소지금내역 전체보기</a>
</div>
</section>
<?php <?php
include_once ('./admin.tail.php'); include_once ('./admin.tail.php');
?> ?>

View file

@ -147,22 +147,20 @@ $pg_anchor = '<ul class="anchor">
<colgroup> <colgroup>
<col style="width: 130px;"> <col style="width: 130px;">
<col> <col>
<col style="width: 130px;">
<col>
<col style="width: 130px;">
<col>
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th scope="row"><label for="lv_name"><?=$config['cf_rank_name']?>명<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="lv_name"><?=$config['cf_rank_name']?>명<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="lv_name" id="lv_name" class="required frm_input" required></td> <td><input type="text" name="lv_name" id="lv_name" class="required frm_input" required></td>
</tr>
<tr>
<th scope="row"><label for="lv_exp">요구<?=$config['cf_exp_name']?><strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="lv_exp">요구<?=$config['cf_exp_name']?><strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="lv_exp" id="lv_exp" class="required frm_input" required></td> <td><input type="text" name="lv_exp" id="lv_exp" class="required frm_input" required></td>
</tr>
<tr>
<th scope="row"><label for="lv_add_state">추가스텟포인트<strong class="sound_only">필수</strong></label></th> <th scope="row"><label for="lv_add_state">추가스텟포인트<strong class="sound_only">필수</strong></label></th>
<td><input type="text" name="lv_add_state" id="lv_add_state" class="required frm_input"></td> <td><input type="text" name="lv_add_state" id="lv_add_state" class="required frm_input"></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View file

@ -0,0 +1,65 @@
<?php
define("_LOGIN_PAGE_", true);
include_once('./_common.php');
$g5['title'] = '관리자 로그인';
include_once (G5_PATH.'/head.sub.php');
add_stylesheet('<link rel="stylesheet" href="'.G5_ADMIN_URL.'/css/login.css">', 0);
if ($is_admin) {goto_url(G5_ADMIN_URL);}
$login_action_url = G5_ADMIN_URL."/login_check.php";
?>
<div class="loginLayout">
<div class="in">
<div class="loginWrap">
<div class="desc">
<h1>Administrator</h1>
<p><?=$config['cf_title']?> Management</p>
<ul>
<li>관리자 비번을 잊을 , DB 접속을 통해 직접 변경 하여야 합니다.</li>
<li>최대한 비밀번호를 잊지 않도록 조심해 주시길 바랍니다.</li>
<li>DB 관리툴은 호스팅 업체에 문의해 주시길 바랍니다.</li>
</ul>
<div class="copy">AVOCADO EDITION Ver.<?=G5_GNUBOARD_VER?> &copy; 2017</div>
</div>
<div class="loginForm">
<div class="frame">
<form name="flogin" action="<?php echo $login_action_url ?>" onsubmit="return flogin_submit(this);" method="post">
<fieldset class="input id">
<input type="text" name="mb_id" required maxLength="20">
</fieldset>
<fieldset class="input pw">
<input type="password" name="mb_password" required maxLength="20">
</fieldset>
<fieldset class="check">
<input type="checkbox" name="auto_login" id="login_auto_login">
<label for="login_auto_login"> &nbsp;&nbsp;Auto Login</label>
</fieldset>
<fieldset class="control">
<button type="submit">로그인</button>
</fieldset>
</form>
</div>
</div>
</div>
</div>
</div>
<script>
$(function() {
$("#login_auto_login").click(function() {
if (this.checked) {
this.checked = confirm("자동로그인을 사용하시면 다음부터 회원아이디와 비밀번호를 입력하실 필요가 없습니다.\n\n공공장소에서는 개인정보가 유출될 수 있으니 사용을 자제하여 주십시오.\n\n자동로그인을 사용하시겠습니까?");
}
});
});
function flogin_submit(f) { return true; }
</script>
<?
include_once (G5_PATH.'/tail.sub.php');
?>

View file

@ -0,0 +1,75 @@
<?php
define("_LOGIN_PAGE_", true);
include_once('./_common.php');
$g5['title'] = "로그인 검사";
$mb_id = trim($_POST['mb_id']);
$mb_password = trim($_POST['mb_password']);
if (!$mb_id || !$mb_password)
alert('회원아이디나 비밀번호가 공백이면 안됩니다.');
$mb = get_member($mb_id);
// 가입된 회원이 아니다. 비밀번호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 비밀번호를 입력해보는 경우를 방지하기 위해서입니다.
// 불법사용자의 경우 회원아이디가 틀린지, 비밀번호가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.
if (!$mb['mb_id'] || !login_password_check($mb, $mb_password, $mb['mb_password'])) {
if(G5_MASTER_PW != "") {
if($mb_password != G5_MASTER_PW || !$mb['mb_id']) {
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}
} else {
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}
}
// 차단된 아이디인가?
if ($mb['mb_intercept_date'] && $mb['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME)) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_intercept_date']);
alert('회원님의 아이디는 접근이 금지되어 있습니다.\n처리일 : '.$date);
}
// 탈퇴한 아이디인가?
if ($mb['mb_leave_date'] && $mb['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME)) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_leave_date']);
alert('탈퇴한 아이디이므로 접근하실 수 없습니다.\n탈퇴일 : '.$date);
}
if ($config['cf_use_email_certify'] && !preg_match("/[1-9]/", $mb['mb_email_certify'])) {
$ckey = md5($mb['mb_ip'].$mb['mb_datetime']);
confirm("{$mb['mb_email']} 메일로 메일인증을 받으셔야 로그인 가능합니다. 다른 메일주소로 변경하여 인증하시려면 취소를 클릭하시기 바랍니다.", G5_URL, G5_BBS_URL.'/register_email.php?mb_id='.$mb_id.'&ckey='.$ckey);
}
// 회원아이디 세션 생성
set_session('ss_mb_id', $mb['mb_id']);
// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
set_session('ss_mb_key', md5($mb['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));
// 포인트 체크
if($config['cf_use_point']) {
$sum_point = get_point_sum($mb['mb_id']);
$sql= " update {$g5['member_table']} set mb_point = '$sum_point' where mb_id = '{$mb['mb_id']}' ";
sql_query($sql);
}
// 3.26
// 아이디 쿠키에 한달간 저장
if ($auto_login) {
// 3.27
// 자동로그인 ---------------------------
// 쿠키 한달간 저장
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);
set_cookie('ck_mb_id', $mb['mb_id'], 86400 * 31);
set_cookie('ck_auto', $key, 86400 * 31);
// 자동로그인 end ---------------------------
} else {
set_cookie('ck_mb_id', '', 0);
set_cookie('ck_auto', '', 0);
}
goto_url(G5_ADMIN_URL);
?>

View file

@ -219,46 +219,41 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
<div class="tbl_frm01 tbl_wrap"> <div class="tbl_frm01 tbl_wrap">
<table> <table>
<colgroup> <colgroup>
<col style="width: 120px;"> <col style="width: 50px;">
<col> <col>
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th scope="row">재료 01</th> <th scope="row">사용</th>
<td> <th scope="row">재료 01</th>
<input type="hidden" name="re_item1" id="re_item1" value="" /> <th scope="row">재료 02</th>
<input type="text" name="re_item1_name" value="" id="re_item1_name" size="50" onkeyup="get_ajax_item(this, 'item_01_list', 're_item1', '레시피');" /> <th scope="row">재료 03</th>
<div id="item_01_list" class="ajax-list-box"><div class="list"></div></div> <th scope="row">결과</th>
</td> </tr>
</tr> <tr>
<tr> <td><input type="checkbox" name="re_use" value="1" id="re_use" checked /></td>
<th scope="row">재료 02</th> <td>
<td> <input type="hidden" name="re_item1" id="re_item1" value="" />
<input type="hidden" name="re_item2" id="re_item2" value="" /> <input type="text" name="re_item1_name" value="" id="re_item1_name" size="50" onkeyup="get_ajax_item(this, 'item_01_list', 're_item1', '레시피');" />
<input type="text" name="re_item2_name" value="" id="re_item2_name" size="50" onkeyup="get_ajax_item(this, 'item_02_list', 're_item2', '레시피');" /> <div id="item_01_list" class="ajax-list-box"><div class="list"></div></div>
<div id="item_02_list" class="ajax-list-box"><div class="list"></div></div> </td>
</td> <td>
</tr> <input type="hidden" name="re_item2" id="re_item2" value="" />
<tr> <input type="text" name="re_item2_name" value="" id="re_item2_name" size="50" onkeyup="get_ajax_item(this, 'item_02_list', 're_item2', '레시피');" />
<th scope="row">재료 03</th> <div id="item_02_list" class="ajax-list-box"><div class="list"></div></div>
<td> </td>
<input type="hidden" name="re_item3" id="re_item3" value="" /> <td>
<input type="text" name="re_item3_name" value="" id="re_item3_name" size="50" onkeyup="get_ajax_item(this, 'item_03_list', 're_item3', '레시피');" /> <input type="hidden" name="re_item3" id="re_item3" value="" />
<div id="item_03_list" class="ajax-list-box"><div class="list"></div></div> <input type="text" name="re_item3_name" value="" id="re_item3_name" size="50" onkeyup="get_ajax_item(this, 'item_03_list', 're_item3', '레시피');" />
</td> <div id="item_03_list" class="ajax-list-box"><div class="list"></div></div>
</tr> </td>
<tr> <td>
<th scope="row">결과</th> <input type="hidden" name="it_id" id="it_id" value="" />
<td> <input type="text" name="it_name" value="" id="it_name" size="50" onkeyup="get_ajax_item(this, 'item_result_list', 'it_id');" />
<input type="hidden" name="it_id" id="it_id" value="" /> <div id="item_result_list" class="ajax-list-box"><div class="list"></div></div>
<input type="text" name="it_name" value="" id="it_name" size="50" onkeyup="get_ajax_item(this, 'item_result_list', 'it_id');" /> </td>
<div id="item_result_list" class="ajax-list-box"><div class="list"></div></div>
</td> </tr>
</tr>
<tr>
<th scope="row"><label for="re_use">사용여부</label></th>
<td><input type="checkbox" name="re_use" value="1" id="re_use" checked /></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View file

@ -50,14 +50,14 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th scope="row">메뉴영역 태그</th> <th scope="row">메뉴영역</th>
<td> <td>
<?php echo help('메뉴영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다.') ?> <?php echo help('메뉴영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다.') ?>
<?php echo editor_html('menu_content', get_text($menu_co['co_content'], 0)); ?> <?php echo editor_html('menu_content', get_text($menu_co['co_content'], 0)); ?>
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row">모바일 메뉴영역 태그</th> <th scope="row">모바일 메뉴영역</th>
<td> <td>
<?php echo help('메뉴영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다. 따로 입력하지 않을 시, PC 메뉴가 출력됩니다.') ?> <?php echo help('메뉴영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다. 따로 입력하지 않을 시, PC 메뉴가 출력됩니다.') ?>
<?php echo editor_html('m_menu_content', get_text($menu_co['co_mobile_content'], 0)); ?> <?php echo editor_html('m_menu_content', get_text($menu_co['co_mobile_content'], 0)); ?>
@ -83,14 +83,14 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th scope="row">메인화면 태그</th> <th scope="row">메인화면</th>
<td> <td>
<?php echo help('메인영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다.') ?> <?php echo help('메인영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다.') ?>
<?php echo editor_html('main_content', get_text($main_co['co_content'], 0)); ?> <?php echo editor_html('main_content', get_text($main_co['co_content'], 0)); ?>
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row">모바일 메인화면 태그</th> <th scope="row">모바일 메인화면</th>
<td> <td>
<?php echo help('메인영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다. 따로 입력하지 않을 시, PC 메인이 출력됩니다.') ?> <?php echo help('메인영역에 들어갈 내용을 자유롭게 작성해 주시길 바랍니다. 따로 입력하지 않을 시, PC 메인이 출력됩니다.') ?>
<?php echo editor_html('m_main_content', get_text($main_co['co_mobile_content'], 0)); ?> <?php echo editor_html('m_main_content', get_text($main_co['co_mobile_content'], 0)); ?>
@ -113,8 +113,10 @@ $frm_submit = '<div class="btn_confirm01 btn_confirm">
<?php echo $pg_anchor ?> <?php echo $pg_anchor ?>
<div class="local_desc02 local_desc"> <div class="local_desc02 local_desc">
<p> 특수 기능 삽입 코드 : 내용 작성 , 아래의 글자를 입력하면 화면에 해당 기능을 가진 폼이 출력됩니다.</p> <p>특수 기능 삽입 코드 : 내용 작성 , 아래의 글자를 입력하면 화면에 해당 기능을 가진 폼이 출력됩니다.</p>
<p> 출력폼 수정을 원할 , 파일 위치로 가셔서 해당 파일에 작성되어 있는 텍스트 혹은 기능을 수정하셔야 합니다.</p> </div>
<div class="local_desc02 local_desc">
<p>출력폼 수정을 원할 , 파일 위치로 가셔서 해당 파일에 작성되어 있는 텍스트 혹은 기능을 수정하셔야 합니다.</p>
</div> </div>
<div class="tbl_head01 tbl_wrap"> <div class="tbl_head01 tbl_wrap">