js, css파일 위치 이동

This commit is contained in:
2018-03-25 22:41:30 +09:00
parent bd975e4f79
commit 5e29443256
21 changed files with 83 additions and 707 deletions
+219
View File
@@ -0,0 +1,219 @@
var userFrame = '\
<tr id="userinfo_<%userID%>" data-username="<%userName%>" data-id="<%userID%>">\
<th scope="row"><%userID%></th>\
<td><%userName%></td>\
<td class="small"><%emailFunc(email)%><br>(<%authType%>)</td>\
<td><%userGradeText%><p class="small hide_text user_grade_<%userGrade%>" style="margin:0;"><%shortDate(blockUntil)%></p></td>\
<td><%nickname%></td>\
<td><img src="<%icon%>" width="64px" height="64px"></td>\
<td class="small"><%slotGeneralList%></td>\
<td class="small"><%shortDate(joinDate)%></td>\
<td class="small"><%shortDate(loginDate)%></td>\
<td class="small"><%shortDate(deleteAfter)%></td>\
<td>\
<div class="btn-group" role="group">\
<button type="button" onclick="changeUserStatus(\'delete\', this);" class="btn btn-danger btn-sm">강제<br>탈퇴</button>\
<button type="button" onclick="changeUserStatus(\'reset_pw\', this);" class="btn btn-info btn-sm">암호<br>변경</button>\
<button type="button" onclick="changeUserStatus(\'block\', this);" class="btn btn-warning btn-sm">유저<br>차단</button>\
<button type="button" onclick="changeUserStatus(\'unblock\', this);" class="btn btn-secondary btn-sm">차단<br>해제</button>\
<button type="button" onclick="changeUserStatus(\'set_userlevel\', this);" class="btn btn-primary btn-sm">별도<br>권한</button>\
</div>\
</td>\
</tr>';
function convUserGrade(grade){
var userGradeMap = {
0:'차단',
1:'일반',
4:'특별',
5:'부운영자',
6:'운영자'
};
if(grade in userGradeMap){
return userGradeMap[grade];
}
return grade;
}
function fillAllowJoinLogin(result){
$('#radios_allow_join .active').removeClass('active');
$('#radios_allow_login .active').removeClass('active');
if(result.allowJoin){
$('#allow_join_y').parent().addClass('active');
}
else{
$('#allow_join_n').parent().addClass('active');
}
if(result.allowLogin){
$('#allow_login_y').parent().addClass('active');
}
else{
$('#allow_login_n').parent().addClass('active');
}
}
function fillUserList(result){
var $user_list = $('#user_list');
$user_list.empty();
var slotGeneralList = $.map(result.servers, function(value){
return '<span class="server_generalName_{0}"></span>'.format(value)
}).join('<br>');
var emailFunc = function(text){
return String(text).replace('@','@<br>');
}
var brFunc = function(text){
return String(text).split(' ').join('<br>');
};
var shortDateFunc = function(date){
if(!date){
return '-';
}
return brFunc(date.substr(2));
}
$.each(result.users, function(idx, user){
user.br = brFunc;
user.shortDate = shortDateFunc;
user.emailFunc = emailFunc;
if(!user.email){
user.email = '-';
}
user.slotGeneralList = slotGeneralList;
user.userGradeText = convUserGrade(user.userGrade);
$user_list.append(
TemplateEngine(userFrame, user)
)
});
//TODO: slotGeneralList에 값을 채워야함. ajax로 받아올 필요 있음
}
function changeSystem(action, param=null){
var text = '{0}{1}을 진행합니다.'.format(action, param?(', '+param):'');
if(!confirm(text)){
return;
}
$.ajax({
type:'post',
url:'j_set_userlist.php',
dataType:'json',
data:{
'action':action,
'param':param
}
}).then(function(result){
if(result.result){
if(result.affected !== undefined){
alert('{0}건이 처리되었습니다.'.format(result.affected));
refreshAll();
}
else{
alert('완료되었습니다.');
}
}
else{
alert(result.reason);
}
});
}
function changeUserStatus(action, userID, param=null){
if(userID instanceof Element){
userID = parseInt($(userID).parents('tr').data('id'));
}
if(!$.isNumeric(userID)){
alert('userID가 올바르게 지정되지 않았습니다!');
return;
}
userID = parseInt(userID);
if(action == 'set_userlevel'){
if(!$.isNumeric(param)){
param = prompt('원하는 등급을 입력해주세요.(1:일반, 4:특별, 5:부운영자, 6:운영자)', '1');
}
param = parseInt(param);
if(param < 1 || param > 6){
alert('올바르지 않습니다.');
return;
}
}
if(action == 'block'){
if(!$.isNumeric(param)){
param = prompt('블록 기간을 입력해주세요. <= 0은 반영구(50년)입니다.', '7');
}
param = parseInt(param);
}
var userName = $('#userinfo_'+userID).data('username');
var text = '{0}에 대해서 {1}{2}을 진행합니다.'.format(userName, action, param?(', '+param):'');
if(!confirm(text)){
return;
}
$.ajax({
type:'post',
url:'j_set_userlist.php',
dataType:'json',
data:{
'action':action,
'user_id':userID,
'param':param
}
}).then(function(result){
if(result.result){
if(result.detail !== undefined){
alert('완료되었습니다. : {0}'.format(result.detail));
refreshAll();
}
else{
alert('완료되었습니다.');
refreshAll();
}
}
else{
alert(result.reason);
}
});
}
function refreshAll(){
$.ajax({
type:'post',
url:'j_get_userlist.php',
dataType:'json'
}).then(function(result){
if(!result.result){
alert(reuslt.reason);
return;
}
fillAllowJoinLogin(result);
fillUserList(result);
});
}
$(function(){
refreshAll();
$('input[name=allow_join], input[name=allow_login]').on('change', function(){
var $this = $(this);
changeSystem($this.attr('name'), $this.val());
})
});
+155
View File
@@ -0,0 +1,155 @@
var serverAdminTemplate = '\
<tr class="bg0" data-server_name="<%name%>">\
<th style="color:<%color%>;"><%korName%>(<%name%>)</th>\
<td><%status%></td>\
<td><input class="with_skin obj_fill" type="button" value="폐쇄" onclick="modifyServerStatus(this, \'close\');"></td>\
<td><input class="with_skin obj_fill" type="button" value="오픈" onclick="modifyServerStatus(this, \'open\');"></td>\
<td><input class="with_skin obj_fill" type="button" value="리셋" onclick="modifyServerStatus(this, \'reset\');"></td>\
<td><input class="with_skin obj_fill" type="button" value="하드리셋" onclick="modifyServerStatus(this, \'reset_full\');"></td>\
<td><input class="with_skin obj_fill" type="button" value="폐쇄중 로그인" onclick="Entrance_AdminClosedLogin(this);"></td>\
<td><input class="with_skin obj_fill" type="button" value="서버119" onclick="Entrance_AdminOpen119(this);"></td>\
<td><input class="with_skin obj_fill" type="button" value="업데이트" onclick="Entrance_AdminOpen119(this);"></td>\
</tr>\
';
function drawServerAdminList(serverList){
var $table = $('#server_admin_list');
$.each(serverList, function(idx, server){
console.log(server);
var status = '';
if(!server.valid){
status = '에러, {0}'.format(server.reason);
}
else if(!server.run){
status = '폐쇄됨';
}
else{
status = '운영 중';
}
server.status = status;
$table.append(
TemplateEngine(serverAdminTemplate, server)
);
});
}
$(function(){
Entrance_AdminImport();
Entrance_AdminInit();
Entrance_AdminUpdate();
$.ajax({
cache:false,
type:'post',
url:'j_server_get_admin_status.php',
dataType:'json'
}).then(drawServerAdminList);
});
function Entrance_AdminImport() {
}
function Entrance_AdminInit() {
console.log('adminInit');
$("#Entrance_000201").click(Entrance_Donation);
$("#Entrance_000202").click(Entrance_Member);
$("#notice_change_btn").click(Entrance_AdminChangeNotice);
}
function Entrance_AdminUpdate() {
}
function Entrance_Donation() {
$("#Entrance_00").hide();
$("#EntranceDonation_00").show();
EntranceDonation_Update();
}
function Entrance_Member() {
$("#Entrance_00").hide();
$("#EntranceMember_00").show();
EntranceMember_Update();
}
function Entrance_AdminChangeNotice() {
var notice = $("#notice_edit").val();
if(!confirm('정말 실행하시겠습니까?')){
return;
}
$.ajax({
type:'post',
url:'j_server_change_status.php',
dataType:'json',
data:{
action: 'notice',
notice: notice
}
}).then(function(response){
if(response.result == "SUCCESS") {
location.reload();
} else {
alert(response.msg);
}
});
}
function modifyServerStatus(caller, action) {
var $caller = $(caller);
var server = $caller.parents('tr').data('server_name');
if(!confirm('정말 실행하시겠습니까?')){
return;
}
$.ajax({
type:'post',
url:'j_server_change_status.php.php',
dataType:'json',
data:{
server: server,
action: action
}
}).then(function(response) {
if(response.result == "SUCCESS") {
if(action == 'reset') {
location.href = response.installURL;
} else {
location.reload();
}
} else {
alert(response.msg);
}
}
);
}
function Entrance_AdminNPCLogin(caller) {
var $caller = $(caller);
var serverDir = $caller.parents('tr').data('server_name');
location.href = serverDir+"/npc_login.php";
}
function Entrance_AdminNPCCreate(caller) {
var $caller = $(caller);
var serverDir = $caller.parents('tr').data('server_name');
location.href = serverDir+"/npc_join.php";
}
function Entrance_AdminClosedLogin(caller) {
var $caller = $(caller);
var serverDir = $caller.parents('tr').data('server_name');
location.href = serverDir+"/npc_login.php";
}
function Entrance_AdminOpen119(caller) {
var $caller = $(caller);
var serverDir = $caller.parents('tr').data('server_name');
location.href = serverDir+"/_119.php";
}
function tryServerUpdateAndUpgrade(caller){
var $caller = $(caller);
}
+135
View File
@@ -0,0 +1,135 @@
var serverListTemplate = "\
<tr class='server_item bg0 server_name_<%name%>' data-server='<%name%>'>\
<td class='server_name'>\
<span style='font-weight:bold;font-size:1.4em;color:<%color%>'><%korName%>섭</span><br>\
<span class='n_country'></span>\
</td>\
<td colspan='4' class='server_down'>- 폐 쇄 중 -</td>\
</tr>\
";
var serverTextInfo = "\
<td>\
서기 <%year%>년 <%month%>월 (<span style='color:orange;'><%scenario%></span>)<br>\
유저 : <%userCnt%> / <%maxUserCnt%>명 <span style='color:cyan;'>NPC : <%npcCnt%>명</span> (<span style='color:limegreen;'><%turnTerm%></span>)\
</td>\
";
var serverFullTemplate = "\
<td colspan='4' class='server_full'>- 장수 등록 마감 -</td>\
";
var serverCreateAndSelectTemplate = "\
<td colspan='2' class='not_registered'>- 미 등 록 -</td>\
<td class='ignore_border'>\
<a href='<%serverPath%>/select_npc.php'><button class='general_select with_skin'>장수선택</button></a>\
<a href='<%serverPath%>/join.php'><button class='general_create with_skin'>장수생성</button></a>\
</td>\
";
var serverCreateTemplate = "\
<td colspan='2' class='not_registered'>- 미 등 록 -</div>\
<td class='ignore_border'>\
<a href='<%serverPath%>/join.php'><button class='general_create with_skin'>장수생성</button></a>\
</td>\
";
var serverLoginTemplate = "\
<td style='background:url(<%picture%>);background-size: 64px 64px;'></td>\
<td><%name%></td>\
<td class='ignore_border'>\
<a href='<%serverPath%>/'><button class='general_login with_skin'>입장</button></a>\
</td>\
";
$(function(){
$("#btn_logout").click(Entrance_Logout);
Entrance_UpdateServer();
});
function Entrance_UpdateServer() {
$.ajax({
type:'post',
url:"j_server_get_status.php",
dataType:'json',
}).then(function(response){
if(response.result == "SUCCESS") {
Entrance_drawServerList(response.server);
}
});
}
function Entrance_drawServerList(serverInfos){
var $serverList = $('#server_list');
$.each(serverInfos, function(idx, serverInfo){
var $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo));
$serverList.append($serverHtml);
if(!serverInfo.enable){
return true;
}
var serverPath = "../"+serverInfo.name;
$.getJSON("../"+serverInfo.name+'/j_server_basic_info.php',{}, function(result){
if(!result.game){
return;
}
var game= result.game;
//TODO: 서버 폐쇄 방식을 새롭게 변경
$serverHtml.find('.server_down').detach();
if(game.isUnited == 2){
$serverHtml.find('.n_country').html('§천하통일§');
}
else{
$serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt));
}
$serverHtml.append(
TemplateEngine(serverTextInfo, game)
);
if(result.me && result.me.length > 1){
var me = result.me;
me.serverPath = serverPath;
$serverHtml.append(
TemplateEngine(serverLoginTemplate, me)
);
}
else if(game.userCnt >= game.maxUserCnt){
$serverHtml.append(
TemplateEngine(serverFullTemplate, {})
);
}
else if(game.npcMode == 1){
$serverHtml.append(
TemplateEngine(serverCreateAndSelectTemplate, {serverPath:serverPath})
).addClass('server_create_and_select');
}
else{
$serverHtml.append(
TemplateEngine(serverCreateTemplate, {serverPath:serverPath})
);
}
});
});
}
function Entrance_Logout() {
$.ajax({
type:'post',
url:"j_logout.php",
dataType:'json',
}).then(function(response) {
if(response.result) {
location.href="../";
} else {
alert('로그아웃 실패');
}
});
}
+231
View File
@@ -0,0 +1,231 @@
function fillUserInfo(result){
if(!result.result){
alert(result.reason);
location.href='entrance.php';
return;
}
$('#slot_id').html(result.id);
$('#slot_nickname').html(result.name);
$('#slot_grade').html(result.grade);
$('#slot_icon').attr('src', result.picture);
$('#global_salt').val(result.global_salt);
}
function changeIconPreview(){
var $preview = $(this);
console.log($preview);
var filename = $preview[0].files[0].name;
var reader = new FileReader();
reader.onload = function(e) {
$('#slot_new_icon').attr('src', e.target.result).css('visibility','visible');
}
reader.readAsDataURL($preview[0].files[0]);
$('#image_upload_filename').val(filename);
}
function deleteIcon(){
$.ajax({
type:'post',
url:'j_icon_delete.php',
dataType:'json'
}).then(function(result){
if(!result.result){
alert(result.reason);
location.reload();
return;
}
var ajaxResults = result.servers.map(function(server){
return $.ajax({
type:'post',
url:'../{0}/j_adjust_icon.php'.format(server),
dataType:'json'
});
});
$.when.apply($, ajaxResults).then(function(){
alert('이미지를 삭제했습니다.');
location.reload();
},function(){
//서버 폐쇄등으로 접근하지 못할 수도 있음.
alert('이미지를 삭제했습니다.');
location.reload();
});
},function(){
alert('알 수 없는 이유로 아이콘 삭제를 실패했습니다.');
location.reload();
});
}
function changeIcon(e){
e.preventDefault();
var $icon = $('#image_upload');
if($icon[0].files.length == 0){
alert('파일을 선택해주세요');
return false;
}
var icon = $icon[0].files[0];
$.ajax({
type:'post',
url:'j_icon_change.php',
dataType:'json',
contentType:false,
processData:false,
data:new FormData($(this)[0])
}).then(function(result){
if(!result.result){
alert(result.reason);
location.reload();
return;
}
var ajaxResults = result.servers.map(function(server){
return $.ajax({
type:'post',
url:'../{0}/j_adjust_icon.php'.format(server),
dataType:'json'
});
});
$.when.apply($, ajaxResults).then(function(){
alert('이미지를 업로드했습니다.');
location.reload();
},function(){
//서버 폐쇄등으로 접근하지 못할 수도 있음.
alert('이미지를 업로드했습니다.');
location.reload();
});
},function(){
alert('알 수 없는 이유로 아이콘 업로드를 실패했습니다.');
location.reload();
});
}
function changePassword(e){
e.preventDefault();
var $form = $(this);
var old_pw = $('#current_pw').val();
var new_pw = $('#new_pw').val();
var new_pw_confirm = $('#new_pw_confirm').val();
if(!old_pw){
alert('이전 비밀번호를 입력해야 합니다.');
return;
}
if(new_pw.length < 6){
alert('비밀번호 길이는 6글자 이상이어야 합니다.');
return;
}
if(new_pw != new_pw_confirm){
alert('입력 값이 일치하지 않습니다.');
return;
}
var global_salt = $('#global_salt').val();
var old_password = sha512(global_salt+old_pw+global_salt);
var new_password = sha512(global_salt+new_pw+global_salt);
$.ajax({
type:'post',
url:'j_change_password.php',
dataType:'json',
data:{
old_pw:old_password,
new_pw:new_password
}
}).then(function(result){
if(!result.result){
alert(result.reason);
}
else{
alert('비밀번호를 바꾸었습니다');
location.reload();
}
},function(){
alert('알 수 없는 이유로 비밀번호를 바꾸지 못했습니다.');
});
}
function deleteMe(){
var $form = $('#delete_me_form');
var pw = $('#delete_pw').val();
if(!pw){
alert('비밀번호를 입력해야 합니다.');
return;
}
var global_salt = $('#global_salt').val();
var password = sha512(global_salt+pw+global_salt);
$.ajax({
type:'post',
url:'j_delete_me.php',
dataType:'json',
data:{
pw:password
}
}).then(function(result){
if(!result.result){
alert(result.reason);
}
else{
alert('탈퇴 처리되었습니다.');
location.href='../';
}
},function(){
alert('알 수 없는 이유로 회원탈퇴에 실패했습니다.');
});
}
$(function(){
$.ajax({
type:'post',
url:'j_get_user_info.php',
dataType:'json'
}).then(function(result){
fillUserInfo(result);
},function(){
alert('알 수 없는 이유로, 회원 정보를 불러오지 못했습니다.');
location.href='entrance.php';
});
$('#image_upload').change(changeIconPreview);
$('#btn_remove_icon').click(function(){
if(confirm('아이콘을 제거할까요?')){
deleteIcon();
}
return false;
});
$('#change_pw_form').submit(changePassword);
$('#change_icon_form').submit(changeIcon);
$('#delete_me_form').submit(function(e){
e.preventDefault();
if(confirm('한 달 동안 재 가입할 수 없습니다. 정말로 탈퇴할까요?')){
deleteMe(e);
}
});
})