first
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
|
||||
<!-- timeago -->
|
||||
<?php getImport('jquery-timeago','jquery.timeago',false,'js')?>
|
||||
<?php getImport('jquery-timeago','locales/jquery.timeago.ko',false,'js')?>
|
||||
292
modules/member/themes/_desktop/bs4-default/settings/_lock.php
Normal file
292
modules/member/themes/_desktop/bs4-default/settings/_lock.php
Normal file
@@ -0,0 +1,292 @@
|
||||
<script>
|
||||
var reauth_naver= '<?php echo getConnectUrl('naver',$d['connect']['key_n'],$d['connect']['secret_n'],$g['url_root'].'/'.$r.'/oauth/naver','reauthenticate')?>';
|
||||
var reauth_kakao= '<?php echo getConnectUrl('kakao',$d['connect']['key_k'],$d['connect']['secret_k'],$g['url_root'].'/'.$r.'/oauth/kakao','reauthenticate')?>';
|
||||
var reauth_google= '<?php echo getConnectUrl('google',$d['connect']['key_g'],$d['connect']['secret_g'],$g['url_root'].'/'.$r.'/oauth/google','reauthenticate')?>';
|
||||
var reauth_facebook= '<?php echo getConnectUrl('facebook',$d['connect']['key_f'],$d['connect']['secret_f'],$g['url_root'].'/'.$r.'/oauth/facebook','reauthenticate')?>';
|
||||
var reauth_instagram= '<?php echo getConnectUrl('instagram',$d['connect']['key_i'],$d['connect']['secret_i'],$g['url_root'].'/'.$r.'/oauth/instagram','reauthenticate')?>';
|
||||
</script>
|
||||
|
||||
<!-- 소셜로그인으로 생성된 소셜전용 회원계정일때 -->
|
||||
<?php if (!$my['last_pw']): ?>
|
||||
|
||||
<div class="card mb-5">
|
||||
|
||||
<div class="card-header">
|
||||
<div class="media text-muted my-3">
|
||||
<i class="fa fa-lock fa-4x mx-4" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
<h5 class="mb-1">개인정보 잠금</h5>
|
||||
<small>개인정보를 안전하게 보호하기 위해, 로그인 후 <mark><?php echo $d['member']['settings_expire'] ?>분</mark>이 경과하면 본인인증을 다시 한번 확인합니다.<br>
|
||||
<?php echo $my['nic']; ?>님의
|
||||
마지막 로그인 일시는 <mark><time data-plugin="timeago" datetime="<?php echo getDateFormat($my['last_log'],'c')?>"></time></mark>
|
||||
(<?php echo getDateFormat($my['last_log'],'Y.m.d H:i')?>) 입니다.<br>
|
||||
회원 정보는 개인정보 취급방침에 따라 안전하게 보호되며, 회원님의 동의 없이 공개 또는 제 3자에게 제공되지 않습니다.</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
|
||||
<?php if ($d['connect']['use_n'] && $my_naver['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://naver.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/naver.png" alt="네이버" width="28">
|
||||
네이버
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="naver" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_k'] && $my_kakao['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://kakao.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/kakao.png" alt="카카오" width="28">
|
||||
카카오
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="kakao" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_g'] && $my_google['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://google.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/google.png" alt="구글" width="28">
|
||||
구글
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="google" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_f'] && $my_facebook['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://facebook.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/facebook.png" alt="페이스북" width="28">
|
||||
페이스북
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="facebook" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_i'] && $my_instagram['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://instagram.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/instagram.png" alt="인스타그램" width="28">
|
||||
인스타그램
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="instagram" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
</ul>
|
||||
</div><!-- /.card -->
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<!-- 패스워드를 직접 등록한 회원계정일때 -->
|
||||
<div class="card mb-5">
|
||||
|
||||
<div class="card-header">
|
||||
<div class="media text-muted my-3">
|
||||
<i class="fa fa-lock fa-4x mx-4" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
<h5 class="mb-1">개인정보 잠금</h5>
|
||||
<small>개인정보를 안전하게 보호하기 위해, 로그인 후 <mark><?php echo $d['member']['settings_expire'] ?>분</mark>이 경과하면 본인인증을 다시 한번 확인합니다.<br>
|
||||
<?php echo $my['nic']; ?>님의
|
||||
마지막 로그인 일시는 <mark><time data-plugin="timeago" datetime="<?php echo getDateFormat($my['last_log'],'c')?>"></time></mark>
|
||||
(<?php echo getDateFormat($my['last_log'],'Y.m.d H:i')?>) 입니다.<br>
|
||||
회원 정보는 개인정보 취급방침에 따라 안전하게 보호되며, 회원님의 동의 없이 공개 또는 제 3자에게 제공되지 않습니다.</small>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="nav nav-tabs card-header-tabs mt-4">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#pane-passwd" id="tab-passwd">비밀번호로 인증 </a>
|
||||
</li>
|
||||
<?php if ($my_naver['uid'] || $my_kakao['uid'] || $my_google['uid'] || $my_facebook['uid'] || $my_instagram['uid']): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#pane-social" id="tab-social">소셜계정으로 인증</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="tab-content">
|
||||
|
||||
<div class="tab-pane fade" id="pane-passwd" role="tabpanel">
|
||||
<div class="card-body">
|
||||
<form id="page-confirmPW" action="<?php echo $g['s']?>/" method="post">
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="pwConfirm">
|
||||
<input type="hidden" name="form" value="">
|
||||
<input type="hidden" name="id" value="<?php echo $my['id'] ?>">
|
||||
|
||||
<?php if ($my['email']): ?>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">계정 이메일</label>
|
||||
<div class="col-sm-10 pt-2">
|
||||
<?php echo $my['email'] ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($my['phone']): ?>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">계정 휴대폰</label>
|
||||
<div class="col-sm-10 pt-2">
|
||||
<?php echo substr($my['phone'], 0,3).'-'.substr($my['phone'], 3,4).'-'.substr($my['phone'], 7,4) ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">패스워드</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="password" name="pw" id="password" class="form-control form-control-lg" placeholder="" tabindex="2" required="" value="" autocomplete="new-pw">
|
||||
<div class="invalid-feedback mt-2" data-role="passwordErrorBlock"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center"></label>
|
||||
<div class="col-sm-8">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<button class="btn btn-light" type="submit" data-role="submit" tabindex="3">
|
||||
<span class="not-loading">확인하기</span>
|
||||
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 확인중 ...</span>
|
||||
</button>
|
||||
<a href="#modal-pwReset" data-toggle="modal">비밀번호를 분실했어요.</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
</div><!-- /.card-body -->
|
||||
</div><!-- /.tab-pane -->
|
||||
|
||||
<div class="tab-pane fade" id="pane-social" role="tabpanel">
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
|
||||
<?php if ($d['connect']['use_n'] && $my_naver['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://naver.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/naver.png" alt="네이버" width="28">
|
||||
네이버
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="naver" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_k'] && $my_kakao['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://kakao.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/kakao.png" alt="카카오" width="28">
|
||||
카카오
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="kakao" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_g'] && $my_google['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://google.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/google.png" alt="구글" width="28">
|
||||
구글
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="google" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_f'] && $my_facebook['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://facebook.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/facebook.png" alt="페이스북" width="28">
|
||||
페이스북
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="facebook" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_i'] && $my_instagram['uid']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://instagram.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle" src="<?php echo $g['img_core']?>/sns/instagram.png" alt="인스타그램" width="28">
|
||||
인스타그램
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<button type="button" class="btn btn-outline-primary" data-reauth="instagram" role="button">
|
||||
재인증 하기
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
</ul>
|
||||
|
||||
</div><!-- /.tab-pane -->
|
||||
|
||||
</div><!-- /.tab-content -->
|
||||
|
||||
|
||||
</div><!-- /.card -->
|
||||
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
@@ -0,0 +1,81 @@
|
||||
.page-wrapper {
|
||||
margin-top: 20px
|
||||
}
|
||||
.page-nav {
|
||||
/*padding-left: 0*/
|
||||
}
|
||||
.page-nav .card-header {
|
||||
padding: 8px 10px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
line-height: 20px;
|
||||
color: #586069;
|
||||
background-color: #f3f5f8;
|
||||
border-bottom: none
|
||||
}
|
||||
.page-nav .list-group-item {
|
||||
padding: 8px 10px;
|
||||
color: #24292e;
|
||||
}
|
||||
.page-nav .list-group-item.selected::before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 2px;
|
||||
content: "";
|
||||
background-color: #e36209;
|
||||
}
|
||||
.page-nav .list-group-item-action {
|
||||
color: #0366d6;
|
||||
}
|
||||
.page-main {
|
||||
/*padding-right: 0*/
|
||||
}
|
||||
|
||||
|
||||
/*column*/
|
||||
.column {
|
||||
float: left;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.two-thirds {
|
||||
width: 66.666667%;
|
||||
}
|
||||
.edit-profile-avatar {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
/*forms*/
|
||||
.form-group .form-control.short {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.edit-profile-avatar dd .position-absolute {
|
||||
top: 130px;
|
||||
right: 30px;
|
||||
color: #fff;
|
||||
text-shadow:#999999 2px 2px 2px
|
||||
}
|
||||
|
||||
.bg-warning {
|
||||
color: #856404 !important;
|
||||
background-color: #fff3cd !important;
|
||||
border-color: #ffeeba !important;
|
||||
}
|
||||
|
||||
|
||||
/* card group */
|
||||
.col-3 .card,
|
||||
.col-4 .card {
|
||||
margin-bottom: 15px
|
||||
}
|
||||
.grayscale {
|
||||
-webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
.filter {
|
||||
filter: alpha(opacity=20);
|
||||
opacity: 0.2;
|
||||
}
|
||||
77
modules/member/themes/_desktop/bs4-default/settings/_main.js
Normal file
77
modules/member/themes/_desktop/bs4-default/settings/_main.js
Normal file
@@ -0,0 +1,77 @@
|
||||
$(function () {
|
||||
|
||||
$('[data-toggle="avatar"]').click(function() {
|
||||
$("#rb-upfile-avatar").click();
|
||||
});
|
||||
$("#rb-upfile-avatar").change(function() {
|
||||
var f = document.MbrPhotoForm;
|
||||
getIframeForAction(f);
|
||||
f.submit();
|
||||
});
|
||||
|
||||
$('[data-toggle="cover"]').click(function() {
|
||||
$("#rb-upfile-cover").click();
|
||||
});
|
||||
$("#rb-upfile-cover").change(function() {
|
||||
var f = document.MbrCoverForm;
|
||||
getIframeForAction(f);
|
||||
f.submit();
|
||||
});
|
||||
|
||||
|
||||
//본인확인을 위한 로그인
|
||||
$('#page-confirmPW').submit(function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
var form = $(this)
|
||||
siteLogin(form)
|
||||
});
|
||||
|
||||
//외부서비스 사용자 인증요청
|
||||
$('[data-reauth]').on("click", function(){
|
||||
var provider = $(this).data('reauth')
|
||||
// /core/engine/cssjs.engine.php 참고
|
||||
if (provider=='naver') var target = reauth_naver
|
||||
if (provider=='kakao') var target = reauth_kakao
|
||||
if (provider=='google') var target = reauth_google
|
||||
if (provider=='facebook') var target = reauth_facebook
|
||||
if (provider=='instagram') var target = reauth_instagram
|
||||
var referer = window.location.href // 연결후, 원래 페이지 복귀를 위해
|
||||
|
||||
$("body").isLoading({
|
||||
text: "연결 중..",
|
||||
position: "overlay"
|
||||
});
|
||||
$.post(rooturl+'/?r='+raccount+'&m=connect&a=save_referer',{
|
||||
referer : referer
|
||||
},function(response,status){
|
||||
|
||||
if(status=='success'){
|
||||
document.location = target;
|
||||
}else{
|
||||
alert(status);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 최근탭 고정처리
|
||||
var tab = Cookies.get('lock-nav');
|
||||
if (tab=='social') $('#tab-social').tab('show')
|
||||
else $('#tab-passwd').tab('show')
|
||||
|
||||
$('[data-toggle="tab"]').on('shown.bs.tab', function (e) {
|
||||
var button = $(e.target) // newly activated tab
|
||||
var id = button.attr('href')
|
||||
if (id=='#pane-passwd') Cookies.set('lock-nav', 'passwd');
|
||||
else Cookies.set('lock-nav', 'social');
|
||||
})
|
||||
|
||||
|
||||
// 로그인 에러 흔적 초기화
|
||||
$("#page-confirmPW").find('.form-control').keyup(function() {
|
||||
$(this).removeClass('is-invalid')
|
||||
});
|
||||
|
||||
|
||||
|
||||
})
|
||||
35
modules/member/themes/_desktop/bs4-default/settings/_nav.php
Normal file
35
modules/member/themes/_desktop/bs4-default/settings/_nav.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
설정하기
|
||||
</div>
|
||||
<div class="list-group list-group-flush">
|
||||
<a href="<?php echo RW('mod=settings&page=main')?>" class="list-group-item list-group-item-action<?php if($page=='main'):?> selected<?php endif?>">
|
||||
프로필 관리
|
||||
</a>
|
||||
<a href="<?php echo RW('mod=settings&page=account')?>" class="list-group-item list-group-item-action<?php if($page=='account'):?> selected<?php endif?>">
|
||||
회원계정 관리
|
||||
</a>
|
||||
<?php if ($d['member']['login_social']): ?>
|
||||
<a href="<?php echo RW('mod=settings&page=connect')?>" class="list-group-item list-group-item-action<?php if($page=='connect'):?> selected<?php endif?>">
|
||||
연결계정 관리
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
<a href="<?php echo RW('mod=settings&page=email')?>" class="list-group-item list-group-item-action<?php if($page=='email'):?> selected<?php endif?>">
|
||||
이메일 관리
|
||||
</a>
|
||||
<a href="<?php echo RW('mod=settings&page=phone')?>" class="list-group-item list-group-item-action<?php if($page=='phone'):?> selected<?php endif?>">
|
||||
휴대폰 관리
|
||||
</a>
|
||||
<a href="<?php echo RW('mod=settings&page=shipping')?>" class="list-group-item list-group-item-action<?php if($page=='shipping'):?> selected<?php endif?>">
|
||||
배송지 관리
|
||||
</a>
|
||||
<a href="<?php echo RW('mod=settings&page=noti')?>" class="list-group-item list-group-item-action<?php if($page=='noti'):?> selected<?php endif?>">
|
||||
알림 설정
|
||||
</a>
|
||||
<?php if ($g['push_active']): ?>
|
||||
<a href="<?php echo RW('mod=settings&page=pwa')?>" class="d-none list-group-item list-group-item-action<?php if($page=='pwa'):?> selected<?php endif?>">
|
||||
웹앱 설치내역
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
393
modules/member/themes/_desktop/bs4-default/settings/account.php
Normal file
393
modules/member/themes/_desktop/bs4-default/settings/account.php
Normal file
@@ -0,0 +1,393 @@
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">회원계정 관리</h2>
|
||||
</div>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">비밀번호 <?php echo $my['last_pw']?'변경':'등록' ?></h2>
|
||||
</div>
|
||||
<form class="card" id="pwChangeForm" role="form" action="<?php echo $g['s']?>/" method="post">
|
||||
<div class="card-header">
|
||||
<div class="media">
|
||||
<i class="fa fa-key fa-3x mx-3" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
<?php if ($my['last_pw']): ?>
|
||||
현재 비밀번호는 <mark><?php echo getDateFormat($my['last_pw'],'Y.m.d')?></mark> 에 변경(등록)되었으며 <mark><?php echo -getRemainDate($my['last_pw'])?>일</mark>이 경과되었습니다. <br>
|
||||
비밀번호는 가급적 주기적으로 변경해 주세요.
|
||||
<?php else: ?>
|
||||
본 계정은 소셜로그인을 통해 가입된 계정으로 현재 비밀번호가 등록되어 있지 않습니다.<br>
|
||||
비밀번호를 등록하면 비밀번호를 통한 로그인이 가능합니다.
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="settings_account">
|
||||
<input type="hidden" name="act" value="pw">
|
||||
<input type="hidden" name="check_pw1" value="0">
|
||||
<input type="hidden" name="check_pw2" value="0">
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">신규 비밀번호</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control w-50" name="pw1" value="" onkeyup="pw1Check();" placeholder="비밀번호(6~16자리)">
|
||||
<div class="invalid-tooltip" id="pw1-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">비밀번호 확인</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control w-50" name="pw2" value="" placeholder="한번 더 입력하세요.">
|
||||
<div class="invalid-tooltip" id="pw2-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- ./card-body -->
|
||||
<div class="card-footer d-flex justify-content-between align-items-center">
|
||||
<?php if ($my['last_pw']): ?>
|
||||
<button type="submit" class="btn btn-light">
|
||||
<span class="not-loading">변경하기</span>
|
||||
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 변경중 ...</span>
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<span></span>
|
||||
<button type="submit" class="btn btn-light">
|
||||
<span class="not-loading">등록하기</span>
|
||||
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 등록중 ...</span>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
</form><!-- /.card -->
|
||||
|
||||
|
||||
<div class="subhead mt-5">
|
||||
<h2 class="subhead-heading">아이디 변경</h2>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<ul class="list-unstyled">
|
||||
<li>· 회원님의 공개 프로필 주소는 <a href="/@<?php echo $my['id'] ?>" target="_blank"><?php echo $_SERVER['HTTP_HOST']; ?>/@<?php echo $my['id'] ?></a> 입니다.</li>
|
||||
<li>· 아이디는 계정이 만들어질때 자동으로 생성되며 중복되지 않을 경우 변경등록이 가능합니다.</li>
|
||||
<li>· 아이디는 로그인 및 공개 프로필 주소에 활용됩니다.</li>
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
|
||||
<form id="idChangeForm" role="form" action="<?php echo $g['s']?>/" method="post">
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="settings_account">
|
||||
<input type="hidden" name="act" value="id">
|
||||
<input type="hidden" name="check_id" value="1">
|
||||
|
||||
<div class="form-group row my-5">
|
||||
<label class="col-sm-2 col-form-label text-center">아이디</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="input-group w-75 position-relative mb-0">
|
||||
<input type="text" class="form-control" name="id" placeholder="아이디" value="<?php echo $my['id'] ?>" size="13" maxlength="13" onkeyup="idCheck(this,'id-feedback');">
|
||||
<div class="invalid-tooltip" id="id-feedback"></div>
|
||||
<div class="input-group-append">
|
||||
<button type="submit" class="btn btn-light">
|
||||
<span class="not-loading">변경하기</span>
|
||||
<span class="is-loading">처리중 ...</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subhead mt-5">
|
||||
<h2 class="subhead-heading">회원탈퇴</h2>
|
||||
</div>
|
||||
|
||||
|
||||
<form class="card" name="procForm" role="form" action="<?php echo $g['s']?>/" method="post">
|
||||
|
||||
<div class="card-header">
|
||||
<div class="media">
|
||||
<i class="fa fa-user-times fa-3x mx-3" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
사용하고 계신 아이디 (<code><?php echo $my['id'] ?></code>) 는 탈퇴할 경우 재사용 및 복구가 불가능합니다. <br>
|
||||
탈퇴한 아이디는 본인과 타인 모두 재사용 및 복구가 불가하오니 신중하게 선택하시기 바랍니다.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul class="list-unstyled">
|
||||
<li>· 탈퇴 후 회원정보 및 개인형 서비스 이용기록은 모두 삭제됩니다.</li>
|
||||
<li>· 회원정보 및 개인형 서비스 이용기록은 모두 삭제되며, 삭제된 데이터는 복구되지 않습니다.</li>
|
||||
<li>· 삭제되는 내용을 확인하시고 필요한 데이터는 미리 백업을 해주세요.</li>
|
||||
<li>· 탈퇴 후에는 아이디 (<code><?php echo $my['id'] ?></code>)로 다시 가입할 수 없으며 아이디와 데이터는 복구할 수 없습니다.</li>
|
||||
<li>· 게시판형 서비스에 남아 있는 게시글과 댓글은 탈퇴 후 삭제할 수 없습니다.</li>
|
||||
</ul>
|
||||
|
||||
<div class="custom-control custom-checkbox f16">
|
||||
<input type="checkbox" class="custom-control-input" id="reaveCheck">
|
||||
<label class="custom-control-label" for="reaveCheck">위 내용을 모두 확인하였습니다.</label>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">아이디</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="id" readonly class="form-control-plaintext" value="<?php echo $my['id'] ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">이름</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="name" readonly class="form-control-plaintext" value="<?php echo $my['name'] ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">비밀번호</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="password" name="pw" id="password" class="form-control form-control-lg" placeholder="" required="" autocomplete="new-pw">
|
||||
<div class="invalid-feedback mt-2" data-role="passwordErrorBlock"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center"></label>
|
||||
<div class="col-sm-8">
|
||||
<input type="password" name="pw2" class="form-control form-control-lg" placeholder="다시 한번 입력해주세요." required="" value="">
|
||||
<div class="invalid-feedback mt-2" data-role="passwordErrorBlock"></div>
|
||||
|
||||
<p class="mt-3 mb-0 text-muted">회원탈퇴를 원하시면 비밀번호를 입력하신 후 ‘탈퇴하기’ 버튼을 클릭해 주세요.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-footer d-flex justify-content-between align-items-center">
|
||||
<a href="<?php echo RW('mod=password_reset')?>">비밀번호를 분실했어요.</a>
|
||||
<button type="submit" class="btn btn-light text-danger">탈퇴하기</button>
|
||||
</div>
|
||||
|
||||
</form><!-- /.card -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var f_pw = getId('pwChangeForm'); // dom 선택자
|
||||
var form_pw = $('#pwChangeForm'); // jquery 선택자
|
||||
|
||||
var f_id = getId('idChangeForm'); // dom 선택자
|
||||
var form_id = $('#idChangeForm'); // jquery 선택자
|
||||
|
||||
function pw1Check() {
|
||||
var layer = 'pw1-feedback';
|
||||
|
||||
if (!f_pw.pw1.value) {
|
||||
f_pw.pw1.classList.remove('is-valid','is-invalid');
|
||||
} else {
|
||||
|
||||
f_pw.classList.remove('was-validated');
|
||||
f_pw.pw1.classList.add('is-invalid');
|
||||
f_pw.pw1.classList.remove('is-valid');
|
||||
|
||||
if (f_pw.pw1.value.length < 6 || f_pw.pw1.value.length > 16)
|
||||
{
|
||||
getId(layer).innerHTML = '영문/숫자/특수문자중 2개 이상의 조합으로 최소 6~16자로 입력하셔야 합니다.';
|
||||
f_pw.pw1.focus();
|
||||
f_pw.check_pw1.value = '0';
|
||||
return false;
|
||||
}
|
||||
if (getTypeCheck(f_pw.pw1.value,"abcdefghijklmnopqrstuvwxyz"))
|
||||
{
|
||||
getId(layer).innerHTML = '비밀번호가 영문만으로 입력되었습니다.\n비밀번호는 영문/숫자/특수문자중 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
|
||||
f_pw.pw1.focus();
|
||||
f_pw.check_pw1.value = '0';
|
||||
return false;
|
||||
}
|
||||
if (getTypeCheck(f_pw.pw1.value,"1234567890"))
|
||||
{
|
||||
getId(layer).innerHTML = '비밀번호가 숫자만으로 입력되었습니다.\n비밀번호는 영문/숫자/특수문자중 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
|
||||
f_pw.pw1.focus();
|
||||
f_pw.check_pw1.value = '0';
|
||||
return false;
|
||||
}
|
||||
|
||||
f_pw.pw1.classList.add('is-valid');
|
||||
f_pw.pw1.classList.remove('is-invalid');
|
||||
getId(layer).innerHTML = '';
|
||||
f_pw.check_pw1.value = '1';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function pw2Check() {
|
||||
var layer = 'pw2-feedback';
|
||||
|
||||
if (!f_pw.pw1.value) {
|
||||
f_pw.pw2.value = '';
|
||||
f_pw.pw1.focus();
|
||||
} else {
|
||||
f_pw.classList.remove('was-validated');
|
||||
f_pw.pw2.classList.add('is-invalid');
|
||||
f_pw.pw2.classList.remove('is-valid');
|
||||
|
||||
if (f_pw.pw1.value != f_pw.pw2.value)
|
||||
{
|
||||
getId(layer).innerHTML = '비밀번호가 일치하지 않습니다.';
|
||||
f_pw.classList.remove('was-validated');
|
||||
f_pw.pw2.focus();
|
||||
f_pw.check_pw2.value = '0';
|
||||
return false;
|
||||
}
|
||||
|
||||
f_pw.pw2.classList.add('is-valid');
|
||||
f_pw.pw2.classList.remove('is-invalid');
|
||||
getId(layer).innerHTML = '';
|
||||
|
||||
f_pw.check_pw2.value = '1';
|
||||
}
|
||||
}
|
||||
|
||||
function idCheck(obj,layer) {
|
||||
|
||||
if (!obj.value)
|
||||
{
|
||||
eval('obj.form.check_'+obj.name).value = '0';
|
||||
obj.classList.remove('is-invalid');
|
||||
getId(layer).innerHTML = '';
|
||||
}
|
||||
else {
|
||||
if (obj.value.length < 4 || obj.value.length > 13 || !getTypeCheck(obj.value,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"))
|
||||
{
|
||||
obj.form.check_id.value = '0';
|
||||
obj.classList.add('is-invalid');
|
||||
obj.focus();
|
||||
getId(layer).innerHTML = '4~13자 이내에서 영문 대소문자,숫자,_ 만 사용할 수 있습니다';
|
||||
return false;
|
||||
} else {
|
||||
obj.form.check_id.value = '1';
|
||||
obj.classList.remove('is-invalid');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$(function () {
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
//비밀번호 변경시 입력항목 유용성 체크
|
||||
form_pw.find('[name="pw2"]').keyup(function(){
|
||||
$(this).removeClass('is-invalid is-valid')
|
||||
});
|
||||
|
||||
// 비밀번호 변경 실행
|
||||
f_pw.addEventListener('submit', function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
if (f_pw.pw1.value == '') {
|
||||
f_pw.pw1.focus()
|
||||
f_pw.pw1.classList.add('is-invalid')
|
||||
getId('pw1-feedback').innerHTML = '패스워드를 입력해주세요.';
|
||||
return false;
|
||||
}
|
||||
if (f_pw.check_pw1.value == '0') {
|
||||
f_pw.pw2.value = ''
|
||||
f_pw.pw2.classList.remove('is-valid','is-invalid');
|
||||
f_pw.check_pw2.value = '0'
|
||||
f_pw.pw1.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
pw2Check()
|
||||
|
||||
if (f_pw.pw2.value == '') {
|
||||
f_pw.pw2.focus()
|
||||
f_pw.pw2.classList.add('is-invalid')
|
||||
getId('pw2-feedback').innerHTML = '패스워드를 한번더 입력해주세요.';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (f_pw.check_pw1.value == '0' || f_pw.check_pw2.value == '0') {
|
||||
return false;
|
||||
}
|
||||
|
||||
form_pw.find('[type="submit"]').attr("disabled",true);
|
||||
|
||||
f_pw.classList.add('was-validated');
|
||||
|
||||
form_pw.find('.form-control').removeClass('is-invalid') //에러이력 초기화
|
||||
setTimeout(function(){
|
||||
getIframeForAction(f_pw);
|
||||
f_pw.submit();
|
||||
}, 500);
|
||||
|
||||
});
|
||||
|
||||
//아이디 변경 실행
|
||||
f_id.addEventListener('submit', function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
if (f_id.id.value == '') {
|
||||
f_id.id.focus()
|
||||
f_id.id.classList.add('is-invalid')
|
||||
getId('id-feedback').innerHTML = '아이디를 입력해주세요.';
|
||||
return false;
|
||||
}
|
||||
if (f_id.check_id.value == '0') {
|
||||
f_id.id.value = ''
|
||||
f_id.id.classList.remove('is-valid','is-invalid');
|
||||
f_id.check_id.value = '0'
|
||||
f_id.id.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
form_id.find('[type="submit"]').attr("disabled",true);
|
||||
form_id.find('.form-control').removeClass('is-invalid') //에러이력 초기화
|
||||
setTimeout(function(){
|
||||
getIframeForAction(f_id);
|
||||
f_id.submit();
|
||||
}, 300);
|
||||
|
||||
});
|
||||
|
||||
|
||||
$('[data-toggle="actionIframe"]').click(function() {
|
||||
getIframeForAction('');
|
||||
frames.__iframe_for_action__.location.href = $(this).attr("data-url");
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.page-wrapper -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
176
modules/member/themes/_desktop/bs4-default/settings/connect.php
Normal file
176
modules/member/themes/_desktop/bs4-default/settings/connect.php
Normal file
@@ -0,0 +1,176 @@
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">연결계정 관리</h2>
|
||||
</div>
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
<p class="text-muted">외부의 소셜미디어 계정을 연결하고 통합관리 합니다. 연결된 소셜미디어로 사용자인증 및 연결을 지원합니다.</p>
|
||||
<ul class="list-group">
|
||||
|
||||
<?php if ($d['connect']['use_n']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://naver.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle<?php echo !$my_naver['uid']?' filter grayscale':'' ?>" src="<?php echo $g['img_core']?>/sns/naver.png" alt="네이버" width="28">
|
||||
네이버
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<?php if ($my_naver['uid']): ?>
|
||||
<small class="mr-3 text-muted">
|
||||
<?php echo getDateFormat($my_naver['d_regis'],'Y.m.d H:i') ?> 연결
|
||||
</small>
|
||||
<button type="button" class="btn btn-outline-secondary" data-act="del" data-uid="<?php echo $my_naver['uid'] ?>">
|
||||
연결끊기
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<button type="button" class="btn btn-outline-primary" data-connect="naver" role="button">
|
||||
연결하기
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_k']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://kakao.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle<?php echo !$my_kakao['uid']?' filter grayscale':'' ?>" src="<?php echo $g['img_core']?>/sns/kakao.png" alt="카카오" width="28">
|
||||
카카오
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<?php if ($my_kakao['uid']): ?>
|
||||
<small class="mr-3 text-muted">
|
||||
<?php echo getDateFormat($my_kakao['d_regis'],'Y.m.d H:i') ?> 연결
|
||||
</small>
|
||||
<button type="button" class="btn btn-outline-secondary" data-act="del" data-uid="<?php echo $my_kakao['uid'] ?>">
|
||||
연결끊기
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<button type="button" class="btn btn-outline-primary" data-connect="kakao" role="button">
|
||||
연결하기
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_g']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://google.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle<?php echo !$my_google['uid']?' filter grayscale':'' ?>" src="<?php echo $g['img_core']?>/sns/google.png" alt="구글" width="28">
|
||||
구글
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<?php if ($my_google['uid']): ?>
|
||||
<small class="mr-3 text-muted">
|
||||
<?php echo getDateFormat($my_google['d_regis'],'Y.m.d H:i') ?> 연결
|
||||
</small>
|
||||
<button type="button" class="btn btn-outline-secondary" data-act="del" data-uid="<?php echo $my_google['uid'] ?>">
|
||||
연결끊기
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<button type="button" class="btn btn-outline-primary" data-connect="google" role="button">
|
||||
연결하기
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_f']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://facebook.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle<?php echo !$my_facebook['uid']?' filter grayscale':'' ?>" src="<?php echo $g['img_core']?>/sns/facebook.png" alt="페이스북" width="28">
|
||||
페이스북
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<?php if ($my_facebook['uid']): ?>
|
||||
<small class="mr-3 text-muted">
|
||||
<?php echo getDateFormat($my_facebook['d_regis'],'Y.m.d H:i') ?> 연결
|
||||
</small>
|
||||
<button type="button" class="btn btn-outline-secondary" data-act="del" data-uid="<?php echo $my_facebook['uid'] ?>">
|
||||
연결끊기
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<button type="button" class="btn btn-outline-primary" data-connect="facebook" role="button">
|
||||
연결하기
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($d['connect']['use_i']): ?>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="">
|
||||
<a href="http://instagram.com" target="_blank" class="muted-link">
|
||||
<img class="rounded-circle<?php echo !$my_instagram['uid']?' filter grayscale':'' ?>" src="<?php echo $g['img_core']?>/sns/instagram.png" alt="인스타그램" width="28">
|
||||
인스타그램
|
||||
</a>
|
||||
</div>
|
||||
<div class="">
|
||||
<?php if ($my_instagram['uid']): ?>
|
||||
<small class="mr-3 text-muted">
|
||||
<?php echo getDateFormat($my_instagram['d_regis'],'Y.m.d H:i') ?> 연결
|
||||
</small>
|
||||
<button type="button" class="btn btn-outline-secondary" data-act="del" data-uid="<?php echo $my_instagram['uid'] ?>">
|
||||
연결끊기
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<button type="button" class="btn btn-outline-primary" data-connect="instagram" role="button">
|
||||
연결하기
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.page-wrapper -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function () {
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
// sns 삭제
|
||||
$('[data-act="del"]').click(function() {
|
||||
if (confirm('정말로 연결을 끊으시겠습니까? ')){
|
||||
var uid = $(this).data('uid')
|
||||
var act = 'del'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_connect&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
</script>
|
||||
428
modules/member/themes/_desktop/bs4-default/settings/email.php
Normal file
428
modules/member/themes/_desktop/bs4-default/settings/email.php
Normal file
@@ -0,0 +1,428 @@
|
||||
<?php
|
||||
$sqlque0 = 'mbruid='.$my['uid'];
|
||||
$sqlque1 = 'mbruid='.$my['uid'].' and base=1 and backup=0';
|
||||
$sqlque2 = 'mbruid='.$my['uid'].' and base=0';
|
||||
$sqlque3 = 'mbruid='.$my['uid'].' and backup=0 and d_verified<>0';
|
||||
$sqlque4 = 'mbruid='.$my['uid'].' and base=0 and d_verified<>0';
|
||||
|
||||
$PCD = getDbArray($table['s_mbremail'],$sqlque1,'*','uid','asc',0,1);
|
||||
$RCD = getDbArray($table['s_mbremail'],$sqlque2,'*','uid','asc',0,1);
|
||||
$VCD = getDbArray($table['s_mbremail'],$sqlque3,'*','uid','asc',0,1);
|
||||
$SCD = getDbArray($table['s_mbremail'],$sqlque4,'*','uid','asc',0,1);
|
||||
|
||||
$NUM = getDbRows($table['s_mbremail'],$sqlque0);
|
||||
$NUM_VCD = getDbRows($table['s_mbremail'],$sqlque3);
|
||||
?>
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">이메일 관리</h2>
|
||||
</div>
|
||||
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
|
||||
<?php if (!$NUM): ?>
|
||||
<div class="card p-5 text-center text-muted">
|
||||
<i class="fa fa-envelope-o fa-3x mb-2" aria-hidden="true"></i>
|
||||
등록된 이메일이 없습니다.
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<ul class="list-group">
|
||||
|
||||
<?php while($P=db_fetch_array($PCD)):?>
|
||||
<?php $codeValid=getValid($P['d_code'],$d['member']['settings_keyexpire']); ?>
|
||||
<li class="list-group-item" id="item-<?php echo $P['uid'] ?>">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<?php if ($P['d_verified']): ?>
|
||||
<div>
|
||||
<i class="fa fa-envelope-o fa-fw text-muted" aria-hidden="true"></i>
|
||||
<strong><?php echo $P['email'] ?></strong>
|
||||
<?php if ($P['base']): ?><span class="badge badge-primary">기본</span><?php endif; ?>
|
||||
<?php if ($my['email_profile']==$P['email']): ?><span class="badge badge-light">프로필 공개</span><?php endif; ?>
|
||||
<?php if ($my['email_noti']==$P['email']): ?><span class="badge badge-light">알림수신</span><?php endif; ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div>
|
||||
<i class="fa fa-envelope-o fa-fw text-muted" aria-hidden="true"></i>
|
||||
<span class="text-muted"><?php echo $P['email'] ?></span>
|
||||
<?php if ($P['base']): ?><span class="badge badge-primary">기본</span><?php endif; ?>
|
||||
<span class="badge badge-secondary">미인증</span>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-light" data-act="send_code" data-uid="<?php echo $P['uid'] ?>">
|
||||
<span class="not-loading"><?php echo $codeValid?'재발송':'본인확인 인증번호 발송' ?></span>
|
||||
<span class="is-loading">발송중..</span>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="<?php echo $P['d_code'] && $codeValid?'':'d-none' ?>" data-role="verify_email_area">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<div style="width: 35%">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">인증번호</span>
|
||||
</div>
|
||||
<input type="number" class="form-control" name="confirm_code_<?php echo $P['uid'] ?>" data-role="code">
|
||||
<div class="invalid-tooltip"></div>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-light" type="button" data-act="confirm_code" data-uid="<?php echo $P['uid'] ?>">
|
||||
<span class="not-loading">확인</span>
|
||||
<span class="is-loading">확인중..</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-2 text-right">
|
||||
<small class="form-text text-success mb-2">
|
||||
인증번호를 발송했습니다.(유효시간 <?php echo $d['member']['settings_keyexpire'] ?>분)
|
||||
<span
|
||||
data-role="countdown"
|
||||
data-countdown="<?php echo $P['d_code']?date("Y/m/d H:i:s",strtotime ("+".$d['member']['settings_keyexpire']." minutes",strtotime($P['d_code']))):''; ?>">
|
||||
</span>
|
||||
<br>인증번호가 오지 않으면 입력하신 정보가 정확한지 확인하여 주세요.
|
||||
</small>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /#verify_email_area -->
|
||||
</li>
|
||||
<?php endwhile?>
|
||||
|
||||
<?php while($R=db_fetch_array($RCD)):?>
|
||||
<?php $codeValid=getValid($R['d_code'],$d['member']['settings_keyexpire']); ?>
|
||||
<li class="list-group-item" id="item-<?php echo $R['uid'] ?>">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<?php if ($R['d_verified']): ?>
|
||||
<div>
|
||||
<i class="fa fa-envelope-o fa-fw text-muted" aria-hidden="true"></i> <?php echo $R['email'] ?>
|
||||
<?php if ($R['backup']): ?><span class="badge badge-warning">백업</span><?php endif; ?>
|
||||
<?php if ($my['email_profile']==$R['email']): ?><span class="badge badge-light">프로필 공개</span><?php endif; ?>
|
||||
<?php if ($my['email_noti']==$R['email']): ?><span class="badge badge-light">알림수신</span><?php endif; ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php if (!$R['base']): ?>
|
||||
<button type="button" class="btn btn-link muted-link py-0" data-act="del" data-toggle="tooltip" title="삭제" data-uid="<?php echo $R['uid'] ?>">
|
||||
<i class="fa fa-trash-o fa-lg" aria-hidden="true"></i>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div>
|
||||
<span class="text-muted"><?php echo $R['email'] ?></span>
|
||||
<span class="badge badge-secondary">미인증</span>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-light" data-act="send_code" data-uid="<?php echo $R['uid'] ?>">
|
||||
<span class="not-loading"><?php echo $codeValid?'재발송':'본인확인 인증번호 발송' ?></span>
|
||||
<span class="is-loading">발송중..</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-link muted-link py-0" data-act="del" data-toggle="tooltip" title="삭제" data-uid="<?php echo $R['uid'] ?>">
|
||||
<i class="fa fa-trash-o fa-lg" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div><!-- /.d-flex -->
|
||||
<div class="<?php echo $R['d_code'] && $codeValid?'':'d-none' ?>" data-role="verify_email_area">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<div style="width: 35%">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">인증번호</span>
|
||||
</div>
|
||||
<input type="number" class="form-control" name="confirm_code_<?php echo $R['uid'] ?>" data-role="code">
|
||||
<div class="invalid-tooltip"></div>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-light" type="button" data-act="confirm_code" data-uid="<?php echo $R['uid'] ?>">
|
||||
<span class="not-loading">확인</span>
|
||||
<span class="is-loading">확인중..</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-2 text-right">
|
||||
<small class="form-text text-success mb-2">
|
||||
인증번호를 발송했습니다.(유효시간 <?php echo $d['member']['settings_keyexpire'] ?>분)
|
||||
<span
|
||||
data-role="countdown"
|
||||
data-countdown="<?php echo $R['d_code']?date("Y/m/d H:i:s",strtotime ("+".$d['member']['settings_keyexpire']." minutes",strtotime($R['d_code']))):''; ?>">
|
||||
</span>
|
||||
<br>인증번호가 오지 않으면 입력하신 정보가 정확한지 확인하여 주세요.
|
||||
</small>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /#verify_email_area -->
|
||||
|
||||
</li>
|
||||
<?php endwhile?>
|
||||
</ul>
|
||||
|
||||
<form class="my-4" id="emailsForm" role="form" action="<?php echo $g['s']?>/" method="post" novalidate>
|
||||
<fieldset<?php echo ($NUM==5)?' disabled':'' ?>>
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="settings_email">
|
||||
<input type="hidden" name="act" value="add">
|
||||
|
||||
<label class="font-weight-bold">이메일 추가</label>
|
||||
<div class="form-inline">
|
||||
<input type="email" name="email" class="form-control" style="width: 50%" required placeholder="<?php echo ($NUM==5)?'최대 5개까지 추가할 수 있습니다.':'' ?>">
|
||||
<button type="submit" class="btn btn-light ml-2<?php echo ($NUM==5)?' d-none':'' ?>">
|
||||
<span class="not-loading">추가</span>
|
||||
<span class="is-loading">추가중..</span>
|
||||
</button>
|
||||
<div class="invalid-feedback mt-2">이메일을 입력해주세요.</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<?php if ($NUM): ?>
|
||||
<hr>
|
||||
<div class="mt-4">
|
||||
<label class="font-weight-bold">기본 이메일</label>
|
||||
<p>기본 이메일은 계정과 관련된 주요알림을 수신합니다.</p>
|
||||
|
||||
<div class="form-inline" id="save-primary">
|
||||
<select class="form-control custom-select">
|
||||
<?php if ($NUM_VCD): ?>
|
||||
<?php while($V=db_fetch_array($VCD)):?>
|
||||
<option value="<?php echo $V['uid'] ?>"<?php echo $V['base']?' selected':'' ?>>
|
||||
<?php echo $V['email'] ?>
|
||||
</option>
|
||||
<?php endwhile?>
|
||||
<?php else: ?>
|
||||
<option value="">인증된 이메일이 없습니다.</option>
|
||||
<?php endif; ?>
|
||||
</select>
|
||||
<?php if ($NUM_VCD): ?>
|
||||
<button type="button" class="btn btn-light ml-2 js-submit" >
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<small class="form-text text-muted mt-2">
|
||||
본인인증된 메일만 지정할 수 있습니다.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="mt-4">
|
||||
<label class="font-weight-bold">백업 이메일</label>
|
||||
<p>
|
||||
백업 이메일은 기본 이메일을 사용할 수 없을때, 비밀번호 초기화를 위해 사용됩니다.
|
||||
</p>
|
||||
<div class="form-inline" id="save-backup">
|
||||
<select class="form-control custom-select">
|
||||
<option value="all"<?php echo ($my['email_backup']==1)?' selected':'' ?>>인증된 메일전체</option>
|
||||
<option value="none"<?php echo ($my['email_backup']==0)?' selected':'' ?>>기본 이메일만 사용</option>
|
||||
<option disabled>---------------</option>
|
||||
<?php while($S=db_fetch_array($SCD)):?>
|
||||
<option value="<?php echo $S['uid'] ?>"<?php echo $S['backup']?' selected':'' ?>>
|
||||
<?php echo $S['email'] ?>
|
||||
</option>
|
||||
<?php endwhile?>
|
||||
|
||||
</select>
|
||||
<button type="button" class="btn btn-light ml-2 js-submit">
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
</div>
|
||||
<small class="form-text text-muted mt-2">
|
||||
본인인증된 메일만 지정할 수 있습니다.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
|
||||
<hr>
|
||||
<h4 class="mt-4">환경 설정</h3>
|
||||
|
||||
<div class="mt-3" id="save-config">
|
||||
|
||||
<div class="custom-control custom-radio mt-2">
|
||||
<input type="radio" id="mailing_1" name="mailing" value="1"<?php if($my['mailing']):?> checked="checked"<?php endif?> class="custom-control-input">
|
||||
<label class="custom-control-label" for="mailing_1">뉴스레터나 공지이메일을 수신받겠습니다.</label>
|
||||
</div>
|
||||
<div class="custom-control custom-radio mt-2">
|
||||
<input type="radio" id="mailing_0" name="mailing" value="0"<?php if(!$my['mailing']):?> checked="checked"<?php endif?> class="custom-control-input">
|
||||
<label class="custom-control-label" for="mailing_0">계정과 관련된 메일만 수신합니다.</label>
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-light mt-4 js-submit">
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.row -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
|
||||
<!-- https://github.com/hilios/jQuery.countdown -->
|
||||
<?php getImport('jquery.countdown','jquery.countdown.min','2.2.0','js')?>
|
||||
|
||||
<script>
|
||||
|
||||
var form = $('#emailsForm')
|
||||
var f = document.getElementById('emailsForm');
|
||||
|
||||
function doCountdown() {
|
||||
$(document).find('[data-countdown]').each(function() {
|
||||
var $this = $(this), finalDate = $(this).data('countdown');
|
||||
$this.countdown(finalDate, function(event) {
|
||||
$this.html('['+event.strftime('%M:%S')+']');
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
$(function () {
|
||||
|
||||
doCountdown(); //인증번호 유효시간 카운트다운
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
// 본인인증 코드발송
|
||||
$('[data-act="send_code"').click(function() {
|
||||
var uid = $(this).data('uid')
|
||||
var act = 'send_code'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_email&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
$(this).text('재발송')
|
||||
});
|
||||
|
||||
// 본인인증 코드 확인
|
||||
$('[data-act="confirm_code"').click(function() {
|
||||
var uid = $(this).data('uid')
|
||||
var item = $('#item-'+uid)
|
||||
var input = $('[name=confirm_code_'+uid+']')
|
||||
var tooltip = item.find('.invalid-tooltip')
|
||||
var code = input.val()
|
||||
|
||||
if (!code) {
|
||||
tooltip.text('인증번호를 입력해주세요.')
|
||||
input.focus().addClass('is-invalid')
|
||||
return false;
|
||||
}
|
||||
|
||||
var act = 'confirm_code'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_email&act='+act+'&uid='+uid+'&code='+code
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
});
|
||||
|
||||
// 상태표시 흔적 및 실행버튼 초기화
|
||||
form.find('[name="email"]').keyup(function(){
|
||||
$(this).removeClass('is-invalid is-valid')
|
||||
form.find('[type="submit"]').attr("disabled",false);
|
||||
});
|
||||
|
||||
$('[data-role="code"]').keyup(function(){
|
||||
$(this).removeClass('is-invalid is-valid')
|
||||
});
|
||||
|
||||
// 이메일 삭제
|
||||
$('[data-act="del"]').click(function() {
|
||||
if (confirm('정말로 삭제하시겠습니까? ')){
|
||||
var uid = $(this).data('uid')
|
||||
var act = 'del'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_email&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}
|
||||
});
|
||||
|
||||
// 기본 이메일 저장
|
||||
$('#save-primary').find('.js-submit').click(function() {
|
||||
var form = $('#save-primary')
|
||||
var uid = form.find('select').val()
|
||||
var act = 'save_primary'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_email&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
setTimeout(function(){
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}, 500);
|
||||
});
|
||||
|
||||
// 백업 이메일 저장
|
||||
$('#save-backup').find('.js-submit').click(function() {
|
||||
var form = $('#save-backup')
|
||||
var uid = form.find('select').val()
|
||||
var act = 'save_backup'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_email&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
setTimeout(function(){
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}, 500);
|
||||
});
|
||||
|
||||
// 환경설정 저장
|
||||
$('#save-config').find('.js-submit').click(function() {
|
||||
var form = $('#save-config')
|
||||
var mailing = form.find(':radio[name="mailing"]:checked').val();
|
||||
var act = 'save_config'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_email&act='+act+'&mailing='+mailing
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
setTimeout(function(){
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}, 300);
|
||||
});
|
||||
})
|
||||
|
||||
$('#emailsForm').submit(function() {
|
||||
|
||||
var form = $(this)
|
||||
var layer = form.find('.invalid-feedback')
|
||||
var input = form.find('[name="email"]')
|
||||
var btn = form.find('[type="submit"]')
|
||||
|
||||
var obj = f.email
|
||||
|
||||
getIframeForAction(f);
|
||||
|
||||
// 상태초기화
|
||||
input.removeClass('is-invalid is-valid')
|
||||
btn.attr("disabled",false);
|
||||
|
||||
if (f.checkValidity() === false) {
|
||||
input.focus()
|
||||
input.addClass('is-invalid')
|
||||
layer.text('이메일을 입력해주세요.')
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!chkEmailAddr(obj.value)) {
|
||||
input.focus()
|
||||
input.addClass('is-invalid')
|
||||
layer.text('이메일 형식이 아닙니다.')
|
||||
return false;
|
||||
}
|
||||
|
||||
btn.attr("disabled",true);
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,94 @@
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">회원탈퇴</h2>
|
||||
</div>
|
||||
|
||||
|
||||
<form class="card" name="procForm" role="form" action="<?php echo $g['s']?>/" method="post">
|
||||
|
||||
|
||||
<div class="card-header">
|
||||
<div class="media">
|
||||
<i class="fa fa-user-times fa-3x mx-3" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
사용하고 계신 아이디 (<code><?php echo $my['id'] ?></code>) 는 탈퇴할 경우 재사용 및 복구가 불가능합니다. <br>
|
||||
탈퇴한 아이디는 본인과 타인 모두 재사용 및 복구가 불가하오니 신중하게 선택하시기 바랍니다.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul class="list-unstyled">
|
||||
<li>· 탈퇴 후 회원정보 및 개인형 서비스 이용기록은 모두 삭제됩니다.</li>
|
||||
<li>· 회원정보 및 개인형 서비스 이용기록은 모두 삭제되며, 삭제된 데이터는 복구되지 않습니다.</li>
|
||||
<li>· 삭제되는 내용을 확인하시고 필요한 데이터는 미리 백업을 해주세요.</li>
|
||||
<li>· 탈퇴 후에는 아이디 (<code><?php echo $my['id'] ?></code>)로 다시 가입할 수 없으며 아이디와 데이터는 복구할 수 없습니다.</li>
|
||||
<li>· 게시판형 서비스에 남아 있는 게시글과 댓글은 탈퇴 후 삭제할 수 없습니다.</li>
|
||||
</ul>
|
||||
|
||||
<div class="custom-control custom-checkbox f16">
|
||||
<input type="checkbox" class="custom-control-input" id="reaveCheck">
|
||||
<label class="custom-control-label" for="reaveCheck">위 내용을 모두 확인하였습니다.</label>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">아이디</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="id" readonly class="form-control-plaintext" value="<?php echo $my['id'] ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">이름</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="name" readonly class="form-control-plaintext" value="<?php echo $my['name'] ?>">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center">패스워드</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="password" name="pw" id="password" class="form-control form-control-lg" placeholder="" required="" autocomplete="new-pw">
|
||||
<div class="invalid-feedback mt-2" data-role="passwordErrorBlock"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-center"></label>
|
||||
<div class="col-sm-8">
|
||||
<input type="password" name="pw2" class="form-control form-control-lg" placeholder="다시 한번 입력해주세요." required="" value="">
|
||||
<div class="invalid-feedback mt-2" data-role="passwordErrorBlock"></div>
|
||||
|
||||
<p class="mt-3 mb-0 text-muted">회원탈퇴를 원하시면 비밀번호를 입력하신 후 ‘탈퇴하기’ 버튼을 클릭해 주세요.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-footer d-flex justify-content-between align-items-center">
|
||||
<a href="<?php echo RW('mod=password_reset')?>">패스워드를 분실했어요.</a>
|
||||
<button type="submit" class="btn btn-light text-danger">탈퇴하기</button>
|
||||
</div>
|
||||
|
||||
</form><!-- /.card -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.page-wrapper -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
591
modules/member/themes/_desktop/bs4-default/settings/main.php
Normal file
591
modules/member/themes/_desktop/bs4-default/settings/main.php
Normal file
@@ -0,0 +1,591 @@
|
||||
<?php
|
||||
$sqlque= 'mbruid='.$my['uid'].' and d_verified<>0';
|
||||
$RCD = getDbArray($table['s_mbremail'],$sqlque,'*','uid','asc',0,1);
|
||||
$PCD = getDbArray($table['s_mbrphone'],$sqlque,'*','uid','asc',0,1);
|
||||
?>
|
||||
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">프로필 관리</h2>
|
||||
</div>
|
||||
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
|
||||
<!-- 프로필 커버 이미지 -->
|
||||
<div class="d-flex justify-content-between align-items-end bg-light border p-3 mt-3 mb-4" style="height:255px;background-size: cover;background-image: url('<?php echo getCoverSrc($my['uid'],'940','255') ?>');">
|
||||
<div class="">
|
||||
<button type="button" data-toggle="cover" class="btn btn-light">
|
||||
<span class="fa fa-upload fa-lg"></span> 사진 업로드
|
||||
</button>
|
||||
</div>
|
||||
<?php if($my['cover']):?>
|
||||
<a class="btn btn-light" href="<?php echo $g['s']?>/?r=<?php echo $r?>&m=<?php echo $m?>&a=cover_delete&reload=Y" title="<?php echo $my['cover']?>" onclick="return hrefCheck(this,true,'정말로 삭제 하시겠습니까?');">
|
||||
<i class="fa fa-trash fa-fw" aria-hidden="true"></i> 현재 사진삭제
|
||||
</a>
|
||||
<?php endif?>
|
||||
</div>
|
||||
|
||||
<div class="clearfix">
|
||||
<form class="float-left" id="memberForm" role="form" action="<?php echo $g['s']?>/" method="post" style="width: 500px;" novalidate>
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="front" value="<?php echo $front?>">
|
||||
<input type="hidden" name="a" value="settings_main">
|
||||
<input type="hidden" name="act" value="info">
|
||||
<input type="hidden" name="check_nic" value="<?php echo $my['nic']?1:0?>">
|
||||
|
||||
<div class="form-group">
|
||||
<label>이름 <span class="text-danger">*</span></label>
|
||||
<input type="text" class="form-control" name="name" value="<?php echo $my['name']?>" maxlength="10" required>
|
||||
</div>
|
||||
|
||||
<?php if($d['member']['form_settings_nic']):?>
|
||||
<div class="form-group">
|
||||
<label>닉네임<?php if($d['member']['form_settings_nic_required']):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
<input type="text" class="form-control" name="nic" value="<?php echo $my['nic']?>" maxlength="20" onblur="sameCheck(this,'hLayernic');">
|
||||
<div class="invalid-feedback" id="hLayernic"></div>
|
||||
<small class="form-text text-muted mt-2">
|
||||
웹사이트에서 사용하고 싶은 이름을 입력해 주세요 (8자이내 중복불가)
|
||||
</small>
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_email_profile']):?>
|
||||
<div class="form-group" id="select-email-profile">
|
||||
<label>공개 이메일 <?php if($d['member']['form_settings_email_profile_required']):?><span class="text-danger">*</span><?php endif?></label>
|
||||
|
||||
<?php if ($my['email']): ?>
|
||||
<select class="form-control custom-select" name="email_profile"<?php if($d['member']['form_settings_email_profile_required']):?> required<?php endif?>>
|
||||
<option value="">선택하세요.</option>
|
||||
<?php while($R=db_fetch_array($RCD)):?>
|
||||
<option value="<?php echo $R['email'] ?>"<?php echo ($my['email_profile']==$R['email'])?' selected':'' ?>>
|
||||
<?php echo $R['email'] ?>
|
||||
</option>
|
||||
<?php endwhile?>
|
||||
</select>
|
||||
<div class="invalid-feedback mt-2">프로필에 공개할 이메일을 선택하세요.</div>
|
||||
<small class="form-text text-muted mt-2">
|
||||
<a href="<?php echo $g['url_reset']?>&page=email">이메일 관리</a>에서 이메일을 추가할수 있으며, 본인인증된 메일만 지정할수 있습니다.
|
||||
</small>
|
||||
<?php else: ?>
|
||||
<select class="form-control custom-select" onChange="window.document.location.href=this.options[this.selectedIndex].value;">
|
||||
<option value="">선택하세요.</option>
|
||||
<option value="<?php echo $g['url_reset']?>&page=email">메일 추가하기</option>
|
||||
</select>
|
||||
<small class="form-text text-muted mt-2">
|
||||
본인인증된 메일만 추가할 수 있습니다.
|
||||
</small>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<hr>
|
||||
|
||||
<?php if($d['member']['form_settings_birth']):?>
|
||||
<div class="form-group">
|
||||
<label>생년월일<?php if($d['member']['form_settings_birth_required']):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
<div class="form-inline">
|
||||
<select class="form-control custom-select" name="birth_1">
|
||||
<option value="">년도</option>
|
||||
<?php for($i = substr($date['today'],0,4); $i > 1930; $i--):?>
|
||||
<option value="<?php echo $i?>"<?php if($my['birth1']==$i):?> selected="selected"<?php endif?>><?php echo $i?></option>
|
||||
<?php endfor?>
|
||||
</select>
|
||||
<select class="form-control custom-select ml-2" name="birth_2">
|
||||
<option value="">월</option>
|
||||
<?php $birth_2=substr($my['birth2'],0,2)?>
|
||||
<?php for($i = 1; $i < 13; $i++):?>
|
||||
<option value="<?php echo sprintf('%02d',$i)?>"<?php if($birth_2==$i):?> selected="selected"<?php endif?>><?php echo $i?></option>
|
||||
<?php endfor?>
|
||||
</select>
|
||||
<select class="form-control custom-select ml-2" name="birth_3">
|
||||
<option value="">일</option>
|
||||
<?php $birth_3=substr($my['birth2'],2,2)?>
|
||||
<?php for($i = 1; $i < 32; $i++):?>
|
||||
<option value="<?php echo sprintf('%02d',$i)?>"<?php if($birth_3==$i):?> selected="selected"<?php endif?>><?php echo $i?></option>
|
||||
<?php endfor?>
|
||||
</select>
|
||||
<div class="custom-control custom-checkbox ml-3">
|
||||
<input type="checkbox" class="custom-control-input" name="birthtype" id="birthtype" value="1"<?php if($my['birthtype']):?> checked="checked"<?php endif?>>
|
||||
<label class="custom-control-label" for="birthtype">음력</label>
|
||||
</div>
|
||||
<div class="invalid-feedback mt-2">
|
||||
생년월일을 지정해 주세요.
|
||||
</div>
|
||||
</div><!-- /.form-inline -->
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_sex']):?>
|
||||
<div class="form-group">
|
||||
<label>성별 <?php if($d['member']['form_settings_sex_required']):?><span class="text-danger">*</span><?php endif?></label>
|
||||
<div id="radio-sex">
|
||||
<div class="custom-control custom-radio custom-control-inline">
|
||||
<input type="radio" id="sex_1" name="sex" class="custom-control-input" value="1"<?php if($my['sex']==1):?> checked="checked"<?php endif?> required>
|
||||
<label class="custom-control-label" for="sex_1">남성</label>
|
||||
</div>
|
||||
<div class="custom-control custom-radio custom-control-inline">
|
||||
<input type="radio" id="sex_2" name="sex" class="custom-control-input" value="2"<?php if($my['sex']==2):?> checked="checked"<?php endif?> required>
|
||||
<label class="custom-control-label text-nowrap" for="sex_2">여성</label>
|
||||
<div class="invalid-feedback ml-4">성별을 선택해 주세요.</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_bio']):?>
|
||||
<div class="form-group">
|
||||
<label>간단소개<?php if($d['member']['form_settings_bio_required']):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
<textarea class="form-control" name="bio" rows="3" placeholder="간략한 소개글을 입력해주세요."><?php echo $my['bio']?></textarea>
|
||||
<div class="invalid-feedback">
|
||||
간단소개를 입력해 주세요.
|
||||
</div>
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_home']):?>
|
||||
<div class="form-group">
|
||||
<label>홈페이지<?php if($d['member']['form_settings_home_required']):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
<input type="text" class="form-control" name="home" value="<?php echo $my['home']?>" placeholder="URL을 입력하세요.">
|
||||
<div class="invalid-feedback">
|
||||
홈페이지 주소를 입력해주세요.
|
||||
</div>
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_tel']):?>
|
||||
<div class="form-group">
|
||||
<label>일반전화 <?php if($d['member']['form_settings_tel_required']):?><span class="text-danger">*</span><?php endif?></label>
|
||||
<?php $tel1=explode('-',$my['tel'])?>
|
||||
<div class="form-inline">
|
||||
<input type="text" name="tel_1" value="<?php echo $tel1[0]?>" maxlength="4" size="4" class="form-control"><span class="px-1">-</span>
|
||||
<input type="text" name="tel_2" value="<?php echo $tel1[1]?>" maxlength="4" size="4" class="form-control"><span class="px-1">-</span>
|
||||
<input type="text" name="tel_3" value="<?php echo $tel1[2]?>" maxlength="4" size="4" class="form-control">
|
||||
<div class="invalid-feedback">
|
||||
전화번호를 입력해주세요.
|
||||
</div>
|
||||
</div><!-- /.form-inline -->
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
|
||||
<?php if($d['member']['form_settings_location']):?>
|
||||
<div class="form-group">
|
||||
<label>거주지역<?php if($d['member']['form_settings_location_required']):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
<select class="form-control custom-select" name="location">
|
||||
<option value=""> + 선택하세요</option>
|
||||
<option value="" disabled>------------------</option>
|
||||
<?php
|
||||
$_tmpvfile = $g['path_module'].$m.'/var/location.txt';
|
||||
$_location=file($_tmpvfile);
|
||||
?>
|
||||
<?php foreach($_location as $_val):?>
|
||||
<option value="<?php echo trim($_val)?>"<?php if(trim($_val)==$my['location']):?> selected="selected"<?php endif?>>ㆍ<?php echo trim($_val)?></option>
|
||||
<?php endforeach?>
|
||||
</select>
|
||||
<div class="invalid-feedback">
|
||||
거주지를 선택해 주세요.
|
||||
</div>
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_job']):?>
|
||||
<div class="form-group">
|
||||
<label>직업<?php if($d['member']['form_settings_job_required']):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
<select class="form-control custom-select" name="job">
|
||||
<option value=""> + 선택하세요</option>
|
||||
<option value="" disabled>------------------</option>
|
||||
<?php
|
||||
$_tmpvfile = $g['path_module'].$m.'/var/job.txt';
|
||||
$_job=file($_tmpvfile);
|
||||
?>
|
||||
<?php foreach($_job as $_val):?>
|
||||
<option value="<?php echo trim($_val)?>"<?php if(trim($_val)==$my['job']):?> selected="selected"<?php endif?>>ㆍ<?php echo trim($_val)?></option>
|
||||
<?php endforeach?>
|
||||
</select>
|
||||
<div class="invalid-feedback">
|
||||
직업을 선택해 주세요.
|
||||
</div>
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_marr']):?>
|
||||
<div class="form-group">
|
||||
<label>결혼기념일<?php if($d['member']['form_settings_marr_required']):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
<div class="form-inline">
|
||||
<select class="form-control custom-select" name="marr_1">
|
||||
<option value="">년도</option>
|
||||
<?php for($i = substr($date['today'],0,4); $i > 1930; $i--):?>
|
||||
<option value="<?php echo $i?>"<?php if($i==$my['marr1']):?> selected="selected"<?php endif?>><?php echo $i?></option>
|
||||
<?php endfor?>
|
||||
</select>
|
||||
<select class="form-control custom-select ml-2" name="marr_2">
|
||||
<option value="">월</option>
|
||||
<?php for($i = 1; $i < 13; $i++):?>
|
||||
<option value="<?php echo sprintf('%02d',$i)?>"<?php if($i==substr($my['marr2'],0,2)):?> selected="selected"<?php endif?>><?php echo $i?></option>
|
||||
<?php endfor?>
|
||||
</select>
|
||||
<select class="form-control custom-select ml-2" name="marr_3">
|
||||
<option value="">일</option>
|
||||
<?php for($i = 1; $i < 32; $i++):?>
|
||||
<option value="<?php echo sprintf('%02d',$i)?>"<?php if($i==substr($my['marr2'],2,2)):?> selected="selected"<?php endif?>><?php echo $i?></option>
|
||||
<?php endfor?>
|
||||
</select>
|
||||
<div class="invalid-feedback">
|
||||
결혼기념일을 입력해주세요.
|
||||
</div>
|
||||
</div><!-- /.form-inline -->
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_add']):?>
|
||||
<?php $g['memberAddFieldSite'] = $g['path_var'].'site/'.$_HS['id'].'/member.add_field.txt'; ?>
|
||||
<?php $_add = file_exists($g['memberAddFieldSite']) ? file($g['memberAddFieldSite']) : file($g['path_module'].'member/var/add_field.txt');?>
|
||||
<?php foreach($_add as $_key):?>
|
||||
<?php $_val = explode('|',trim($_key))?>
|
||||
<?php if($_val[6]) continue?>
|
||||
<?php $_myadd1 = explode($_val[0].'^^^',$my['addfield'])?>
|
||||
<?php $_myadd2 = explode('|||',$_myadd1[1])?>
|
||||
|
||||
<div class="form-group">
|
||||
<label><?php echo $_val[1]?><?php if($_val[5]):?> <span class="text-danger">*</span><?php endif?></label>
|
||||
|
||||
<div class="">
|
||||
<?php if($_val[2]=='text'):?>
|
||||
<input type="text" name="add_<?php echo $_val[0]?>" class="form-control" value="<?php echo $_myadd2[0]?>" <?php if($_val[5]):?> required<?php endif?>>
|
||||
<?php endif?>
|
||||
<?php if($_val[2]=='password'):?>
|
||||
<input type="password" name="add_<?php echo $_val[0]?>" class="form-control" value="<?php echo $_myadd2[0]?>" <?php if($_val[5]):?> required<?php endif?>>
|
||||
<?php endif?>
|
||||
<?php if($_val[2]=='select'): $_skey=explode(',',$_val[3])?>
|
||||
<select name="add_<?php echo $_val[0]?>" class="form-control custom-select"<?php if($_val[5]):?> required<?php endif?>>
|
||||
<option value=""> + 선택하세요</option>
|
||||
<?php foreach($_skey as $_sval):?>
|
||||
<option value="<?php echo trim($_sval)?>"<?php if(trim($_sval)==$_myadd2[0]):?> selected="selected"<?php endif?>>ㆍ<?php echo trim($_sval)?></option>
|
||||
<?php endforeach?>
|
||||
</select>
|
||||
<?php endif?>
|
||||
<?php if($_val[2]=='radio'): $_skey=explode(',',$_val[3])?>
|
||||
<div class="shift">
|
||||
<?php foreach($_skey as $_sval):?>
|
||||
<div class="custom-control custom-radio custom-control-inline">
|
||||
<input type="radio" id="add_<?php echo $_val[0]?>_<?php echo trim($_sval)?>" name="add_<?php echo $_val[0]?>" value="<?php echo trim($_sval)?>"<?php if(trim($_sval)==$_myadd2[0]):?> checked="checked"<?php endif?> class="custom-control-input">
|
||||
<label class="custom-control-label" for="add_<?php echo $_val[0]?>_<?php echo trim($_sval)?>"><?php echo trim($_sval)?></label>
|
||||
</div>
|
||||
<?php endforeach?>
|
||||
</div>
|
||||
<?php endif?>
|
||||
<?php if($_val[2]=='checkbox'): $_skey=explode(',',$_val[3])?>
|
||||
<div class="shift">
|
||||
<?php foreach($_skey as $_sval):?>
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" class="custom-control-input" id="add_<?php echo $_val[0]?>_<?php echo trim($_sval)?>" name="add_<?php echo $_val[0]?>[]" value="<?php echo trim($_sval)?>"<?php if(strstr($_myadd2[0],'['.trim($_sval).']')):?> checked="checked"<?php endif?> >
|
||||
<label class="custom-control-label" for="add_<?php echo $_val[0]?>_<?php echo trim($_sval)?>"><?php echo trim($_sval)?></label>
|
||||
</div>
|
||||
<?php endforeach?>
|
||||
</div>
|
||||
<?php endif?>
|
||||
<?php if($_val[2]=='textarea'):?>
|
||||
<textarea name="add_<?php echo $_val[0]?>" rows="5" class="form-control" <?php if($_val[5]):?> required<?php endif?>><?php echo $_myadd2[0]?></textarea>
|
||||
<?php endif?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php endforeach?>
|
||||
<?php endif?>
|
||||
|
||||
<div class="mt-4">
|
||||
<button type="submit" class="btn btn-primary btn-block js-submit">
|
||||
<span class="not-loading">수정하기</span>
|
||||
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 수정중 ...</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<?php if($d['member']['form_settings_avatar']):?>
|
||||
<aside class="edit-profile-avatar float-right">
|
||||
<dl class="form-group">
|
||||
<dt class="mb-2">프로필 사진</dt>
|
||||
<dd>
|
||||
<div data-toggle="avatar" role="button" class="position-relative rounded border">
|
||||
<img src="<?php echo getAvatarSrc($my['uid'],'200') ?>" width="200" height="200" alt="" class="">
|
||||
<i class="position-absolute fa fa-upload fa-3x" aria-hidden="true" data-toggle="tooltip" title="사진을 변경합니다." data-placement="right"></i>
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<?php if($my['photo']):?>
|
||||
<a class="btn btn-light btn-block" href="<?php echo $g['s']?>/?r=<?php echo $r?>&m=<?php echo $m?>&a=avatar_delete&reload=Y" title="<?php echo $my['photo']?>" onclick="return hrefCheck(this,true,'정말로 삭제 하시겠습니까?');">
|
||||
<i class="fa fa-trash fa-fw" aria-hidden="true"></i> 현재 사진삭제
|
||||
</a>
|
||||
<?php else: ?>
|
||||
|
||||
<div class="text-center">
|
||||
<small class="text-muted">gif/jpg/png - 250*250픽셀 이상</small>
|
||||
</div>
|
||||
<?php endif?>
|
||||
</div>
|
||||
|
||||
<form name="MbrPhotoForm" action="<?php echo $g['s']?>/" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="avatar">
|
||||
<input type="file" name="upfile" id="rb-upfile-avatar" accept="image/gif, image/jpg, image/jpeg, image/png" class="d-none">
|
||||
</form>
|
||||
|
||||
<form name="MbrCoverForm" action="<?php echo $g['s']?>/" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="cover">
|
||||
<input type="file" name="upfile" id="rb-upfile-cover" accept="image/gif, image/jpg, image/jpeg, image/png" class="d-none">
|
||||
</form>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</aside><!-- /.edit-profile-avatar -->
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.row -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
var f = document.getElementById("memberForm"); //dom 선택자
|
||||
var form = $('#memberForm'); //jquery 선택자
|
||||
|
||||
function sameCheck(obj,layer) {
|
||||
if (!obj.value)
|
||||
{
|
||||
eval('obj.form.check_'+obj.name).value = '0';
|
||||
getId(layer).innerHTML = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
form.find('.form-control').removeClass('is-valid is-invalid') //에러항목 초기화
|
||||
if (obj.name == 'email')
|
||||
{
|
||||
if (!chkEmailAddr(obj.value))
|
||||
{
|
||||
obj.form.check_email.value = '0';
|
||||
obj.focus();
|
||||
getId(layer).innerHTML = '이메일형식이 아닙니다.';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
frames._action_frame_<?php echo $m?>.location.href = '<?php echo $g['s']?>/?r=<?php echo $r?>&m=<?php echo $m?>&a=same_check&fname=' + obj.name + '&fvalue=' + obj.value + '&flayer=' + layer;
|
||||
}
|
||||
}
|
||||
|
||||
$(function () {
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
f.addEventListener('submit', function(event) {
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
form.find('.form-control').removeClass('is-invalid') // 에러이력 초기화
|
||||
|
||||
if (f.check_nic.value == '0')
|
||||
{
|
||||
f.nic.classList.add('is-invalid')
|
||||
f.nic.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
<?php if($d['member']['form_settings_email_profile']&&$d['member']['form_settings_email_profile_required']):?>
|
||||
if (f.email_profile.value == '')
|
||||
{
|
||||
getId('select-email-profile').classList.add('was-validated');
|
||||
f.email_profile.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_birth']&&$d['member']['form_settings_birth_required']):?>
|
||||
if (f.birth_1.value == '')
|
||||
{
|
||||
f.birth_1.classList.add('is-invalid');
|
||||
f.birth_1.focus();
|
||||
return false;
|
||||
}
|
||||
if (f.birth_2.value == '')
|
||||
{
|
||||
f.birth_2.classList.add('is-invalid');
|
||||
f.birth_2.focus();
|
||||
return false;
|
||||
}
|
||||
if (f.birth_3.value == '')
|
||||
{
|
||||
f.birth_3.classList.add('is-invalid');
|
||||
f.birth_3.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_sex']&&$d['member']['form_settings_sex_required']):?>
|
||||
if (f.sex[0].checked == false && f.sex[1].checked == false)
|
||||
{
|
||||
getId('radio-sex').classList.add('was-validated');
|
||||
f.sex[0].focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_bio']&&$d['member']['form_settings_bio_required']):?>
|
||||
if (f.bio.value == '')
|
||||
{
|
||||
f.bio.classList.add('is-invalid');
|
||||
f.bio.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_home']&&$d['member']['form_settings_home_required']):?>
|
||||
if (f.home.value == '')
|
||||
{
|
||||
f.home.classList.add('is-invalid');
|
||||
f.home.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_tel']&&$d['member']['form_settings_tel_required']):?>
|
||||
if (f.tel_1.value == '')
|
||||
{
|
||||
f.tel_1.classList.add('is-invalid');
|
||||
f.tel_1.focus();
|
||||
return false;
|
||||
}
|
||||
if (f.tel_2.value == '')
|
||||
{
|
||||
f.tel_2.classList.add('is-invalid');
|
||||
f.tel_2.focus();
|
||||
return false;
|
||||
}
|
||||
if (f.tel_3.value == '')
|
||||
{
|
||||
f.tel_3.classList.add('is-invalid');
|
||||
f.tel_3.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_location']&&$d['member']['form_settings_location_required']):?>
|
||||
if (f.location.value == '')
|
||||
{
|
||||
f.location.classList.add('is-invalid');
|
||||
f.location.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_job']&&$d['member']['form_settings_job_required']):?>
|
||||
if (f.job.value == '')
|
||||
{
|
||||
f.job.classList.add('is-invalid');
|
||||
f.job.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
<?php if($d['member']['form_settings_marr']&&$d['member']['form_settings_marr_required']):?>
|
||||
if (f.marr_1.value == '')
|
||||
{
|
||||
f.marr_1.classList.add('is-invalid');
|
||||
f.marr_1.focus();
|
||||
return false;
|
||||
}
|
||||
if (f.marr_2.value == '')
|
||||
{
|
||||
f.marr_2.classList.add('is-invalid');
|
||||
f.marr_2.focus();
|
||||
return false;
|
||||
}
|
||||
if (f.marr_3.value == '')
|
||||
{
|
||||
f.marr_3.classList.add('is-invalid');
|
||||
f.marr_3.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
|
||||
//가입 추가항목 체크
|
||||
<?php if($d['member']['form_settings_add']):?>
|
||||
var radioarray;
|
||||
var checkarray;
|
||||
var i;
|
||||
var j = 0;
|
||||
<?php foreach($_add as $_key):?>
|
||||
<?php $_val = explode('|',trim($_key))?>
|
||||
<?php if(!$_val[5]||$_val[6]) continue?>
|
||||
<?php if($_val[2]=='text' || $_val[2]=='password' || $_val[2]=='select' || $_val[2]=='textarea'):?>
|
||||
if (f.add_<?php echo $_val[0]?>.value == '')
|
||||
{
|
||||
alert('<?php echo $_val[1]?>이(가) <?php echo $_val[2]=='select'?'선택':'입력'?>되지 않았습니다. ');
|
||||
f.add_<?php echo $_val[0]?>.focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
<?php if($_val[2]=='radio'):?>
|
||||
j = 0;
|
||||
radioarray = f.add_<?php echo $_val[0]?>;
|
||||
for (i = 0; i < radioarray.length; i++)
|
||||
{
|
||||
if (radioarray[i].checked == true) j++;
|
||||
}
|
||||
if (!j)
|
||||
{
|
||||
alert('<?php echo $_val[1]?>이(가) 선택되지 않았습니다. ');
|
||||
radioarray[0].focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
<?php if($_val[2]=='checkbox'):?>
|
||||
j = 0;
|
||||
checkarray = document.getElementsByName("add_<?php echo $_val[0]?>[]");
|
||||
for (i = 0; i < checkarray.length; i++)
|
||||
{
|
||||
if (checkarray[i].checked == true) j++;
|
||||
}
|
||||
if (!j)
|
||||
{
|
||||
alert('<?php echo $_val[1]?>이(가) 선택되지 않았습니다. ');
|
||||
checkarray[0].focus();
|
||||
return false;
|
||||
}
|
||||
<?php endif?>
|
||||
<?php endforeach?>
|
||||
<?php endif?>
|
||||
|
||||
$('.js-submit').attr("disabled",true);
|
||||
|
||||
setTimeout(function(){
|
||||
getIframeForAction(f);
|
||||
f.submit();
|
||||
}, 500);
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
</script>
|
||||
541
modules/member/themes/_desktop/bs4-default/settings/noti.php
Normal file
541
modules/member/themes/_desktop/bs4-default/settings/noti.php
Normal file
@@ -0,0 +1,541 @@
|
||||
<?php
|
||||
$emailque= 'mbruid='.$my['uid'].' and d_verified<>0';
|
||||
$RCD = getDbArray($table['s_mbremail'],$emailque,'*','uid','asc',0,1);
|
||||
|
||||
$NT_DATA = explode('|',$my['noticeconf']);
|
||||
$nt_web = $NT_DATA[0];
|
||||
$nt_email = $NT_DATA[1];
|
||||
$nt_fcm = $NT_DATA[2];
|
||||
$nt_modules = getArrayString($NT_DATA[3]);
|
||||
$nt_members = getArrayString($NT_DATA[4]);
|
||||
|
||||
$phone_que = 'mbruid='.$my['uid'].' and device="phone"';
|
||||
$tablet_que = 'mbruid='.$my['uid'].' and device="tablet"';
|
||||
$desktop_que = 'mbruid='.$my['uid'].' and device="desktop"';
|
||||
|
||||
$PTK = getDbData($table['s_iidtoken'],$phone_que,'*');
|
||||
$TTK = getDbData($table['s_iidtoken'],$tablet_que,'*');
|
||||
$DTK = getDbData($table['s_iidtoken'],$desktop_que,'*');
|
||||
|
||||
?>
|
||||
<?php getImport('font-kimsq','css/font-kimsq',false,'css')?>
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">알림 관리</h2>
|
||||
</div>
|
||||
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
|
||||
<p>알림을 수신하면 웹 사이트내의 정보는 물론 회원님이 언급되거나 관련된 정보들을 실시간으로 받아보실 수 있습니다.</p>
|
||||
|
||||
<div id="save-config">
|
||||
|
||||
<form name="procForm" action="<?php echo $g['s']?>/" method="post">
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="notification">
|
||||
<input type="hidden" name="a" value="notice_config_user">
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
사이트 알림
|
||||
<div class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons">
|
||||
<label class="btn <?php if($nt_web==''):?>btn-primary active<?php else:?>btn-light<?php endif?>" onclick="btnCheck(this);">
|
||||
<input type="radio" value="" name="nt_web"<?php if($nt_web==''):?> checked<?php endif?> id="nt_web" autocomplete="off"> ON
|
||||
</label>
|
||||
<label class="btn <?php if($nt_web=='1'):?>btn-secondary active<?php else:?>btn-light<?php endif?>" onclick="btnCheck(this);">
|
||||
<input type="radio" value="1" name="nt_web"<?php if($nt_web=='1'):?> checked<?php endif?> id="nt_web_1" autocomplete="off"> OFF
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if ($nt_web==''): ?>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="media w-75">
|
||||
<i class="fa fa-envelope-o fa-fx mr-4 fa-2x text-muted align-self-center" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
이메일 알림
|
||||
<div class="input-group mt-1">
|
||||
<select class="form-control custom-select" name="email_noti">
|
||||
<option value="">사용안함</option>
|
||||
<?php while($R=db_fetch_array($RCD)):?>
|
||||
<option value="<?php echo $R['email'] ?>"<?php echo ($my['email_noti']==$R['email'])?' selected':'' ?>>
|
||||
<?php echo $R['email'] ?>
|
||||
</option>
|
||||
<?php endwhile?>
|
||||
</select>
|
||||
<div class="invalid-tooltip">
|
||||
이메일을 저장해 주세요.
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary js-submit" type="button">
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<small class="form-text text-muted mt-2">
|
||||
알림발송시 지정된 이메일로도 알림내용이 발송됩니다.<br>
|
||||
<a href="<?php echo $g['url_reset']?>&page=email">이메일 관리</a>에서 추가 할수있으며, 본인인증된 메일만 추가할 수 있습니다.
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons" id="nt_email" data-email="<?php echo $my['email_noti']?>">
|
||||
<label class="btn <?php if($nt_email=='1'):?>btn-primary active<?php else:?>btn-light<?php endif?>">
|
||||
<input type="radio" value="1" name="nt_email"<?php if($nt_email=='1'):?> checked<?php endif?> autocomplete="off" id="nt_email_1" <?php echo $my['email_noti']?'':'disabled'?>> ON
|
||||
</label>
|
||||
<label class="btn <?php if($nt_email==''):?>btn-secondary active<?php else:?>btn-light<?php endif?>">
|
||||
<input type="radio" value="" name="nt_email"<?php if($nt_email==''):?> checked<?php endif?> autocomplete="off" id="nt_email_0"> OFF
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<?php if ($g['push_active']==1): ?>
|
||||
<li class="list-group-item" id="permission_div" style="display: none">
|
||||
<div class="w-100">
|
||||
<div class="media w-100">
|
||||
<i class="fa fa-bolt mr-3 fa-fw fa-2x text-muted align-self-center" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
푸시 알림 <span class="badge badge-pill badge-light"></span>
|
||||
<small class="d-block note mt-2 pr-3">
|
||||
데스크탑 푸시알림을 수신하면 공지사항은 물론 회원님이 게시글에 대한 피드백 또는 내가 언급된 글에 대한 정보들을 실시간으로 받아보실 수 있습니다.
|
||||
</small>
|
||||
</div>
|
||||
<button class="btn btn-light" id="RequestPermission">권한요청</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="list-group-item" id="push_setting" style="display: none">
|
||||
<div class="media w-100">
|
||||
<i class="fa fa-bolt mr-3 fa-fw fa-2x text-muted align-self-center" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
푸시 알림 <span class="badge badge-pill badge-light"></span>
|
||||
<small class="d-block note mt-2 pr-3">
|
||||
알림발송시 푸시 알림으로 알림내용이 발송됩니다.
|
||||
</small>
|
||||
</div>
|
||||
<div class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons" id="nt_fcm">
|
||||
<label class="btn <?php if($nt_fcm=='1'):?>btn-primary active<?php else:?>btn-light<?php endif?>">
|
||||
<input type="radio" value="1" name="nt_fcm"<?php if($nt_fcm=='1'):?> checked<?php endif?> autocomplete="off" id="nt_fcm_1"> ON
|
||||
</label>
|
||||
<label class="btn <?php if($nt_fcm==''):?>btn-secondary active<?php else:?>btn-light<?php endif?>">
|
||||
<input type="radio" value="" name="nt_fcm"<?php if($nt_fcm==''):?> checked<?php endif?> autocomplete="off" id="nt_fcm_0"> OFF
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="list-group-item" id="push_disabled" style="display: none">
|
||||
<div class="media w-100">
|
||||
<span class="fa-stack fa-lg align-self-center text-muted mr-3">
|
||||
<i class="fa fa-bolt fa-stack-1x"></i>
|
||||
<i class="fa fa-ban fa-stack-2x"></i>
|
||||
</span>
|
||||
<div class="media-body">
|
||||
푸시 알림 <span class="badge badge-pill badge-light text-danger align-text-top">차단됨</span>
|
||||
<small class="d-block note mt-2 pr-3">
|
||||
알림발송이 차단 되었습니다. 상태를 해제하려면 브라우저의 설정변경이 필요합니다.
|
||||
<a class="ml-1" href="chrome://settings/content/notifications" target="_blank">자세히보기</a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<?php elseif ($g['push_active']==2): ?>
|
||||
<li class="list-group-item">
|
||||
<div class="media w-100">
|
||||
<i class="fa fa-bolt mr-3 fa-fw fa-2x text-muted align-self-center" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
푸시 알림 <span class="badge badge-pill badge-light text-muted align-text-top">점검중</span>
|
||||
<small class="d-block note mt-2 pr-3 text-danger">
|
||||
푸시알림을 위한 연결정보가 없습니다. 관리자에게 문의하세요.
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<?php else: ?>
|
||||
<li class="list-group-item">
|
||||
<div class="media w-100">
|
||||
<i class="fa fa-bolt mr-3 fa-fw fa-2x text-muted align-self-center" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
푸시 알림 <span class="badge badge-pill badge-light text-muted align-text-top">미지원</span>
|
||||
<small class="d-block note mt-2 pr-3">
|
||||
푸시알림이 지원되지 않는 브라우저 입니다.<br>지원 브라우저 : 크롬(Chrome), 파이어폭스(Firefox)
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<div class="card-block p-5 note text-center">
|
||||
알림이 꺼져서 소식을 받을 수 없습니다.<br>알림을 켜서 글, 댓글, 나를 언급한 글 등 중요알림을 받아보세요.
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<?php if ($nt_web==''): ?>
|
||||
|
||||
<?php if ($nt_fcm=='1'): ?>
|
||||
<div class="card" id="token_div" style="display: none;" class="mt-4">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span>
|
||||
인스턴스 토큰
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true" role="button"
|
||||
data-toggle="popover" title="인스턴스 ID 토큰"
|
||||
data-content="<span class='text-muted f12'>처음 시작할 때 클라이언트 앱 인스턴스에 대한 등록 토큰이 생성됩니다.
|
||||
Instance ID는 앱의 인스턴스마다의 고유한 값입니다.<br><br>[ 다음과 같은 경우에 토큰은 변경됩니다. ]<br>
|
||||
- 인스턴스 ID를 삭제할 경우<br>- 앱이 새 기기에서 복원된 경우<br>- 사용자가 앱을 제거/재설치한 경우<br>- 사용자가 앱 데이터를 초기화한 경우</span>
|
||||
">
|
||||
</i>
|
||||
</span>
|
||||
<button class="btn btn-light btn-sm js-sendTest"
|
||||
data-toggle="popover" title="푸시알림 테스트"
|
||||
data-content="<span class='text-muted f12'>등록된 토큰을 기반으로 데스크탑과 모바일로<br>푸시알림 메시지가 각각 발송됩니다.<br>알림이 수신된다면 정상적으로 셋팅된 것입니다.<br><br>알림이 수신되지 않는다면 토큰을 <mark>재발급</mark> 해주세요. </span>">
|
||||
<span class="not-loading">나에게 푸시알림 보내기</span>
|
||||
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 보내는중 ...</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<div class="media">
|
||||
<span class="mr-3 text-center">
|
||||
<i class="fa fa-desktop fa-3x align-self-center fa-border text-muted" aria-hidden="true"></i><br>
|
||||
<span class="mt-3 f12 text-muted">데스크탑 전용</span>
|
||||
</span>
|
||||
<div class="media-body">
|
||||
<p class="mb-2" style="word-break: break-all;">
|
||||
<span class="token note"></span>
|
||||
</p>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<div>
|
||||
<span class="badge badge-pill badge-secondary"><?php echo $DTK['browser'] ?> <?php echo $DTK['version'] ?></span>
|
||||
<span class="badge badge-pill badge-light">
|
||||
등록일시 : <?php echo getDateFormat($DTK['d_update']?$DTK['d_update']:$DTK['d_regis'],'Y.m.d H:i')?>
|
||||
</span>
|
||||
</div>
|
||||
<button class="btn btn-light btn-sm js-deleteToken">
|
||||
<i class="fa fa-refresh fa-fw" aria-hidden="true"></i>
|
||||
재발급
|
||||
</button>
|
||||
</div><!-- /.d-flex -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="media">
|
||||
<span class="mr-3 text-center">
|
||||
<i class="fa fa-mobile fa-3x fa-border text-muted" aria-hidden="true" style="width: 70px"></i><br>
|
||||
<span class="mt-3 f12 text-muted">스마트폰 전용</span>
|
||||
</span>
|
||||
<div class="media-body align-self-center">
|
||||
<?php if ($PTK['token']): ?>
|
||||
<p class="mb-2" style="word-break: break-all;">
|
||||
<span class="note"><?php echo $PTK['token'] ?></span>
|
||||
</p>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<div>
|
||||
<span class="badge badge-pill badge-secondary"><?php echo $PTK['browser'] ?> <?php echo $PTK['version'] ?></span>
|
||||
<span class="badge badge-pill badge-light">
|
||||
등록일시 : <?php echo getDateFormat($PTK['d_update']?$PTK['d_update']:$PTK['d_regis'],'Y.m.d H:i')?>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="badge badge-light">재발급은 스마트폰에서만 지원됩니다.</span>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
|
||||
<?php else: ?>
|
||||
<div class="d-flex justify-content-between mb-4">
|
||||
<span class="note">저장된 토큰이 없습니다.</span>
|
||||
<div>
|
||||
<span class="badge badge-light">발급은 스마트폰에서만 가능합니다.</span>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="media">
|
||||
<span class="mr-3 text-center">
|
||||
<i class="fa fa-tablet fa-3x fa-border text-muted" aria-hidden="true" style="width: 70px"></i><br>
|
||||
<span class="mt-3 f12 text-muted">태블릿 전용</span>
|
||||
</span>
|
||||
<div class="media-body align-self-center">
|
||||
<?php if ($TTK['token']): ?>
|
||||
<p class="mb-2" style="word-break: break-all;">
|
||||
<span class="note"><?php echo $TTK['token'] ?></span>
|
||||
</p>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<div>
|
||||
<span class="badge badge-pill badge-secondary"><?php echo $TTK['browser'] ?> <?php echo $TTK['version'] ?></span>
|
||||
<span class="badge badge-pill badge-light">
|
||||
등록일시 : <?php echo getDateFormat($TTK['d_update']?$TTK['d_update']:$TTK['d_regis'],'Y.m.d H:i')?>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="badge badge-light">재발급은 스마트폰에서만 지원됩니다.</span>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
|
||||
<?php else: ?>
|
||||
<div class="d-flex justify-content-between mb-4">
|
||||
<span class="note">저장된 토큰이 없습니다.</span>
|
||||
<div>
|
||||
<span class="badge badge-light">발급은 태블릿에서만 가능합니다.</span>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<span class="note">
|
||||
인스턴스 토큰은 푸시알림에 활용되며 기기별로 1개만 저장 됩니다.<br>
|
||||
접속기기가 변경되면 토큰 또한 변경되며, 변경된 토큰정보는 로그인 후 갱신저장 됩니다.<br>
|
||||
푸시알림이 수신되지 않는다면, 토큰 '재발급'을 시도해 보세요. 알림 메시지를 받았다면 정상 입니다.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="card my-3">
|
||||
<div class="card-header">
|
||||
모듈별 설정
|
||||
</div>
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php $_MODULES=getDbArray($table['s_module'],'','*','gid','asc',0,1)?>
|
||||
<?php while($_MD=db_fetch_array($_MODULES)):?>
|
||||
<li class="list-group-item justify-content-between list-group-item-action align-items-center<?php if(strstr($d['ntfc']['cut_modules'],'['.$_MD['id'].']')):?> d-none<?php else: ?> d-flex<?php endif?>">
|
||||
|
||||
<div class="media w-75">
|
||||
<i class="<?php echo $_MD['icon']?> fa-fw fa-2x mr-3 align-self-center text-muted"></i>
|
||||
<div class="media-body">
|
||||
<h5 class="mt-0"><?php echo $_MD['name']?> <span class="badge badge-pill badge-light align-text-top"><?php echo ucfirst($_MD['id'])?></span></h5>
|
||||
<p class="note">내글에 댓글등록시, 좋아요/싫어요시</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn-group btn-group-sm btn-group-toggle module_members" role="group" data-toggle="buttons" data-module="<?php echo $_MD['id']?>">
|
||||
<button type="button" class="btn btn-<?php if(strstr($NT_DATA[3],'['.$_MD['id'].']') === false):?>primary active<?php else: ?>light<?php endif?>" data-act="on">ON</button>
|
||||
<button type="button" class="btn btn-<?php if(strstr($NT_DATA[3],'['.$_MD['id'].']')):?>secondary active<?php else: ?>light<?php endif?>" data-act="off">OFF</button>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
<?php endwhile?>
|
||||
</ul>
|
||||
</div><!-- /.card -->
|
||||
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<i class="fa fa-ban fa-fw fa-lg" aria-hidden="true"></i>
|
||||
알림발송이 차단된 회원
|
||||
</div>
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php $_i=0;foreach($nt_members['data'] as $_md):?>
|
||||
<?php $_R=getDbData($table['s_mbrdata'],'memberuid='.$_md,'*')?>
|
||||
<li class="list-group-item d-flex justify-content-between list-group-item-action align-items-center">
|
||||
|
||||
<div class="media">
|
||||
<a class="mr-3" href="<?php echo getProfileLink($_R['memberuid']) ?>"
|
||||
data-toggle="getMemberLayer"
|
||||
data-mbruid="<?php echo $_R['memberuid'] ?>">
|
||||
<img class="rounded " src="<?php echo getAvatarSrc($_R['memberuid'],'36') ?>" alt="" width=36>
|
||||
</a>
|
||||
<div class="media-body">
|
||||
<h5 class="f14 mt-0 mb-1">
|
||||
<?php if($_R['name']):?>
|
||||
<a class="muted-link" href="<?php echo getProfileLink($_R['memberuid']) ?>"
|
||||
data-toggle="getMemberLayer"
|
||||
data-mbruid="<?php echo $_R['memberuid'] ?>">
|
||||
<?php echo $_R['name']?> <span class="badge badge-pill badge-light align-text-top"><?php echo $_R['nic']?></span>
|
||||
</a>
|
||||
<?php else: ?>
|
||||
<span class="badge badge-pill badge-light">시스템</span>
|
||||
<?php endif?>
|
||||
</h5>
|
||||
<small><?php echo getDateFormat($_R['d_regis'],'Y.m.d')?> 가입</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="btn btn-light btn-sm" href="<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=notice_config_user&member_uid=<?php echo $_R['memberuid']?>" onclick="return hrefCheck(this,true,'정말로 해제하시겠습니까?');">
|
||||
해제
|
||||
</a>
|
||||
</li>
|
||||
<?php $_i++;endforeach?>
|
||||
</ul>
|
||||
|
||||
<?php if(!$nt_members['count']):?>
|
||||
<div class="rb-none text-center p-5 text-muted f12">
|
||||
차단된 회원이 없습니다.<br>
|
||||
<a href="<?php echo RW('mod=noti')?>">내 알림함</a> 에서 차단할 회원을 지정할 수 있습니다.
|
||||
</div>
|
||||
<?php endif?>
|
||||
</div><!-- /.card -->
|
||||
<?php endif; ?>
|
||||
|
||||
</form>
|
||||
|
||||
</div><!-- /#save-config -->
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.row -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
var f = document.procForm;
|
||||
|
||||
$(function () {
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
// 지정된 이메일이 없는 경우, 이메일 알림을 설정을 시도할 경우 에러출력
|
||||
$('#nt_email_1:disabled').parent('.btn').click(function() {
|
||||
$('[name="email_noti"]').addClass('is-invalid')
|
||||
});
|
||||
|
||||
//알림설정 저장
|
||||
$('[data-toggle="buttons"]').find('[type="radio"]').change(function(){
|
||||
var btn_group = $(this).closest('.btn-group')
|
||||
var btn = $(this).closest('.btn')
|
||||
btn_group.find('.btn').removeClass('btn-primary').addClass('btn-light')
|
||||
btn.addClass('btn-primary').removeClass('btn-light')
|
||||
getIframeForAction(f);
|
||||
f.submit();
|
||||
});
|
||||
|
||||
// 이메일 저장
|
||||
$('#save-config').find('.js-submit').click(function() {
|
||||
var form = $('#save-config')
|
||||
var email_noti = form.find('[name=email_noti]').val();
|
||||
var act = 'save_config'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_noti&act='+act+'&email_noti='+email_noti
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
});
|
||||
|
||||
//모듈별 차단설정
|
||||
$('.module_members').find('.btn').click(function() {
|
||||
var btn = $(this)
|
||||
var btn_group = btn.closest('.btn-group')
|
||||
var mid = btn_group.data('module')
|
||||
var act = btn.data('act')
|
||||
if (act=='on'){
|
||||
btn_group.find('.btn').removeClass('btn-secondary btn-primary').addClass('btn-light')
|
||||
btn.addClass('btn-primary').removeClass('btn-light')
|
||||
var url = rooturl+'/?r='+raccount+'&m=notification&a=notice_config_user&module_id='+mid
|
||||
} else {
|
||||
btn.addClass('btn-secondary').removeClass('btn-light')
|
||||
var url = rooturl+'/?r='+raccount+'&m=notification&a=multi_delete_user&module_id='+mid+'&deltype=off_module'
|
||||
}
|
||||
console.log(url)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
});
|
||||
|
||||
//게시물 목록에서 프로필 풍선(popover) 띄우기
|
||||
$('[data-toggle="getMemberLayer"]').popover({
|
||||
container: 'body',
|
||||
trigger: 'manual',
|
||||
html: true,
|
||||
content: function () {
|
||||
var uid = $(this).attr('data-uid')
|
||||
var mbruid = $(this).attr('data-mbruid')
|
||||
var type = 'popover'
|
||||
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profileData',{
|
||||
mbruid : mbruid,
|
||||
type : type
|
||||
},function(response){
|
||||
var result = $.parseJSON(response);
|
||||
var profile=result.profile;
|
||||
$('#popover-item-'+uid).html(profile);
|
||||
});
|
||||
return '<div id="popover-item-'+uid+'" class="p-1">불러오는 중...</div>';
|
||||
}
|
||||
})
|
||||
.on("mouseenter", function () {
|
||||
var _this = this;
|
||||
$(this).popover("show");
|
||||
$(".popover").on("mouseleave", function () {
|
||||
$(_this).popover('hide');
|
||||
});
|
||||
}).on("mouseleave", function () {
|
||||
var _this = this;
|
||||
setTimeout(function () {
|
||||
if (!$(".popover:hover").length) {
|
||||
$(_this).popover("hide");
|
||||
}
|
||||
}, 30);
|
||||
});
|
||||
|
||||
|
||||
$('#RequestPermission').click(function(event) {
|
||||
event.preventDefault();
|
||||
requestPermission()
|
||||
});
|
||||
$('.js-deleteToken').click(function(event) {
|
||||
event.preventDefault();
|
||||
deleteToken()
|
||||
});
|
||||
|
||||
$('.js-sendTest').click(function(event) {
|
||||
event.preventDefault();
|
||||
var btn = $(this)
|
||||
var popover = $('[data-toggle="popover"]')
|
||||
popover.popover('hide')
|
||||
btn.attr('disabled',true)
|
||||
var title = '<?php echo $_HS['name'] ?> 데스크탑에서 보낸 푸시알림'
|
||||
var message = '푸시알림이 정상적으로 수신되었습니다.'
|
||||
$.post(rooturl+'/?r='+raccount+'&m=notification&a=push_testonly',{
|
||||
mbruid : '<?php echo $my['uid'] ?>',
|
||||
title : title,
|
||||
message : message
|
||||
},function(response){
|
||||
var result = $.parseJSON(response);
|
||||
var error=result.error;
|
||||
if (!error) {
|
||||
btn.attr('disabled',false)
|
||||
console.log('테스트 푸시알림이 수신 되었습니다.')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('[data-toggle="popover"]').popover({
|
||||
trigger: 'hover',
|
||||
html : true
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
</script>
|
||||
426
modules/member/themes/_desktop/bs4-default/settings/phone.php
Normal file
426
modules/member/themes/_desktop/bs4-default/settings/phone.php
Normal file
@@ -0,0 +1,426 @@
|
||||
<?php
|
||||
$sqlque0 = 'mbruid='.$my['uid'];
|
||||
$sqlque1 = 'mbruid='.$my['uid'].' and base=1 and backup=0';
|
||||
$sqlque2 = 'mbruid='.$my['uid'].' and base=0';
|
||||
$sqlque3 = 'mbruid='.$my['uid'].' and backup=0 and d_verified<>0';
|
||||
$sqlque4 = 'mbruid='.$my['uid'].' and base=0 and d_verified<>0';
|
||||
|
||||
$PCD = getDbArray($table['s_mbrphone'],$sqlque1,'*','uid','asc',0,1);
|
||||
$RCD = getDbArray($table['s_mbrphone'],$sqlque2,'*','uid','asc',0,1);
|
||||
$VCD = getDbArray($table['s_mbrphone'],$sqlque3,'*','uid','asc',0,1);
|
||||
$SCD = getDbArray($table['s_mbrphone'],$sqlque4,'*','uid','asc',0,1);
|
||||
|
||||
$NUM = getDbRows($table['s_mbrphone'],$sqlque0);
|
||||
$NUM_VCD = getDbRows($table['s_mbrphone'],$sqlque3);
|
||||
?>
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">휴대폰 관리</h2>
|
||||
</div>
|
||||
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
|
||||
<?php if (!$NUM): ?>
|
||||
<div class="card p-5 text-center text-muted">
|
||||
<i class="fa fa-mobile fa-3x mb-2" aria-hidden="true"></i>
|
||||
등록된 휴대폰이 없습니다.
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<ul class="list-group">
|
||||
|
||||
<?php while($P=db_fetch_array($PCD)):?>
|
||||
<?php $codeValid=getValid($P['d_code'],$d['member']['settings_keyexpire']); ?>
|
||||
<li class="list-group-item" id="item-<?php echo $P['uid'] ?>">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<?php if ($P['d_verified']): ?>
|
||||
<div>
|
||||
<i class="fa fa-mobile fa-lg fa-fw text-muted" aria-hidden="true"></i>
|
||||
<strong><?php echo substr($P['phone'],0,3) ?>-<?php echo substr($P['phone'],3,4) ?>-<?php echo substr($P['phone'],7,4) ?></strong>
|
||||
<?php if ($P['base']): ?><span class="badge badge-primary">기본</span><?php endif; ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div>
|
||||
<i class="fa fa-mobile fa-lg fa-fw text-muted" aria-hidden="true"></i>
|
||||
<strong><?php echo substr($P['phone'],0,3) ?>-<?php echo substr($P['phone'],3,4) ?>-<?php echo substr($P['phone'],7,4) ?></strong>
|
||||
<?php if ($P['base']): ?><span class="badge badge-primary">기본</span><?php endif; ?>
|
||||
<span class="badge badge-secondary">미인증</span>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-light" data-act="send_code" data-uid="<?php echo $P['uid'] ?>">
|
||||
<span class="not-loading"><?php echo $codeValid?'재발송':'본인확인 인증번호 발송' ?></span>
|
||||
<span class="is-loading">발송중..</span>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="<?php echo $P['d_code'] && $codeValid?'':'d-none' ?>" data-role="verify_phone_area">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<div style="width: 35%">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">인증번호</span>
|
||||
</div>
|
||||
<input type="number" class="form-control" name="confirm_code_<?php echo $P['uid'] ?>" data-role="code">
|
||||
<div class="invalid-tooltip"></div>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-light" type="button" data-act="confirm_code" data-uid="<?php echo $P['uid'] ?>">
|
||||
<span class="not-loading">확인</span>
|
||||
<span class="is-loading">확인중..</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-2 text-right">
|
||||
<small class="form-text text-success mb-2">
|
||||
인증번호를 발송했습니다.(유효시간 <?php echo $d['member']['settings_keyexpire'] ?>분)
|
||||
<span
|
||||
data-role="countdown"
|
||||
data-countdown="<?php echo $P['d_code']?date("Y/m/d H:i:s",strtotime ("+".$d['member']['settings_keyexpire']." minutes",strtotime($P['d_code']))):''; ?>">
|
||||
</span>
|
||||
<br>인증번호가 오지 않으면 입력하신 정보가 정확한지 확인하여 주세요.
|
||||
</small>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /#verify_phone_area -->
|
||||
</li>
|
||||
<?php endwhile?>
|
||||
|
||||
<?php while($R=db_fetch_array($RCD)):?>
|
||||
<?php $codeValid=getValid($R['d_code'],$d['member']['settings_keyexpire']); ?>
|
||||
<li class="list-group-item" id="item-<?php echo $R['uid'] ?>">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<?php if ($R['d_verified']): ?>
|
||||
<div>
|
||||
<i class="fa fa-mobile fa-lg fa-fw text-muted" aria-hidden="true"></i>
|
||||
<?php echo substr($R['phone'],0,3) ?>-<?php echo substr($R['phone'],3,4) ?>-<?php echo substr($R['phone'],7,4) ?>
|
||||
<?php if ($R['backup']): ?><span class="badge badge-warning">백업</span><?php endif; ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php if (!$R['base']): ?>
|
||||
<button type="button" class="btn btn-link muted-link py-0" data-act="del" data-toggle="tooltip" title="삭제" data-uid="<?php echo $R['uid'] ?>">
|
||||
<i class="fa fa-trash-o fa-lg" aria-hidden="true"></i>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div>
|
||||
<span class="text-muted">
|
||||
<?php echo substr($R['phone'],0,3) ?>-<?php echo substr($R['phone'],3,4) ?>-<?php echo substr($R['phone'],7,4) ?>
|
||||
</span>
|
||||
<span class="badge badge-secondary">미인증</span>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-light" data-act="send_code" data-value="<?php echo $R['phone'] ?>" data-uid="<?php echo $R['uid'] ?>">
|
||||
<span class="not-loading"><?php echo $codeValid?'재발송':'본인확인 인증번호 발송' ?></span>
|
||||
<span class="is-loading">발송중..</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-link muted-link py-0" data-act="del" data-toggle="tooltip" title="삭제" data-uid="<?php echo $R['uid'] ?>">
|
||||
<i class="fa fa-trash-o fa-lg" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div><!-- /.d-flex -->
|
||||
<div class="<?php echo $R['d_code'] && $codeValid?'':'d-none' ?>" data-role="verify_phone_area">
|
||||
<div class=" d-flex justify-content-between align-items-center">
|
||||
<div style="width: 35%">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">인증번호</span>
|
||||
</div>
|
||||
<input type="number" class="form-control" name="confirm_code_<?php echo $R['uid'] ?>" data-role="code">
|
||||
<div class="invalid-tooltip"></div>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-light" type="button" data-act="confirm_code" data-uid="<?php echo $R['uid'] ?>">
|
||||
<span class="not-loading">확인</span>
|
||||
<span class="is-loading">확인중..</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-2 text-right">
|
||||
<small class="form-text text-success mb-2">
|
||||
인증번호를 발송했습니다.(유효시간 <?php echo $d['member']['settings_keyexpire'] ?>분)
|
||||
<span
|
||||
data-role="countdown"
|
||||
data-countdown="<?php echo $R['d_code']?date("Y/m/d H:i:s",strtotime ("+".$d['member']['settings_keyexpire']." minutes",strtotime($R['d_code']))):''; ?>">
|
||||
</span>
|
||||
<br>인증번호가 오지 않으면 입력하신 정보가 정확한지 확인하여 주세요.
|
||||
</small>
|
||||
</div>
|
||||
</div><!-- /.d-flex -->
|
||||
</div><!-- /#verify_phone_area -->
|
||||
|
||||
</li>
|
||||
<?php endwhile?>
|
||||
</ul>
|
||||
|
||||
<p class="mt-1 text-muted">
|
||||
<small>본인인증된 휴대폰만 기본 휴대폰으로 지정할 수 있습니다.</small>
|
||||
</p>
|
||||
|
||||
<form class="my-4" id="phonesForm" role="form" action="<?php echo $g['s']?>/" method="post" novalidate>
|
||||
<fieldset<?php echo ($NUM==5)?' disabled':'' ?>>
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="settings_phone">
|
||||
<input type="hidden" name="act" value="add">
|
||||
|
||||
<label class="font-weight-bold">휴대폰 추가</label>
|
||||
<div class="form-inline">
|
||||
<input type="tel" name="phone" class="form-control" style="width: 30%" required placeholder="<?php echo ($NUM==3)?'최대 3개까지 추가할 수 있습니다.':'' ?>">
|
||||
<button type="submit" class="btn btn-light ml-2<?php echo ($NUM==5)?' d-none':'' ?>">
|
||||
<span class="not-loading">추가</span>
|
||||
<span class="is-loading">추가중..</span>
|
||||
</button>
|
||||
<div class="invalid-feedback mt-2">휴대폰을 입력해주세요.</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<?php if ($NUM): ?>
|
||||
<hr>
|
||||
<div class="mt-4">
|
||||
<label class="font-weight-bold">기본 휴대폰</label>
|
||||
<p>기본 휴대폰은 계정과 관련된 주요알림을 수신합니다.</p>
|
||||
|
||||
<div class="form-inline" id="save-primary">
|
||||
<select class="form-control custom-select">
|
||||
<?php if ($NUM_VCD): ?>
|
||||
<?php while($V=db_fetch_array($VCD)):?>
|
||||
<option value="<?php echo $V['uid'] ?>"<?php echo $V['base']?' selected':'' ?>>
|
||||
<?php echo substr($V['phone'],0,3) ?>-<?php echo substr($V['phone'],3,4) ?>-<?php echo substr($V['phone'],7,4) ?>
|
||||
</option>
|
||||
<?php endwhile?>
|
||||
<?php else: ?>
|
||||
<option value="">인증된 휴대폰이 없습니다.</option>
|
||||
<?php endif; ?>
|
||||
</select>
|
||||
<?php if ($NUM_VCD): ?>
|
||||
<button type="button" class="btn btn-light ml-2 js-submit" >
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="mt-4">
|
||||
<label class="font-weight-bold">백업 휴대폰</label>
|
||||
<p>
|
||||
백업 휴대폰은 기본 휴대폰을 사용할 수 없을때, 비밀번호 초기화를 위해 사용됩니다.
|
||||
</p>
|
||||
<div class="form-inline" id="save-backup">
|
||||
<select class="form-control custom-select">
|
||||
<option value="all"<?php echo ($my['phone_backup']==1)?' selected':'' ?>>인증된 메일전체</option>
|
||||
<option value="none"<?php echo ($my['phone_backup']==0)?' selected':'' ?>>기본 휴대폰만 사용</option>
|
||||
<?php while($S=db_fetch_array($SCD)):?>
|
||||
<option value="<?php echo $S['uid'] ?>"<?php echo $S['backup']?' selected':'' ?>>
|
||||
<?php echo substr($S['phone'],0,3) ?>-<?php echo substr($S['phone'],3,4) ?>-<?php echo substr($S['phone'],7,4) ?>
|
||||
</option>
|
||||
<?php endwhile?>
|
||||
|
||||
</select>
|
||||
<button type="button" class="btn btn-light ml-2 js-submit">
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<hr>
|
||||
<h4 class="mt-4">환경 설정</h3>
|
||||
|
||||
<div class="mt-3" id="save-config">
|
||||
|
||||
<div class="custom-control custom-radio mt-2">
|
||||
<input type="radio" id="sms_1" name="sms" value="1"<?php if($my['sms']):?> checked="checked"<?php endif?> class="custom-control-input">
|
||||
<label class="custom-control-label" for="sms_1">이벤트와 공지 SMS를 수신 받겠습니다.</label>
|
||||
</div>
|
||||
<div class="custom-control custom-radio mt-2">
|
||||
<input type="radio" id="sms_0" name="sms" value="0"<?php if(!$my['sms']):?> checked="checked"<?php endif?> class="custom-control-input">
|
||||
<label class="custom-control-label" for="sms_0">계정과 관련된 SMS만 수신합니다.</label>
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-light mt-4 js-submit">
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.row -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
|
||||
<!-- https://github.com/hilios/jQuery.countdown -->
|
||||
<?php getImport('jquery.countdown','jquery.countdown.min','2.2.0','js')?>
|
||||
|
||||
<script>
|
||||
|
||||
var form = $('#phonesForm')
|
||||
var f = document.getElementById('phonesForm');
|
||||
|
||||
function doCountdown() {
|
||||
$(document).find('[data-countdown]').each(function() {
|
||||
var $this = $(this), finalDate = $(this).data('countdown');
|
||||
$this.countdown(finalDate, function(event) {
|
||||
$this.html('['+event.strftime('%M:%S')+']');
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
$(function () {
|
||||
|
||||
doCountdown(); //인증번호 유효시간 카운트다운
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
// 본인인증 코드발송
|
||||
$('[data-act="send_code"').click(function() {
|
||||
var uid = $(this).data('uid')
|
||||
var act = 'send_code'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_phone&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
$(this).text('재발송')
|
||||
});
|
||||
|
||||
// 본인인증 코드 확인
|
||||
$('[data-act="confirm_code"').click(function() {
|
||||
var uid = $(this).data('uid')
|
||||
var item = $('#item-'+uid)
|
||||
var input = $('[name=confirm_code_'+uid+']')
|
||||
var tooltip = item.find('.invalid-tooltip')
|
||||
var code = input.val()
|
||||
|
||||
if (!code) {
|
||||
tooltip.text('인증번호를 입력해주세요.')
|
||||
input.focus().addClass('is-invalid')
|
||||
return false;
|
||||
}
|
||||
|
||||
var act = 'confirm_code'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_phone&act='+act+'&uid='+uid+'&code='+code
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
});
|
||||
|
||||
// 상태표시 흔적 및 실행버튼 초기화
|
||||
form.find('[name="phone"]').keyup(function(){
|
||||
$(this).removeClass('is-invalid is-valid')
|
||||
form.find('[type="submit"]').attr("disabled",false);
|
||||
});
|
||||
|
||||
$('[data-role="code"]').keyup(function(){
|
||||
$(this).removeClass('is-invalid is-valid')
|
||||
});
|
||||
|
||||
// 휴대폰 삭제
|
||||
$('[data-act="del"]').click(function() {
|
||||
if (confirm('정말로 삭제하시겠습니까? ')){
|
||||
var uid = $(this).data('uid')
|
||||
var act = 'del'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_phone&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}
|
||||
});
|
||||
|
||||
// 기본 휴대폰 저장
|
||||
$('#save-primary').find('.js-submit').click(function() {
|
||||
var form = $('#save-primary')
|
||||
var uid = form.find('select').val()
|
||||
var act = 'save_primary'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_phone&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
setTimeout(function(){
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}, 500);
|
||||
});
|
||||
|
||||
// 백업 휴대폰 저장
|
||||
$('#save-backup').find('.js-submit').click(function() {
|
||||
var form = $('#save-backup')
|
||||
var uid = form.find('select').val()
|
||||
var act = 'save_backup'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_phone&act='+act+'&uid='+uid
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
setTimeout(function(){
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}, 500);
|
||||
});
|
||||
|
||||
// 환경설정 저장
|
||||
$('#save-config').find('.js-submit').click(function() {
|
||||
var form = $('#save-config')
|
||||
var sms = form.find(':radio[name="sms"]:checked').val();
|
||||
var act = 'save_config'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_phone&act='+act+'&sms='+sms
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction();
|
||||
setTimeout(function(){
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}, 300);
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
|
||||
$('#phonesForm').submit(function() {
|
||||
|
||||
var form = $(this)
|
||||
var layer = form.find('.invalid-feedback')
|
||||
var input = form.find('[name="phone"]')
|
||||
var btn = form.find('[type="submit"]')
|
||||
var obj = f.phone
|
||||
|
||||
getIframeForAction(f);
|
||||
|
||||
// 상태초기화
|
||||
input.removeClass('is-invalid is-valid')
|
||||
btn.attr("disabled",false);
|
||||
|
||||
if (f.checkValidity() === false) {
|
||||
input.focus()
|
||||
input.addClass('is-invalid')
|
||||
layer.text('휴대폰 번호를 입력해주세요.')
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!chkPhoneNumber(obj.value)) {
|
||||
input.focus()
|
||||
input.addClass('is-invalid')
|
||||
layer.text('휴대폰 번호 형식이 아닙니다.')
|
||||
return false;
|
||||
}
|
||||
|
||||
btn.attr("disabled",true);
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
198
modules/member/themes/_desktop/bs4-default/settings/pw.php
Normal file
198
modules/member/themes/_desktop/bs4-default/settings/pw.php
Normal file
@@ -0,0 +1,198 @@
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">비밀번호 <?php echo $my['last_pw']?'변경':'등록' ?></h2>
|
||||
</div>
|
||||
|
||||
<form class="card" name="procForm" id="procForm" role="form" action="<?php echo $g['s']?>/" method="post">
|
||||
<div class="card-header">
|
||||
<div class="media">
|
||||
<i class="fa fa-key fa-3x mx-3" aria-hidden="true"></i>
|
||||
<div class="media-body">
|
||||
<?php if ($my['last_pw']): ?>
|
||||
현재 비밀번호는 <mark><?php echo getDateFormat($my['last_pw'],'Y.m.d')?></mark> 에 변경(등록)되었으며 <mark><?php echo -getRemainDate($my['last_pw'])?>일</mark>이 경과되었습니다. <br>
|
||||
비밀번호는 가급적 주기적으로 변경해 주세요.
|
||||
<?php else: ?>
|
||||
본 계정은 소셜로그인을 통해 가입된 계정으로 현재 비밀번호가 등록되어 있지 않습니다.<br>
|
||||
비밀번호를 등록하면 비밀번호를 통한 로그인이 가능합니다.
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="c" value="<?php echo $c?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="front" value="<?php echo $front?>">
|
||||
<input type="hidden" name="a" value="settings_main">
|
||||
<input type="hidden" name="act" value="pw">
|
||||
<input type="hidden" name="check_pw" value="">
|
||||
|
||||
<?php if ($my['last_pw']): ?>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">현재 패스워드</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control w-50" name="pw" value="" id="user_old_password" required autofocus>
|
||||
<small class="form-text text-muted"></small>
|
||||
</div>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">아이디</label>
|
||||
<div class="col-sm-10 mt-2">
|
||||
<?php echo $my['id'] ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">이메일</label>
|
||||
<div class="col-sm-10 mt-2">
|
||||
<?php echo $my['email']?$my['email']:'미등록' ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">휴대폰</label>
|
||||
<div class="col-sm-10 mt-2">
|
||||
<?php echo $my['phone']?$my['phone']:'미등록' ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">신규 패스워드</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control w-50" name="pw1" value="" id="user_new_password" required onblur="pw1Check();">
|
||||
<div class="invalid-feedback mt-2" id="pw1-feedback">비밀번호를 입력해주세요.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label">패스워드 확인</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control w-50" name="pw2" value="" id="user_confirm_new_password" required onblur="pw2Check();">
|
||||
<div class="invalid-feedback" id="pw2-feedback">다시한번 입력해 주세요.</div>
|
||||
<small class="form-text text-muted mt-3">비밀번호를 한번 더 입력하세요. 비밀번호는 잊지 않도록 주의하시기 바랍니다.</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- ./card-body -->
|
||||
<div class="card-footer d-flex justify-content-between align-items-center">
|
||||
<?php if ($my['last_pw']): ?>
|
||||
<a href="<?php echo RW('mod=password_reset')?>">패스워드를 분실했어요.</a>
|
||||
<button type="submit" class="btn btn-light">
|
||||
<span class="not-loading">변경하기</span>
|
||||
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 변경중 ...</span>
|
||||
</button>
|
||||
<?php else: ?>
|
||||
<span></span>
|
||||
<button type="submit" class="btn btn-light">
|
||||
<span class="not-loading">등록하기</span>
|
||||
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 등록중 ...</span>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
</form><!-- /.card -->
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.page-wrapper -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var f = document.procForm;
|
||||
var pw1 = getId('user_new_password');
|
||||
var pw2 = getId('user_confirm_new_password');
|
||||
|
||||
function pw1Check() {
|
||||
var layer = 'pw1-feedback';
|
||||
|
||||
if (!pw1.value) {
|
||||
pw1.classList.remove('is-valid','is-invalid');
|
||||
} else {
|
||||
|
||||
f.classList.remove('was-validated');
|
||||
pw1.classList.add('is-invalid');
|
||||
pw1.classList.remove('is-valid');
|
||||
|
||||
if (f.pw1.value.length < 8 || f.pw1.value.length > 16)
|
||||
{
|
||||
getId(layer).innerHTML = '비밀번호는 영문/숫자/특수문자중 2개 이상의 조합으로 최소 8~16자로 입력하셔야 합니다.';
|
||||
f.pw1.focus();
|
||||
return false;
|
||||
}
|
||||
if (getTypeCheck(f.pw1.value,"abcdefghijklmnopqrstuvwxyz"))
|
||||
{
|
||||
getId(layer).innerHTML = '비밀번호가 영문만으로 입력되었습니다.\n비밀번호는 영문/숫자/특수문자중 2개 이상의 조합으로 최소 8자이상 입력하셔야 합니다.';
|
||||
f.pw1.focus();
|
||||
return false;
|
||||
}
|
||||
if (getTypeCheck(f.pw1.value,"1234567890"))
|
||||
{
|
||||
getId(layer).innerHTML = '비밀번호가 숫자만으로 입력되었습니다.\n비밀번호는 영문/숫자/특수문자중 2개 이상의 조합으로 최소 8자이상 입력하셔야 합니다.';
|
||||
f.pw1.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
pw1.classList.add('is-valid');
|
||||
pw1.classList.remove('is-invalid');
|
||||
getId(layer).innerHTML = '';
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function pw2Check() {
|
||||
var layer = 'pw2-feedback';
|
||||
|
||||
if (!f.pw1.value) {
|
||||
f.pw2.value = '';
|
||||
f.pw1.focus();
|
||||
} else {
|
||||
|
||||
f.classList.remove('was-validated');
|
||||
pw2.classList.add('is-invalid');
|
||||
pw2.classList.remove('is-valid');
|
||||
|
||||
if (f.pw1.value != f.pw2.value)
|
||||
{
|
||||
getId(layer).innerHTML = '비밀번호가 일치하지 않습니다.';
|
||||
f.classList.remove('was-validated');
|
||||
f.pw2.focus();
|
||||
f.check_pw.value = '0';
|
||||
return false;
|
||||
}
|
||||
|
||||
pw2.classList.add('is-valid');
|
||||
pw2.classList.remove('is-invalid');
|
||||
getId(layer).innerHTML = '';
|
||||
|
||||
f.check_pw.value = '1';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$(function () {
|
||||
|
||||
$('#procForm').submit( function(e){
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
var form = $(this)
|
||||
var formID = form.attr('id')
|
||||
var f = document.getElementById(formID);
|
||||
form.find('[name="form"]').val('#'+formID);
|
||||
form.find('[type="submit"]').attr("disabled",true);
|
||||
form.find('.form-control').removeClass('is-invalid') //에러이력 초기화
|
||||
setTimeout(function(){
|
||||
getIframeForAction(f);
|
||||
f.submit();
|
||||
}, 500);
|
||||
}
|
||||
);
|
||||
})
|
||||
|
||||
</script>
|
||||
77
modules/member/themes/_desktop/bs4-default/settings/pwa.php
Normal file
77
modules/member/themes/_desktop/bs4-default/settings/pwa.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
$phone_que = 'mbruid='.$my['uid'].' and device="phone"';
|
||||
$tablet_que = 'mbruid='.$my['uid'].' and device="tablet"';
|
||||
$desktop_que = 'mbruid='.$my['uid'].' and device="desktop"';
|
||||
|
||||
$PTK = getDbData($table['s_iidtoken'],$phone_que,'*');
|
||||
$TTK = getDbData($table['s_iidtoken'],$tablet_que,'*');
|
||||
$DTK = getDbData($table['s_iidtoken'],$desktop_que,'*');
|
||||
|
||||
?>
|
||||
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">웹앱 설치내역</h2>
|
||||
</div>
|
||||
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
|
||||
<p class="note">웹앱은 안드로이드 크롬 및 내장 브라우저의 기능인 '홈 화면에 추가' 를 통해 내 폰에 설치할 수 있습니다. 두번째 접속시에는 자동으로 '홈 화면에 추가' 대화상자가 자동으로 호출되어 쉬운 설치를 지원합니다.</p>
|
||||
|
||||
<div class="card mt-2">
|
||||
<div class="card-header">
|
||||
서비스 워커
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<button class="js-install-sw btn btn-outline-primary">서비스워커 설치</button>
|
||||
<button class="js-uninstall-sw btn btn-outline-primary">서비스 워커 제거</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.row -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
const installSW = document.querySelector('.js-install-sw');
|
||||
const uninstallSW = document.querySelector('.js-uninstall-sw');
|
||||
|
||||
installSW.addEventListener('click', () => {
|
||||
navigator.serviceWorker.register('<?php echo $g['s']?>/sw.js');
|
||||
navigator.serviceWorker.register('<?php echo $g['s']?>/firebase-messaging-sw.js');
|
||||
});
|
||||
|
||||
uninstallSW.addEventListener('click', () => {
|
||||
navigator.serviceWorker.getRegistration('/')
|
||||
.then((reg) => {
|
||||
return reg.unregister();
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
|
||||
$('[data-toggle="popover"]').popover({
|
||||
trigger: 'hover',
|
||||
html : true
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
418
modules/member/themes/_desktop/bs4-default/settings/shipping.php
Normal file
418
modules/member/themes/_desktop/bs4-default/settings/shipping.php
Normal file
@@ -0,0 +1,418 @@
|
||||
<?php
|
||||
$sqlque0 = 'mbruid='.$my['uid'];
|
||||
$sqlque1 = 'mbruid='.$my['uid'].' and base=1';
|
||||
$sqlque2 = 'mbruid='.$my['uid'].' and base=0';
|
||||
|
||||
$PCD = getDbArray($table['s_mbrshipping'],$sqlque1,'*','uid','asc',0,1);
|
||||
$RCD = getDbArray($table['s_mbrshipping'],$sqlque2,'*','uid','asc',0,1);
|
||||
|
||||
$NUM = getDbRows($table['s_mbrshipping'],$sqlque0);
|
||||
?>
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_header.php'?>
|
||||
|
||||
<div class="page-wrapper row">
|
||||
<nav class="col-3 page-nav">
|
||||
<?php include_once $g['dir_module_skin'].'_nav.php'?>
|
||||
</nav>
|
||||
<div class="col-9 page-main">
|
||||
|
||||
<div class="subhead mt-0">
|
||||
<h2 class="subhead-heading">배송지 관리</h2>
|
||||
</div>
|
||||
|
||||
<?php if (!getValid($my['last_log'],$d['member']['settings_expire'])): //로그인 후 경과시간 비교(분 ?>
|
||||
<?php include_once $g['dir_module_skin'].'_lock.php'?>
|
||||
<?php else: ?>
|
||||
|
||||
<?php if ($NUM): ?>
|
||||
<div class="d-flex justify-content-between align-items-end mb-2">
|
||||
<div class="">
|
||||
<span>총 <?php echo $NUM ?>건</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table text-center">
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th scope="col">배송지</th>
|
||||
<th scope="col">주소</th>
|
||||
<th scope="col">연락처</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="f13">
|
||||
|
||||
<?php while($P=db_fetch_array($PCD)):?>
|
||||
<tr>
|
||||
<th scope="row" class="align-middle">
|
||||
<?php echo $P['label'] ?><br><small class="text-muted"><?php echo $P['name'] ?></small><br><span class="badge badge-primary">기본배송지</span></th>
|
||||
<td class="text-left">
|
||||
<span class="text-muted"><?php echo $P['zip'] ?></span><br>
|
||||
<?php echo $P['addr1'] ?><br><?php echo $P['addr2'] ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?php echo $P['tel1'] ?><br>
|
||||
<?php echo $P['tel2'] ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<button type="button" class="btn btn-light btn-sm" data-toggle="modal" data-target="#modal-shipping" data-uid="<?php echo $P['uid'] ?>" data-act="edit">수정</button>
|
||||
<button type="button" class="btn btn-light btn-sm" data-act="del" data-uid="<?php echo $P['uid'] ?>">삭제</button>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endwhile?>
|
||||
|
||||
<?php while($R=db_fetch_array($RCD)):?>
|
||||
<tr>
|
||||
<th scope="row" class="align-middle"><?php echo $R['label'] ?><br><small class="text-muted"><?php echo $R['name'] ?></small></th>
|
||||
<td class="text-left">
|
||||
<span class="text-muted"><?php echo $R['zip'] ?></span><br>
|
||||
<?php echo $R['addr1'] ?><br><?php echo $R['addr2'] ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<?php echo $R['tel1'] ?><br>
|
||||
<?php echo $R['tel2'] ?>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<button type="button" class="btn btn-light btn-sm" data-toggle="modal" data-target="#modal-shipping" data-uid="<?php echo $R['uid'] ?>" data-act="edit">수정</button>
|
||||
<button type="button" class="btn btn-light btn-sm" data-act="del" data-uid="<?php echo $R['uid'] ?>">삭제</button>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endwhile?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="text-right">
|
||||
<button type="button" class="btn btn-outline-primary" data-toggle="modal" data-target="#modal-shipping" data-act="add">
|
||||
배송지 등록
|
||||
</button>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="card p-5 my-4 text-center text-muted">
|
||||
<i class="fa fa-truck fa-3x" aria-hidden="true"></i><br>
|
||||
등록된 배송지가 없습니다. <br>
|
||||
쇼핑에서 사용할 배송지를 관리하실 수 있습니다.<br>
|
||||
자주 쓰는 배송지를 편리하게 통합 관리 하세요!<br>
|
||||
<button type="button" class="btn btn-link" data-toggle="modal" data-target="#modal-shipping" data-act="add">
|
||||
배송지 등록
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="modal fade" tabindex="-1" role="dialog" id="modal-shipping">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">
|
||||
<i class="fa fa-truck fa-fw fa-lg" aria-hidden="true"></i>
|
||||
<span data-role="title">배송지 정보 상세</span>
|
||||
</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<form id="shippingForm" role="form" action="<?php echo $g['s']?>/" method="post" >
|
||||
<input type="hidden" name="r" value="<?php echo $r?>">
|
||||
<input type="hidden" name="m" value="<?php echo $m?>">
|
||||
<input type="hidden" name="a" value="settings_shipping">
|
||||
<input type="hidden" name="act" value="">
|
||||
<input type="hidden" name="uid" value="">
|
||||
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-nowrap">배송지명</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="label" class="form-control w-50" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-nowrap">수령인 <span class="text-danger">*</span></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" name="name" class="form-control w-50" placeholder="" required>
|
||||
<div class="invalid-feedback">수령인을 입력해주세요.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-nowrap">주소 <span class="text-danger">*</span></label>
|
||||
<div class="col-sm-10">
|
||||
|
||||
<div class="form-row mb-2">
|
||||
<div class="col-3">
|
||||
<input type="text" class="form-control" name="zip" value="" id="zip" maxlength="5" size="5" readonly required>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button type="button" class="btn btn-light" role="button" id="execDaumPostcode">우편번호찾기</button>
|
||||
</div>
|
||||
</div><!-- /.form-row -->
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-12">
|
||||
<input type="text" class="form-control mb-2" name="addr1" id="addr1" value="" readonly>
|
||||
<input type="text" class="form-control" name="addr2" id="addr2" value="" required>
|
||||
<div class="invalid-feedback">
|
||||
주소를 입력해주세요.
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.form-row -->
|
||||
|
||||
</div>
|
||||
</div><!-- /.form-group -->
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-nowrap">연락처 <span class="text-danger">*</span></label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-inline">
|
||||
<input type="text" name="tel1_1" value="" maxlength="4" size="4" class="form-control" required><span class="px-1">-</span>
|
||||
<input type="text" name="tel1_2" value="" maxlength="4" size="4" class="form-control" required><span class="px-1">-</span>
|
||||
<input type="text" name="tel1_3" value="" maxlength="4" size="4" class="form-control" required>
|
||||
<div class="invalid-feedback">
|
||||
전화번호를 입력해주세요.
|
||||
</div>
|
||||
</div><!-- /.form-inline -->
|
||||
<div class="invalid-feedback"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-nowrap">연락처2</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-inline">
|
||||
<input type="text" name="tel2_1" value="" maxlength="4" size="4" class="form-control"><span class="px-1">-</span>
|
||||
<input type="text" name="tel2_2" value="" maxlength="4" size="4" class="form-control"><span class="px-1">-</span>
|
||||
<input type="text" name="tel2_3" value="" maxlength="4" size="4" class="form-control">
|
||||
<div class="invalid-feedback">
|
||||
전화번호를 입력해주세요.
|
||||
</div>
|
||||
</div><!-- /.form-inline -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-2 col-form-label text-nowrap">기본배송지</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="custom-control custom-checkbox mt-2">
|
||||
<input type="checkbox" class="custom-control-input" id="base" name="base" value="1">
|
||||
<label class="custom-control-label" for="base">기본 배송지로 설정</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer d-flex justify-content-between">
|
||||
<button type="button" class="btn btn-light" data-dismiss="modal">닫기</button>
|
||||
<button type="button" class="btn btn-primary" data-role="submit">
|
||||
<span class="not-loading">저장</span>
|
||||
<span class="is-loading">저장중..</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal : 우편번호 찾기 -->
|
||||
<div id="modal-DaumPostcode" class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">우편번호 찾기</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body p-0" id="postLayer" style="height: 500px">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div><!-- /.page-main -->
|
||||
</div><!-- /.row -->
|
||||
|
||||
<?php include_once $g['dir_module_skin'].'_footer.php'?>
|
||||
|
||||
<?php if($_SERVER['HTTPS'] == 'on'):?>
|
||||
<script src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
|
||||
<?php else:?>
|
||||
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
|
||||
<?php endif?>
|
||||
|
||||
<script>
|
||||
|
||||
var f = document.getElementById("shippingForm")
|
||||
var form = $('#shippingForm')
|
||||
var modal = $('#modal-shipping')
|
||||
|
||||
form.submit(function(event){
|
||||
if (f.checkValidity() === false) {
|
||||
modal.find('[data-role="submit"]').attr('disabled',false)
|
||||
|
||||
var name = modal.find('[name="name"]')
|
||||
var addr1 = modal.find('[name="addr1"]')
|
||||
var addr2 = modal.find('[name="addr2"]')
|
||||
var tel1_1= modal.find('[name="tel1_1"]')
|
||||
var tel1_2= modal.find('[name="tel1_2"]')
|
||||
var tel1_3= modal.find('[name="tel1_3"]')
|
||||
|
||||
if (!name.val()) name.addClass('is-invalid').focus()
|
||||
if (!addr1.val()) addr1.addClass('is-invalid')
|
||||
if (!addr2.val()) addr2.addClass('is-invalid')
|
||||
if (!tel1_1.val()) tel1_1.addClass('is-invalid')
|
||||
if (!tel1_2.val()) tel1_2.addClass('is-invalid')
|
||||
if (!tel1_3.val()) tel1_3.addClass('is-invalid')
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$(function () {
|
||||
|
||||
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
|
||||
|
||||
modal.on('show.bs.modal', function (e) {
|
||||
var button = $(e.relatedTarget) // Button that triggered the modal
|
||||
var uid = button.data('uid')
|
||||
var act = button.data('act')
|
||||
|
||||
//항목 초기화
|
||||
modal.find('[type="text"]').val('').removeClass('is-invalid')
|
||||
modal.find('[name="base"]').attr('checked',false)
|
||||
modal.find('fieldset').attr('disabled',false)
|
||||
modal.find('[data-role="submit"]').attr('disabled',false)
|
||||
|
||||
//액션구분
|
||||
modal.find('[name="act"]').val(act)
|
||||
|
||||
if (uid) {
|
||||
|
||||
$.post(rooturl+'/?r='+raccount+'&m=member&a=settings_shipping',{
|
||||
act : 'get_data',
|
||||
uid : uid
|
||||
},function(response){
|
||||
var result = $.parseJSON(response);
|
||||
|
||||
var title = '배송지 정보 상세'
|
||||
var label = result.label
|
||||
var name = result.name
|
||||
var zip = result.zip
|
||||
var addr1 = result.addr1
|
||||
var addr2 = result.addr2
|
||||
var tel1 = result.tel1
|
||||
var tel2 = result.tel2
|
||||
var base = result.base
|
||||
|
||||
modal.find('[name="label"]').val(label)
|
||||
modal.find('[name="name"]').val(name)
|
||||
modal.find('[name="zip"]').val(zip)
|
||||
modal.find('[name="addr1"]').val(addr1)
|
||||
modal.find('[name="addr2"]').val(addr2)
|
||||
|
||||
if (tel1) {
|
||||
var tel1 = result.tel1.split('-')
|
||||
modal.find('[name="tel1_1"]').val(tel1[0])
|
||||
modal.find('[name="tel1_2"]').val(tel1[1])
|
||||
modal.find('[name="tel1_3"]').val(tel1[2])
|
||||
}
|
||||
|
||||
if (tel2) {
|
||||
var tel2 = result.tel2.split('-')
|
||||
modal.find('[name="tel2_1"]').val(tel2[0])
|
||||
modal.find('[name="tel2_2"]').val(tel2[1])
|
||||
modal.find('[name="tel2_3"]').val(tel2[2])
|
||||
}
|
||||
|
||||
if (base==1) modal.find('[name="base"]').attr('checked',true)
|
||||
|
||||
});
|
||||
|
||||
} else {
|
||||
var title = '배송지 등록'
|
||||
}
|
||||
|
||||
modal.find('[data-role="title"]').text(title)
|
||||
modal.find('[name="uid"]').val(uid)
|
||||
})
|
||||
|
||||
modal.on('shown.bs.modal', function (e) {
|
||||
var button = $(e.relatedTarget)
|
||||
var uid = button.data('uid')
|
||||
if (!uid) modal.find('[name="label"]').trigger('focus')
|
||||
})
|
||||
|
||||
$('[data-act="del"]').click(function() {
|
||||
if (confirm('정말로 삭제하시겠습니까? ')){
|
||||
var uid = $(this).data('uid')
|
||||
var act = 'del'
|
||||
var url = rooturl+'/?r='+raccount+'&m=member&a=settings_shipping&act='+act+'&uid='+uid
|
||||
getIframeForAction();
|
||||
frames.__iframe_for_action__.location.href = url;
|
||||
}
|
||||
});
|
||||
|
||||
modal.find('[data-role="submit"]').click(function() {
|
||||
$(this).attr('disabled',true)
|
||||
getIframeForAction(f);
|
||||
setTimeout(function(){
|
||||
modal.find('#shippingForm').submit()
|
||||
// modal.modal('hide')
|
||||
}, 500);
|
||||
});
|
||||
|
||||
// 폼유효성 상태표시 흔적 초기화
|
||||
form.find('[type="text"]').keyup(function(){
|
||||
$(this).removeClass('is-invalid is-valid')
|
||||
});
|
||||
|
||||
$("#execDaumPostcode").click(function() {
|
||||
// 우편번호 찾기 화면을 넣을 element
|
||||
var element_wrap = document.getElementById('postLayer');
|
||||
function execDaumPostcode() {
|
||||
daum.postcode.load(function(){
|
||||
new daum.Postcode({
|
||||
oncomplete: function(data) {
|
||||
// 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
|
||||
// 각 주소의 노출 규칙에 따라 주소를 조합한다.
|
||||
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
|
||||
var fullAddr = data.address; // 최종 주소 변수
|
||||
var extraAddr = ''; // 조합형 주소 변수
|
||||
// 기본 주소가 도로명 타입일때 조합한다.
|
||||
if(data.addressType === 'R'){
|
||||
//법정동명이 있을 경우 추가한다.
|
||||
if(data.bname !== ''){
|
||||
extraAddr += data.bname;
|
||||
}
|
||||
// 건물명이 있을 경우 추가한다.
|
||||
if(data.buildingName !== ''){
|
||||
extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
|
||||
}
|
||||
// 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.
|
||||
fullAddr += (extraAddr !== '' ? ' ('+ extraAddr +')' : '');
|
||||
}
|
||||
// 우편번호와 주소 정보를 해당 필드에 넣는다.
|
||||
document.getElementById('zip').value = data.zonecode; //5자리 새우편번호 사용
|
||||
document.getElementById('addr1').value = fullAddr;
|
||||
$('#modal-DaumPostcode').modal('hide')// 우편번호 검색모달을 숨김
|
||||
$('#addr1').removeClass('is-invalid') //에러표시 초기화
|
||||
$('#addr2').focus()
|
||||
|
||||
},
|
||||
// 우편번호 찾기 화면 크기가 조정되었을때 실행할 코드를 작성하는 부분. iframe을 넣은 element의 높이값을 조정한다.
|
||||
width : '100%',
|
||||
height : '100%'
|
||||
}).embed(element_wrap);
|
||||
});
|
||||
element_wrap.style.display = 'block';
|
||||
$('#modal-DaumPostcode').modal('show')
|
||||
}
|
||||
execDaumPostcode()
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
</script>
|
||||
Reference in New Issue
Block a user