refactor: common_ts 분리 후 일괄 로드

This commit is contained in:
2021-12-11 00:07:59 +09:00
parent 3c23e0fb93
commit 8464f96e40
42 changed files with 6515 additions and 5727 deletions
+87 -82
View File
@@ -1,97 +1,102 @@
<?php
namespace sammo;
require(__DIR__.'/../vendor/autoload.php');
require(__DIR__ . '/../vendor/autoload.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title>유저 관리</title>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title>유저 관리</title>
<!-- 스타일 -->
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('../css/admin_member.css')?>
<!-- 스타일 -->
<?= WebUtil::printCSS('../e_lib/bootstrap.min.css') ?>
<?= WebUtil::printCSS('../d_shared/common.css') ?>
<?= WebUtil::printCSS('../css/admin_member.css') ?>
<?=WebUtil::printJS('../d_shared/common_path.js') ?>
<?=WebUtil::printJS('../dist_js/vendors.js') ?>
<?=WebUtil::printJS('../dist_js/admin_member.js')?>
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
<?= WebUtil::printJS('../dist_js/vendors.js') ?>
<?= WebUtil::printJS('../dist_js/common_ts.js') ?>
<?= WebUtil::printJS('../dist_js/admin_member.js') ?>
</head>
<body>
<div class="container">
<div class="card">
<div class="card-header">
<a href="entrance.php"><button type="button" class="btn btn-primary" style="float:right;">돌아가기</button></a>
<h3>회원 관리</h3>
<div class="container">
<div class="card">
<div class="card-header">
<a href="entrance.php"><button type="button" class="btn btn-primary" style="float:right;">돌아가기</button></a>
<h3>회원 관리</h3>
</div>
<div class="card-body">
가입 허용&nbsp;
<div id="radios_allow_join" class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="allow_join" value="1" id="allow_join_y" autocomplete="off">Y
</label>
<label class="btn btn-secondary">
<input type="radio" name="allow_join" value="0" id="allow_join_n" autocomplete="off">N
</label>
</div>
로그인 허용&nbsp;
<div id="radios_allow_login" class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="allow_login" value="1" id="allow_login_y" autocomplete="off">Y
</label>
<label class="btn btn-secondary">
<input type="radio" name="allow_login" value="0" id="allow_login_n" autocomplete="off">N
</label>
</div>
<div class="btn-group" role="group">
<button onclick="changeSystem('scrub_deleted');" type="button" class="btn btn-secondary">탈퇴 계정 정리(1개월+)</button>
<button onclick="changeSystem('scrub_icon');" type="button" class="btn btn-secondary">전콘 정리(1개월+)</button>
</div>
<button onclick="changeSystem('scrub_old_user');" type="button" class="btn btn-secondary">오래된 계정 정리(6개월+)</button>
</div>
<h6 class="card-header">회원 목록</h6>
<table id="user_list_frame" class="table table-hover table-sm table-striped">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col style="width:200px;">
</colgroup>
<thead class="thead-dark">
<tr>
<th scope="col">코드</th>
<th scope="col">유저명</th>
<th scope="col">EMAIL</th>
<th scope="col">등급</th>
<th scope="col">닉네임</th>
<th scope="col">전콘</th>
<th scope="col">장수명</th>
<th scope="col">가입<br>일자</th>
<th scope="col">최근<br>로그인</th>
<th scope="col">탈퇴<br>신청</th>
<th scope="col">명령</th>
</tr>
</thead>
<tbody id="user_list">
</tbody>
</table>
</div>
<div class="card-body">
가입 허용&nbsp;
<div id="radios_allow_join" class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="allow_join" value="1" id="allow_join_y" autocomplete="off">Y
</label>
<label class="btn btn-secondary">
<input type="radio" name="allow_join" value="0" id="allow_join_n" autocomplete="off">N
</label>
</div>
로그인 허용&nbsp;
<div id="radios_allow_login" class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="allow_login" value="1" id="allow_login_y" autocomplete="off">Y
</label>
<label class="btn btn-secondary">
<input type="radio" name="allow_login" value="0" id="allow_login_n" autocomplete="off">N
</label>
</div>
<div class="btn-group" role="group">
<button onclick="changeSystem('scrub_deleted');" type="button" class="btn btn-secondary">탈퇴 계정 정리(1개월+)</button>
<button onclick="changeSystem('scrub_icon');" type="button" class="btn btn-secondary">전콘 정리(1개월+)</button>
</div>
<button onclick="changeSystem('scrub_old_user');" type="button" class="btn btn-secondary">오래된 계정 정리(6개월+)</button>
</div>
<h6 class="card-header">회원 목록</h6>
<table id="user_list_frame" class="table table-hover table-sm table-striped">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col style="width:200px;">
</colgroup>
<thead class="thead-dark">
<tr>
<th scope="col">코드</th>
<th scope="col">유저명</th>
<th scope="col">EMAIL</th>
<th scope="col">등급</th>
<th scope="col">닉네임</th>
<th scope="col">전콘</th>
<th scope="col">장수명</th>
<th scope="col">가입<br>일자</th>
<th scope="col">최근<br>로그인</th>
<th scope="col">탈퇴<br>신청</th>
<th scope="col">명령</th>
</tr>
</thead>
<tbody id="user_list">
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
+97 -94
View File
@@ -1,12 +1,13 @@
<?php
namespace sammo;
require(__DIR__.'/../vendor/autoload.php');
require(__DIR__ . '/../vendor/autoload.php');
WebUtil::setHeaderNoCache();
$session = Session::requireLogin()->setReadOnly();
$templates = new \League\Plates\Engine(__DIR__.'/templates');
$templates = new \League\Plates\Engine(__DIR__ . '/templates');
$db = RootDB::db();
$notice = $db->queryFirstField('SELECT `NOTICE` FROM `system` WHERE `NO`=1');
@@ -17,111 +18,113 @@ $acl = $session->acl;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title>서버목록</title>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title>서버목록</title>
<!-- 스타일 -->
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('../css/config.css')?>
<?=WebUtil::printCSS('../css/entrance.css')?>
<?=WebUtil::printCSS('../css/admin_server.css')?>
<!-- 스타일 -->
<?= WebUtil::printCSS('../e_lib/bootstrap.min.css') ?>
<?= WebUtil::printCSS('../d_shared/common.css') ?>
<?= WebUtil::printCSS('../css/config.css') ?>
<?= WebUtil::printCSS('../css/entrance.css') ?>
<?= WebUtil::printCSS('../css/admin_server.css') ?>
<!-- 액션 -->
<script>
var isAdmin = <?=($userGrade >= 5 || $acl)?'true':'false'?>;
</script>
<?=WebUtil::printJS('../d_shared/common_path.js', true) ?>
<?=WebUtil::printJS('../dist_js/vendors.js', true) ?>
<?=WebUtil::printJS('../dist_js/entrance.js', true)?>
<!-- 액션 -->
<script>
var isAdmin = <?= ($userGrade >= 5 || $acl) ? 'true' : 'false' ?>;
</script>
<?= WebUtil::printJS('../d_shared/common_path.js', true) ?>
<?= WebUtil::printJS('../dist_js/vendors.js', true) ?>
<?= WebUtil::printJS('../dist_js/common_ts.js') ?>
<?= WebUtil::printJS('../dist_js/entrance.js', true) ?>
</head>
<body>
</head>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="../">삼국지 모의전투 HiDCHe</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<?=WebUtil::drawMenu(ROOT.'/d_shared/menu.json')?>
</ul>
</div>
</nav>
<body>
<div id="server_list_container">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="../">삼국지 모의전투 HiDCHe</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<?= WebUtil::drawMenu(ROOT . '/d_shared/menu.json') ?>
</ul>
</div>
</nav>
<?php
if ($userGrade >= 5) {
echo $templates->render('global_panel', ['notice'=>$notice]);
}
?>
<div id="server_list_container">
<div id="server_notice"><span style="color:orange;font-size:2em;"><?=$notice?></span></div>
<?php
if ($userGrade >= 5) {
echo $templates->render('global_panel', ['notice' => $notice]);
}
?>
<table id="server_list_table">
<caption class="bg2 section_title with_border">서 버 선 택</caption>
<colgroup>
<col style="width:100px;" />
<col style="width:375px;" />
<col style="width:66px;" />
<col/>
<col style="width:120px;" />
</colgroup>
<thead>
<tr>
<th class="bg1">서 버</th>
<th class="bg1">정 보</th>
<th class="bg1" colspan="2">캐 릭 터</th>
<th class="bg1">선 택</th>
</tr>
</thead>
<tbody id="server_list">
<div id="server_notice"><span style="color:orange;font-size:2em;"><?= $notice ?></span></div>
</tbody>
<tfoot>
<tr>
<td colspan="100" class="bg0" style="text-align:left;">
<span class="Entrance_Alert">★ 1명이 2개 이상의 계정을 사용하거나 타 유저의 턴을 대신 입력하는 것이 적발될 경우 차단 될 수 있습니다.</span><br>
계정은 한번 등록으로 계속 사용합니다. 각 서버 리셋시 캐릭터만 새로 생성하면 됩니다.<br>
<br>
<span class="Entrance_Che">체섭</span> : 메인서버입니다. 천하통일에 도전하여 왕조일람과 명예의전당에 올라봅시다! (주로 1턴=60분)<br>
<span class="Entrance_Kwe">퀘섭</span> : 마이너 서버 그룹1. 비교적 느린 시간으로 운영됩니다.<br>
<span class="Entrance_Pwe">풰섭</span> : 마이너 서버 그룹1. 비교적 느린 시간으로 운영됩니다.<br>
<span class="Entrance_Twe">퉤섭</span> : 마이너 서버 그룹2. 비교적 빠른 시간으로 운영됩니다.<br>
<span class="Entrance_Nya">냐섭</span> : 마이너 서버 그룹3. 독특한 컨셉 위주로 운영됩니다.<br>
<span class="Entrance_Pya">퍄섭</span> : 마이너 서버 그룹3. 독특한 컨셉 위주로 운영됩니다.<br>
<span class="Entrance_Hwe">훼섭</span> : 운영자 테스트 서버입니다. 기습적으로 열리고, 닫힐 수 있습니다.<br>
</td>
</tr>
</tfoot>
</table>
<table id="server_list_table">
<caption class="bg2 section_title with_border">서 버 선 택</caption>
<colgroup>
<col style="width:100px;" />
<col style="width:375px;" />
<col style="width:66px;" />
<col />
<col style="width:120px;" />
</colgroup>
<thead>
<tr>
<th class="bg1">서 버</th>
<th class="bg1">정 보</th>
<th class="bg1" colspan="2">캐 릭 터</th>
<th class="bg1">선 택</th>
</tr>
</thead>
<tbody id="server_list">
</tbody>
<tfoot>
<tr>
<td colspan="100" class="bg0" style="text-align:left;">
<span class="Entrance_Alert">★ 1명이 2개 이상의 계정을 사용하거나 타 유저의 턴을 대신 입력하는 것이 적발될 경우 차단 될 수 있습니다.</span><br>
계정은 한번 등록으로 계속 사용합니다. 각 서버 리셋시 캐릭터만 새로 생성하면 됩니다.<br>
<br>
<span class="Entrance_Che">체섭</span> : 메인서버입니다. 천하통일에 도전하여 왕조일람과 명예의전당에 올라봅시다! (주로 1턴=60분)<br>
<span class="Entrance_Kwe">퀘섭</span> : 마이너 서버 그룹1. 비교적 느린 시간으로 운영됩니다.<br>
<span class="Entrance_Pwe">풰섭</span> : 마이너 서버 그룹1. 비교적 느린 시간으로 운영됩니다.<br>
<span class="Entrance_Twe">퉤섭</span> : 마이너 서버 그룹2. 비교적 빠른 시간으로 운영됩니다.<br>
<span class="Entrance_Nya">냐섭</span> : 마이너 서버 그룹3. 독특한 컨셉 위주로 운영됩니다.<br>
<span class="Entrance_Pya">퍄섭</span> : 마이너 서버 그룹3. 독특한 컨셉 위주로 운영됩니다.<br>
<span class="Entrance_Hwe">훼섭</span> : 운영자 테스트 서버입니다. 기습적으로 열리고, 닫힐 수 있습니다.<br>
</td>
</tr>
</tfoot>
</table>
<div id="user_info">
<div class="bg2 section_title with_border">계 정 관 리</div>
<div class="center_ordered_items with_border bg0">
<a href="user_info.php"><button type="button" id="btn_user_manage" class="with_skin">비밀번호 &amp; 전콘 &amp; 탈퇴</button></a>
<button type="button" id="btn_logout" class="with_skin">로 그 아 웃</button>
</div>
</div>
<?php
if ($userGrade >= 5 || $acl) {
echo $templates->render('server_panel', []);
}
?>
<div id="user_info">
<div class="bg2 section_title with_border">계 정 관 리</div>
<div class="center_ordered_items with_border bg0">
<a href="user_info.php"><button type="button" id="btn_user_manage" class="with_skin">비밀번호 &amp; 전콘 &amp; 탈퇴</button></a>
<button type="button" id="btn_logout" class="with_skin">로 그 아 웃</button>
</div>
</div>
<?php
if ($userGrade >= 5 || $acl) {
echo $templates->render('server_panel', []);
}
?>
</div>
</div>
</div>
</body>
</body>
</html>
</html>
+178 -171
View File
@@ -1,187 +1,194 @@
<?php
namespace sammo;
require(__DIR__.'/../vendor/autoload.php');
require(__DIR__ . '/../vendor/autoload.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title>계정 관리</title>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1024" />
<title>계정 관리</title>
<!-- 스타일 -->
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('../css/config.css')?>
<?=WebUtil::printCSS('../css/user_info.css')?>
<!-- 스타일 -->
<?= WebUtil::printCSS('../e_lib/bootstrap.min.css') ?>
<?= WebUtil::printCSS('../d_shared/common.css') ?>
<?= WebUtil::printCSS('../css/config.css') ?>
<?= WebUtil::printCSS('../css/user_info.css') ?>
<!-- 액션 -->
<?= WebUtil::printJS('../d_shared/common_path.js') ?>
<?= WebUtil::printJS('../dist_js/vendors.js') ?>
<?= WebUtil::printJS('../dist_js/common_ts.js') ?>
<?= WebUtil::printJS('../dist_js/user_info.js') ?>
</head>
<!-- 액션 -->
<?=WebUtil::printJS('../d_shared/common_path.js') ?>
<?=WebUtil::printJS('../dist_js/vendors.js') ?>
<?=WebUtil::printJS('../dist_js/user_info.js')?>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="../">삼국지 모의전투 HiDCHe</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<?=WebUtil::drawMenu(ROOT.'/d_shared/menu.json')?>
</ul>
</div>
</nav>
<div id="user_info_container">
<table class="bg0" id="user_info_table">
<caption class="bg2 section_title with_border">
계 정 관 리
<a href="entrance.php"><button type="button" id="btn_back1" class="with_skin">돌아가기</button></a>
</caption>
<colgroup>
<col style="width:90px;min-width:90px;" />
<col style="width:90px;min-width:90px;"/>
<col style="width:90px;min-width:90px;"/>
<col style="width:90px;min-width:90px;"/>
<col style="width:90px;min-width:90px;"/>
<col style="min-width:90px;"/>
</colgroup>
<thead>
<tr>
<th colspan="6" class="bg1">회 원 정 보</th>
</tr>
</thead>
<tbody>
<tr>
<th class="bg1">ID</th>
<td colspan="5">
<span id="slot_id"></span>
</td>
</tr>
<tr>
<th class="bg1">닉네임</th>
<td colspan="5" style="height:36px;">
<span id="slot_nickname"></span>
</td>
</tr>
<tr>
<th class="bg1">등급</th>
<td colspan="2">
<span id="slot_grade"></span>
</td>
<td colspan="3">
<span id="slot_acl"></span>
</td>
</tr>
<tr>
<th class="bg1">가입일시</th>
<td colspan="2">
<span id="slot_join_date"></span>
</td>
<td colspan="3">개인정보 3자 제공 동의 : <span id="slot_third_use"></span><button type="button" id="third_use_disallow">철회</button></td>
</tr>
<tr>
<th class="bg1">인증 방식</th>
<td colspan="2">
<span id="slot_oauth_type"></span>
</td>
<td colspan="3">
<span id="slot_token_valid_until"></span>까지 유효<button type="button" id="expand_login_token">연장</button></td>
</tr>
<tr>
<th class="bg1"></th>
<th class="bg1" colspan="2">회원 탈퇴</th>
<th class="bg1" colspan="3">비밀번호 변경</th>
</tr>
<tr>
<th class="bg1">정보<br>수정</th>
<td colspan="2" style="position:relative;">
<form name="delete_me_form" id="delete_me_form" method="post">
<label for="delete_pw">현재 비밀번호</label>
<input class="with_skin" type="password" autocomplete="current-password" name="delete_pw" id="delete_pw" style="width:120px;"><br>
<br>
<input class="with_skin" type="submit" id="btn_delete_me" value="탈퇴신청">
</form>
</td>
<td colspan="3" style="text-align:right;">
<form name="change_pw_form" id="change_pw_form" method="post">
<input type="hidden" id="global_salt" name="global_salt">
<input type="text" autocomplete="username" style="display:none;"><!--자동 완성툴을 위해-->
<label for="current_pw">현재 비밀번호</label>
<input class="with_skin" type="password" autocomplete="current-password" name="current_pw" id="current_pw" style="width:120px;"><br>
<label for="new_pw">새 비밀번호</label>
<input class="with_skin" type="password" autocomplete="new-password" name="new_pw" id="new_pw" style="width:120px;"><br>
<label for="new_pw_confirm">비밀번호 확인</label>
<input class="with_skin" type="password" autocomplete="new-password" name="new_pw_confirm" id="new_pw_confirm" style="width:120px;"><br>
<input class="with_skin" type="submit" id="change_pw" value="비밀번호 변경">
</form>
</td>
</tr>
<tr>
<th class="bg1"></th>
<th colspan="2" class="bg1">
현재 / 신규
</th>
<th colspan="3" class="bg1">
전용 아이콘 변경
</th>
</tr>
<tr>
<th class="bg1">전용<br>아이콘</th>
<td colspan="2" style="height:64px;">
<img width="64" height="64" id="slot_icon">
<img width="64" height="64" id="slot_new_icon">
</td>
<td colspan="3" style="position:relative;" >
<form name="change_icon_form" id="change_icon_form" method="post" enctype="multipart/form-data">
<input class="with_skin" type="text" readonly="readonly" id="image_upload_filename">
<button id="image_upload_fake_btn" class="with_skin">찾아보기</button>
<input type="file" id="image_upload" name="image_upload" accept=".webp,.jpg,.jpeg,.png,.gif"><br>
<input class="with_skin" id="btn_image_submit" type="submit" value="아이콘 변경"> <button id="btn_remove_icon" class="with_skin">아이콘 제거</button>
</form>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<th class="bg1">도움말</th>
<td colspan="5" style="text-align:left;padding:8px;">
<p style="line-height:1.2em;">
아이콘은 64 x 64픽셀 ~ 128 x 128픽셀 사이, 30KB 이하의 webp, jpg, gif, png 파일만 가능합니다.</p>
<p style="margin-top:1em;color:magenta;line-height:1.2em;">탈퇴시 1개월간 정보가 보존되며, 1개월간 재가입이 불가능합니다.</span>
</p>
</td>
</tr>
</tfoot>
</table>
</div>
<div class="modal fade" id="chooseServer" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">완료되었습니다.<br>새 아이콘을 적용할 서버를 선택하세요.</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="../">삼국지 모의전투 HiDCHe</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div class="modal-body">
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<?= WebUtil::drawMenu(ROOT . '/d_shared/menu.json') ?>
</ul>
</div>
</nav>
<div id="user_info_container">
<table class="bg0" id="user_info_table">
<caption class="bg2 section_title with_border">
계 정 관 리
<a href="entrance.php"><button type="button" id="btn_back1" class="with_skin">돌아가기</button></a>
</caption>
<colgroup>
<col style="width:90px;min-width:90px;" />
<col style="width:90px;min-width:90px;" />
<col style="width:90px;min-width:90px;" />
<col style="width:90px;min-width:90px;" />
<col style="width:90px;min-width:90px;" />
<col style="min-width:90px;" />
</colgroup>
<thead>
<tr>
<th colspan="6" class="bg1">회 원 정 보</th>
</tr>
</thead>
<tbody>
<tr>
<th class="bg1">ID</th>
<td colspan="5">
<span id="slot_id"></span>
</td>
</tr>
<tr>
<th class="bg1">닉네임</th>
<td colspan="5" style="height:36px;">
<span id="slot_nickname"></span>
</td>
</tr>
<tr>
<th class="bg1">등급</th>
<td colspan="2">
<span id="slot_grade"></span>
</td>
<td colspan="3">
<span id="slot_acl"></span>
</td>
</tr>
<tr>
<th class="bg1">가입일시</th>
<td colspan="2">
<span id="slot_join_date"></span>
</td>
<td colspan="3">개인정보 3자 제공 동의 : <span id="slot_third_use"></span><button type="button" id="third_use_disallow">철회</button></td>
</tr>
<tr>
<th class="bg1">인증 방식</th>
<td colspan="2">
<span id="slot_oauth_type"></span>
</td>
<td colspan="3">
<span id="slot_token_valid_until"></span>까지 유효<button type="button" id="expand_login_token">연장</button>
</td>
</tr>
<tr>
<th class="bg1"></th>
<th class="bg1" colspan="2">회원 탈퇴</th>
<th class="bg1" colspan="3">비밀번호 변경</th>
</tr>
<tr>
<th class="bg1">정보<br>수정</th>
<td colspan="2" style="position:relative;">
<form name="delete_me_form" id="delete_me_form" method="post">
<label for="delete_pw">현재 비밀번호</label>
<input class="with_skin" type="password" autocomplete="current-password" name="delete_pw" id="delete_pw" style="width:120px;"><br>
<br>
<input class="with_skin" type="submit" id="btn_delete_me" value="탈퇴신청">
</form>
</td>
<td colspan="3" style="text-align:right;">
<form name="change_pw_form" id="change_pw_form" method="post">
<input type="hidden" id="global_salt" name="global_salt">
<input type="text" autocomplete="username" style="display:none;">
<!--자동 완성툴을 위해-->
<label for="current_pw">현재 비밀번호</label>
<input class="with_skin" type="password" autocomplete="current-password" name="current_pw" id="current_pw" style="width:120px;"><br>
<label for="new_pw">새 비밀번호</label>
<input class="with_skin" type="password" autocomplete="new-password" name="new_pw" id="new_pw" style="width:120px;"><br>
<label for="new_pw_confirm">비밀번호 확인</label>
<input class="with_skin" type="password" autocomplete="new-password" name="new_pw_confirm" id="new_pw_confirm" style="width:120px;"><br>
<input class="with_skin" type="submit" id="change_pw" value="비밀번호 변경">
</form>
</td>
</tr>
<tr>
<th class="bg1"></th>
<th colspan="2" class="bg1">
현재 / 신규
</th>
<th colspan="3" class="bg1">
전용 아이콘 변경
</th>
</tr>
<tr>
<th class="bg1">전용<br>아이콘</th>
<td colspan="2" style="height:64px;">
<img width="64" height="64" id="slot_icon">
<img width="64" height="64" id="slot_new_icon">
</td>
<td colspan="3" style="position:relative;">
<form name="change_icon_form" id="change_icon_form" method="post" enctype="multipart/form-data">
<input class="with_skin" type="text" readonly="readonly" id="image_upload_filename">
<button id="image_upload_fake_btn" class="with_skin">찾아보기</button>
<input type="file" id="image_upload" name="image_upload" accept=".webp,.jpg,.jpeg,.png,.gif"><br>
<input class="with_skin" id="btn_image_submit" type="submit" value="아이콘 변경"> <button id="btn_remove_icon" class="with_skin">아이콘 제거</button>
</form>
<form id="chooseServerForm">
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
<button type="button" class="btn btn-primary" id="modal-apply">서버 적용</button>
</div>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<th class="bg1">도움말</th>
<td colspan="5" style="text-align:left;padding:8px;">
<p style="line-height:1.2em;">
아이콘은 64 x 64픽셀 ~ 128 x 128픽셀 사이, 30KB 이하의 webp, jpg, gif, png 파일만 가능합니다.</p>
<p style="margin-top:1em;color:magenta;line-height:1.2em;">탈퇴시 1개월간 정보가 보존되며, 1개월간 재가입이 불가능합니다.</span>
</p>
</td>
</tr>
</tfoot>
</table>
</div>
<div class="modal fade" id="chooseServer" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">완료되었습니다.<br>새 아이콘을 적용할 서버를 선택하세요.</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form id="chooseServerForm">
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
<button type="button" class="btn btn-primary" id="modal-apply">서버 적용</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>