This commit is contained in:
shim
2023-04-17 11:06:08 +09:00
parent d0b393aa97
commit 76264e09ad
4686 changed files with 552713 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
The RBL License
Copyright (c) 2011-2018 Redblock, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,10 @@
# 알씨 심플
모바일 전용 회원모듈 테마 입니다.
## 주요 프론트
- 회원가입
- 로그인
- 비밀번호초기화
- 개인정보수정

View File

@@ -0,0 +1,91 @@
<div class="card card-full border-bottom rounded-0 bg-white" data-role="item" data-uid="{$post_uid}">
<div class="px-3 pt-3 d-flex justify-content-between">
<div class="media" data-toggle="profile"
data-target="#modal-member-profile"
data-mbruid="{$post_mbruid}"
data-title="{$post_nic}"
data-url="{$post_profile_url}">
<span class="media-left">
<img class="media-object img-circle" data-role="avatar" src="{$post_avatar}" alt="" style="width:2.5rem">
</span>
<div class="media-body">
<div class="f15 line-clamp-2" style="line-height: 1.2">{$post_nic}</div>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item"><time data-plugin="timeago" datetime="{$post_d_modify}"></time></li>
</ul>
</div>
</div>
<div class="px-1">
<a href="#popup-post-postMore"
data-toggle="popup"
data-role="more"
data-uid="{$post_uid}" class="icon material-icons text-muted f18">
more_vert
</a>
</div>
</div>
<div class="card-block px-3 py-2"
data-toggle="modal"
data-target="#modal-post-view"
data-format="{$post_format}"
data-start="{$post_start}"
data-uid="{$post_uid}"
data-featured="{$post_featured_1by1}"
data-provider="{$post_provider}"
data-videoId="{$post_videoId}"
data-url="/post/{$post_cid}">
<p>{$post_subject} <span class="f14 text-muted mt-2 {$post_has_content}">자세히 보기</span></p>
<div class="position-relative embed-responsive embed-responsive-1by1 bg-faded {$post_has_featured}">
<img class="card-img-top img-fluid rounded-0" src="{$post_featured_1by1}" alt="" data-role="featured">
<time class="badge badge-default bg-black rounded-0 position-absolute f14" style="right:1px;bottom:1px" data-role="time">{$post_time}</time>
</div>
</div>
<footer class="d-flex justify-content-between px-3 mb-3">
<div class="">
<button type="button"
class="btn btn-link muted-link px-1 text-decoration-none {$is_post_liked}"
data-toggle="view_opinion"
data-title="동영상이 마음에 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$post_uid}"
data-opinion="like"
data-role="btn_post_like_{$post_uid}">
<i class="material-icons align-text-bottom f20 align-middle">thumb_up</i>
<span class="ml-1 f13" data-role="likes_{$post_uid}">{$post_likes}</span>
</button>
<button type="button" class="btn btn-link muted-link px-1 text-decoration-none ml-2 {$is_post_disliked}"
data-toggle="view_opinion"
data-target="#popup-login-guide"
data-title="동영상이 마음에 안 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$post_uid}"
data-opinion="dislike"
data-role="btn_post_dislike_{$post_uid}">
<i class="material-icons align-text-bottom f20 align-middle">thumb_down</i>
<span class="ml-1 f13" data-role="dislikes_{$post_uid}">{$post_dislikes}</span>
</button>
</div>
<div class="">
<button type="button" class="btn btn-link text-muted px-1 text-decoration-none"
data-toggle="modal"
data-target="#modal-post-view"
data-format="{$post_format}"
data-start="{$post_start}"
data-uid="{$post_uid}"
data-featured="{$featured_1by1}"
data-provider="{$post_provider}"
data-videoId="{$post_videoId}"
data-url="/post/{$post_cid}">
<i class="material-icons align-text-bottom f20 align-middle">comment</i>
<span class="ml-1 f13" data-role="comment_{$post_uid}">{$post_comment}</span>
</button>
</div>
</footer>
</div>

View File

@@ -0,0 +1,27 @@
<li class="media mb-3" data-role="item" data-uid="{$uid}">
<a class="w-100"
data-toggle="profile"
data-target="#modal-member-profile"
data-mbruid="{$mbruid}"
data-title="{$nic}"
data-url="{$profile_url}">
<div class="pull-left text-xs-center" style="width:6.25rem">
<img class="border img-circle" src="{$avatar}" alt="" style="width: 4.0625rem">
</div>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
{$nic}
</h5>
<div class="mb-1 f13 text-muted">
구독자 {$num_follower}명 <br>
동영상 {$num_post}개
</div>
</div>
</a>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$post_uid}" class="icon material-icons text-muted f18">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,27 @@
<li class="media mb-2" data-role="item" data-uid="{$list_uid}">
<div class="media" data-toggle="modal" data-target="#modal-post-listview" class="ml-1" data-start="" data-url="/list/{$list_id}" data-id="{$list_id}" data-title="{$list_name}">
<div class="media-left">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object " src="{$list_featured_16by9_sm}" class="img-fluid" alt="" style="width:10rem">
<span class="list_mask">
<span class="txt">{$list_num}<i class="fa fa-list-ul d-block" aria-hidden="true"></i></span>
</span>
</div>
</div>
<div class="media-body">
<div class="line-clamp-3">{$list_name}</div>
<p>포스트 {$list_num}개</p>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item">{$list_nic}</li>
<li class="list-inline-item"><time data-plugin="timeago" datetime="{$list_d_modify}"></time></li>
</ul>
</div>
</div>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-admin" data-toggle="popup" data-uid="{$list_uid}" class="icon material-icons text-muted">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,36 @@
<li class="media mb-2" data-role="item" data-uid="{$uid}">
<a data-toggle="modal" class="w-100"
data-target="#modal-post-view"
data-uid="{$newpost_uid}"
data-featured="{$newpost_featured_16by9}"
data-provider="{$newpost_provider}"
data-videoId="{$newpost_videoId}"
data-format="{$newpost_format}"
data-url="/post/{$newpost_cid}">
<div class="pull-left mr-2 {$newpost_has_featured}">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object border" src="{$newpost_featured_16by9_sm}" alt="" style="width: 10rem">
<time class="badge badge-default rounded-0 position-absolute" style="top:auto;left:auto;right:0.0625rem;bottom:0.0625rem">{$newpost_time}</time>
</div>
</div>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
{$newpost_subject}
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">조회수 {$newpost_hit}회 </li>
<li class="list-inline-item">
<time data-plugin="timeago" datetime="{$newpost_d_modify}"></time>
</li>
</ul>
</div>
</div>
</a>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-optionMore" data-toggle="popup" data-uid="{$newpost_uid}" class="icon material-icons text-muted f18">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,5 @@
<div class="d-flex align-items-center justify-content-center p-5 text-xs-center text-muted f13" style="height: 55vh">
<div>
<p class="f16">{$none_txt}</p>
</div>
</div>

View File

@@ -0,0 +1,36 @@
<li class="media mb-2" data-role="item" data-uid="{$uid}">
<a data-toggle="modal" class="w-100"
data-target="#modal-post-view"
data-uid="{$post_uid}"
data-featured="{$post_featured_16by9}"
data-provider="{$post_provider}"
data-videoId="{$post_videoId}"
data-format="{$post_format}"
data-url="/post/{$post_cid}">
<div class="pull-left mr-2 {$post_has_featured}">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object border" src="{$post_featured_16by9_sm}" alt="" style="width: 10rem">
<time class="badge badge-default rounded-0 position-absolute" style="top:auto;left:auto;right:0.0625rem;bottom:0">{$post_time}</time>
</div>
</div>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
{$post_subject}
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">조회수 {$post_hit}회 </li>
<li class="list-inline-item">
<time data-plugin="timeago" datetime="{$post_d_modify}"></time>
</li>
</ul>
</div>
</div>
</a>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$post_uid}" class="icon material-icons text-muted f18">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,23 @@
<li class="table-view-cell {$check_read}">
<a data-toggle="sheet" href="#sheet-noti"
data-from="{$from}"
data-icon="{$icon}"
data-avatar="{$avatar}"
data-uid="{$uid}">
<span class="media-object pull-left position-relative">
<img class="img-circle" src="{$avatar}" style="width:3.25rem">
<i class="{$icon} bg-primary position-absolute {$check_from}"></i>
</span>
<div class="media-body">
<span class="d-flex justify-content-between">
<span>{$title} <span class="badge">{$from}</span></span>
<span style="margin-top: -.2rem">
<span class="rb-new ml-1 {$check_new}"></span>
<time class="small badge badge-default badge-inverted" data-plugin="timeago" datetime="{$datetime}"></time>
</span>
</span>
<p>{$message}</p>
</div>
</a>
</li>

View File

@@ -0,0 +1,111 @@
<div class="swiper-container" style="overflow: hidden">
<div class="swiper-wrapper">
<div class="swiper-slide" data-role="profile_home">
<div class="member-profile" style="background-image: url({$cover});height:5.3125rem;background-size: cover;background-position: center center;">
<img src="{$cover}" alt="" class="d-none" data-role="cover">
</div>
<div class="d-flex align-items-center justify-content-between bg-faded p-3">
<div class="media">
<span class="media-left mr-1">
<img class="media-object img-circle" src="{$avatar}" alt="" style="width:4.25rem">
</span>
<div class="media-body pt-1">
<h4 class="h5 mb-1" style="font-size:1.2rem;font-weight: 400;">
{$nic}
</h4>
<div class="f14 text-muted">구독자 {$num_follower}명</div>
{$profile_follow}
</div>
</div>
<div>
{$profile_setting}
</div>
</div><!-- /.d-flex -->
<section data-role="newPost" class="p-3 border-bottom">
<h4 class="f18">최신 동영상</h4>
<ul class="media-list">
{$newPost}
</ul>
<div data-role="none" class="d-none">
<div class="d-flex align-items-center justify-content-center p-5 text-xs-center text-muted f13" style="height: 60vh">
<div>
<p class="f16">등록된 동영상이 없습니다.</p>
</div>
</div>
</div>
</section>
<section data-role="newPost" class="p-3 border-bottom">
<h4 class="f18">최신 리스트</h4>
<ul class="media-list">
{$newList}
</ul>
</section>
</div><!-- /.swiper-slide -->
<div class="swiper-slide" data-role="postList">
<div class="content-padded">
<a class="btn btn-link text-reset pl-0" style="margin-top:-0.5rem"
data-toggle="popup" href="#popup-post-sort">
<div class="d-flex align-items-center">
<i class="material-icons text-muted mr-2">notes</i>
정렬 기준
<i class="material-icons text-muted ml-1">arrow_drop_down</i>
</div>
</a>
<ul class="media-list" data-role="list"></ul>
</div>
</div><!-- /.swiper-slide -->
<div class="swiper-slide" data-role="listList">
<div class="content-padded">
<a class="btn btn-link text-reset pl-0" style="margin-top:-0.5rem"
data-toggle="popup" href="#popup-post-sort">
<div class="d-flex align-items-center">
<i class="material-icons text-muted mr-2">notes</i>
정렬 기준
<i class="material-icons text-muted ml-1">arrow_drop_down</i>
</div>
</a>
<ul class="media-list" data-role="list"></ul>
</div>
</div><!-- /.swiper-slide -->
<div class="swiper-slide" data-role="commList">
<div class="media-list" data-role="list"></div>
</div><!-- /.swiper-slide -->
<div class="swiper-slide" data-role="followList">
<div class="p-4">
<ul class="media-list" data-role="list"></ul>
</div>
</div><!-- /.swiper-slide -->
<div class="swiper-slide">
<h6 class="f14 px-3 mt-4">
정보
</h6>
<div class="border-top border-bottom">
<div class="px-3 py-2">
<p class="text-muted">{$bio}</p>
가입일 : {$d_regis}
</div>
</div>
<div class="text-xs-center mt-2">
<strong>조회수 {$hit_post} 회</strong>
</div>
</div><!-- /.swiper-slide -->
</div><!-- /.swiper-wrapper -->
</div><!-- /.swiper-class-container -->

View File

@@ -0,0 +1,7 @@
<button type="button" class="btn btn-link px-0 py-1 {$isFollowing}"
data-title="채널을 구독하시겠습니까?"
data-subtext="채널을 구독하려면 로그인하세요."
data-toggle="follow"
data-mbruid="{$mbruid}">
구독
</button>

View File

@@ -0,0 +1,5 @@
<button class="btn btn-link"
data-target="#modal-settings-profile"
data-toggle="changeModal">
<span class="icon icon-gear text-muted"></span>
</button>

View File

@@ -0,0 +1,36 @@
<li class="media mb-2">
<a data-toggle="modal" class="w-100"
data-target="#modal-post-view"
data-uid="{$newpost_uid}"
data-featured="{$newpost_featured_16by9}"
data-provider="{$newpost_provider}"
data-videoId="{$newpost_videoId}"
data-format="{$newpost_format}"
data-url="/post/{$newpost_cid}">
<div class="pull-left mr-2 {$newpost_has_featured}}">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object border" src="{$newpost_featured_16by9_sm}" alt="" style="width: 10rem">
<time class="badge badge-default rounded-0 position-absolute" style="top:auto;left:auto;right:0.0625rem;bottom:0.0625rem">{$newpost_time}</time>
</div>
</div>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
{$newpost_subject}
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">조회수 {$newpost_hit}회 </li>
<li class="list-inline-item">
<time data-plugin="timeago" datetime="{$newpost_d_modify}"></time>
</li>
</ul>
</div>
</div>
</a>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-optionMore" data-toggle="popup" data-uid="{$newpost_uid}" class="icon material-icons text-muted f18">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1 @@
nopanel.txt

View File

@@ -0,0 +1 @@
변수

View File

@@ -0,0 +1,96 @@
.card.join-ageement .card-header {
background-color: inherit;
border-bottom: none;
padding-bottom: .425rem;
}
.card.join-ageement .card-title {
margin-bottom: 0;
font-size: 1rem;
font-weight: 700;
padding-top: .525rem;
padding-left: 5px;
}
.card.join-ageement .card-header,
.card.join-ageement .card-block {
padding: .625rem;
}
.card.join-ageement .card-block p {
margin-bottom: .325rem;
}
/*step*/
.rb-step {
height: 3.125rem
}
.bar-header-secondary.rb-step ~ .content {
padding-top: 5.875rem;
}
.rb-step .nav-inline {
position: relative;
display: flex;
}
.rb-step .nav-inline .nav-item {
width: 10%;
line-height: 3.1rem;
z-index: 20
}
.rb-step .nav-inline .nav-item.active {
width: 80%;
}
.rb-step .nav-inline .nav-link {
display: none
}
.rb-step .nav-inline .active .nav-link {
margin-left: -4px;
display: inline;
width: 100%;
padding-left: 5px;
padding-right: 5px;
color: #626470;
background-color: #fff
}
.rb-step .nav-inline .nav-item.active:last-child {
background-color: #fff
}
.rb-step .nav-inline .badge-default {
width: 32px;
height: 32px;
padding: 0;
font-size: 1rem;
line-height: 28px;
background-color: #b4b8c4;
border-radius: 100%;
text-align: center;
border: 2px solid #d8dce2;
}
.rb-step .nav-inline .active .badge-default {
background-color: #0275d8;
}
.rb-step .nav-inline .nav-item + .nav-item,
.rb-step .nav-inline .nav-link + .nav-link {
margin-left: .625rem;
}
.rb-step .nav-inline:before {
display: block;
position: absolute;
top: 25px;
width: 100%;
height: 1px;
content: '';
background-color: #d8dce2;
z-index: 18
}
.form-control[name="id"],
.form-control[name="name"],
.form-control[name="nic"],
.form-control[name="email"] {
padding: 0.75rem 1.5rem;
font-size: 1.25rem;
border-radius: 0.125rem;
}

View File

@@ -0,0 +1,946 @@
<div id="modal-join" class="modal fast">
<div class="page center" id="page-join-main">
<header class="bar bar-nav bar-light bg-faded px-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<h1 class="title">
회원가입
</h1>
</header>
<nav class="bar bar-tab bar-light bg-faded">
<a class="tab-item active" role="button" data-toggle="changeModal" href="#modal-login">
<small>이미 가입하셨나요? <span class="pl-2">로그인 하기</span></small>
</a>
</nav>
<main class="content bg-faded">
<div class="buttons content-padded">
<button type="button"class="btn btn-secondary btn-login-phone btn-block" data-toggle="page" data-target="#page-join-form" data-start="#page-join-main">
이메일<?php echo $d['member']['join_byPhone']?' 또는 휴대폰 번호':'' ?>로 가입
</button>
<?php if ($d['member']['join_bySocial']): ?>
<span class="section-divider"><span>또는</span></span>
<?php if ($d['connect']['use_k']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-kakao text-xs-center" data-connect="kakao" role="button">
<span></span>
카카오톡으로 가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_n']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-naver text-xs-center" data-connect="naver" role="button">
<span></span>
네이버로 가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_g']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-google text-xs-center" data-connect="google" role="button">
<span class="fa fa-google"></span>
구글로 가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_f']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-facebook text-xs-center" data-connect="facebook" role="button">
<span class="fa fa-facebook"></span>
페이스북으로 가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_i']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-instagram text-xs-center" data-connect="instagram" role="button">
<span class="fa fa-instagram"></span>
인스타그램으로 가입
</button>
<?php endif; ?>
<?php endif; ?>
</div>
</main>
</div><!-- /#page-main -->
<div class="page right" id="page-join-form">
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<button class="btn btn-link btn-nav pull-right p-l-1 p-r-2" data-act="send_code" data-type="email" data-device="mobile" tabindex="2">
<span class="not-loading">다음</span>
<span class="is-loading">
<div class="spinner-border spinner-border-sm text-primary" role="status">
<span class="sr-only">처리중...</span>
</div>
</span>
</button>
<h1 class="title">회원가입</h1>
</header>
<?php if ($d['member']['join_byPhone']): ?>
<nav class="bar bar-tab bar-light bg-faded">
<a class="tab-item d-none" role="button" data-type="email" data-role="change-input">
<small>또는 이메일 가입</small>
</a>
<a class="tab-item" role="button" data-type="phone" data-role="change-input">
<small>또는 휴대폰 번호로 가입</small>
</a>
</nav>
<?php endif; ?>
<main class="content">
<div class="content-padded" autocomplete="off">
<div class="form-list floating px-3">
<div class="input-row position-relative d-none" data-role="input-phone">
<label>휴대폰 번호(숫자만)</label>
<input type="number" name="phone" placeholder="휴대폰 번호" data-role="phone" autocomplete="off" tabindex="1">
<div class="invalid-tooltip" data-role="phoneErrorBlock"></div>
</div>
<div class="input-row position-relative" data-role="input-email">
<label>이메일 주소</label>
<input type="email" name="email" placeholder="이메일 주소" data-role="email" autocomplete="off">
<div class="invalid-tooltip" data-role="emailErrorBlock"></div>
</div>
</div>
</div><!-- /.content-padded -->
</main>
</div><!-- /#page-join -->
<div class="page right" id="page-join-code">
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<button class="btn btn-link btn-nav pull-right p-l-1 p-r-2" data-type="phone" data-act="confirm_code" data-device="mobile">
확인
</button>
<h1 class="title">회원가입</h1>
</header>
<main class="content">
<div class="content-padded">
<div class="form-list floating px-3">
<div class="input-row position-relative" data-role="input-phone">
<label>인증번호 (6자리)</label>
<input type="number" name="confirm_phone_code" data-role="confirm_phone_code" placeholder="인증번호" autocomplete="off">
<div class="invalid-tooltip" data-role="phoneCodeBlock"></div>
</div>
</div>
<small class="form-text text-success px-3">
<span data-role="target"></span> 로 인증번호를 발송했습니다.<br>
6자리 인증번호를 입력해 주세요. (유효시간 <?php echo $d['member']['join_keyexpire'] ?>분) <span data-role="countdown" data-email-countdown="">[00:00]</span><br>
인증번호가 오지 않으면 입력정보가 정확한지 확인하여 주세요.
</small>
</div><!-- /.content-padded -->
</main>
</div>
</div><!-- /.modal -->
<?php if ($call_modal_join_site): ?>
<?php
$email = $_SESSION['JOIN']['email']; //본인확인된 이메일
$phone = $_SESSION['JOIN']['phone']; //본인확인된 휴대폰번호
$_SESSION['JOIN'] = ''; //본인확인 세션 초기화
?>
<div id="modal-join-site" class="modal zoom">
<section class="page center" id="page-site-main">
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<button class="btn btn-link btn-nav pull-right p-x-1" data-role="showAgreement" disabled>
다음
</button>
<h1 class="title">
회원가입
</h1>
</header>
<main class="content">
<form class="content-padded" id="joinForm" role="form" action="<?php echo $g['s']?>/" method="post" autocomplete="off">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="m" value="member">
<input type="hidden" name="a" value="join">
<input type="hidden" name="phone" value="<?php echo $phone ?>">
<input type="hidden" name="email" value="<?php echo $email ?>">
<input type="hidden" name="check_pw" value="0">
<input type="hidden" name="check_name" value="0">
<input type="hidden" name="event" value="">
<div class="form-list floating px-3">
<div class="input-row position-relative">
<label>비밀번호</label>
<input type="password" name="pw1" placeholder="비밀번호" data-role="pw">
<div class="invalid-tooltip" id="pw-feedback">비밀번호를 입력해주세요.</div>
</div>
<div class="input-row position-relative">
<label>이름</label>
<input type="text" name="name" placeholder="이름" data-role="name">
<div class="invalid-tooltip" id="name-feedback">이름을 입력해주세요.</div>
</div>
</div>
</form>
<div class="content-padded d-none" data-role="agreement">
<p class="pl-2">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-all">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">전체동의 <small class="text-muted">(선택 항목 포함)</small></span>
</label>
</p>
<p class="pl-2">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-policy">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">
이용약관과 개인정보수집안내
<button type="button"
data-target="#page-site-doc"
data-start="#page-site-main"
data-toggle="page"
class="btn btn-secondary btn-sm ml-2">보기</button>
</span>
</span>
</label>
</p>
<p class="pl-2">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-event">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">이벤트,서비스 안내 수신 <small class="text-muted">(선택)</small></span>
</label>
</p>
<button type="button" class="btn btn-secondary btn-block mt-4 js-submit" disabled>
확인
</button>
</div>
</main>
</section>
<section class="page right" id="page-site-doc">
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<h1 class="title">서비스 약관</h1>
</header>
<div class="bar bar-standard bar-header-secondary bar-light bg-white p-x-0">
<nav class="nav nav-inline">
<a class="nav-link active" href="#page-site-policy" data-toggle="tab">이용약관</a>
<a class="nav-link" href="#page-site-privacy" data-toggle="tab">개인정보취급방침</a>
</nav>
</div>
<div class="content">
<div class="tab-pane content-padded" id="page-site-policy">
</div>
<div class="tab-pane content-padded d-none" id="page-site-privacy">
</div>
</div>
</section>
</div><!-- /.modal -->
<script>
var modal_join_site = $('#modal-join-site')
var f = document.getElementById('joinForm');
//회원가입 항목 유용성 체크
function joinCheck(obj,layer) {
if (!obj.value)
{
obj.classList.remove('is-invalid');
getId(layer).innerHTML = '';
}
else
{
if (obj.name == 'pw1') {
f.classList.remove('was-validated');
if (f.pw1.value.length < 6 || f.pw1.value.length > 16) {
f.check_pw.value = '0';
f.classList.remove('was-validated');
obj.classList.add('is-invalid');
obj.classList.remove('is-valid');
getId(layer).innerHTML = '영문/숫자 2개 이상의 조합으로 최소 6~16자로 입력하셔야 합니다.';
return false;
}
if (getTypeCheck(f.pw1.value,"abcdefghijklmnopqrstuvwxyz")) {
getId(layer).innerHTML = '비밀번호가 영문만으로 입력되었습니다.\n영문/숫자 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
f.pw1.focus();
return false;
}
if (getTypeCheck(f.pw1.value,"1234567890")) {
getId(layer).innerHTML = '비밀번호가 숫자만으로 입력되었습니다.\n영문/숫자 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
f.pw1.focus();
return false;
}
f.pw1.classList.add('is-valid');
f.pw1.classList.remove('is-invalid');
getId(layer).innerHTML = '';
f.check_pw.value = '1';
}
if (obj.name == 'name') {
if (obj.value.length > 1) {
f.check_name.value = '1';
} else {
f.check_name.value = '0';
}
}
}
}
modal_join_site.modal('show') //가입모달 호출
modal_join_site.on('shown.rc.modal', function () {
modal_join_site.find('[name="pw1"]').focus()
})
//회원가입 시 입력항목 유용성 체크
modal_join_site.find('.input-row input').keyup(function(){
var item = $(this).data('role')
var item_pw_check = modal_join_site.find('[name=check_pw]').val()
var item_name_check = modal_join_site.find('[name=check_name]').val()
if (item=='pw') {
element = document.querySelector('[name="pw1"]');
joinCheck(element,'pw-feedback')
}
if (item=='name') {
element = document.querySelector('[name="name"]');
joinCheck(element,'name-feedback')
}
if (item_pw_check==1 && item_name_check==1) {
$('[data-role="showAgreement"]').removeAttr('disabled')
} else {
$('[data-role="showAgreement"]').attr('disabled',true)
}
});
// 회원가입 시 '다음'버튼 터치시 동의항목 출력
$('body').on('tap click','[data-role="showAgreement"]:enabled',function(){
var id = modal_join_site.find('[data-role="phone"]').val()
var idtype = 'phone'
$(this).addClass('d-none')
modal_join_site.find('[data-role="agreement"]').removeClass('d-none')
modal_join_site.find('.bar-tab').addClass('d-none')
setTimeout(function(){
$.notify({message: '약관동의가 필요합니다.'},{type: 'default'});
}, 500);
});
// 회원가입 시 전체동의 체크박스 처리
modal_join_site.find('#checkbox-all').change(function(e) {
if ($(this).prop('checked')){
$('#checkbox-policy').prop('checked',true)
$('#checkbox-event').prop('checked',true)
$('#joinForm').find('[name="event"]').val(1)
modal_join_site.find('.js-submit').removeClass('btn-secondary').addClass('btn-primary').attr('disabled',false) // 확인 버튼 활성화 처리
} else {
$('#checkbox-policy').prop('checked',false)
$('#checkbox-event').prop('checked',false)
$('#joinForm').find('[name="event"]').val(0)
modal_join_site.find('.js-submit').addClass('btn-secondary').removeClass('btn-primary').attr('disabled',true) // 확인 버튼 비활성화 처리
}
});
// 회원가입 시 약관사항이 체크되어야 회원가입 확인버튼이 활성화 됨
modal_join_site.find('#checkbox-policy').change(function(e) {
if ($(this).prop('checked') && $('#checkbox-policy').prop('checked')){
modal_join_site.find('.js-submit').removeClass('btn-secondary').addClass('btn-primary').attr('disabled',false) // 확인 버튼 활성화 처리
} else {
modal_join_site.find('.js-submit').addClass('btn-secondary').removeClass('btn-primary').attr('disabled',true) // 확인 버튼 비활성화 처리
}
});
// 회원가입 시 아벤트,서비스 안내 수신
modal_join_site.find('#checkbox-event').change(function(e) {
if ($(this).prop('checked') && $('#checkbox-event').prop('checked')){
$('#joinForm').find('[name="event"]').val(1)
} else {
$('#joinForm').find('[name="event"]').val(0)
}
});
// 이용약관 / 개인정보취급방침 문서 자세히 보기
$('#page-site-doc').on('shown.rc.page', function (event) {
var button = $(event.relatedTarget)
var type = button.data('type')
var page = $(this)
setTimeout(function(){
page.find('#page-site-policy').loader({ // 로더 출력
position: "inside"
});
$.post(rooturl+'/?r='+raccount+'&m=site&a=get_postData',{
id : 'policy',
_mtype : 'page'
},function(response){
page.find('#page-site-policy').loader("hide");
var result = $.parseJSON(response);
var policy=result.article;
page.find('#page-site-policy').html(policy);
});
$.post(rooturl+'/?r='+raccount+'&m=site&a=get_postData',{
id : 'privacy',
_mtype : 'page'
},function(response){
var result = $.parseJSON(response);
var privacy=result.article;
page.find('#page-site-privacy').html(privacy);
});
}, 300);
})
$('#page-site-doc').on('hidden.rc.page', function () {
var page = $(this)
page.find('#page-site-policy').html('');
page.find('#page-site-privacy').html('');
})
// 회원가입 실행
modal_join_site.on('tap click','.js-submit:enabled',function(){
$(this).attr("disabled",true).text('진행중...');
setTimeout(function(){
getIframeForAction(f);
f.submit();
}, 300);
});
</script>
<?php endif; ?>
<?php if ($call_modal_join_social): ?>
<?php
$avatar_data=array('src'=>$_photo,'width'=>150,'height'=>150);
$user_avatar_src=getTimThumb($avatar_data);
$_SESSION['SL'] = ''; //세션 비우기
?>
<!-- 1. 일반모달 : 소셜인증 후, 가입-->
<div id="modal-join-social" class="modal zoom">
<section class="page center" id="page-social-main">
<header class="bar bar-nav bar-light bg-faded">
<a class="icon icon-left-nav pull-left" role="button" data-history="back"></a>
<button class="btn btn-link btn-nav pull-right p-x-1<?php echo $name && $email?' d-none':'' ?>" data-role="showAgreement" disabled>
다음
</button>
<h1 class="title">
신규가입
</h1>
</header>
<div class="bar bar-standard bar-header-secondary">
<h1 class="title">
<span>
<?php if ($_photo): ?>
<img src="<?php echo $user_avatar_src ?>" alt=<?php echo $name ?>"" class="rounded-circle border" style="width: 2.1875rem">
<?php else: ?>
<img src="<?php echo $g['s'].'/files/avatar/0.svg' ?>" alt=<?php echo $name ?>"" class="rounded-circle border" style="width: 2.1875rem">
<?php endif; ?>
<img src="<?php echo $g['img_core']?>/sns/<?php echo $sns_name ?>.png" alt="<?php echo $sns_name ?>" class="rounded-circle" style="width: 2.1875rem;margin-left: -0.625rem">
</span>
<?php echo $name ?>님
</h1>
</div>
<nav class="bar bar-tab bar-light bg-faded">
<a class="tab-item active" role="button" data-toggle="changeModal" href="#modal-combine">
<small>기존회원 이신가요 ? <span class="pl-2">계정연결하기</span></small>
</a>
</nav>
<main class="content">
<form class="content-padded" id="joinForm" role="form" action="<?php echo $g['s']?>/" method="post" autocomplete="off">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="m" value="member">
<input type="hidden" name="a" value="join">
<input type="hidden" name="sns_access_token" value="<?php echo $sns_access_token?>">
<input type="hidden" name="sns_refresh_token" value="<?php echo $sns_refresh_token?>">
<input type="hidden" name="sns_expires_in" value="<?php echo $sns_expires_in?>">
<input type="hidden" name="snsname" value="<?php echo $sns_name?>">
<input type="hidden" name="snsuid" value="<?php echo $snsuid?>">
<input type="hidden" name="_photo" value="<?php echo $_photo ?>">
<input type="hidden" name="check_email" value="<?php echo $email?1:0 ?>">
<input type="hidden" name="sns_email" value="<?php echo $email?1:0 ?>">
<input type="hidden" name="event" value="">
<div class="form-list floating px-3">
<div class="input-row position-relative<?php echo $email?' active':'' ?>" data-role="input-email">
<label>이메일 주소</label>
<input type="email" name="email" placeholder="이메일 주소" data-role="email" value="<?php echo $email ?>"<?php echo $email?' readonly':'' ?> data-role="email">
<div class="invalid-tooltip" id="email-feedback"></div>
</div>
<?php if ($name): ?>
<input type="hidden" name="name" value="<?php echo $name ?>">
<?php else: ?>
<div class="input-row position-relative">
<label>이름</label>
<input type="text" name="name" placeholder="이름" data-role="name" value="<?php echo $name ?>" <?php echo $name?' readonly':'' ?>>
<div class="invalid-tooltip" id="name-feedback">이름을 입력해주세요.</div>
</div>
<?php endif; ?>
</div>
</form>
<div class="content-padded<?php echo $name && $email?'':' d-none'?>" data-role="agreement">
<p class="pl-2">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-all">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">전체동의 <small class="text-muted">(선택 항목 포함)</small></span>
</label>
</p>
<p class="pl-2">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-policy">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">
이용약관과 개인정보수집안내
<button type="button"
data-target="#page-social-doc"
data-start="#page-social-main"
data-toggle="page"
class="btn btn-secondary btn-sm ml-2">보기</button>
</span>
</label>
</p>
<p class="pl-2">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-event">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">이벤트,서비스 안내 수신 <small class="text-muted">(선택)</small></span>
</label>
</p>
<button type="button" class="btn btn-secondary btn-block mt-4 js-submit" disabled>
확인
</button>
</div>
<div class="content-padded text-muted small" data-role="notice">
<?php echo $sns_name_ko ?> 계정으로 <?php echo $_HS['name'] ?>에 회원가입 합니다.<br>
가입완료 시에 회원님의 <?php echo $sns_name_ko ?> 계정과 자동연결 됩니다.
</div>
</main>
</section>
<section class="page right" id="page-social-doc">
<header class="bar bar-nav bar-light bg-white px-0">
<button class="btn btn-link btn-nav pull-left p-x-1" data-history="back">
<span class="icon icon-left-nav"></span>
</button>
<h1 class="title">서비스 약관</h1>
</header>
<div class="bar bar-standard bar-header-secondary bar-light bg-white p-x-0">
<nav class="nav nav-inline">
<a class="nav-link active" href="#page-social-policy" data-toggle="tab">이용약관</a>
<a class="nav-link" href="#page-social-privacy" data-toggle="tab">개인정보취급방침</a>
</nav>
</div>
<div class="content">
<div class="tab-pane content-padded" id="page-social-policy">
</div>
<div class="tab-pane content-padded d-none" id="page-social-privacy">
</div>
</div>
</section>
</div><!-- /.modal -->
<script>
var modal_join_social = $('#modal-join-social')
var f = document.getElementById('joinForm');
modal_join_social.modal('show')
modal_join_social.on('shown.rc.modal', function () {
})
//회원가입 시 입력항목 유용성 체크
modal_join_social.find('.input-row input').keyup(function(){
var item_email_check = modal_join_social.find('[name=check_email]')
$(this).removeClass('is-invalid')
if ($(this).val().length >= 1) {
$(this).parents('.input-row').addClass('active');
item_email_check.val(1)
} else {
$(this).parents('.input-row').removeClass('active');
item_email_check.val(0)
}
if (item_email_check.val()==1) {
$('[data-role="showAgreement"]').removeAttr('disabled')
} else {
$('[data-role="showAgreement"]').attr('disabled',true)
}
})
// 회원가입 시 '다음'버튼 터치시 유효성 체크 및 동의항목 출력
$('body').on('tap click','[data-role="showAgreement"]:enabled',function(){
var _input = document.querySelector('#modal-join-social [data-role="email"]');
var input = modal_join_social.find('[data-role="email"]')
var msg = modal_join_social.find('#email-feedback')
if (!chkEmailAddr(_input.value)) {
input.focus()
input.addClass('is-invalid')
msg.text('이메일 형식이 아닙니다.')
return false;
}
$(this).addClass('d-none')
modal_join_social.find('[data-role="agreement"]').removeClass('d-none')
modal_join_social.find('.bar-tab').addClass('d-none')
setTimeout(function(){
$.notify({message: '약관동의가 필요합니다.'},{type: 'default'});
}, 500);
});
// 회원가입 시 전체동의 체크박스 처리
modal_join_social.find('#checkbox-all').change(function(e) {
if ($(this).prop('checked')){
$('#checkbox-policy').prop('checked',true)
$('#checkbox-event').prop('checked',true)
$('#joinForm').find('[name="event"]').val(1)
modal_join_social.find('.js-submit').removeClass('btn-secondary').addClass('btn-primary').attr('disabled',false) // 확인 버튼 활성화 처리
} else {
$('#checkbox-policy').prop('checked',false)
$('#checkbox-event').prop('checked',false)
$('#joinForm').find('[name="event"]').val(0)
modal_join_social.find('.js-submit').addClass('btn-secondary').removeClass('btn-primary').attr('disabled',true) // 확인 버튼 비활성화 처리
}
});
// 회원가입 시 약관사항이 체크되어야 회원가입 확인버튼이 활성화 됨
modal_join_social.find('#checkbox-policy').change(function(e) {
if ($(this).prop('checked') && $('#checkbox-policy').prop('checked')){
modal_join_social.find('.js-submit').removeClass('btn-secondary').addClass('btn-primary').attr('disabled',false) // 확인 버튼 활성화 처리
} else {
modal_join_social.find('.js-submit').addClass('btn-secondary').removeClass('btn-primary').attr('disabled',true) // 확인 버튼 비활성화 처리
}
});
// 회원가입 시 아벤트,서비스 안내 수신
modal_join_social.find('#checkbox-event').change(function(e) {
if ($(this).prop('checked') && $('#checkbox-event').prop('checked')){
$('#joinForm').find('[name="event"]').val(1)
} else {
$('#joinForm').find('[name="event"]').val(0)
}
});
// 이용약관 / 개인정보취급방침 문서 자세히 보기
$('#page-social-doc').on('shown.rc.page', function (event) {
var button = $(event.relatedTarget)
var type = button.data('type')
var page = $(this)
setTimeout(function(){
page.find('#page-social-policy').loader({ // 로더 출력
position: "inside"
});
$.post(rooturl+'/?r='+raccount+'&m=site&a=get_postData',{
id : 'policy',
_mtype : 'page'
},function(response){
page.find('#page-social-policy').loader("hide");
var result = $.parseJSON(response);
var policy=result.article;
page.find('#page-social-policy').html(policy);
});
$.post(rooturl+'/?r='+raccount+'&m=site&a=get_postData',{
id : 'privacy',
_mtype : 'page'
},function(response){
var result = $.parseJSON(response);
var privacy=result.article;
page.find('#page-social-privacy').html(privacy);
});
}, 300);
})
$('#page-social-doc').on('hidden.rc.page', function () {
var page = $(this)
page.find('#page-social-policy').html('');
page.find('#page-social-privacy').html('');
})
// 회원가입 실행
modal_join_social.on('tap click','.js-submit',function(){
$(this).attr("disabled",true).text('진행중...');
setTimeout(function(){
getIframeForAction(f);
f.submit();
}, 300);
});
</script>
<?php endif; ?>
<!-- https://github.com/hilios/jQuery.countdown -->
<?php getImport('jquery.countdown','jquery.countdown.min','2.2.0','js')?>
<script>
var modal_join = $('#modal-join') //회원가입 모달
var page_join_main = $('#page-join-main') // 회원가입 시작페이지
var page_join_form = $('#page-join-form') // 이메일 또는 휴대폰 입력폼 페이지
var page_join_code = $('#page-join-code') // 인증번호 입력폼 페이지
var input_phone = page_join_form.find('[data-role="input-phone"]')
var input_email = page_join_form.find('[data-role="input-email"]')
var btn_send = page_join_form.find('[data-act="send_code"]')
function doCountdown(type) {
modal_join.find('[data-'+type+'-countdown]').each(function() {
var $this = $(this), finalDate = $(this).data(type+'-countdown');
$this.html('');
$this.countdown(finalDate, function(event) {
$this.html('['+event.strftime('%M:%S')+']');
});
});
};
$(function () {
// 회원가입 모달이 열리기전에, 액션페이지 초기화
modal_join.on('show.rc.modal', function () {
page_join_main.addClass('page center').removeClass('transition left')
page_join_form.addClass('page right').removeClass('transition center')
page_join_code.addClass('page right').removeClass('transition center')
if ($('#drawer-left').length) {
setTimeout(function(){ $('#drawer-left').drawer('hide'); }, 1000); // 왼쪽 드로워 닫기
}
})
})
//휴대폰(이메일)입력 페이지가 호출될때
page_join_form.on('shown.rc.page', function () {
//각종 상태 초기화
page_join_form.find('input').removeClass('is-invalid is-valid') //에러항목 초기화
page_join_form.find('.input-row').removeClass('active') //상태초기화
page_join_form.find('.bar-tab [data-type="phone"]').removeClass('d-none')
page_join_form.find('.bar-tab [data-type="email"]').addClass('d-none')
input_phone.addClass('d-none')
input_email.removeClass('d-none')
input_phone.find('[name="phone"]').val('')
input_email.find('[name="email"]').val('')
btn_send.attr('data-type','email')
setTimeout(function(){input_email.find('[name="email"]').focus();}, 400);
})
//회원가입 시 입력항목 변경 (휴대폰-이메일 전환)
page_join_form.on('tap','[data-role="change-input"]',function(){
var type = $(this).data('type')
page_join_form.find('[data-role="change-input"]').removeClass('d-none')
page_join_form.find('[data-act="send_code"]').attr('data-type',type)
page_join_form.find('.input-row').removeClass('active') //상태초기화
$(this).addClass('d-none')
page_join_form.find('input').removeClass('is-invalid is-valid') //에러항목 초기화
if (type=='email') {
page_join_form.find('[name="phone"]').val('') // 입력항목 초기화
page_join_form.find('[data-role="input-email"]').removeClass('d-none')
page_join_form.find('[data-role="input-phone"]').addClass('d-none')
setTimeout(function(){ page_join_form.find('[name="email"]').focus() }, 10);
} else {
page_join_form.find('[name="email"]').val('') // 입력항목 초기화
page_join_form.find('[data-role="input-phone"]').removeClass('d-none')
page_join_form.find('[data-role="input-email"]').addClass('d-none')
setTimeout(function(){ page_join_form.find('[name="phone"]').focus() }, 10);
}
});
$('.page').find(".form-list.floating .input-row input").on('keyup', function(event) {
if ($(this).val().length >= 1) {
$(this).parents('.input-row').addClass('active');
} else {
$(this).parents('.input-row').removeClass('active');
}
})
// 상태표시 흔적 초기화
modal_join.find('input').keyup(function(){
$(this).removeClass('is-invalid is-valid')
});
// 본인인증 코드발송
page_join_form.on('tap','[data-act="send_code"]',function(){
var button = $(this)
var act = 'send_code'
var type = button.attr('data-type')
var device = button.attr('data-device')
if (type=='email') {
var input = page_join_form.find('[name="email"]')
var _input = document.querySelector('#page-join-form [name="email"]');
var target = input.val()
var msg = page_join_form.find('[data-role="emailErrorBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 이메일 입력폼 유효성 체크
if (!target) {
input.focus()
input.addClass('is-invalid')
msg.text('이메일을 입력해주세요.')
return false;
}
if (!chkEmailAddr(_input.value)) {
input.focus()
input.addClass('is-invalid')
msg.text('이메일 형식이 아닙니다.')
return false;
}
}
if (type=='phone') {
var input = page_join_form.find('[name="phone"]')
var _input = document.querySelector('#page-join-form [name="phone"]');
var target = input.val()
var msg = page_join_form.find('[data-role="phoneErrorBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 휴대폰번호 입력폼 유효성 체크
if (!target) {
input.focus()
input.addClass('is-invalid')
msg.text('휴대폰 번호를 입력해주세요.')
return false;
}
if (!chkPhoneNumber(_input.value)) {
input.focus()
input.addClass('is-invalid')
msg.text('휴대폰 번호 형식이 아닙니다.')
return false;
}
}
button.attr('disabled',true);
var url = rooturl+'/?r='+raccount+'&m=member&a=join_guestAuth&act='+act+'&type='+type+'&target='+target+'&device='+device
getIframeForAction();
page_join_code.find('[data-role="target"]').text(target)
setTimeout(function() {
frames.__iframe_for_action__.location.href = url;
}, 700);
});
// 인증번호 입력페이지가 호출될때
page_join_code.on('shown.rc.page', function (event) {
//각종 상태 초기화
page_join_code.find('input').val('')
page_join_code.find('input').removeClass('is-invalid is-valid') //에러항목 초기화
page_join_code.find('.input-row').removeClass('active') //상태초기화
page_join_code.find('.bar-tab [data-type="email"]').removeClass('d-none')
page_join_code.find('.bar-tab [data-type="phone"]').addClass('d-none')
setTimeout(function(){page_join_code.find('[name="confirm_phone_code"]').focus();}, 400);
})
// 본인인증 코드확인
page_join_code.on('tap','[data-act="confirm_code"]',function(){
var button = $(this)
var act = 'confirm_code'
var type = button.data('type')
var device = button.data('device')
if (type=='email') {
var input = page_join_code.find('[name="confirm_email_code"]')
var code = input.val()
var msg = page_join_code.find('[data-role="emailCodeBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 인증번호 입력폼 유효성 체크
if (!code) {
input.focus()
input.addClass('is-invalid')
msg.text('인증번호를 입력해주세요.')
return false;
}
}
if (type=='phone') {
var input = page_join_code.find('[name="confirm_phone_code"]')
var code = input.val()
var msg = page_join_code.find('[data-role="phoneCodeBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 인증번호 입력폼 유효성 체크
if (!code) {
input.focus()
input.addClass('is-invalid')
msg.text('인증번호를 입력해주세요.')
return false;
}
}
setTimeout(function() { //가상키보드 내려가는 시간 확보
page_join_code.loader({ //로더 출력
text: "확인중...",
position: "overlay"
});
}, 300);
var url = rooturl+'/?r='+raccount+'&m=member&a=join_guestAuth&act='+act+'&type='+type+'&code='+code+'&device='+device
getIframeForAction();
setTimeout(function() {
frames.__iframe_for_action__.location.href = url;
}, 700);
});
// 탭기능
$(document).on('tap click','[data-toggle="tab"]',function(event){
event.preventDefault();
event.stopPropagation();
var target = $(this).attr('href')
$('[data-toggle="tab"]').removeClass('active')
$(this).addClass('active')
$('.tab-pane').addClass('d-none')
$(target).removeClass('d-none')
});
</script>

View File

@@ -0,0 +1,204 @@
<?php
$g['memberAgree1ForSite'] = $g['path_var'].'site/'.$r.'/member.agree1.txt';
$agree1File = file_exists($g['memberAgree1ForSite']) ? $g['memberAgree1ForSite'] : $g['dir_module'].'var/agree1.txt';
$g['memberAgree2ForSite'] = $g['path_var'].'site/'.$r.'/member.agree2.txt';
$agree2File = file_exists($g['memberAgree2ForSite']) ? $g['memberAgree2ForSite'] : $g['dir_module'].'var/agree2.txt';
$g['memberAgree3ForSite'] = $g['path_var'].'site/'.$r.'/member.agree3.txt';
$agree3File = file_exists($g['memberAgree3ForSite']) ? $g['memberAgree3ForSite'] : $g['dir_module'].'var/agree3.txt';
$g['memberAgree4ForSite'] = $g['path_var'].'site/'.$r.'/member.agree4.txt';
$agree4File = file_exists($g['memberAgree4ForSite']) ? $g['memberAgree4ForSite'] : $g['dir_module'].'var/agree4.txt';
$g['memberAgree5ForSite'] = $g['path_var'].'site/'.$r.'/member.agree5.txt';
$agree5File = file_exists($g['memberAgree5ForSite']) ? $g['memberAgree5ForSite'] : $g['dir_module'].'var/agree5.txt';
?>
<?php if ($d['member']['join_social'] && $skip!='socialLogin'): ?>
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-home pull-left p-x-1" role="button" href="<?php echo RW(0) ?>"></a>
<h1 class="title">회원가입</h1>
</header>
<main class="content bg-faded">
<div class="content-padded mt-3">
<?php if ($d['connect']['use_n']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-login btn-naver" data-connect="naver" role="button">
네이버 계정으로 회원가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_k']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-login btn-kakaotalk" data-connect="kakao" role="button">
카카오 계정으로 회원가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_g']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-login btn-google" data-connect="google" role="button">
구글 계정으로 회원가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_f']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-login btn-facebook" data-connect="facebook" role="button">
페이스북 계정으로 회원가입
</button>
<?php endif; ?>
<?php if ($d['connect']['use_i']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-login btn-instagram" data-connect="instagram" role="button">
인스타그램 계정으로 회원가입
</button>
<?php endif; ?>
<span class="section-divider" style="z-index: 1;"><span>또는</span></span>
<a href="<?php echo $g['s']?>/?r=<?php echo $r ?>&mod=join&skip=socialLogin" class="btn btn-lg btn-secondary btn-block" >
일반 회원가입
</a>
</div>
</main>
<?php else: ?>
<form name="procForm" action="<?php echo $g['s']?>/" method="get">
<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="mod" value="<?php echo $_GET['mod']?>">
<input type="hidden" name="page" value="forms">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-home pull-left p-x-1" role="button" href="<?php echo RW(0) ?>"></a>
<h1 class="title">회원가입</h1>
</header>
<div class="bar bar-standard bar-header-secondary rb-step bg-white">
<ul class="nav nav-inline">
<li class="nav-item active">
<span class="badge badge-pill badge-default">1</span>
<a class="nav-link">약관</a>
</li>
<li class="nav-item">
<span class="badge badge-pill badge-default">2</span>
<a class="nav-link">아이디</a>
</li>
<li class="nav-item">
<span class="badge badge-pill badge-default">3</span>
<a class="nav-link">비밀번호</a>
</li>
<li class="nav-item">
<span class="badge badge-pill badge-default">4</span>
<a class="nav-link">이름</a>
</li>
<li class="nav-item">
<span class="badge badge-pill badge-default">5</span>
<a class="nav-link">이메일</a>
</li>
<li class="nav-item">
<span class="badge badge-pill badge-default">6</span>
<a class="nav-link">닉네임</a>
</li>
<li class="nav-item">
<span class="badge badge-pill badge-default">7</span>
<a class="nav-link">부가정보</a>
</li>
</ul>
</div>
<footer class="bar bar-footer bar-light bg-faded">
<button class="btn btn-secondary btn-block" type="button" disabled="true" id="next">다음단계로</button>
</footer>
<main class="content bg-faded">
<div class="card card-full join-ageement m-b-2 animated fadeIn delay-1">
<div class="card-header clearfix">
<h4 class="card-title h5 pull-xs-left">이용약관</h4>
<a href="#modal-docs" class="btn btn-secondary pull-xs-right" data-toggle="modal" data-title="이용약관" data-type="agreement">
자세히보기
</a>
</div>
<div class="card-block p-t-0">
<textarea class="form-control" rows="4" id="agreement"><?php readfile($agree1File)?></textarea>
<p>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-agreement">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">위 내용을 확인 하였으며 이에 동의함</span>
</label>
</p>
</div>
</div><!-- /.card -->
<div class="card card-full join-ageement m-b-2 animated fadeIn delay-1">
<div class="card-header clearfix">
<h4 class="card-title h5 pull-xs-left">개인정보 취급방침</h4>
<a href="#modal-docs" class="btn btn-secondary pull-xs-right" data-toggle="modal" data-title="개인정보취급방침" data-type="privacy">
자세히보기
</a>
</div>
<div class="card-block p-t-0">
<textarea class="form-control" rows="4" id="privacy"><?php readfile($agree2File)?><?php readfile($agree3File)?><?php readfile($agree4File)?><?php readfile($agree5File)?></textarea>
<p>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="checkbox-privacy">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">위 내용을 확인 하였으며 이에 동의함</span>
</label>
</p>
</div>
</div><!-- /.card -->
</main>
</form>
<?php endif; ?>
<!-- Modal : 자세히보기 -->
<div id="modal-docs" class="modal">
<header class="bar bar-nav bar-light bg-faded">
<a class="icon icon-close pull-right" data-history="back" role="button"></a>
<h1 class="title" data-role="title">문서제목</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button class="btn btn-secondary btn-block" data-history="back">닫기</button>
</div>
<div class="content">
<p class="content-padded" data-role="docs">
</p>
</div>
</div>
<script type="text/javascript">
$('.custom-control-input').attr('checked', false); // 페이지 진입시에 체크박스 초기화
// 모두 체크해야 다음버튼이 활성화 됨
$(".custom-control-input").change(function(e) {
if ($('#checkbox-agreement').prop('checked') && $('#checkbox-privacy').prop('checked')){
$('#next').removeClass('btn-secondary').addClass('btn-primary').attr('disabled',false) // 버튼활성화 처리하고
$('#next').click(function() { $('form[name="procForm"]').submit(); }); // 다음 버튼을 클릭하면 다음단계로 진행
} else {
$('#next').addClass('btn-secondary').removeClass('btn-primary').attr('disabled',true) // 모두 체크되지 않으면 다음버튼을 비활성 처리함
}
});
// 자세히 보기 모달
var agreement_docs = $('#agreement').val().replace(/\n/g, '<br>')
var privacy_docs = $('#privacy').val().replace(/\n/g, '<br>')
$('#modal-docs').on('shown.rc.modal', function (event) {
var button = $(event.relatedTarget)
var type = button.data('type')
$(this).find('.content').scrollTop(0);
if (type == 'agreement') {
$(this).find('[data-role="docs"]').html(agreement_docs)
} else {
$(this).find('[data-role="docs"]').html(privacy_docs)
}
})
</script>

View File

@@ -0,0 +1,852 @@
<!--
로그인 관련 컴포넌트 모음
1. 모달 : modal-login : 로그인 시작모달 (로그인 방식선택)
2. 모달 : modal-combine : 소셜미디어 사용자인증 연결정보 입력 (기존 회원중에 동일한 이메일이 존재하나, 본인인증되지 않은 이메일일 경우)
3. 모달 : modal-pwReset : 비밀번호 초기화
-->
<!-- 일반모달 : 로그인-->
<div id="modal-login" class="modal fast" style="z-index:21">
<div class="page center" id="page-login-main">
<header class="bar bar-nav bar-light bg-faded p-x-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<h1 class="title">로그인</h1>
</header>
<nav class="bar bar-tab bar-light bg-faded">
<a class="tab-item active" role="button" data-toggle="changeModal" href="#modal-join">
<small>처음이신가요? <span class="pl-2">회원가입</span></small>
</a>
</nav>
<main class="content bg-faded">
<div class="content-padded text-xs-center">
<button type="button"class="btn btn-secondary btn-block" data-toggle="page" data-target="#page-login-form" data-start="#page-login-main" data-type="email" >
이메일로 로그인
</button>
<span class="section-divider"><span>또는</span></span>
<button type="button"class="btn btn-outline-primary btn-block" data-toggle="page" data-target="#page-login-form" data-start="#page-login-main" data-type="phone">
휴대폰 번호로 로그인
</button>
<?php if ($d['member']['login_social']): ?>
<?php if ($d['connect']['use_k']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-kakao text-xs-center" data-connect="kakao" role="button">
<span></span>
카카오톡으로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_n']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-naver text-xs-center" data-connect="naver" role="button">
<span></span>
네이버로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_g']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-google text-xs-center" data-connect="google" role="button">
<span class="fa fa-google"></span>
구글로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_f']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-facebook text-xs-center" data-connect="facebook" role="button">
<span class="fa fa-facebook"></span>
페이스북으로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_i']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-instagram text-xs-center" data-connect="instagram" role="button">
<span class="fa fa-instagram"></span>
인스타그램으로 로그인
</button>
<?php endif; ?>
<?php endif; ?>
</div>
</main>
</div><!-- /#page-main -->
<div class="page right" id="page-login-form">
<header class="bar bar-nav bar-light bg-white p-x-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<h1 class="title">로그인</h1>
</header>
<main class="content">
<form id="modal-loginform" action="<?php echo $g['s']?>/" method="post" autocomplete="off">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="a" value="login">
<input type="hidden" name="referer" value="<?php echo $referer ? $referer : $_SERVER['REQUEST_URI']?>">
<input type="hidden" name="form" value="">
<input type="hidden" name="login_cookie" value="checked">
<div class="form-list floating mb-2 px-3">
<div class="input-row position-relative" data-role="input-phone">
<label>휴대폰 번호(숫자만)</label>
<input type="number" name="id" placeholder="휴대폰 번호" autocomplete="off">
<div class="invalid-tooltip" data-role="idErrorBlock"></div>
</div>
<div class="input-row position-relative d-none" data-role="input-email">
<label>이메일 주소</label>
<input type="email" name="id" placeholder="이메일 주소" autocomplete="off">
<div class="invalid-tooltip" data-role="idErrorBlock"></div>
</div>
<div class="input-row position-relative">
<label>비밀번호</label>
<input type="password" placeholder="비밀번호" name="pw" required autocapitalize="off" autocorrect="off">
<div class="invalid-tooltip" data-role="passwordErrorBlock"></div>
</div>
</div>
<div class="content-padded">
<button type="submit" class="btn btn-outline-primary btn-block" data-role="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>
<p class="content-padded text-xs-center mt-3">
<a data-toggle="changeModal" href="#modal-pwReset" class="small muted-link" data-role="pwReset" data-type="email">
비밀번호를 잊으셨나요? <strong>비밀번호 재설정</strong>
</a>
</p>
</main>
</div><!-- /#page-login -->
</div><!-- /.modal -->
<!-- 팝업 : 로그인 안내-->
<div id="popup-login-guide" class="popup zoom">
<div class="popup-content rounded-0">
<div class="content rounded-0" style="min-height: 6.875rem;">
<div class="p-a-1">
<h5 data-role="title"></h5>
<span data-role="subtext" class="f14 text-muted"></span>
<div class="text-xs-right mt-2">
<button type="button" class="btn btn-link text-muted mr-2" data-history="back">취소</button>
<button type="button" class="btn btn-link" data-toggle="login">로그인</button>
</div>
</div>
</div>
</div>
</div>
<?php
$avatar_data=array('src'=>$_photo,'width'=>150,'height'=>150);
$user_avatar_src=getTimThumb($avatar_data);
$_SESSION['SL'] = ''; //세션 비우기
?>
<!-- 1. 일반모달 : 계정통합-->
<div id="modal-combine" class="modal zoom">
<header class="bar bar-nav bar-light bg-faded">
<a class="icon icon-left-nav pull-left" role="button" data-history="back"></a>
<?php if (!$has_sns): ?>
<button class="btn btn-link btn-nav pull-right p-x-1 js-submit">
<span class="not-loading">로그인</span>
<span class="is-loading">처리중 ...</span>
</button>
<?php endif; ?>
<h1 class="title">
계정통합
</h1>
</header>
<div class="bar bar-standard bar-header-secondary">
<h1 class="title">
<span>
<?php if ($_photo): ?>
<img src="<?php echo $user_avatar_src ?>" alt=<?php echo $name ?>"" class="rounded-circle border" style="width: 2.1875rem">
<?php else: ?>
<img src="<?php echo $g['s'].'/files/avatar/0.svg' ?>" alt=<?php echo $name ?>"" class="rounded-circle border" style="width: 2.1875rem">
<?php endif; ?>
<?php if ($sns_name): ?>
<img src="<?php echo $g['img_core']?>/sns/<?php echo $sns_name ?>.png" alt="<?php echo $sns_name ?>" class="rounded-circle" style="width: 2.1875rem;margin-left: -0.625rem">
<?php endif; ?>
</span>
<?php echo $name ?>님
</h1>
</div>
<?php if ($call_modal_join_social): ?>
<nav class="bar bar-tab bar-light bg-faded">
<a class="tab-item active" role="button" data-toggle="changeModal" href="#modal-join-social">
<small>신규계정으로 가입하기</small>
</a>
</nav>
<?php endif; ?>
<main class="content">
<?php if ($has_sns): ?> <!-- 동일한 이메일로 이미 가입된 소셜로그인 전용 계정이 있을 경우 -->
<div class="content-padded">
<div class="alert alert-warning f14" role="alert">
<?php echo $sns_name_ko ?>로 사용자 인증이 되었으나, <strong><?php echo $email ?></strong>로 이미 연결된 <strong><?php echo $has_sns_ko ?></strong> 계정이 확인 되었습니다.
</div>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-<?php echo $has_sns ?> text-xs-center" data-connect="<?php echo $has_sns ?>" role="button">
<?php if ($has_sns=='naver' || $has_sns=='kakao'): ?>
<span></span>
<?php else: ?>
<span class="fa fa-<?php echo $has_sns ?>"></span>
<?php endif; ?>
<span><?php echo $has_sns_ko ?> 으로 로그인</span>
</button>
<div class="mt-3 text-muted small">
<?php echo $has_sns_ko ?>로 로그인 후, <?php echo $sns_name_ko ?>계정을 통합 할수 있습니다.<br>하나의 회원계정으로 다양한 서비스를 이용해 보세요.
</div>
</div>
<?php else: ?>
<form id="modal-combineform" action="<?php echo $g['s']?>/" method="post" autocomplete="off">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="a" value="login">
<input type="hidden" name="sns_access_token" value="<?php echo $sns_access_token?>">
<input type="hidden" name="sns_refresh_token" value="<?php echo $sns_refresh_token?>">
<input type="hidden" name="sns_expires_in" value="<?php echo $sns_expires_in?>">
<input type="hidden" name="snsname" value="<?php echo $sns_name?>">
<input type="hidden" name="snsuid" value="<?php echo $snsuid?>">
<input type="hidden" name="_photo" value="<?php echo $_photo ?>">
<input type="hidden" name="form" value="">
<div class="form-list floating mb-2 px-3">
<div class="input-row position-relative">
<label>휴대폰 번호 또는 이메일</label>
<input type="text" name="id" placeholder="휴대폰 번호 또는 이메일" autocomplete="off" value="<?php echo $email ?>"<?php echo $email?' readonly':'' ?>>
<div class="invalid-tooltip" data-role="idErrorBlock">휴대폰 번호 또는 이메일 입력하세요.</div>
</div>
<div class="input-row position-relative">
<label>비밀번호</label>
<input type="password" placeholder="비밀번호" name="pw" required autocapitalize="off" autocorrect="off">
<div class="invalid-tooltip" data-role="passwordErrorBlock">비밀번호를 입력하세요.</div>
</div>
</div>
<div class="content-padded">
<div class="p-y-1">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="login_cookie" value="checked" checked>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">로그인 상태 유지</span>
</label>
</div>
</div>
</form>
<div class="content-padded text-muted small">
이미, <?php echo $_HS['name'] ?>에 회원계정을 가지고 계시면 로그인을 해주세요.<br>
<?php echo $name ?>님의 <?php echo $sns_name_ko ?> 계정과 통합됩니다. <br>
하나의 회원계정으로 다양한 서비스를 이용해 보세요.
</div>
<p class="content-padded text-xs-center mt-5">
<a href="<?php echo $g['s']?>/?m=member&front=login&page=password_reset" class="small btn btn-outline-info btn-block">비밀번호를 잊으셨나요? <strong class="ml-2">비밀번호 재설정</strong></a>
</p>
<?php endif; ?>
</main>
</div><!-- /.modal -->
<script>
var modal_combine = $('#modal-combine')
var modal_login = $('#modal-login')
var page_login_main = $('#page-login-main')
var page_login_form = $('#page-login-form')
var popup_login_guide = $('#popup-login-guide') // 로그인 가이드
var form_combine = $('#modal-combineform')
var f_combine = document.getElementById('modal-combineform');
<?php if ($call_modal_combine): ?>
modal_combine.modal('show')
<?php endif; ?>
modal_combine.on('show.rc.modal', function () {
modal_combine.find('.input-row').removeClass('active');
modal_combine.find('[name="id"]').val('')
modal_combine.find('[name="pw"]').val('')
})
modal_combine.find(".form-list.floating .input-row input").on('keyup', function() {
$(this).removeClass('is-invalid') // 에러이력 초기화
if ($(this).val().length >= 1) {
$(this).parents('.input-row').addClass('active');
} else {
$(this).parents('.input-row').removeClass('active');
}
})
modal_combine.on('tap click','.js-submit',function(){
form_combine.submit()
});
form_combine.submit( function(event){
event.preventDefault();
event.stopPropagation();
if (f_combine.id.value == '')
{
f_combine.id.classList.add('is-invalid');
f_combine.id.focus();
return false;
}
if (f_combine.pw.value == '')
{
f_combine.pw.classList.add('is-invalid');
f_combine.pw.focus();
return false;
}
modal_combine.find('.js-submit').attr("disabled",true);
setTimeout(function(){
siteLogin(form_combine)
modal_combine.find('.js-submit').attr("disabled",false);
}, 300);
});
//로그인폼 - 실행
page_login_form.find('form').submit( function(e){
e.preventDefault();
e.stopPropagation();
var form = $(this)
siteLogin(form)
});
// 로그인폼 모달이 열릴때,
modal_login.on('show.rc.modal', function () {
// 액션페이지 초기화
page_login_main.addClass('page center').removeClass('transition left')
page_login_form.addClass('page right').removeClass('transition center')
if ($('#drawer-left').length) {
setTimeout(function(){ $('#drawer-left').drawer('hide'); }, 1000); // 왼쪽 드로워 닫기
}
})
// 로그인폼 페이지가 열렸을때
page_login_form.on('shown.rc.page', function (e) {
var button = $(e.relatedTarget)
var type = button.data('type')
var input = page_login_form.find('.input-row input')
//초기화
input.val('') // 아이디/비밀번호 입력항목 초기화
page_login_form.find('.input-row').removeClass('active focus')
page_login_form.find('[data-role="input-email"]').addClass('d-none')
page_login_form.find('[data-role="input-phone"]').removeClass('d-none')
page_login_form.find('[type="number"]').attr({'name':'id','required':'ture'})
page_login_form.find('[type="email"]').removeAttr('name').removeAttr('required')
page_login_form.find('[data-role="pwReset"]').attr('data-type','phone').attr('data-id','')
if (type=="email") {
page_login_form.find('[data-role="input-email"]').removeClass('d-none')
page_login_form.find('[data-role="input-phone"]').addClass('d-none')
page_login_form.find('[type="number"]').removeAttr('name').removeAttr('required')
page_login_form.find('[type="email"]').attr({'name':'id','required':'ture'})
page_login_form.find('[data-role="pwReset"]').attr('data-type','email')
}
setTimeout(function(){
page_login_form.find('[name="id"]').focus()
}, 300);
input.focus(function(){
$(this).parents('.input-row').addClass('focus');
});
input.focusout(function(){
$(this).parents('.input-row').removeClass('focus');
});
})
// modal 로그인이 닫혔을대
page_login_form.on('hidden.rc.page', function () {
$(this).find('input').removeClass('is-invalid') // 에러흔적 초기화
})
page_login_form.find('input').keyup(function() {
$(this).removeClass('is-invalid') //에러 발생후 다시 입력 시도시에 에러 흔적 초기화
});
page_login_form.find('[name="id"]').keyup(function() {
var id = $(this).val()
var btn_pwReset = page_login_form.find('[data-role="pwReset"]')
btn_pwReset.attr('data-id',id)
});
page_login_form.find(".form-list.floating .input-row input").on('keyup', function() {
if ($(this).val().length >= 1) {
$(this).parents('.input-row').addClass('active');
} else {
$(this).parents('.input-row').removeClass('active');
}
})
</script>
<!-- 3. 모달 : modal-pwReset : 비밀번호 초기화 -->
<div class="modal zoom" id="modal-pwReset">
<div class="page center" id="page-pw-main">
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<button class="btn btn-link btn-nav pull-right p-l-1 p-r-2" data-act="send_code" data-type="phone" data-device="mobile" tabindex="2">
다음
</button>
<h1 class="title">비밀번호 재설정</h1>
</header>
<nav class="bar bar-tab bar-light bg-faded">
<a class="tab-item d-none" role="button" data-type="email" data-role="change-input">
<small>또는 이메일로 받기</small>
</a>
<a class="tab-item" role="button" data-type="phone" data-role="change-input">
<small>또는 휴대폰으로 받기</small>
</a>
</nav>
<div class="content">
<div class="content-padded">
<div class="form-list floating px-3 mb-3">
<div class="input-row position-relative d-none" data-role="input-phone">
<label>휴대폰 번호(숫자만)</label>
<input type="number" name="phone" placeholder="휴대폰 번호" data-role="phone" autocomplete="off" tabindex="1">
<div class="invalid-tooltip" data-role="phoneErrorBlock"></div>
</div>
<div class="input-row position-relative" data-role="input-email">
<label>이메일 주소</label>
<input type="email" name="email" placeholder="이메일 주소" data-role="email" autocomplete="off">
<div class="invalid-tooltip" data-role="emailErrorBlock"></div>
</div>
</div>
<ul class="f13 text-muted">
<li>인증번호를 받을 정보를 입력해 주세요.</li>
<li>본인 확인을 통해 비밀번호를 재설정 하실 수 있습니다.</li>
<li>비밀번호는 암호화 저장되어 분실 시 찾아드릴 수 없습니다.</li>
</ul>
</div><!-- /.content-padded -->
</div><!-- /.content -->
</div><!-- /.page -->
<div class="page right" id="page-pw-code">
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<button class="btn btn-link btn-nav pull-right p-l-1 p-r-2" data-type="phone" data-act="confirm_code" data-device="mobile" data-role="confirm_code">
확인
</button>
<button class="btn btn-link btn-nav pull-right p-l-1 p-r-2 d-none" data-type="phone" data-act="change_pw" data-device="mobile" data-role="change_pw">
변경
</button>
<h1 class="title">비밀번호 재설정</h1>
</header>
<main class="content">
<div class="content-padded" data-role="confirm_code">
<div class="form-list floating px-3">
<div class="input-row position-relative" data-role="input-phone">
<label>인증번호 (6자리)</label>
<input type="number" name="confirm_phone_code" data-role="confirm_phone_code" placeholder="인증번호" autocomplete="off">
<div class="invalid-tooltip" data-role="phoneCodeBlock"></div>
</div>
</div>
<small class="form-text text-success px-3">
<span data-role="target"></span> 로 인증번호를 발송했습니다.<br>
6자리 인증번호를 입력해 주세요. (유효시간 <?php echo $d['member']['join_keyexpire'] ?>분) <span data-role="countdown" data-email-countdown="">[00:00]</span><br>
인증번호가 오지 않으면 입력정보가 정확한지 확인하여 주세요.
</small>
</div><!-- /.content-padded -->
<div class="content-padded d-none" data-role="change_pw">
<form id="pwResetForm" role="form" action="<?php echo $g['s']?>/" method="post" autocomplete="off">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="m" value="member">
<input type="hidden" name="a" value="pw_reset">
<input type="hidden" name="act" value="change_pw">
<input type="hidden" name="device" value="mobile">
<input type="hidden" name="code" value="">
<input type="hidden" name="target" value="">
<input type="hidden" name="type" value="">
<input type="hidden" name="check_pw1" value="0">
<input type="hidden" name="check_pw2" value="0">
<div class="form-list floating px-3">
<div class="input-row position-relative" data-role="input-phone">
<label>비밀번호(6~16자리)</label>
<input type="password" name="pw1" placeholder="비밀번호" autocomplete="off" data-role="pw1">
<div class="invalid-tooltip" data-role="pw1CodeBlock" id="pw1-feedback"></div>
</div>
<div class="input-row position-relative" data-role="input-phone">
<label>비밀번호 재입력</label>
<input type="password" name="pw2" placeholder="비밀번호 재입력" autocomplete="off" data-role="pw2">
<div class="invalid-tooltip" data-role="pw2CodeBlock" id="pw2-feedback"></div>
</div>
</div>
</form>
</div><!-- /.content-padded -->
</main>
</div><!-- /.page -->
</div><!-- /.modal -->
<script>
var modal_pwReset = $('#modal-pwReset')
var page_pw_main = $('#page-pw-main')
var page_pw_code = $('#page-pw-code')
function doPwCountdown(type) {
page_pw_code.find('[data-'+type+'-countdown]').each(function() {
var $this = $(this), finalDate = $(this).data(type+'-countdown');
$this.html('');
$this.countdown(finalDate, function(event) {
$this.html('['+event.strftime('%M:%S')+']');
});
});
};
function doPwChangeInput(type,id) {
var page = $('#page-pw-main')
page.find('[data-act="send_code"]').attr('data-type',type)
page.find('.input-row').removeClass('active') //상태초기화
page.find('input').removeClass('is-invalid is-valid') //에러항목 초기화
if (type=='email') {
page.find('[name="phone"]').val('') // 입력항목 초기화
page.find('[data-role="input-email"]').removeClass('d-none')
if (id) page.find('[data-role="input-email"]').addClass('active')
page.find('[data-role="input-phone"]').addClass('d-none')
page.find('.bar-tab [data-type="phone"]').removeClass('d-none')
page.find('.bar-tab [data-type="email"]').addClass('d-none')
setTimeout(function(){ page.find('[name="email"]').focus().val(id) }, 500);
} else {
page.find('[name="email"]').val('') // 입력항목 초기화
page.find('[data-role="input-phone"]').removeClass('d-none')
if (id) page.find('[data-role="input-phone"]').addClass('active')
page.find('[data-role="input-email"]').addClass('d-none')
page.find('.bar-tab [data-type="email"]').removeClass('d-none')
page.find('.bar-tab [data-type="phone"]').addClass('d-none')
setTimeout(function(){ page.find('[name="phone"]').focus().val(id) }, 500);
}
};
function pwResetCheck(obj,layer) {
var f = document.getElementById('pwResetForm');
if (!obj.value)
{
obj.classList.remove('is-invalid');
getId(layer).innerHTML = '';
}
else
{
if (obj.name == 'pw1') {
f.classList.remove('was-validated');
if (f.pw1.value.length < 6 || f.pw1.value.length > 16) {
f.check_pw1.value = '0';
f.classList.remove('was-validated');
obj.classList.add('is-invalid');
obj.classList.remove('is-valid');
getId(layer).innerHTML = '영문/숫자 2개 이상의 조합으로 최소 6~16자로 입력하셔야 합니다.';
obj.focus();
return false;
}
if (getTypeCheck(f.pw1.value,"abcdefghijklmnopqrstuvwxyz")) {
getId(layer).innerHTML = '비밀번호가 영문만으로 입력되었습니다.\n영문/숫자 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
obj.focus();
return false;
}
if (getTypeCheck(f.pw1.value,"1234567890")) {
getId(layer).innerHTML = '비밀번호가 숫자만으로 입력되었습니다.\n영문/숫자 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
obj.focus();
return false;
}
f.pw1.classList.add('is-valid');
f.pw1.classList.remove('is-invalid');
getId(layer).innerHTML = '';
f.check_pw1.value = '1';
}
if (obj.name == 'pw2') {
f.classList.remove('was-validated');
obj.classList.add('is-invalid');
obj.classList.remove('is-valid');
if (f.pw1.value != f.pw2.value)
{
getId(layer).innerHTML = '비밀번호가 일치하지 않습니다.';
f.classList.remove('was-validated');
obj.focus();
f.check_pw2.value = '0';
return false;
}
f.pw2.classList.add('is-valid');
f.pw2.classList.remove('is-invalid');
getId(layer).innerHTML = '';
f.check_pw2.value = '1';
}
}
}
$(function () {
//비밀번호 유용성 체크
page_pw_code.find('.input-row input').keyup(function(){
var item = $(this).data('role')
var item_pw_check = page_pw_code.find('[name=check_pw]').val()
if (item =='pw1') {
element = document.querySelector('[name="pw1"]');
pwResetCheck(element,'pw1-feedback')
}
if (item =='pw2') {
element = document.querySelector('[name="pw2"]');
pwResetCheck(element,'pw2-feedback')
}
});
// 비밀번호 초기화 모달이 열리기전에, 액션페이지 초기화
modal_pwReset.on('show.rc.modal', function (event) {
var button = $(event.relatedTarget)
var type = button.attr('data-type')?button.attr('data-type'):'email';
var id = button.attr('data-id')
doPwChangeInput(type,id)
page_pw_main.addClass('page center').removeClass('transition left')
page_pw_code.addClass('page right').removeClass('transition center')
})
// 비밀번호 초기화 모달이 열린후에..
modal_pwReset.on('shown.rc.modal', function(event) {
var input_phone = page_pw_main.find('[data-role="input-phone"]')
var input_email = page_pw_main.find('[data-role="input-email"]')
var btn_send = page_pw_main.find('[data-act="send_code"]')
//각종 상태 초기화
page_pw_main.find('input').removeClass('is-invalid is-valid') //에러항목 초기화
input_phone.find('[name="phone"]').val('')
input_email.find('[name="email"]').val('')
})
page_pw_code.on('show.rc.page', function (event) {
page_pw_code.find('[type="number"]').val('')
page_pw_code.find('[name="pw1"]').val('')
page_pw_code.find('[name="pw2"]').val('')
page_pw_code.find('[data-role="change_pw"]').addClass('d-none')
page_pw_code.find('[data-role="confirm_code"]').removeClass('d-none')
})
})
//비번초기화시 입력항목 변경 (휴대폰-이메일 전환)
page_pw_main.on('tap','[data-role="change-input"]',function(){
var type = $(this).data('type')
doPwChangeInput(type)
});
// 본인인증 코드발송
page_pw_main.on('tap','[data-act="send_code"]',function(){
var button = $(this)
var act = 'send_code'
var type = button.attr('data-type')
var device = button.attr('data-device')
if (type=='email') {
var input = page_pw_main.find('[name="email"]')
var _input = document.querySelector('#page-pw-main [name="email"]');
var target = input.val()
var msg = page_pw_main.find('[data-role="emailErrorBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 이메일 입력폼 유효성 체크
if (!target) {
input.focus()
input.addClass('is-invalid')
msg.text('이메일을 입력해주세요.')
return false;
}
if (!chkEmailAddr(_input.value)) {
input.focus()
input.addClass('is-invalid')
msg.text('이메일 형식이 아닙니다.')
return false;
}
}
if (type=='phone') {
var input = page_pw_main.find('[name="phone"]')
var _input = document.querySelector('#page-pw-main [name="phone"]');
var target = input.val()
var msg = page_pw_main.find('[data-role="phoneErrorBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 휴대폰번호 입력폼 유효성 체크
if (!target) {
input.focus()
input.addClass('is-invalid')
msg.text('휴대폰 번호를 입력해주세요.')
return false;
}
if (!chkPhoneNumber(_input.value)) {
input.focus()
input.addClass('is-invalid')
msg.text('휴대폰 번호 형식이 아닙니다.')
return false;
}
}
setTimeout(function() { //가상키보드 내려가는 시간 확보
page_pw_main.loader({ //로더 출력
text: "확인중...",
position: "overlay"
});
}, 300);
var url = rooturl+'/?r='+raccount+'&m=member&a=pw_reset&act='+act+'&type='+type+'&target='+target+'&device='+device
getIframeForAction();
page_pw_code.find('[data-act=confirm_code]').attr('data-type',type);
page_pw_code.find('[type=number]').attr('data-role','confirm_'+type+'_code').attr('name','confirm_'+type+'_code');
page_pw_code.find('.invalid-tooltip').attr('data-role',type+'CodeBlock');
page_pw_code.find('[data-role=countdown]').text('');
page_pw_code.find('[data-role="target"]').text(target)
setTimeout(function() {
frames.__iframe_for_action__.location.href = url;
}, 700);
});
// 본인인증 코드확인
page_pw_code.on('tap','[data-act="confirm_code"]',function(){
var button = $(this)
var act = 'confirm_code'
var type = button.data('type')
var device = button.data('device')
if (type=='email') {
var input = page_pw_code.find('[name="confirm_email_code"]')
var code = input.val()
var msg = page_pw_code.find('[data-role="emailCodeBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 인증번호 입력폼 유효성 체크
if (!code) {
input.focus()
input.addClass('is-invalid')
msg.text('인증번호를 입력해주세요.')
return false;
}
}
if (type=='phone') {
var input = page_pw_code.find('[name="confirm_phone_code"]')
var code = input.val()
var msg = page_pw_code.find('[data-role="phoneCodeBlock"]')
// 상태초기화
input.removeClass('is-invalid is-valid')
// 인증번호 입력폼 유효성 체크
if (!code) {
input.focus()
input.addClass('is-invalid')
msg.text('인증번호를 입력해주세요.')
return false;
}
}
setTimeout(function() { //가상키보드 내려가는 시간 확보
page_pw_code.loader({ //로더 출력
text: "확인중...",
position: "overlay"
});
}, 300);
var url = rooturl+'/?r='+raccount+'&m=member&a=pw_reset&act='+act+'&type='+type+'&code='+code+'&device='+device
getIframeForAction();
setTimeout(function() {
frames.__iframe_for_action__.location.href = url;
}, 700);
});
// 비밀번호 변경
page_pw_code.on('tap','[data-act="change_pw"]',function(){
$('#pwResetForm').submit()
});
$('#pwResetForm').submit( function(e){
e.preventDefault();
e.stopPropagation();
var form = $(this)
var formID = form.attr('id')
var f = document.getElementById(formID);
if (f.check_pw1.value == '0' || f.check_pw2.value == '0') {
e.preventDefault();
e.stopPropagation();
}
page_pw_code.loader({ //로더 출력
text: "처리중...",
position: "overlay"
});
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);
}
);
modal_pwReset.find(".form-list.floating .input-row input").on('keyup', function() {
$(this).removeClass('is-invalid') // 에러이력 초기화
if ($(this).val().length >= 1) {
$(this).parents('.input-row').addClass('active');
} else {
$(this).parents('.input-row').removeClass('active');
}
})
popup_login_guide.on('click','[data-toggle="login"]',function(){
history.back();
setTimeout(function(){
modal_login.modal();
}, 200);
});
</script>

View File

@@ -0,0 +1,114 @@
<header class="bar bar-nav bar-light bg-faded">
<a class="icon icon-home pull-left" role="button" href="<?php echo RW(0) ?>"></a>
<h1 class="title">로그인</h1>
</header>
<main class="content">
<form id="page-loginform" action="<?php echo $g['s']?>/" method="post" novalidate>
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="a" value="login">
<input type="hidden" name="referer" value="<?php echo $referer ? $referer : $_SERVER['HTTP_REFERER']?>">
<input type="hidden" name="form" value="">
<div class="card">
<div class="form-list">
<span class="position-relative d-block">
<input type="text" placeholder="아이디" name="id" required autocapitalize="off" autocorrect="off">
<div class="invalid-tooltip" data-role="idErrorBlock"></div>
</span>
<span class="position-relative d-block">
<input type="password" placeholder="패스워드" name="pw" required autocapitalize="off" autocorrect="off">
<div class="invalid-tooltip" data-role="passwordErrorBlock"></div>
</span>
</div>
</div>
<div class="content-padded">
<div class="p-y-1">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="login_cookie" value="checked" checked>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">로그인 상태 유지</span>
</label>
</div>
<button type="submit" class="btn btn-outline-primary btn-lg 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>
<p class="m-t-2 content-padded d-flex justify-content-between">
<a class="muted-link" href="<?php echo RW('mod=join') ?>">처음오셨나요? 가입하기</a>
<a href="<?php echo $g['s']?>/?m=member&front=login&page=password_reset" class="muted-link">비밀번호를 잊으셨나요?</a>
</p>
</form>
<?php if ($d['member']['login_social']): ?>
<span class="section-divider"><span>또는</span></span>
<div class="content-padded mt-3">
<?php if ($d['connect']['use_n']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-naver text-xs-center" data-connect="naver" role="button">
<span></span>
네이버로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_k']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-kakao text-xs-center" data-connect="kakao" role="button">
<span></span>
카카오톡으로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_g']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-google text-xs-center" data-connect="google" role="button">
<span class="fa fa-google"></span>
구글로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_f']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-facebook text-xs-center" data-connect="facebook" role="button">
<span class="fa fa-facebook"></span>
페이스북으로 로그인
</button>
<?php endif; ?>
<?php if ($d['connect']['use_i']): ?>
<button type="button" class="btn btn-lg btn-secondary btn-block btn-social btn-instagram text-xs-center" data-connect="instagram" role="button">
<span class="fa fa-instagram"></span>
인스타그램으로 로그인
</button>
<?php endif; ?>
</div>
<?php endif; ?>
</main>
<script type="text/javascript">
$(function () {
$('#page-loginform').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('input').removeClass('is-invalid') //에러이력 초기화
setTimeout(function(){
getIframeForAction(f);
f.submit();
}, 500);
});
// page 로그인 관련
$("#page-loginform").find('input').keyup(function() {
$(this).removeClass('is-invalid') //에러 흔적 초기화
});
})
</script>

View File

@@ -0,0 +1,139 @@
<header class="bar bar-nav bar-light bg-faded">
<a class="icon icon-left-nav pull-left" role="button" data-history="back"></a>
<h1 class="title">임시 비밀번호 요청</h1>
</header>
<?php $id_or_email='회원가입시 등록한 '.($d['member']['login_emailid']?'아이디':'이메일').'을 입력해주세요.'?>
<div class="content">
<form id="request_tmpPW" class="content-padded" action="<?php echo $g['s']?>/" method="post" target="_action_frame_<?php echo $m?>">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="m" value="<?php echo $m?>">
<input type="hidden" name="a" value="pw_tmp">
<div id="notice"></div>
<div class="">
<div class="card-body">
<div class="form-group">
<label for="join_email" class="control-label">
등록된 이메일을 입력해 주세요.
</label>
<input type="email" id="email_field" class="form-control" name="email" placeholder="이메일을 입력해주세요." required autofocus value="<?php echo $my['email'] ?>">
</div>
<div class="div">
<button type="submit" class="btn btn-primary btn-block">임시 비밀번호 요청</button>
<?php if (!$my['email']): ?>
<button type="button" class="btn btn-secondary btn-block" data-target="#findEmail" data-toggle="modal">이메일 찾기</button>
<?php endif; ?>
</div>
</div><!-- /.card-boy -->
<div class="rb-complete m-t-1">
<p>
몇분이 지나도 메일수신이 안되었을 경우, 스펨 메일함을 확인해 보시고 기타사항에 대해서는 관리자에게 문의해주세요.
<mark>임시 비밀번호로 로그인한 후, 비밀번호를 변경해주세요.</mark>
</p>
<?php if ($my['uid']): ?>
<a href="#" class="btn btn-light btn-block">비밀번호 변경 페이지로 돌아가기</a>
<?php else: ?>
<a href="#modal-login" data-toggle="modal" class="btn btn-secondary btn-block">로그인 하기</a>
<?php endif; ?>
</div>
</form>
</div>
<!-- 이메일 찾기 -->
<!-- Modal -->
<div id="findEmail" class="modal">
<header class="bar bar-nav bar-light bg-faded">
<a class="icon icon-close pull-right" data-dismiss="modal" role="button"></a>
<h1 class="title"><i class="fa fa-search"></i> 이메일 찾기</h1>
</header>
<div class="content bg-faded">
<form name="procForm1" action="<?php echo $g['s']?>/" method="post" target="_action_frame_<?php echo $m?>">
<input type="hidden" name="r" value="<?php echo $r?>" />
<input type="hidden" name="m" value="<?php echo $m?>" />
<input type="hidden" name="a" value="email_search" />
<p class="f12 mb-3 content-padded">
회원가입시 등록한 이름(실명)과 아이디를 입력하시면 이메일을 확인하실 수 있습니다.
</p>
<div class="card">
<div class="form-list">
<input type="text" name="name" id="join_name" placeholder="등록된 이름을 입력 해주세요." required>
<input type="text" name="id" id="join_id" placeholder="등록된 <?php echo $d['member']['login_emailid']?'아이디':'이메일'?>를 입력 해주세요." required>
</div>
</div>
<div class="content-padded">
<button type="submit" class="btn btn-secondary btn-block">찾기</button>
</div>
</form>
</div>
</div>
<script type="text/javascript">
$('#findEmail').on('shown.bs.modal', function () {
$('#join_name').val('').trigger('focus')
$('#join_id').val('')
})
function pwCheck(f)
{
if (f.new_id.value == '')
{
alert('<?php echo $d['member']['login_emailid']?'이메일을':'아이디를'?> 입력해 주세요. ');
f.new_id.focus();
return false;
}
if (f.id_auth.value == '2')
{
if (f.new_pw_a.value == '')
{
alert('답변을 입력해 주세요. ');
f.new_pw_a.focus();
return false;
}
}
if (f.id_auth.value == '3')
{
if (f.new_pw1.value == '')
{
alert('새 패스워드를 입력해 주세요.');
f.new_pw1.focus();
return false;
}
if (f.new_pw2.value == '')
{
alert('새 패스워드를 한번더 입력해 주세요.');
f.new_pw2.focus();
return false;
}
if (f.new_pw1.value != f.new_pw2.value)
{
alert('새 패스워드가 일치하지 않습니다.');
f.new_pw1.focus();
return false;
}
alert('입력하신 패스워드로 재등록 되었습니다.');
}
}
</script>

View File

@@ -0,0 +1 @@
알씨 심플형

View File

@@ -0,0 +1,11 @@
.table-view-cell p {
font-size: .875rem;
color: #818a91;
line-height: 1.3;
max-height: 2.1rem;
overflow: hidden;
}
.table-view-cell .badge {
font-weight: normal;
}

View File

@@ -0,0 +1,185 @@
<!-- 사이트 페이지 -->
<section class="page right" id="page-noti-list">
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon pull-left material-icons px-3" role="button" data-history="back">arrow_back</a>
<h1 class="title title-left" data-history="back">
알림
<?php if ($my['uid']): ?>
<span class="badge badge-danger badge-inverted ml-2" data-role="noti-status"><?php echo $my['num_notice']==0?'':$my['num_notice']?></span>
<?php endif; ?>
</h1>
</header>
<div class="content bg-white">
<?php if ($my['uid']): ?>
<ul class="table-view table-view-full border-top-0 my-0 bg-white" data-role="noti-list">
<!-- 드러어가 열릴때, 여기에 알림정보를 받아옴 -->
</ul>
<?php else: ?>
<p class="content-padded">
<small class="text-muted">
내 알림을 확인하기 위해서는 로그인이 필요합니다.
</small>
<button type="button" class="btn btn-secondary btn-block mt-3" data-toggle="modal" data-target="#modal-login">
로그인 하기
</button>
</p>
<?php endif; ?>
</div>
</section>
<!-- Sheet -->
<div id="sheet-noti" class="sheet">
<div class="card card-full">
<div class="card-header bg-primary px-2 clearfix rounded-0" data-history="back" style="padding-bottom: 0.5rem;">
<div class="pull-left">
<span data-role="micon" style="vertical-align: middle;"></span>
<span data-role="title" class="ml-1" style="vertical-align: middle;"></span>
</div>
<div class="pull-right">
<a class="icon icon-close" role="button"></a>
</div>
</div>
<div class="card-body">
<div class="content-padded">
<div class="media">
<span class="media-left">
<img class="img-circle" src="" style="width:3.75rem" data-role="avatar">
</span>
<div class="media-body">
<span data-role="message"></span>
<div>
<span class="badge badge-default badge-inverted" data-role="from"></span>
<span class="badge badge-default badge-inverted"><i class="fa fa-clock-o" aria-hidden="true"></i> </span>
<span class="badge badge-default badge-inverted" data-role="d_regis"></span>
</div>
</div>
</div>
</div>
</div><!-- /.card-body -->
<div class="card-footer bg-white px-2" data-role="has-referer">
<a href="" class="btn btn-outline-primary btn-block" data-role="referer">
<span data-role="acton-label">내용확인</span>
</a>
</div><!-- /.card-footer -->
</div><!-- /.card -->
</div> <!-- /.sheet -->
<script>
var page_noti_list = $('#page-noti-list');
var sheet_noti = $('#sheet-noti'); // 알림보기 시트
$(function() {
page_noti_list.on('show.rc.page', function (event) {
var page = $(this);
if (memberid) {
var page_content = page_noti_list.find('.content')
$.get(rooturl+'/?r='+raccount+'&m=notification&a=get_notiList',{
sort: noti_sort,
orderby: noti_orderby,
recnum: noti_recnum,
callMod: ''
},function(response){
var result = $.parseJSON(response);
var num=result.num;
var tpg=result.tpg;
var content=result.content;
page.find('[data-role="noti-list"]').html(content);
page.find('[data-plugin="timeago"]').timeago();
bar.find('[data-role="noti-status"]').text(num);
page.find('[data-role="noti-status"]').text(num);
page.find('[data-role="noti-list"]').attr('data-totalPage',tpg);
moreNOTI(page_content,tpg)
});
}
});
page_noti_list.on('hidden.rc.page', function (event) {
var page = $(this);
if (memberid) {
page.find('.content').infinitescroll('destroy') //무한스크롤 리셋
page.append('<div class="content bg-white"><ul class="table-view table-view-full my-0 bg-white border-top-0" data-role="noti-list"></ul></div>');
}
});
sheet_noti.on('show.rc.sheet', function (event) {
var item = $(event.relatedTarget)
var from = item.data('from')
var avatar = item.data('avatar')
var uid = item.data('uid')
var micon = item.data('icon')
var cell = item.closest('.table-view-cell')
cell.attr('tabindex','-1').focus().removeClass('table-view-active'); // 모달을 호출한 아이템을 포커싱 처리함 (css로 배경색 적용)
sheet_noti.find('[data-role="from"]').text(from)
sheet_noti.find('[data-role="avatar"]').attr('src',avatar)
sheet_noti.find('[data-role="micon"]').addClass(micon)
$.post(rooturl+'/?r='+raccount+'&m=notification&a=get_notiData',{
uid : uid
},function(response){
var result = $.parseJSON(response);
var referer=result.referer;
var button=result.button;
var d_regis=result.d_regis;
var title=result.title;
var message=result.message;
sheet_noti.find('[data-role="title"]').text(title)
sheet_noti.find('[data-role="message"]').html(message)
sheet_noti.find('[data-role="d_regis"]').text(d_regis)
if (referer) {
sheet_noti.find('[data-role="referer"]').attr('href',referer)
sheet_noti.find('[data-role="not-referer"]').addClass('d-none')
sheet_noti.find('[data-role="has-referer"]').removeClass('d-none')
sheet_noti.find('[data-role="acton-label"]').text(button?button:'내용확인')
}
else {
sheet_noti.find('[data-role="not-referer"]').removeClass('d-none')
sheet_noti.find('[data-role="has-referer"]').addClass('d-none')
}
});
})
sheet_noti.on('hidden.rc.sheet', function (event) {
//내용 초기화
var item = $(event.relatedTarget)
var noti_badge = $('[data-role="noti-status"]')
sheet_noti.find('[data-role="from"]').html('')
sheet_noti.find('[data-role="referer"]').removeClass('d-none')
sheet_noti.find('[data-role="micon"]').removeAttr('class')
sheet_noti.find('[data-role="acton-label"]').text('')
sheet_noti.find('[data-role="message"]').html('')
sheet_noti.find('[data-role="d_regis"]').text('')
sheet_noti.find('[data-role="not-referer"]').removeClass('d-none')
sheet_noti.find('[data-role="has-referer"]').addClass('d-none')
var noti_badge = $('[data-role="noti-status"]')
$.post(rooturl+'/?r='+raccount+'&m=notification&a=get_notiNum_ajax',function(response){
var result = $.parseJSON(response);
var noti_badge_num=result.num;
noti_badge.text(noti_badge_num)
});
})
});
</script>

View File

@@ -0,0 +1,117 @@
<?php
$sort = $sort ? $sort : 'uid';
$orderby= $orderby ? $orderby : 'desc';
$recnum = $recnum && $recnum < 200 ? $recnum : 20;
$sqlque = 'mbruid='.$my['uid'];
if ($category) $sqlque .= " and category='".$category."'";
$RCD = getDbArray($table['s_notice'],$sqlque,'*',$sort,$orderby,$recnum,$p);
$NUM = getDbRows($table['s_notice'],$sqlque);
$TPG = getTotalPage($NUM,$recnum);
$PageLink = './noti?';
if ($type) $PageLink .= 'type='.$type.'&amp;';
?>
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<a class="icon icon-gear pull-right p-x-1" role="button" href="<?php echo $g['s'] ?>/?r=<?php echo $r ?>&mod=settings&page=noti"></a>
<h1 class="title" data-location="reload">내 알림함</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-white">
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=notification&amp;a=multi_delete_user&amp;deltype=delete_all" class="btn btn-secondary btn-block" onclick="return hrefCheck(this,true,'정말로 전체 알림 삭제를 하시겠습니까?');">
<i class="fa fa-trash-o fa-fw" aria-hidden="true"></i>
알림함 비우기
</a>
</div>
<main class="content bg-faded">
<ul class="table-view table-view-full bg-white mb-0 animated fadeIn delay-1" style="margin-top: -.0625rem">
<?php $_i=0;while($R=db_fetch_array($RCD)):?>
<?php $SM1=$R['mbruid']?getDbData($table['s_mbrdata'],'memberuid='.$R['mbruid'],'name,nic'):array()?>
<?php $SM2=$R['frommbr']?getDbData($table['s_mbrdata'],'memberuid='.$R['frommbr'],'memberuid,name,nic'):array()?>
<?php $MD = getDbData($table['s_module'],"id='".$R['frommodule']."'",'icon'); ?>
<?php $avatar =$R['frommbr']?getAvatarSrc($SM2['memberuid'],'120'):'/_core/images/touch/homescreen-192x192.png' ?>
<li class="table-view-cell<?php echo $R['d_read']?'':' table-view-active' ?>">
<a data-toggle="sheet" href="#sheet-noti"
data-from="<?php echo $SM2[$_HS['nametype']] ?>"
data-icon="<?php echo $MD['icon'] ?>"
data-avatar="<?php echo $avatar ?>"
data-uid="<?php echo $R["uid"] ?>">
<span class="media-object pull-left position-relative">
<img class="img-circle" src="<?php echo $avatar ?>" style="width:52px">
<?php if ($R['frommbr']): ?>
<i class="<?php echo $MD['icon'] ?> bg-primary position-absolute"></i>
<?php endif; ?>
</span>
<div class="media-body">
<span class="d-flex justify-content-between">
<span><?php echo $R['title'] ?> <span class="badge"><?php echo $R['frommbr']?$SM2[$_HS['nametype']]:'' ?></span></span>
<span style="margin-top: -.2rem">
<?php echo getNew($R['d_regis'],24)?' <span class="rb-new ml-1"></span>':'' ?>
<time class="small badge badge-default badge-inverted" data-plugin="timeago" datetime="<?php echo getDateFormat($R['d_regis'],'c') ?>"></time>
</span>
</span>
<p><?php echo getStrCut($R['message'],150,'')?> </p>
</div>
</a>
</li>
<?php $_i++;endwhile?>
<?php if(!$NUM):?>
<li class="table-view-cell text-xs-center p-5 text-muted d-flex align-items-center justify-content-center bg-faded" style="height: calc(100vh - 10.5rem);">
내역이 없습니다.
</li>
<?php endif?>
</ul>
</main>
<script>
// 더보기
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var totalPage = '<?php echo $TPG?>';
var totalNUM = '<?php echo $NUM?>';
var sort = '<?php echo $sort?>';
var orderby = '<?php echo $orderby?>';
var recnum = '<?php echo $recnum?>';
$('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.get(rooturl+'/?r='+raccount+'&m=notification&a=get_moreList',{
page : nextPage,
sort: sort,
orderby: orderby,
recnum: recnum,
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var content = result.content;
if(error) alert(result.error_comment);
callback({ content: content });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
$('[data-plugin="timeago"]').timeago();
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : $('.table-view'),
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
</script>

View File

@@ -0,0 +1,120 @@
var sheet_member_profile = $('#sheet-member-profile');
sheet_member_profile.on('show.rc.sheet', function (event) {
var button = $(event.relatedTarget);
var sheet = $(this);
var nic = button.attr('data-nic');
var mbruid = button.attr('data-mbruid');
var avatar = button.attr('data-avatar');
sheet.find('[data-role="avatar"]').attr('src',avatar);
sheet.find('[data-toggle="follow"]').attr('data-mbruid',mbruid);
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profileDataSimple',{
mbruid : mbruid
},function(response){
var result = $.parseJSON(response);
var id=result.id;
var nic=result.nic;
var bio=result.bio;
var num_follower=result.num_follower;
var num_post=result.num_post;
var num_list=result.num_list;
var _avatar=result.avatar;
var isFollowing=result.isFollowing;
sheet.find('[data-role="bio"]').text(bio);
sheet.find('[data-role="num_follower"]').text(num_follower);
sheet.find('[data-role="num_post"]').text(num_post);
sheet.find('[data-role="num_list"]').text(num_list);
if (!avatar) sheet.find('[data-role="avatar"]').attr('src',_avatar);
sheet.find('[data-toggle="profile"]').attr('data-url','/@'+id).attr('data-mbruid',mbruid).attr('data-nic',nic);
if (memberid==id) {
sheet.find('[data-role="follower"]').addClass('d-none');
sheet.find('[data-role="ismy"]').text('(나)');
} else {
sheet.find('[data-role="follower"]').removeClass('d-none');
sheet.find('[data-role="ismy"]').text('');
}
if (isFollowing) {
sheet.find('[data-role="isfollowing"]').removeClass('d-none');
sheet.find('[data-toggle="follow"]').addClass('d-none');
} else {
sheet.find('[data-role="isfollowing"]').addClass('d-none');
sheet.find('[data-toggle="follow"]').removeClass('d-none');
}
});
}, 100);
})
sheet_member_profile.on('hidden.rc.sheet', function (event) {
var sheet = $(this);
sheet.find('[data-role="nic"]').text('');
sheet.find('[data-role="avatar"]').removeAttr('src');
sheet.find('[data-role="bio"]').text('');
sheet.find('[data-toggle="profile"]').removeAttr('data-url').removeAttr('data-mbruid').removeAttr('data-nic');
})
$(document).on('click','[data-toggle="profile"]',function(){
var button = $(this);
var mbruid = button.attr('data-mbruid');
var target = button.attr('data-target');
var url = button.attr('data-url');
var nic = button.attr('data-nic');
var modal_id = 'modal-member-profile-'+mbruid;
var modal = $('#'+modal_id);
var zindex = button.attr('data-zindex');
var delay = 10;
if (!modal.length) {
var _modal = $(target).clone().appendTo('[data-role="profile-wapper"]');
_modal.attr('id',modal_id);
modal = _modal;
}
if (button.attr('data-change')){
history.back();
delay = 250;
}
modal.css('z-index','');
if (zindex) modal.css('z-index',zindex);
setTimeout(function(){
modal.attr('data-mbruid',mbruid);
modal.find('.bar-header-secondary .nav-inline').empty();
modal.find('.bar').css('background-color','');
modal.modal({
title: nic,
url : url
});
modal.find('.content').loader({ position: 'inside' });
getPofileView(modal,mbruid)
}, delay);
});
$(document).on('click','[data-toggle="follow"]',function(){
var button = $(this);
var mbruid = button.attr('data-mbruid');
var url = '/?r='+raccount+'&m=member&a=profile_follow&mbruid='+mbruid;
if (memberid) {
button.toggleClass('active');
getIframeForAction('');
frames.__iframe_for_action__.location.href = url;
} else {
var title = button.attr('data-title')
var subtext = button.attr('data-subtext')
popup_login_guide.find('[data-role="title"]').text(title);
popup_login_guide.find('[data-role="subtext"]').text(subtext);
popup_login_guide.popup('show');
}
});
$(document).on('shown.rc.modal', '[id*="modal-member-profile"]', function (event) {
$('.modal.miniplayer').addClass('no-bartab');
});
$(document).on('hidden.rc.modal', '[id*="modal-member-profile"]', function (event) {
$('.modal.miniplayer').removeClass('no-bartab');
});

View File

@@ -0,0 +1,73 @@
<!--
회원 모듈 프로필 포론트 컴포넌트 모음
1. 페이지 : 프로필 메인
1. 모달 : 프로필 메인
-->
<div data-role="profile-wapper">
<div id="modal-member-profile" class="modal fast" data-mbruid="" data-role="profile">
<header class="bar bar-nav px-0 border-bottom-0" data-snap-ignore="true">
<a class="icon material-icons pull-left px-3" role="button" data-history="back">arrow_back</a>
<a class="icon material-icons pull-right pl-2 pr-3" role="button" data-toggle="modal" data-target="#modal-search">search</a>
<h1 class="title title-left" data-history="back">
<span data-role="title"></span>
</h1>
</header>
<div class="bar bar-header-secondary border-bottom-0 p-x-0 shadow-sm">
<nav class="nav nav-inline" style="margin-top: 0.1875rem;"></nav>
</div>
<div class="content bg-white" data-control="scroll" data-type="updown" data-defaultHeight="180"></div>
</div><!-- /.modal -->
</div>
<div id="sheet-member-profile" class="sheet shadow-sm">
<div class="content-padded py-1">
<div class="media" data-history="back">
<span class="media-left media-middle">
<img data-role="avatar" class="border rounded-circle" style="width:4.6875rem">
</span>
<div class="media-body">
<h6 class="media-heading mb-2">
<span data-role="nic"></span>
<small class="ml-1 text-muted" data-role="ismy"></small>
</h6>
<p class="text-muted f12 mb-1 pr-2 line-clamp-3" data-role="bio" style="line-height: 1.35"></p>
<div class="d-flex justify-content-between align-items-end">
<div class="">
<span class="badge badge-inverted">구독자 <span class="ml-1" data-role="num_follower"></span></span>
<span class="badge badge-inverted">포스트 <span class="ml-1" data-role="num_post"></span></span>
<span class="badge badge-inverted">리스트 <span class="ml-1" data-role="num_list"></span></span>
</div>
<div class="">
</div>
</div><!-- /.d-flex -->
</div>
</div>
</div>
<ul class="table-view mb-0">
<li class="table-view-cell" data-role="follower">
구독
<span class="badge badge-pill d-none" data-role="isfollowing">구독중</span>
<button type="button" class="btn btn-outline-primary d-none"
data-title="채널을 구독하시겠습니까?"
data-subtext="채널을 구독하려면 로그인하세요."
data-toggle="follow"
data-mbruid="">
구독하기
</button>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="profile" data-target="#modal-member-profile" data-change="true">
채널 바로가기
</a>
</li>
</ul>
</div>
<script src="/modules/member/themes/<?php echo $d['member']['theme_mobile']?>/profile/profile.js<?php echo $g['wcache']?>" ></script>
<script src="/modules/member/themes/<?php echo $d['member']['theme_mobile']?>/profile/component.js<?php echo $g['wcache']?>" ></script>

View File

@@ -0,0 +1,25 @@
<div data-role="loader">
<div class="d-flex justify-content-center align-items-center text-muted" style="height:90vh">
<div class="spinner-border" role="status"></div>
</div>
</div>
<div class="d-flex justify-content-center align-items-center text-muted" style="height:80vh">
<button class="btn btn-secondary btn-block"
data-toggle="profile"
data-target="#modal-member-profile"
data-mbruid="<?php echo $_MP['uid'] ?>"
data-title="<?php echo $mbrid ?>"
data-url="/@<?php echo $mbrid ?>">
프로필 열기
</button>
</div>
<script>
$( document ).ready(function() {
$('[data-role="loader"]').addClass('d-none');
$('[data-toggle="profile"]').click();
});
</script>

View File

@@ -0,0 +1,250 @@
// RGB 코드 헥사코드 변환
function RGBToHex(rgb) {
let sep = rgb.indexOf(",") > -1 ? "," : " ";
rgb = rgb.substr(4).split(")")[0].split(sep);
let r = (+rgb[0]).toString(16),
g = (+rgb[1]).toString(16),
b = (+rgb[2]).toString(16);
if (r.length == 1)
r = "0" + r;
if (g.length == 1)
g = "0" + g;
if (b.length == 1)
b = "0" + b;
return "#" + r + g + b;
}
// 배경밝기에 따라 반전된 폰트 칼라 적용
function convertColor(hex) {
hex = hex.replace('#', '');
r = parseInt(hex.substring(0, 2), 16);
g = parseInt(hex.substring(2, 4), 16);
b = parseInt(hex.substring(4, 6), 16);
var o = Math.round(((parseInt(r) * 299) + (parseInt(g) * 587) + (parseInt(b) * 114)) / 1000);
if (o > 125) {
result = true;
} else {
result = false;
}
return result;
}
function getPofileView(modal,mbruid) {
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profileData',{
mbruid : mbruid,
type : 'modal'
},function(response){
var result = $.parseJSON(response);
var profile=result.profile;
var nic=result.nic;
modal.find('[data-role="title"]').text(nic);
modal.find('.content').html(profile);
modal.find('[data-role="cover"]').load(function(){
var colorThief = new ColorThief();
var coverImage = modal.find('[data-role="cover"]')[0];
var cover_rgb = colorThief.getColor(coverImage);
modal.find('.bar').css('background-color', 'rgb(' + cover_rgb + ')');
var _cover_rgb = modal.find('.bar').css('background-color');
var cover_hex = RGBToHex(_cover_rgb)
if (convertColor(cover_hex)) {
modal.find('.bar').removeClass('bar-dark').addClass('bar-light');
} else {
modal.find('.bar').removeClass('bar-light').addClass('bar-dark');
}
});
modal.find('.content [data-plugin="timeago"]').timeago();
var nav_control = modal.find('.profile-nav-control')
var swiper_member_profile = new Swiper('#modal-member-profile-'+mbruid+' .swiper-container', {
autoHeight: true,
pagination: {
el: '#modal-member-profile-'+mbruid+' .bar-header-secondary .nav-inline',
clickable: true,
autoHeight: true,
effect : 'fade',
spaceBetween: 30,
slideActiveClass :'active',
bulletClass : 'nav-link',
bulletActiveClass : 'active' ,
autoHeight : true,
renderBullet: function (index, className) {
var title;
if (index === 0) title = '홈';
if (index === 1) title = '동영상'
if (index === 2) title = '재생목록'
if (index === 3) title = '커뮤니티'
if (index === 4) title = '채널'
if (index === 5) title = '정보'
return '<a class="' + className + '">'+title+'</a>';
},
},
on: {
init: function () {
console.log('swiper 초기화');
},
}
});
swiper_member_profile.on('slideChange', function () {
var index = swiper_member_profile.activeIndex
nav_control.find('.nav-link').removeClass('active')
nav_control.find('[data-index="'+index+'"]').addClass('active')
setTimeout(function(){
modal.find('.content').animate({scrollTop:0}, '400');
}, 600);
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var recnum = 10;
//무한 스크롤 환경 초기화
modal.find('.infinitescroll-end').remove();
modal.find('.content .content-padded [data-role="list"]').empty();
// var content_markup = modal.find('.content').clone().wrapAll("<div/>").parent().html();
// modal.find('.content').infinitescroll('destroy');
// modal.append(content_markup);
if (index==0) { // 프로필 홈
}
if (index==1) { // 동영상
modal.find('[data-role="postList"] [data-role="list"]').loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profilePost',{
mbruid : mbruid,
format : 2, //video
type : 'modal',
recnum : recnum
},function(response){
var result = $.parseJSON(response);
var postlist=result.list;
var postnum=result.num;
var totalPage=result.tpg;
modal.find('[data-role="postList"] [data-role="list"]').html(postlist);
if (postnum) {
modal.find('[data-role="postList"] .btn').show();
if (postnum>recnum) {
//무한 스크롤
modal.find('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profilePost',{
mbruid : mbruid,
format : 2, //video
type : 'modal',
recnum : recnum,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
swiper_member_profile.updateAutoHeight(100);
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : modal.find('[data-role="postList"] .content-padded'),
percentage : 85, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
}
} else {
modal.find('[data-role="postList"] .btn').hide();
}
swiper_member_profile.updateAutoHeight(100);
modal.find('[data-role="postList"] [data-role="list"] [data-plugin="timeago"]').timeago();
});
}
if (index==2) { // 리스트
modal.find('[data-role="listList"] [data-role="list"]').loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profileList',{
mbruid : mbruid,
type : 'modal'
},function(response){
var result = $.parseJSON(response);
var listlist=result.list;
var listnum=result.num;
modal.find('[data-role="listList"] [data-role="list"]').html(listlist);
if (listnum) modal.find('[data-role="listList"] .btn').show();
else modal.find('[data-role="listList"] .btn').hide();
swiper_member_profile.updateAutoHeight(100);
modal.find('[data-role="listList"] [data-role="list"] [data-plugin="timeago"]').timeago();
});
}
if (index==3) { // 커뮤니티
modal.find('[data-role="commList"] [data-role="list"]').loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profileComm',{
mbruid : mbruid,
type : 'modal'
},function(response){
var result = $.parseJSON(response);
var commlist=result.list;
var commnum=result.num;
modal.find('[data-role="commList"] [data-role="list"]').html(commlist);
swiper_member_profile.updateAutoHeight(100);
modal.find('[data-role="commList"] [data-role="list"] [data-plugin="timeago"]').timeago();
});
}
if (index==4) { // 채널
modal.find('[data-role="followList"] [data-role="list"]').loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_profileFollow',{
mbruid : mbruid,
type : 'modal'
},function(response){
var result = $.parseJSON(response);
var followlist=result.list;
var follownum=result.num;
modal.find('[data-role="followList"] [data-role="list"]').html(followlist);
swiper_member_profile.updateAutoHeight(100);
modal.find('[data-role="followList"] [data-role="list"] [data-plugin="timeago"]').timeago();
});
}
});
nav_control.find('.nav-link').click(function(){
var index = $(this).data('index')
swiper_member_profile.slideTo(index);
});
});
// edgeEffect
var wrapper_startY = 0;
modal.find('.content').on('touchstart',function(event){
wrapper_startY = event.originalEvent.changedTouches[0].pageY;
});
modal.find('.content').on('touchmove',function(event){
var wrapper_moveY = event.originalEvent.changedTouches[0].pageY;
var wrapper_contentY = $(this).scrollTop();
if (wrapper_contentY === 0 && wrapper_moveY > wrapper_startY) {
if (wrapper_moveY-wrapper_startY>80) {
edgeEffect(modal,'top','show');
}
}
if( (wrapper_moveY < wrapper_startY) && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
if (wrapper_startY-wrapper_moveY>80) {
edgeEffect(modal,'bottom','show');
}
}
});
} // getPofileView

View File

@@ -0,0 +1,398 @@
$(function() {
var f = document.getElementById("memberForm");
var page_main = $('#page-main')
var page_profile = $('#page-profile')
var page_name = $('#page-name')
var page_tel1 = $('#page-tel1')
var page_tel2 = $('#page-tel2')
var page_birth = $('#page-birth')
var page_sex = $('#page-sex')
var page_addr = $('#page-addr')
var page_bio = $('#page-bio')
var page_home = $('#page-home')
var page_job = $('#page-job')
var page_marr = $('#page-marr')
function _submit() {
getIframeForAction(f);
f.submit();
}
$(".js-avatar-img").tap(function() {
$("#rb-upfile-avatar").click();
});
$("#rb-upfile-avatar").change(function() {
var f = document.MbrPhotoForm;
getIframeForAction(f);
setTimeout(function() {
page_profile.find('.content').loader({
text: "업로드중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
f.submit();
});
$(".js-btn-action-iframe").click(function() {
getIframeForAction('');
frames.__iframe_for_action__.location.href = $(this).attr("data-href");
});
$('#reception_sms').on('changed.rc.switch', function (event) {
var handle = $(event.relatedTarget)
var button = handle.closest('.switch')
if (button.hasClass('active')){
console.log('문자 수신설정 되었습니다.')
page_main.find('[name="sms"]').val(1);
} else {
console.log('문자 수신해제 되었습니다.')
page_main.find('[name="sms"]').val(0);
}
_submit() // submit 실행
})
$('#reception_email').on('changed.rc.switch', function (event) {
var handle = $(event.relatedTarget)
var button = handle.closest('.switch')
if (button.hasClass('active')){
console.log('이메일 수신설정 되었습니다.')
page_main.find('[name="remail"]').val(1);
} else {
console.log('이메일 수신해제 되었습니다.')
page_main.find('[name="remail"]').val(0);
}
_submit() // submit 실행
})
// 닉네임 시작
page_profile.find('.js-save').tap(function() {
var nic = page_profile.find('[name="nic"]').val()
page_main.find('[data-role="nic"]').removeClass('animated fadeIn');
page_main.find('[name="nic"]').val(nic);
setTimeout(function() {
page_profile.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_profile.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="nic"]').text(nic).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 이름변경 시작
page_name.find('.js-save').tap(function() {
var name = page_name.find('[name="name"]').val()
page_main.find('[data-role="name"]').removeClass('animated fadeIn');
page_main.find('[name="name"]').val(name);
setTimeout(function() {
page_name.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_name.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="name"]').text(name).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 유선전화 시작
page_tel1.find('.js-save').tap(function() {
var tel1_1 = page_tel1.find('[name="tel1_1"]').val()
var tel1_2 = page_tel1.find('[name="tel1_2"]').val()
var tel1_3 = page_tel1.find('[name="tel1_3"]').val()
var tel1 = tel1_1+'-'+tel1_2+'-'+tel1_3
page_main.find('[data-role="tel1"]').removeClass('animated fadeIn');
page_main.find('[name="tel1_1"]').val(tel1_1);
page_main.find('[name="tel1_2"]').val(tel1_2);
page_main.find('[name="tel1_3"]').val(tel1_3);
setTimeout(function() {
page_tel1.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_tel1.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="tel1"]').text(tel1).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 휴대전화 시작
page_tel2.find('.js-save').tap(function() {
var tel2_1 = page_tel2.find('[name="tel2_1"]').val()
var tel2_2 = page_tel2.find('[name="tel2_2"]').val()
var tel2_3 = page_tel2.find('[name="tel2_3"]').val()
var tel2 = tel2_1+'-'+tel2_2+'-'+tel2_3
page_main.find('[data-role="tel2"]').removeClass('animated fadeIn');
page_main.find('[name="tel2_1"]').val(tel2_1);
page_main.find('[name="tel2_2"]').val(tel2_2);
page_main.find('[name="tel2_3"]').val(tel2_3);
setTimeout(function() {
page_tel2.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_tel2.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="tel2"]').text(tel2).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 생년월일 시작
page_birth.find('.js-save').tap(function() {
var birth_1 = page_birth.find('[name="birth_1"]').val()
var birth_2 = page_birth.find('[name="birth_2"]').val()
var birth_3 = page_birth.find('[name="birth_3"]').val()
var birthtype = page_birth.find('[name="birthtype"]:checked').val()
var birth = birth_1+'.'+birth_2+'.'+birth_3
page_main.find('[data-role="birth"]').removeClass('animated fadeIn');
page_main.find('[name="birth_1"]').val(birth_1);
page_main.find('[name="birth_2"]').val(birth_2);
page_main.find('[name="birth_3"]').val(birth_3);
page_main.find('[name="birthtype"]').val(birthtype);
setTimeout(function() {
page_birth.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_birth.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="birth"]').text(birth).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 성별 시작
page_sex.find('.js-save').tap(function() {
var sex = page_sex.find('[name="sex"]:checked').val()
page_main.find('[data-role="sex"]').removeClass('animated fadeIn');
page_main.find('[name="sex"]').val(sex);
setTimeout(function() {
page_sex.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_sex.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
if (sex==1) page_main.find('[data-role="sex"]').text('남성').addClass('animated fadeIn');
if (sex==2) page_main.find('[data-role="sex"]').text('여성').addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 주소 시작
page_addr.find('.js-save').tap(function() {
var zip = page_addr.find('[name="zip"]').val()
var addr1 = page_addr.find('[name="addr1"]').val()
var addr2 = page_addr.find('[name="addr2"]').val()
page_main.find('[data-role="addr1"]').removeClass('animated fadeIn');
page_main.find('[name="zip"]').val(zip);
page_main.find('[name="addr1"]').val(addr1);
page_main.find('[name="addr2"]').val(addr2);
setTimeout(function() {
page_addr.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_addr.find('.content').loader("hide");
_submit() // submit 실행
page_main.find('[data-role="addr1"]').text(addr1).addClass('animated fadeIn');
page_main.find('[data-role="addr"]').text('');
}, 700);
});
// 간단설명 시작
page_bio.find('.js-save').tap(function() {
var bio = page_bio.find('[name="bio"]').val()
page_main.find('[data-role="bio"]').removeClass('animated fadeIn');
page_main.find('[name="bio"]').val(bio);
setTimeout(function() {
page_bio.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_bio.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="bio"]').text(bio).addClass('animated fadeIn');
page_main.find('[data-role="_bio"]').text('').addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 홈페이지 변경 시작
page_home.find('.js-save').tap(function() {
var home = page_home.find('[name="home"]').val()
page_main.find('[data-role="home"]').removeClass('animated fadeIn');
page_main.find('[name="home"]').val(home);
setTimeout(function() {
page_home.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_home.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="home"]').text(home).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 직업 변경 시작
page_job.find('.js-save').tap(function() {
var job = page_job.find('[name="job"]').val()
page_main.find('[data-role="job"]').removeClass('animated fadeIn');
page_main.find('[name="job"]').val(job);
setTimeout(function() {
page_job.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_job.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="job"]').text(job).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 결혼기념일 시작
page_marr.find('.js-save').tap(function() {
var marr_1 = page_marr.find('[name="marr_1"]').val()
var marr_2 = page_marr.find('[name="marr_2"]').val()
var marr_3 = page_marr.find('[name="marr_3"]').val()
var marr = marr_1+'.'+marr_2+'.'+marr_3
page_main.find('[data-role="marr"]').removeClass('animated fadeIn');
page_main.find('[name="marr_1"]').val(marr_1);
page_main.find('[name="marr_2"]').val(marr_2);
page_main.find('[name="marr_3"]').val(marr_3);
setTimeout(function() {
page_marr.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_marr.find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
_submit() // submit 실행
page_main.find('[data-role="marr"]').text(marr).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
$(document).on('click','#execDaumPostcode',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('zip1').value = data.zonecode; //5자리 새우편번호 사용
document.getElementById('addr1').value = fullAddr;
$('#modal-DaumPostcode').removeClass('active') // 우편번호 검색모달을 숨김
},
// 우편번호 찾기 화면 크기가 조정되었을때 실행할 코드를 작성하는 부분. iframe을 넣은 element의 높이값을 조정한다.
width : '100%',
height : '100%'
}).embed(element_wrap);
});
// element_wrap.style.display = 'block';
$('#modal-DaumPostcode').modal('show')
}
execDaumPostcode()
})
});

View File

@@ -0,0 +1,106 @@
<div class="page center" id="page-main">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title" data-location="reload">
<i class="fa fa-user fa-fw mr-1 text-muted" aria-hidden="true"></i> 회원계정 관리
</h1>
</header>
<main class="content bg-faded">
<ul class="table-view bg-white m-t-0 animated fadeIn delay-1">
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-pw">
<?php if ($my['last_pw']): ?>
<span class="badge badge-default badge-inverted"><?php echo -getRemainDate($my['last_pw'])?>일전 변경</span>
<?php endif; ?>
<i class="fa fa-key fa-fw mr-1 text-muted" aria-hidden="true"></i> 비밀번호 <?php echo $my['last_pw']?'변경':'등록' ?>
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-id">
<span class="badge badge-default badge-inverted"><?php echo $my['id'] ?></span>
<i class="fa fa-id-badge fa-fw mr-1 text-muted" aria-hidden="true"></i> 아이디 변경
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-leave">
<i class="fa fa-ban fa-fw mr-1 text-muted" aria-hidden="true"></i> 탈퇴
</a>
</li>
</ul>
</main>
</div><!-- /.page -->
<!-- Target Page : 비밀번호 변경 -->
<div id="page-pw" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title"><i class="fa fa-key fa-fw text-muted" aria-hidden="true"></i> 비밀번호 <?php echo $my['only_sns']?'등록':'변경' ?></h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block">변경하기</button>
</div>
<div class="content bg-faded">
<form name="procForm" class="content-padded" role="form" action="<?php echo $g['s']?>/" method="post" autocomplete="off">
<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="pw_update">
<div class="form-group">
<label>새 비밀번호</label>
<input type="password" class="form-control" name="pw1" id="pw1" placeholder="8자이상 영문과 숫자만 사용할 수 있습니다.">
<small class="form-text text-muted"></small>
</div>
<div class="form-group">
<label>새 비밀번호 확인</label>
<input type="password" class="form-control" name="pw2" id="pw2" placeholder="변경할 비밀번호를 한번 더 입력하세요">
<small class="form-text text-muted"></small>
</div>
</form>
<div class="content-padded">
<?php if ($my['only_sns']): ?>
<p class="text-muted">비밀번호를 등록하면 비밀번호를 통한 로그인이 가능합니다.</p>
<?php else: ?>
<p class="text-muted">현재 비밀번호는 <code><?php echo getDateFormat($my['last_pw'],'Y.m.d')?></code> 에 변경(등록)되었으며 <code>
<?php echo -getRemainDate($my['last_pw'])?>일</code>이 경과되었습니다.
비밀번호는 가급적 주기적으로 변경해 주세요.</p>
<?php endif; ?>
</div>
</div>
</div><!-- /.page -->
<div class="page right" id="page-id">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title"><i class="fa fa-id-badge fa-fw text-muted" aria-hidden="true"></i> 아이디 변경</h1>
</header>
<div class="content">
<div class="content-padded">
</div>
</div>
</div><!-- /.page -->
<!-- Target Page : 회원탈퇴 -->
<div id="page-leave" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title"><i class="fa fa-ban fa-fw text-muted" aria-hidden="true"></i> 회원탈퇴</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-danger btn-block">탈퇴</button>
</div>
<div class="content">
<div class="content-padded">
회원님은 <span class="badge badge-default badge-inverted"><?php echo -getRemainDate($my['d_regis'])?>일전 가입</span>에 가입
</div>
</div>
</div><!-- /.page -->

View File

@@ -0,0 +1,425 @@
var memberForm = document.getElementById("memberForm");
var modal_settings_general = $('#modal-settings-general'); // 계정설정 모달
var modal_settings_profile = $('#modal-settings-profile'); // 프로필 설정
var page_settings_main = $('#page-settings-main'); // 설정메인
var page_settings_account = $('#page-settings-account'); //회원계정
var page_settings_pw = $('#page-settings-pw'); //비밀번호 변경
var page_settings_email = $('#page-settings-email'); //이메일 관리
var page_settings_phone = $('#page-settings-phone'); //휴대폰 관리
var page_settings_noti = $('#page-settings-noti'); //알림설정
var page_settings_connect = $('#page-settings-connect'); //연결계정
var page_settings_shipping = $('#page-settings-shipping'); //배송지관리
var page_settings_name = $('#page-settings-name'); //이름변경
var page_settings_profile = $('#page-settings-profile') //프로필 수정 메인
var page_settings_avatar = $('#page-settings-avatar') //아바타
var page_settings_cover = $('#page-settings-cover') //배경이미지
var page_settings_nic = $('#page-settings-nic') //닉네임
var page_settings_tel1 = $('#page-settings-tel1'); //유선전화
var page_settings_bio = $('#page-settings-bio'); //간단설명
function saveMemberInfo(mbruid,field) {
var wrapper = settings.wrapper;
var keyword=settings.keyword; // keyword
$.post(rooturl+'/?r='+raccount+'&m=member&a=info_update',{
sort : sort,
keyword : keyword,
recnum : recnum,
p : currentPage,
markup_file : markup_file,
start : start
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
wrapper.loader('hide');
if (num) wrapper.html(list)
else wrapper.html(none)
} else {
alert(status);
}
});
} // saveMemberInfo
function pwChangeCheck(obj,layer) {
var f = document.getElementById('pwChangeForm');
if (!obj.value)
{
obj.classList.remove('is-invalid');
layer.innerHTML = '';
}
else
{
if (obj.name == 'pw1') {
f.classList.remove('was-validated');
if (f.pw1.value.length < 6 || f.pw1.value.length > 16) {
f.check_pw1.value = '0';
f.classList.remove('was-validated');
obj.classList.add('is-invalid');
obj.classList.remove('is-valid');
layer.innerHTML = '영문/숫자 2개 이상 조합 6~16자로 입력';
obj.focus();
return false;
}
if (getTypeCheck(f.pw1.value,"abcdefghijklmnopqrstuvwxyz")) {
layer.innerHTML = '비밀번호가 영문만으로 입력되었습니다.\n영문/숫자 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
obj.focus();
return false;
}
if (getTypeCheck(f.pw1.value,"1234567890")) {
layer.innerHTML = '비밀번호가 숫자만으로 입력되었습니다.\n영문/숫자 2개 이상의 조합으로 최소 6자이상 입력하셔야 합니다.';
obj.focus();
return false;
}
f.pw1.classList.add('is-valid');
f.pw1.classList.remove('is-invalid');
layer.innerHTML = '';
f.check_pw1.value = '1';
}
if (obj.name == 'pw2') {
f.classList.remove('was-validated');
obj.classList.add('is-invalid');
obj.classList.remove('is-valid');
if (f.pw1.value != f.pw2.value)
{
layer.innerHTML = '비밀번호가 일치하지 않습니다.';
f.classList.remove('was-validated');
obj.focus();
f.check_pw2.value = '0';
return false;
}
f.pw2.classList.add('is-valid');
f.pw2.classList.remove('is-invalid');
layer.innerHTML = '';
f.check_pw2.value = '1';
}
}
}
modal_settings_general.on('show.rc.modal', function(event) {
var button = $(event.relatedTarget);
var modal = $(this);
modal.attr('data-mbruid','');
$('#modal-post-view').find('[data-act="pauseVideo"]').click(); //유튜브 비디오 일시정지
if ($('#drawer-left').length) {
setTimeout(function(){ $('#drawer-left').drawer('hide'); }, 1000); // 왼쪽 드로워 닫기
}
})
page_settings_main.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
})
// 비밀번호 변경
page_settings_pw.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
page.find('[type="password"]').val('')
})
//비밀번호 유용성 체크
page_settings_pw.find('input').keyup(function(){
var item = $(this).attr('data-role')
var item_pw_check = page_settings_pw.find('#page-settings-pw [name=check_pw]').val()
if (item =='pw1') {
element = document.querySelector('#page-settings-pw [name="pw1"]');
feedback = document.querySelector('#page-settings-pw [data-role="pw1CodeBlock"]');
pwChangeCheck(element,feedback)
}
if (item =='pw2') {
element = document.querySelector('#page-settings-pw [name="pw2"]');
feedback = document.querySelector('#page-settings-pw [data-role="pw2CodeBlock"]');
pwChangeCheck(element,feedback)
}
});
page_settings_pw.find('[data-act="changePW"]').click(function(){
var button = $(this)
var page = page_settings_pw;
var f = document.getElementById('pwChangeForm');
button.attr('disabled',true);
if (f.check_pw1.value == '0' || f.check_pw2.value == '0') {
button.attr('disabled',false);
return false;
}
page.find('.form-control').removeClass('is-invalid') //에러이력 초기화
setTimeout(function(){
getIframeForAction(f);
f.submit();
}, 1000);
});
// 이메일 관리
page_settings_email.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
page.find('.content').loader({ position: 'inside' });
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_emailList',{
},function(response){
var result = $.parseJSON(response);
var error=result.error;
var list=result.list;
if (error) {
history.back();
setTimeout(function(){ $.notify({message: error},{type: 'default'}) }, 500);
} else {
page.find('.content').html(list)
}
})
}, 300);
})
// 휴대폰 관리
page_settings_phone.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
page.find('.content').loader({ position: 'inside' });
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_phoneList',{
},function(response){
var result = $.parseJSON(response);
var error=result.error;
var list=result.list;
if (error) {
history.back();
setTimeout(function(){ $.notify({message: error},{type: 'default'}) }, 500);
} else {
page.find('.content').html(list)
}
})
}, 300);
})
// 알림설정
page_settings_noti.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
console.log('알림설정')
})
// 연결계정
page_settings_connect.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
console.log('연결계정')
})
// 배송지관리
page_settings_shipping.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
page.find('.content').loader({ position: 'inside' });
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=member&a=get_shippingList',{
},function(response){
var result = $.parseJSON(response);
var error=result.error;
var list=result.list;
if (error) {
history.back();
setTimeout(function(){ $.notify({message: error},{type: 'default'}) }, 500);
} else {
page.find('.content').html(list)
}
})
}, 300);
})
// 아바타 변경
page_settings_avatar.find(".js-avatar-img").tap(function() {
$("#rb-upfile-avatar").click();
});
page_settings_avatar.find("#rb-upfile-avatar").change(function() {
var f = document.MbrPhotoForm;
getIframeForAction(f);
setTimeout(function() {
page_settings_avatar.find('.content').loader({
text: "업로드중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
f.submit();
});
// 배경이미지 변경
page_settings_cover.find(".js-cover-img").tap(function() {
$("#rb-upfile-cover").click();
});
page_settings_cover.find("#rb-upfile-cover").change(function() {
var f = document.MbrCoverForm;
getIframeForAction(f);
setTimeout(function() {
page_settings_cover.find('.content').loader({
text: "업로드중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
f.submit();
});
// 이름변경
page_settings_name.on('shown.rc.page', function(event) {
setTimeout(function() {
page_settings_name.find('input').focus().putCursorAtEnd();
}, 300);
})
page_settings_name.on('hidden.rc.page', function(event) {
page_settings_name.find('input').blur()
})
page_settings_name.find('[data-act="submit"]').click(function(){
var input = page_settings_name.find('[name="name"]')
var name = input.val()
if (!name) {
input.focus();
return false
}
page_settings_profile.find('[data-role="name"]').removeClass('animated fadeIn');
$('#memberForm').find('[name="name"]').val(name);
setTimeout(function() {
page_settings_name.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_settings_name.find('.content').loader("hide");
history.back(); // 메인 페이지로 복귀
setTimeout(function() {
getIframeForAction(memberForm);
memberForm.submit();
page_settings_profile.find('[data-role="name"]').text(name).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 닉네임(채널) 변경
page_settings_nic.on('shown.rc.page', function(event) {
setTimeout(function() {
page_settings_nic.find('input').focus().putCursorAtEnd();
}, 300);
})
page_settings_nic.on('hidden.rc.page', function(event) {
page_settings_nic.find('input').blur();
})
page_settings_nic.find('[data-act="submit"]').click(function(){
var input = page_settings_nic.find('[name="nic"]')
var nic = input.val()
if (!nic) {
input.focus();
return false
}
page_settings_profile.find('[data-role="nic"]').removeClass('animated fadeIn');
$('#memberForm').find('[name="nic"]').val(nic);
setTimeout(function() {
page_settings_nic.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_settings_nic.find('.content').loader("hide");
history.back(); // 메인 페이지로 복귀
setTimeout(function() {
getIframeForAction(memberForm);
memberForm.submit();
page_settings_profile.find('[data-role="nic"]').text(nic).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
// 유선전화
page_settings_tel1.on('show.rc.page', function(event) {
var button = $(event.relatedTarget);
var page = $(this);
console.log('유선전화')
})
// 간단설명
page_settings_bio.on('show.rc.page', function(event) {
setTimeout(function() {
page_settings_bio.find('textarea').focus().putCursorAtEnd();
}, 300);
})
page_settings_bio.on('hidden.rc.page', function(event) {
page_settings_bio.find('textarea').blur();
})
page_settings_bio.find('[data-act="submit"]').click(function(){
var textarea = page_settings_bio.find('[name="bio"]')
var bio = textarea.val()
if (!bio) {
textarea.focus();
return false
}
page_settings_profile.find('[data-role="bio"]').removeClass('animated fadeIn');
$('#memberForm').find('[name="bio"]').val(bio);
setTimeout(function() {
page_settings_bio.find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
page_settings_bio.find('.content').loader("hide");
history.back(); // 메인 페이지로 복귀
setTimeout(function() {
getIframeForAction(memberForm);
memberForm.submit();
page_settings_profile.find('[data-role="bio"]').text(bio).addClass('animated fadeIn');
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,91 @@
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title" data-location="reload">
<i class="fa fa-user-plus fa-fw mr-1 text-muted" aria-hidden="true"></i> 연결계정 관리
</h1>
</header>
<main class="content bg-faded">
<ul class="table-view bg-white m-t-0 animated fadeIn delay-1">
<?php if ($d['connect']['use_n']): ?>
<li class="table-view-cell" style="padding-right: 6rem ">
<img class="media-object pull-left rounded-circle <?php echo !$my_naver['uid']?' filter grayscale':'' ?>" src="/_core/images/sns/naver.png" alt="네이버" width="28">
<div class="media-body">
네이버
<?php if ($my_naver['uid']): ?>
<p><?php echo getDateFormat($my_naver['d_regis'],'Y.m.d H:i') ?> 연결</p>
<?php endif; ?>
</div>
<div data-toggle="switch" class="switch<?php echo $my_naver['uid']?' active':'' ?>" id="reception_sms">
<div class="switch-handle"></div>
</div>
</li>
<?php endif; ?>
<?php if ($d['connect']['use_k']): ?>
<li class="table-view-cell" style="padding-right: 6rem ">
<img class="media-object pull-left rounded-circle<?php echo !$my_kakao['uid']?' filter grayscale':'' ?>" src="/_core/images/sns/kakao.png" alt="카카오" width="28">
<div class="media-body">
카카오
<?php if ($my_kakao['uid']): ?>
<p><?php echo getDateFormat($my_kakao['d_regis'],'Y.m.d H:i') ?> 연결</p>
<?php endif; ?>
</div>
<div data-toggle="switch" class="switch<?php echo $my_kakao['uid']?' active':'' ?>" id="reception_sms">
<div class="switch-handle"></div>
</div>
</li>
<?php endif; ?>
<?php if ($d['connect']['use_g']): ?>
<li class="table-view-cell" style="padding-right: 6rem ">
<img class="media-object pull-left rounded-circle<?php echo !$my_google['uid']?' filter grayscale':'' ?>" src="/_core/images/sns/google.png" alt="구글" width="28">
<div class="media-body">
구글
<?php if ($my_google['uid']): ?>
<p><?php echo getDateFormat($my_google['d_regis'],'Y.m.d H:i') ?> 연결</p>
<?php endif; ?>
</div>
<div data-toggle="switch" class="switch<?php echo $my_google['uid']?' active':'' ?>" id="reception_sms">
<div class="switch-handle"></div>
</div>
</li>
<?php endif; ?>
<?php if ($d['connect']['use_f']): ?>
<li class="table-view-cell" style="padding-right: 6rem ">
<img class="media-object pull-left rounded-circle<?php echo !$my_facebook['uid']?' filter grayscale':'' ?>" src="/_core/images/sns/facebook.png" alt="페이스북" width="28">
<div class="media-body">
페이스북
<?php if ($my_facebook['uid']): ?>
<p><?php echo getDateFormat($my_facebook['d_regis'],'Y.m.d H:i') ?> 연결</p>
<?php endif; ?>
</div>
<div data-toggle="switch" class="switch<?php echo $my_facebook['uid']?' active':'' ?>" id="reception_sms">
<div class="switch-handle"></div>
</div>
</li>
<?php endif; ?>
<?php if ($d['connect']['use_i']): ?>
<li class="table-view-cell" style="padding-right: 6rem ">
<img class="media-object pull-left rounded-circle<?php echo !$my_instagram['uid']?' filter grayscale':'' ?>" src="/_core/images/sns/instagram.png" alt="인스타그램" width="28">
<div class="media-body">
인스타그램
<?php if ($my_instagram['uid']): ?>
<p><?php echo getDateFormat($my_instagram['d_regis'],'Y.m.d H:i') ?> 연결</p>
<?php endif; ?>
</div>
<div data-toggle="switch" class="switch<?php echo $my_instagram['uid']?' active':'' ?>" id="reception_sms">
<div class="switch-handle"></div>
</div>
</li>
<?php endif; ?>
</ul>
<div class="content-padded">
<p class="text-muted">외부의 소셜미디어 계정을 연결하고 통합관리 합니다. 연결된 소셜미디어로 사용자인증 및 연결을 지원합니다.</p>
</div>
</main>

View File

@@ -0,0 +1,67 @@
<?php
$vtype = $vtype ? $vtype : 'point';
$sort = $sort ? $sort : 'uid';
$orderby= $orderby ? $orderby : 'desc';
$recnum = $recnum && $recnum < 200 ? $recnum : 10;
$sqlque = 'my_mbruid='.$my['uid'];
if ($type == '1') $sqlque .= ' and price > 0';
if ($type == '2') $sqlque .= ' and price < 0';
if ($where && $keyword)
{
$sqlque .= getSearchSql($where,$keyword,$ikeyword,'or');
}
$RCD = getDbArray($table['s_'.$vtype],$sqlque,'*',$sort,$orderby,$recnum,$p);
$NUM = getDbRows($table['s_'.$vtype],$sqlque);
$TPG = getTotalPage($NUM,$recnum);
$PageLink = './point?';
if ($type) $PageLink .= 'type='.$type.'&amp;';
?>
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" href="<?php echo RW('mod=settings') ?>"></a>
<h1 class="title" data-location="reload">
<i class="fa fa-envelope-o mr-1 fa-fw text-muted" aria-hidden="true"></i> 이메일 관리
</h1>
</header>
<?php if ($TPG > 1): ?>
<footer class="bar bar-standard bar-footer bar-light bg-white p-x-0">
<div class="">
<?php echo getPageLink($d['theme']['pagenum'],$p,$TPG,'')?>
</div>
</footer>
<?php endif; ?>
<main class="content bg-faded animated fadeIn delay-1">
<ul class="table-view bg-white" style="margin-top: -.0625rem">
<?php while($R=db_fetch_array($RCD)):?>
<li class="table-view-cell">
<?php echo $R['content']?>
<?php if(getNew($R['d_regis'],24)):?><small class="text-danger">new</small><?php endif?>
<p><?php echo getDateFormat($R['d_regis'],'Y.m.d H:i')?></p>
<span class="badge badge-primary badge-outline"><?php echo ($R['price']>0?'+':'').number_format($R['price'])?></span>
</li>
<?php endwhile?>
<?php if(!$NUM):?>
<li class="table-view-cell text-xs-center p-5 text-muted d-flex align-items-center justify-content-center bg-faded" style="height: calc(100vh - 10.5rem);">
내역이 없습니다.
</li>
<?php endif?>
</ul>
</main>
<script>
$(function() {
});
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 B

View File

@@ -0,0 +1,793 @@
<?php
$NT_DATA = explode('|',$my['noticeconf']);
$nt_web = $NT_DATA[0];
$_add = file($g['path_var'].'site/'.$_HS['id'].'/member.add_field.txt');
$my_shipping_num = getDbRows($table['s_mbrshipping'],'mbruid='.$my['uid']);
?>
<!-- Start Page -->
<div id="page-main" class="page center">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-home pull-left p-x-1" role="button" data-href="<?php echo RW(0) ?>"></a>
<h1 class="title" data-location="reload">설정</h1>
</header>
<main class="content bg-faded">
<ul class="table-view bg-white m-t-0 animated fadeIn delay-1">
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-profile">
<?php if($d['member']['form_settings_avatar']):?>
<img class="media-object pull-left img-circle bg-faded" data-role="avatar" src="<?php echo getAvatarSrc($my['uid'],'100') ?>" width="49">
<?php endif; ?>
<div class="media-body">
<?php if (!$my['nic']): ?>
<span data-role="name"><?php echo $my['name'] ?></span>
<?php else: ?>
<span data-role="nic"><?php echo $my['nic'] ?></span>
<?php endif; ?>
<?php if ($my['admin']): ?><span class="badge badge-danger badge-outline">ADMIN</span><?php endif; ?>
<p> <?php echo $d['member']['form_settings_nic']?'닉네임과 ':'' ?>사진을 변경해 보세요.</p>
</div>
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-href="<?php echo$g['url_reset']?>&page=account">
<span class="badge badge-default badge-inverted"><?php echo $my['id'] ?></span>
<i class="fa fa-user fa-fw text-muted mr-1" aria-hidden="true"></i> 회원계정
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-href="<?php echo$g['url_reset']?>&page=email">
<span class="badge badge-default badge-inverted"><?php echo $my['email']?$my['email']:'미등록' ?></span>
<i class="fa fa-envelope fa-fw mr-1 text-muted" aria-hidden="true"></i> 이메일
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-href="<?php echo$g['url_reset']?>&page=phone">
<span class="badge badge-default badge-inverted"><?php echo $my['phone']?$my['phone']:'미등록' ?></span>
<i class="fa fa-mobile fa-lg fa-fw text-muted" aria-hidden="true"></i> 휴대폰
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-href="<?php echo$g['url_reset']?>&page=noti">
<?php if ($nt_web==''): ?>
<span class="badge badge-primary badge-pill">ON</span>
<?php else: ?>
<span class="badge badge-default badge-outline">OFF</span>
<?php endif; ?>
<i class="fa fa-bell fa-fw mr-1 text-muted" aria-hidden="true"></i> 알림설정
</a>
</li>
<!-- 소셜미디어 연결 -->
<?php if ($d['member']['login_social']): ?>
<?php $isSNSlogin = getDbData($table['s_mbrsns'],'memberuid='.$my['uid'],'*'); ?>
<li class="table-view-cell">
<a class="navigate-right" data-href="<?php echo$g['url_reset']?>&page=connect">
<span class="badge badge-inverted">
<?php if ($my_naver['uid']): ?><img class="rounded-circle" src="/_core/images/sns/naver.png" alt="네이버" width="22"><?php endif; ?>
<?php if ($my_kakao['uid']): ?><img class="rounded-circle" src="/_core/images/sns/kakao.png" alt="카카오" width="22"><?php endif; ?>
<?php if ($my_google['uid']): ?><img class="rounded-circle" src="/_core/images/sns/google.png" alt="구글" width="22"><?php endif; ?>
<?php if ($my_facebook['uid']): ?><img class="rounded-circle" src="/_core/images/sns/facebook.png" alt="페이스북" width="22"><?php endif; ?>
<?php if ($my_instagram['uid']): ?><img class="rounded-circle" src="/_core/images/sns/instagram.png" alt="인스타그램" width="22"><?php endif; ?>
</span>
<i class="fa fa-user-plus fa-fw mr-1 text-muted" aria-hidden="true"></i> 연결계정
</a>
</li>
<?php endif; ?>
<li class="table-view-cell">
<a class="navigate-right" data-href="<?php echo$g['url_reset']?>&page=shipping">
<span class="badge badge-default badge-inverted">
<?php echo $my_shipping_num?number_format($my_shipping_num).' 곳':'미등록'?>
</span>
<i class="fa fa-truck fa-fw text-muted mr-1" aria-hidden="true"></i> 배송지 관리
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" data-href="<?php echo$g['url_reset']?>&page=point">
<span class="badge badge-default badge-inverted"><?php echo number_format($my['point'])?> P</span>
<i class="fa fa-product-hunt mr-1 fa-fw text-muted" aria-hidden="true"></i> 포인트 내역
</a>
</li>
<li class="table-view-cell">
<a class="navigate-right" href="#popup-logout" data-toggle="popup">
<i class="fa fa-sign-out fa-fw mr-1 text-muted" aria-hidden="true"></i> 로그아웃
</a>
</li>
<li class="table-view-divider">
<i class="fa fa-address-card-o fa-fw mr-1" aria-hidden="true"></i> 개인정보
</li>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-name">
<span class="badge badge-default badge-inverted" data-role="name"><?php echo $my['name'] ?></span>
이름
</a>
</li>
<?php if($d['member']['form_settings_tel1']):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-tel1">
<?php if ($my['tel1']): ?>
<span class="badge badge-default badge-inverted" data-role="tel1"><?php echo $my['tel1'] ?></span>
<?php else: ?>
<span class="badge badge-default badge-inverted" data-role="tel1">미등록</span>
<?php endif; ?>
유선전화
</a>
</li>
<?php endif?>
<?php if($d['member']['form_settings_birth']):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-birth">
<?php if ($my['birth1']): ?>
<span class="badge badge-default badge-inverted" data-role="birth"><?php echo $my['birth1'] ?>.<?php echo substr($my['birth2'],0,2) ?>.<?php echo substr($my['birth2'],2,4) ?></span>
<?php else: ?>
<span class="badge badge-default badge-inverted" data-role="birth">미등록</span>
<?php endif; ?>
생년월일
</a>
</li>
<?php endif?>
<?php if($d['member']['form_settings_sex']):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-sex">
<?php if ($my['sex']): ?>
<span class="badge badge-default badge-inverted" data-role="sex"><?php echo $my['sex']==1?'남성':'여성' ?></span>
<?php else: ?>
<span class="badge badge-default badge-inverted" data-role="sex">미등록</span>
<?php endif; ?>
성별
</a>
</li>
<?php endif?>
<?php if($d['member']['form_settings_bio']):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-bio">
<div class="media-body">
간단소개
<p data-role="bio"><?php echo $my['bio']?></p>
</div>
<?php if (!$my['bio']): ?>
<span class="badge badge-default badge-inverted" data-role="_bio">미등록</span>
<?php endif; ?>
</a>
</li>
<?php endif?>
<?php if($d['member']['form_settings_home']):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-home">
<?php if ($my['home']): ?>
<span class="badge badge-default badge-inverted" data-role="home"><?php echo $my['home'] ?></span>
<?php else: ?>
<span class="badge badge-default badge-inverted" data-role="home">미등록</span>
<?php endif; ?>
홈페이지
</a>
</li>
<?php endif?>
<?php if($d['member']['form_settings_job']):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-job">
<?php if ($my['job']): ?>
<span class="badge badge-default badge-inverted" data-role="job"><?php echo $my['job'] ?></span>
<?php else: ?>
<span class="badge badge-default badge-inverted" data-role="job">미등록</span>
<?php endif; ?>
직업
</a>
</li>
<?php endif?>
<?php if($d['member']['form_settings_marr']):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-marr">
<?php if ($my['marr1']): ?>
<span class="badge badge-default badge-inverted" data-role="marr"><?php echo $my['marr1'] ?>.<?php echo substr($my['marr2'],0,2) ?>.<?php echo substr($my['marr2'],2,4) ?></span>
<?php else: ?>
<span class="badge badge-default badge-inverted" data-role="marr">미등록</span>
<?php endif; ?>
결혼기념일
</a>
</li>
<?php endif?>
<?php if($_add):?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-addfield">
추가정보
</a>
</li>
<?php endif?>
</ul>
<form id="memberForm" role="form" action="<?php echo $g['s']?>/" method="post" hidden>
<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="info_update">
<input type="hidden" name="act" value="info">
<input type="hidden" name="send_mod" value="ajax">
<input type="hidden" name="check_nic" value="<?php echo $my['nic']?1:0?>">
<input type="hidden" name="check_email" value="<?php echo $my['email']?1:0?>">
<input type="hidden" name="name" value="<?php echo $my['name']?>">
<input type="hidden" name="nic" value="<?php echo $my['nic']?>">
<input type="hidden" name="email" value="<?php echo $my['email']?>">
<?php $tel1=explode('-',$my['tel1'])?>
<input type="hidden" name="tel1_1" value="<?php echo $tel1[0]?>">
<input type="hidden" name="tel1_2" value="<?php echo $tel1[1]?>">
<input type="hidden" name="tel1_3" value="<?php echo $tel1[2]?>">
<?php $tel2=explode('-',$my['tel2'])?>
<input type="hidden" name="tel2_1" value="<?php echo $tel2[0]?>">
<input type="hidden" name="tel2_2" value="<?php echo $tel2[1]?>">
<input type="hidden" name="tel2_3" value="<?php echo $tel2[2]?>">
<?php $birth_2=substr($my['birth2'],0,2)?>
<?php $birth_3=substr($my['birth2'],2,2)?>
<input type="hidden" name="birth_1" value="<?php echo $my['birth1']?>">
<input type="hidden" name="birth_2" value="<?php echo $birth_2?>">
<input type="hidden" name="birth_3" value="<?php echo $birth_3?>">
<input type="hidden" name="birthtype" value="<?php echo $my['birthtype']?>">
<input type="hidden" name="remail" value="<?php echo $my['mailing']?>">
<input type="hidden" name="sms" value="<?php echo $my['sms']?>">
<input type="hidden" name="sex" value="<?php echo $my['sex']?>">
<input type="hidden" name="zip" value="<?php echo $my['zip']?>">
<input type="hidden" name="addr1" value="<?php echo $my['addr1']?>">
<input type="hidden" name="addr2" value="<?php echo $my['addr2']?>">
<input type="hidden" name="bio" value="<?php echo $my['bio']?>">
<input type="hidden" name="home" value="<?php echo $my['home']?>">
<input type="hidden" name="job" value="<?php echo $my['job']?>">
<input type="hidden" name="marr_1" value="<?php echo $my['marr1']?>">
<input type="hidden" name="marr_2" value="<?php echo substr($my['marr2'],0,2)?>">
<input type="hidden" name="marr_3" value="<?php echo substr($my['marr2'],2,4)?>">
<?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])?>
<?php if ($_val[2]=='checkbox'): ?>
<input type="hidden" name="add_<?php echo $_val[0]?>[]" value="<?php echo $_myadd2[0]?>">
<?php else: ?>
<input type="hidden" name="add_<?php echo $_val[0]?>" value="<?php echo $_myadd2[0]?>">
<?php endif; ?>
<?php endforeach?>
</form>
</main>
</div>
<!-- Target Page : 프로필 설정 -->
<div id="page-profile" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">프로필 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">저장하기</button>
</div>
<div class="content bg-faded">
<div class="content-padded">
<div class="input-group input-group-lg">
<span class="input-group-addon">닉네임</span>
<input type="text" class="form-control" name="nic" value="<?php echo $my['nic']?>" maxlength="20" required autocomplete="off">
</div>
<div class="form-control-feedback" id="hLayernic"></div>
<div class="invalid-feedback">
닉네임을 입력해 주세요.
</div>
<small class="form-text text-muted">
사용하고 싶은 닉네임을 입력해 주세요 (8자이내 중복불가)
</small>
<?php if($d['member']['form_settings_avatar']):?>
<div class="avatar-wrapper p-t-2<?php echo $my['photo']?' active':'' ?>" data-role="avatar-wrapper">
<div class="avatar-blank">
<span>
<img class="img-circle js-avatar-img m-x-auto" src="<?php echo $g['s'].'/files/avatar/0.svg' ?>" alt="" width="160">
<span class="fa-stack fa-lg js-avatar-img">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-camera fa-stack-1x fa-inverse"></i>
</span>
</span>
<p class="m-t-1 text-muted">아바타를 등록해 보세요.</p>
</div><!-- /.avatar-blank -->
<div class="avatar-photo">
<span class="avatar-photo">
<img class="img-circle m-x-auto" data-role="avatar" src="<?php echo getAvatarSrc($my['uid'],'320') ?>" alt="<?php echo $my[$_HS['nametype']]?>" width="160">
</span>
<div class="m-t-1">
<a class="btn btn-secondary" href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $m?>&amp;a=member_photo_delete" onclick="return hrefCheck(this,true,'정말로 삭제 하시겠습니까?');">
<i class="fa fa-trash-o" aria-hidden="true"></i>
현재 사진삭제
</a>
<div class="btn-group btn-group-lg m-t-2" role="group" hidden>
<button type="button" class="btn btn-secondary"><i class="fa fa-undo" aria-hidden="true"></i> 반시계방향</button>
<button type="button" class="btn btn-secondary"><i class="fa fa-repeat" aria-hidden="true"></i> 시계방향</button>
</div>
</div>
</div><!-- /.avatar-photo -->
</div><!-- /.avatar-wrapper -->
<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="member_photo">
<input type="file" name="upfile" class="hidden" id="rb-upfile-avatar" accept="image/jpg">
</form>
<?php endif?>
</div>
</div>
</div>
<!-- Target Page : 이름 설정 -->
<div id="page-name" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">이름 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<input type="text" class="form-control form-control-lg" name="name" value="<?php echo $my['name']?>" maxlength="20" required autocomplete="off">
<div class="form-control-feedback"></div>
<div class="invalid-feedback">
이름 입력해 주세요.
</div>
<small class="form-text text-muted">
사용하고 싶은 이름 입력해 주세요 (8자이내 중복불가)
</small>
</div>
</div>
</div>
<?php if($d['member']['form_settings_tel1']):?>
<!-- Target Page : 전화번호 설정 -->
<div id="page-tel1" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">유선전화 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<div class="form-group">
<label>전화번호 <?php if($d['member']['form_settings_tel1_required']):?><span class="text-danger">*</span><?php endif?></label>
<?php $tel1=explode('-',$my['tel1'])?>
<div class="form-row">
<div class="col-xs-4">
<input type="text" name="tel1_1" value="<?php echo $tel1[0]?>" maxlength="4" size="4" class="form-control form-control-lg" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<input type="text" name="tel1_2" value="<?php echo $tel1[1]?>" maxlength="4" size="4" class="form-control form-control-lg" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<input type="text" name="tel1_3" value="<?php echo $tel1[2]?>" maxlength="4" size="4" class="form-control form-control-lg" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php endif?>
<?php if($d['member']['form_settings_birth']):?>
<!-- Target Page : 생년월일 설정 -->
<div id="page-birth" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">생년월일 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<div class="form-group">
<label>생년월일 <?php if($d['member']['form_settings_birth_required']):?> <span class="text-danger">*</span><?php endif?></label>
<div class="form-row m-b-1">
<div class="col-xs-4">
<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>
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<select class="form-control custom-select" 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>
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<select class="form-control custom-select" 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="invalid-feedback">
입력필요
</div>
</div>
</div>
<label class="custom-control custom-checkbox m-t-3">
<input type="checkbox" class="custom-control-input" name="birthtype" id="birthtype" value="1"<?php if($my['birthtype']):?> checked="checked"<?php endif?>>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">음력</span>
</label>
</div>
</div>
</div>
</div>
<?php endif?>
<?php if($d['member']['form_settings_sex']):?>
<!-- Target Page : 성별 설정 -->
<div id="page-sex" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">성별 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<div class="form-group">
<label>성별 <?php if($d['member']['form_settings_sex_required']):?><span class="text-danger">*</span><?php endif?></label>
<div class="form-group">
<label class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="sex" class="custom-control-input" value="1"<?php if($my['sex']==1):?> checked="checked"<?php endif?>>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">남성</span>
</label>
<label class="custom-control custom-radio">
<input type="radio" class="custom-control-input" name="sex" class="custom-control-input" value="2"<?php if($my['sex']==2):?> checked="checked"<?php endif?>>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">여성</span>
</label>
</div>
</div>
</div>
</div>
</div>
<?php endif?>
<?php if($d['member']['form_settings_bio']):?>
<!-- Target Page : 간단소개 설정 -->
<div id="page-bio" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">간단소개 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<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="5" placeholder="간략한 소개글을 입력해주세요."><?php echo $my['bio']?></textarea>
<div class="invalid-feedback">
간단소개를 입력해 주세요.
</div>
</div>
</div>
</div>
</div>
<?php endif?>
<?php if($d['member']['form_settings_home']):?>
<!-- Target Page : 홈페이지 설정 -->
<div id="page-home" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">홈페이지 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<div class="form-group">
<label>홈페이지<?php if($d['member']['form_settings_home_required']):?> <span class="text-danger">*</span><?php endif?></label>
<input type="url" class="form-control form-control-lg" name="home" value="<?php echo $my['home']?>" placeholder="URL을 입력하세요." autocomplete="off">
<div class="invalid-feedback">
홈페이지 주소를 입력해주세요.
</div>
</div>
</div>
</div>
</div>
<?php endif?>
<?php if($d['member']['form_settings_job']):?>
<!-- Target Page : 직업 설정 -->
<div id="page-job" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">직업 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<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="">&nbsp;+ 선택하세요</option>
<option value="" disabled>------------------</option>
<?php
$g['memberJobVarForSite'] = $g['path_var'].'site/'.$r.'/member.job.txt';
$_tmpvfile = file_exists($g['memberJobVarForSite']) ? $g['memberJobVarForSite'] : $g['path_module'].$module.'/var/member.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>
</div>
</div>
</div>
<?php endif?>
<?php if($d['member']['form_settings_marr']):?>
<!-- Target Page : 결혼기념일 설정 -->
<div id="page-marr" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">결혼기념일 설정</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<div class="form-group">
<label>결혼기념일 <?php if($d['member']['form_settings_marr_required']):?> <span class="text-danger">*</span><?php endif?></label>
<?php $tel2=explode('-',$my['tel2'])?>
<div class="form-row m-b-1">
<div class="col-xs-4">
<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>
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<select class="form-control custom-select" 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>
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<select class="form-control custom-select" 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>
</div>
</div>
</div>
</div>
</div>
<?php endif?>
<!-- Target Page : 추가 가입항목 -->
<div id="page-addfield" class="page right">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title">추가정보</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button type="button" class="btn btn-outline-primary btn-block js-save">변경하기</button>
</div>
<div class="content">
<div class="content-padded">
<?php $_add = file($g['path_var'].'site/'.$_HS['id'].'/member.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>
<?php if($_val[2]=='text'):?>
<input type="text" name="add_<?php echo $_val[0]?>" class="form-control" value="<?php echo $_myadd2[0]?>" />
<?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 endif?>
<?php if($_val[2]=='select'): $_skey=explode(',',$_val[3])?>
<select name="add_<?php echo $_val[0]?>" class="form-control custom-select">
<option value="">&nbsp;+ 선택하세요</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="custom-controls-stacked">
<?php foreach($_skey as $_sval):?>
<div class="custom-control custom-radio">
<input type="radio" 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(trim($_sval)==$_myadd2[0]):?> checked="checked"<?php endif?> class="custom-control-input">
<span class="custom-control-indicator"></span>
<label class="custom-control-description" 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="custom-controls-stacked">
<?php foreach($_skey as $_sval):?>
<div class="custom-control custom-checkbox">
<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?> >
<span class="custom-control-indicator"></span>
<label class="custom-control-description" 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 echo $_myadd2[0]?></textarea>
<?php endif?>
</div>
<?php endforeach?>
</div>
</div>
</div>
<?php if ($_add): ?>
<script>
//추가정보 전용
var f = document.getElementById("memberForm");
var page_main = $('#page-main')
var page_addfield = $('#page-addfield')
page_addfield.find('.js-save').tap(function() {
<?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])?>
<?php if ($_val[2]=='radio'): ?>
var add_<?php echo $_val[0]?> = page_addfield.find('[name="add_<?php echo $_val[0]?>"]:checked').val()
page_main.find('[name="add_<?php echo $_val[0]?>"]').val(add_<?php echo $_val[0]?>);
<?php elseif ($_val[2]=='checkbox'): ?>
var add_checkbox = page_main.find('[name="add_<?php echo $_val[0]?>[]"]')
add_checkbox.val('');
page_addfield.find('[name="add_<?php echo $_val[0]?>[]"]:checked').each(function() {
var item = $(this).val();
var item2 = add_checkbox.val();
add_checkbox.val(item2+'['+item+']');
});
<?php else: ?>
var add_<?php echo $_val[0]?> = page_addfield.find('[name="add_<?php echo $_val[0]?>"]').val()
page_main.find('[name="add_<?php echo $_val[0]?>"]').val(add_<?php echo $_val[0]?>);
<?php endif; ?>
<?php endforeach?>
setTimeout(function() {
$('#page-addfield').find('.content').loader({
text: "변경중...",
position: "overlay"
});
}, 300); //가상 키보드가 내려오는 시간동안 대기
setTimeout(function() {
$('#page-addfield').find('.content').loader("hide");
window.history.back(); // 메인 페이지로 복귀
setTimeout(function() {
getIframeForAction(f);
f.submit();
}, 500); //페이지 전환효과 소요시간동안 대기
}, 700);
});
</script>
<?php endif; ?>

View File

@@ -0,0 +1,424 @@
<?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]);
?>
<style>
.nt-label.badge-primary:before {
content: 'ON'
}
.nt-label.badge-default:before {
content: 'OFF'
}
</style>
<?php getImport('font-kimsq','css/font-kimsq',false,'css')?>
<div class="page center" id="page-main">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title" data-location="reload">
<i class="fa fa-bell-o fa-fw mr-1 text-muted" aria-hidden="true"></i> 알림설정
</h1>
</header>
<main class="content bg-faded">
<form id="procForm" role="form" 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">
<input type="hidden" name="mobile" value="1">
<input type="hidden" name="nt_web" value="<?php echo $nt_web ?>">
<input type="hidden" name="nt_email" value="<?php echo $nt_email ?>">
<input type="hidden" name="nt_fcm" value="<?php echo $nt_fcm ?>">
<input type="hidden" name="reload" value="">
<ul class="table-view bg-white mt-0 mb-0 animated fadeIn delay-1">
<li class="table-view-cell media" style="padding-right: 6rem ">
<i class="media-object pull-left fa fa-bell-o fa-fw mt-1 mr-2 text-muted" aria-hidden="true"></i>
<div class="media-body">
사이트 알림
<p>OFF 설정시 모든알림이 차단됩니다.</p>
</div>
<div data-toggle="switch" class="switch<?php echo $nt_web==''?' active':'' ?>" id="nt_web">
<div class="switch-handle"></div>
</div>
</li>
<?php if ($nt_web==''): ?>
<li class="table-view-cell">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-email">
<span class="badge badge-<?php echo $nt_email=='1'?'primary badge-pill':'default badge-outline' ?> nt-label" data-role="email"> </span>
<i class="fa fa-envelope-o fa-fw mr-2 text-muted" aria-hidden="true"></i> 이메일 알림
</a>
</li>
<?php if ($g['push_active']==1): ?>
<li class="table-view-cell" id="push_setting" style="display: block">
<a class="navigate-right" data-toggle="page" data-start="#page-main" href="#page-fcm">
<span class="badge badge-<?php echo $nt_fcm=='1'?'primary badge-pill':'default badge-outline' ?> nt-label" data-role="fcm"> </span>
<i class="fa fa-bolt fa-fw fa-lg mr-1 text-muted" aria-hidden="true"></i> 푸시 알림
</a>
</li>
<li class="table-view-cell" id="permission_div" style="display: none">
<a class="navigate-right" href="" id="RequestPermission">
<span class="badge badge-primary badge-outline">권한요청</span>
<i class="fa fa-bolt fa-lg fa-fw mt-2 mr-2 text-muted" aria-hidden="true"></i> 푸시 알림
</a>
</li>
<li class="table-view-cell" id="push_disabled" style="display: none">
<a class="navigate-right" href="https://support.google.com/chrome/answer/114662?hl=ko&co=GENIE.Platform%3DAndroid&oco=1" target="_blank">
<i class="media-object pull-left fa fa-bolt fa-lg fa-fw mt-2 mr-2 text-muted" aria-hidden="true"></i>
<span class="badge badge-danger badge-outline">해제</span>
<div class="media-body">
푸시 알림 차단됨
<p class="mr-4">
알림발송이 차단되었습니다.<br> 상태를 해제하려면 설정변경이 필요합니다.
</p>
</div>
</a>
</li>
<?php elseif ($g['push_active']==2): ?>
<li class="table-view-cell">
<i class="media-object pull-left fa fa-bolt fa-fw mt-1 mr-2 text-muted" aria-hidden="true"></i>
<div class="media-body">
푸시 알림이 지원되지 않습니다.
<p class="text-danger">푸시알림을 위한 연결정보가 없습니다.<br>관리자에게 문의하세요.</p>
</div>
</li>
<?php else: ?>
<li class="table-view-cell">
<i class="media-object pull-left fa fa-bolt fa-fw mt-1 mr-2 text-muted" aria-hidden="true"></i>
<div class="media-body">
푸시 알림이 지원되지 않습니다.
<p>안드로이드(Android)기기에서 지원됩니다.</p>
</div>
</li>
<?php endif; ?>
<li class="table-view-cell table-view-divider">
모듈별 설정
</li>
<?php $_MODULES=getDbArray($table['s_module'],'','*','gid','asc',0,1)?>
<?php while($_MD=db_fetch_array($_MODULES)):?>
<li class="table-view-cell<?php if(strstr($d['ntfc']['cut_modules'],'['.$_MD['id'].']')):?> d-none<?php endif?>" style="padding-right: 6rem " >
<div class="media-body">
<i class="<?php echo $_MD['icon']?> fa-fw mr-2 text-muted"></i>
<?php echo $_MD['name']?>
</div>
<div data-toggle="switch" class="module_members switch<?php echo strstr($NT_DATA[3],'['.$_MD['id'].']')?'':' active' ?>" data-module="<?php echo $_MD['id']?>" id="module_members_<?php echo $_MD['id']?>">
<div class="switch-handle"></div>
</div>
</li>
<?php endwhile?>
<li class="table-view-cell table-view-divider">알림발송이 차단된 회원</li>
<?php $_i=0;foreach($nt_members['data'] as $_md):?>
<?php $_R=getDbData($table['s_mbrdata'],'memberuid='.$_md,'*')?>
<li class="table-view-cell">
<div class="media">
<img class="img-circle mr-3" src="<?php echo getAvatarSrc($_R['memberuid'],'96') ?>" alt="" width="48" height="48">
<div class="media-body">
<h5 class="f14 mt-1 mb-0">
<?php if($_R['name']):?>
<?php echo $_R['name']?> <span class="badge badge-default badge-inverted align-text-top ml-2"><?php echo $_R['nic']?></span>
<?php else: ?>
<span class="badge badge-outline">시스템</span>
<?php endif?>
</h5>
<span class="badge badge-default badge-inverted"><?php echo getDateFormat($_R['d_regis'],'Y.m.d')?> 가입</span>
</div>
</div>
<a class="btn btn-secondary btn-sm" href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=notification&amp;a=notice_config_user&amp;member_uid=<?php echo $_R['memberuid']?>" onclick="return hrefCheck(this,true,'정말로 해제하시겠습니까?');">
차단해제
</a>
</li>
<?php $_i++;endforeach?>
<?php if(!$nt_members['count']):?>
<li class="table-view-cell text-xs-center p-4 small text-muted">
차단된 회원이 없습니다.
</li>
<?php endif?>
<?php endif?>
</ul>
<?php if ($nt_web): ?>
<div class="p-5 text-xs-center text-muted">
알림이 꺼져서 소식을 받을 수 없습니다. <br>
알림을 켜서 글, 댓글, 나 언급한 글 등<br>
중요알림을 받아보세요.
</div>
<?php endif?>
</form>
</main>
</div><!-- /.page -->
<div class="page right" id="page-email">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title" data-location="reload"><i class="fa fa-envelope-o fa-fw text-muted" aria-hidden="true"></i> 이메일 알림</h1>
</header>
<main class="content bg-faded">
<ul class="table-view bg-white m-t-0 animated fadeIn delay-1">
<li class="table-view-cell" style="padding-right: 6rem ">
<div class="media-body">
이메일 알림
<p>알림발송시 이메일도 받음</p>
</div>
<div data-toggle="switch" class="switch<?php echo $nt_email==1?' active':'' ?>" id="nt_email">
<div class="switch-handle"></div>
</div>
</li>
</ul>
<div class="content-padded">
<div class="form-group">
<label for="exampleSelect2">수신 이메일</label>
<select class="form-control custom-select form-control-lg" 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>
<p class="form-text text-muted mt-3">
<a href="/?r=home&amp;mod=settings&amp;page=email">이메일 관리</a>에서 추가 할수있으며, 본인인증된 메일만 추가할 수 있습니다.
</p>
<button type="button" class="btn btn-outline-primary btn-block mt-3 js-submit">
<span class="not-loading">저장</span>
<span class="is-loading">저장중..</span>
</button>
</div>
</div>
</main>
</div><!-- /.page -->
<div class="page right" id="page-fcm">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title" data-history="back"><i class="fa fa-bolt fa-fw text-muted" aria-hidden="true"></i> 푸시 알림</h1>
</header>
<main class="content bg-faded">
<ul class="table-view bg-white mt-0 mb-0 animated fadeIn delay-1">
<li class="table-view-cell" style="padding-right: 6rem ">
<div class="media-body">
푸시 알림
</div>
<div data-toggle="switch" class="switch<?php echo $nt_fcm==1?' active':'' ?>" id="nt_fcm">
<div class="switch-handle"></div>
</div>
</li>
</ul>
<div id="token_div" class="<?php echo $nt_fcm==1?'':'d-none' ?>">
<ul class="table-view bg-white m-t-0 animated fadeIn delay-1" style="margin-top: -.0625rem!important ">
<li class="table-view-divider">
<i class="fa fa-mobile fa-lg mr-2 text-muted" aria-hidden="true"></i>
인스턴스 ID 토큰
</li>
<li class="table-view-cell" style="line-height: 1.2;">
<small class="token text-muted" style="word-break: break-all;"></small>
<button class="btn btn-secondary js-deleteToken">
재발급
</button>
</li>
</ul>
<div class="content-padded text-muted small">
<button type="button" class="btn btn-secondary btn-block js-sendTest">
<span class="not-loading">나에게 푸시알림 보내기</span>
<span class="is-loading"><i class="fa fa-spinner fa-lg fa-spin fa-fw"></i> 보내는중 ...</span>
</button>
<p class="mt-3">
푸시알림이 수신되지 않는다면, 토큰 '재발급'을 시도해 보세요. 알림메시지를 받았다면 정상 입니다.
</p>
<p>
인스턴스 ID 토큰은 푸시알림에 활용됩니다.
접속한 기기가 변경되면 토큰 또한 변경됩니다.
</p>
</div>
</div><!-- /#token_div -->
</main>
</div><!-- /.page -->
<div id="popup-noti" class="popup zoom">
<div class="popup-content">
<header class="bar bar-nav bar-light bg-faded">
<h1 class="title text-xs-left pl-3">
<i class="fa fa-bell-o fa-fw" aria-hidden="true"></i>
<span data-role="from"></span>
</h1>
<div class="btn pull-right">
<span class="badge badge-default badge-inverted"><i class="fa fa-clock-o" aria-hidden="true"></i> </span>
<span class="badge badge-default badge-inverted" data-role="d_regis"></span>
</div>
</header>
<nav class="bar bar-standard bar-footer bg-faded d-none" data-role="not-referer">
<button type="button" class="btn btn-secondary btn-block" data-history="back">닫기</button>
</nav>
<nav class="bar bar-standard bar-footer bg-faded" data-role="has-referer">
<div class="row">
<div class="col-xs-6">
<button type="button" class="btn btn-secondary btn-block" data-history="back">닫기</button>
</div>
<div class="col-xs-6 p-l-0">
<a href="" class="btn btn-primary btn-block" data-role="referer">내용확인</a>
</div>
</div>
</nav>
<div class="content">
<p class="content-padded" data-role="message"></p>
</div>
</div>
</div>
<script>
$(function() {
var f = document.getElementById("procForm");
var form = $('#procForm')
putCookieAlert('member_settings_result') // 실행결과 알림 메시지 출력
//알림수신설정(웹알림)
$('#nt_web').on('changed.rc.switch', function (event) {
var handle = $(event.relatedTarget)
var button = handle.closest('.switch')
form.find('[name="reload"]').val(1);
if (button.hasClass('active')){
form.find('[name="nt_web"]').val('');
} else {
form.find('[name="nt_web"]').val(1);
}
getIframeForAction(f);
f.submit();
})
//알림수신설정(이메일 알림)
$('#nt_email').on('changed.rc.switch', function (event) {
var handle = $(event.relatedTarget)
var button = handle.closest('.switch')
if (button.hasClass('active')){
form.find('[name="nt_email"]').val(1);
} else {
form.find('[name="nt_email"]').val('');
}
getIframeForAction(f);
f.submit();
})
// 알림 수신용 이메일 지정
$('#page-email').find('.js-submit').tap(function() {
var form = $('#page-email')
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+'&mobile=1'
$(this).attr('disabled',true)
getIframeForAction();
setTimeout(function(){
frames.__iframe_for_action__.location.href = url;
}, 300);
});
//알림수신설정(FCM 알림)
$('#nt_fcm').on('changed.rc.switch', function (event) {
var handle = $(event.relatedTarget)
var button = handle.closest('.switch')
if (button.hasClass('active')){
form.find('[name="nt_fcm"]').val(1);
$('#token_div').removeClass('d-none')
} else {
form.find('[name="nt_fcm"]').val('');
$('#token_div').addClass('d-none')
}
getIframeForAction(f);
f.submit();
})
//모듈별 차단설정
$('.module_members').on('changed.rc.switch', function (event) {
var handle = $(event.relatedTarget)
var button = handle.closest('.switch')
var mid = button.data('module')
if (button.hasClass('active')){
var url = rooturl+'/?r='+raccount+'&m=notification&a=notice_config_user&module_id='+mid+'&mobile=1'
} else {
var url = rooturl+'/?r='+raccount+'&m=notification&a=multi_delete_user&module_id='+mid+'&deltype=off_module&mobile=1'
}
console.log(url)
getIframeForAction();
frames.__iframe_for_action__.location.href = url;
})
$('#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)
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('테스트 푸시알림가 수신 되었습니다.')
}
});
});
});
</script>

View File

@@ -0,0 +1,67 @@
<?php
$vtype = $vtype ? $vtype : 'point';
$sort = $sort ? $sort : 'uid';
$orderby= $orderby ? $orderby : 'desc';
$recnum = $recnum && $recnum < 200 ? $recnum : 10;
$sqlque = 'my_mbruid='.$my['uid'];
if ($type == '1') $sqlque .= ' and price > 0';
if ($type == '2') $sqlque .= ' and price < 0';
if ($where && $keyword)
{
$sqlque .= getSearchSql($where,$keyword,$ikeyword,'or');
}
$RCD = getDbArray($table['s_'.$vtype],$sqlque,'*',$sort,$orderby,$recnum,$p);
$NUM = getDbRows($table['s_'.$vtype],$sqlque);
$TPG = getTotalPage($NUM,$recnum);
$PageLink = './point?';
if ($type) $PageLink .= 'type='.$type.'&amp;';
?>
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" href="<?php echo RW('mod=settings') ?>"></a>
<h1 class="title" data-location="reload">
<i class="fa fa-mobile fa-lg fa-fw text-muted" aria-hidden="true"></i> 휴대폰 관리
</h1>
</header>
<?php if ($TPG > 1): ?>
<footer class="bar bar-standard bar-footer bar-light bg-white p-x-0">
<div class="">
<?php echo getPageLink($d['theme']['pagenum'],$p,$TPG,'')?>
</div>
</footer>
<?php endif; ?>
<main class="content bg-faded animated fadeIn delay-1">
<ul class="table-view bg-white" style="margin-top: -.0625rem">
<?php while($R=db_fetch_array($RCD)):?>
<li class="table-view-cell">
<?php echo $R['content']?>
<?php if(getNew($R['d_regis'],24)):?><small class="text-danger">new</small><?php endif?>
<p><?php echo getDateFormat($R['d_regis'],'Y.m.d H:i')?></p>
<span class="badge badge-primary badge-outline"><?php echo ($R['price']>0?'+':'').number_format($R['price'])?></span>
</li>
<?php endwhile?>
<?php if(!$NUM):?>
<li class="table-view-cell text-xs-center p-5 text-muted d-flex align-items-center justify-content-center bg-faded" style="height: calc(100vh - 10.5rem);">
내역이 없습니다.
</li>
<?php endif?>
</ul>
</main>
<script>
$(function() {
});
</script>

View File

@@ -0,0 +1,74 @@
<?php
$vtype = $vtype ? $vtype : 'point';
$sort = $sort ? $sort : 'uid';
$orderby= $orderby ? $orderby : 'desc';
$recnum = $recnum && $recnum < 200 ? $recnum : 10;
$sqlque = 'my_mbruid='.$my['uid'];
if ($type == '1') $sqlque .= ' and price > 0';
if ($type == '2') $sqlque .= ' and price < 0';
if ($where && $keyword)
{
$sqlque .= getSearchSql($where,$keyword,$ikeyword,'or');
}
$RCD = getDbArray($table['s_'.$vtype],$sqlque,'*',$sort,$orderby,$recnum,$p);
$NUM = getDbRows($table['s_'.$vtype],$sqlque);
$TPG = getTotalPage($NUM,$recnum);
$PageLink = './point?';
if ($type) $PageLink .= 'type='.$type.'&amp;';
?>
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" href="<?php echo RW('mod=settings') ?>"></a>
<span class="btn badge badge-pill badge-primary mr-2 pull-right"><?php echo number_format($my['point'])?> P</span>
<h1 class="title" data-location="reload">
<i class="fa fa-product-hunt mr-1 fa-fw text-muted" aria-hidden="true"></i> 포인트 내역
</h1>
</header>
<div class="bar bar-standard bar-header-secondary bar-light bg-faded p-x-0">
<nav class="nav nav-inline">
<a class="nav-link<?php echo !$type?' active':'' ?>" href="<?php echo $g['s'] ?>/?r=<?php echo $r ?>&mod=settings&page=point" data-control="push">전체</a>
<a class="nav-link<?php echo $type==1?' active':'' ?>" href="<?php echo $g['s'] ?>/?r=<?php echo $r ?>&mod=settings&page=point&type=1" data-control="push">획득</a>
<a class="nav-link<?php echo $type==2?' active':'' ?>" href="<?php echo $g['s'] ?>/?r=<?php echo $r ?>&mod=settings&page=point&type=2" data-control="push">사용</a>
</nav>
</div>
<?php if ($TPG > 1): ?>
<footer class="bar bar-standard bar-footer bar-light bg-white p-x-0">
<div class="">
<?php echo getPageLink($d['theme']['pagenum'],$p,$TPG,'')?>
</div>
</footer>
<?php endif; ?>
<main class="content bg-faded animated fadeIn delay-1">
<ul class="table-view bg-white" style="margin-top: -.0625rem">
<?php while($R=db_fetch_array($RCD)):?>
<li class="table-view-cell">
<?php echo $R['content']?>
<?php if(getNew($R['d_regis'],24)):?><small class="text-danger">new</small><?php endif?>
<p><?php echo getDateFormat($R['d_regis'],'Y.m.d H:i')?></p>
<span class="badge badge-outline badge-default"><?php echo ($R['price']>0?'+':'').number_format($R['price'])?></span>
</li>
<?php endwhile?>
<?php if(!$NUM):?>
<li class="table-view-cell text-xs-center p-5 text-muted d-flex align-items-center justify-content-center bg-faded" style="height: calc(100vh - 10.5rem);">
내역이 없습니다.
</li>
<?php endif?>
</ul>
</main>
<script>
$(function() {
});
</script>

View File

@@ -0,0 +1,260 @@
<?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);
?>
<div class="page center" id="page-main">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<h1 class="title" data-location="reload">
<i class="fa fa-truck fa-fw text-muted mr-1" aria-hidden="true"></i> 배송지 관리
</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button class="btn btn-outline-primary btn-block"
data-toggle="page"
data-target="#page-edit"
data-start="#page-main"
data-act="edit"
data-title="배송지 등록">
배송지 등록
</button>
</div>
<?php if ($TPG > 1): ?>
<footer class="bar bar-standard bar-footer bar-light bg-white p-x-0">
<div class="">
<?php echo getPageLink($d['theme']['pagenum'],$p,$TPG,'')?>
</div>
</footer>
<?php endif; ?>
<main class="content bg-faded animated fadeIn delay-1">
<ul class="table-view bg-white" style="margin-top: -.0625rem">
<?php while($P=db_fetch_array($PCD)):?>
<li class="table-view-cell">
<div class="media-body">
<?php echo $P['label'] ?><span class="badge badge-primary badge-outline ml-2">기본배송지</span>
<p>
<span class="text-muted"><?php echo $P['zip'] ?></span>
<?php echo $P['addr1'] ?><br><?php echo $P['addr2'] ?>
<span class="ml-1"><?php echo $P['tel1'] ?></span>
<span class="ml-1"><?php echo $P['tel2'] ?></span>
<span class="ml-1"><?php echo $P['name'] ?></span>
</p>
</div>
<button class="btn btn-secondary"
data-toggle="page"
data-target="#page-edit"
data-start="#page-main"
data-uid="<?php echo $P['uid'] ?>"
data-act="edit"
data-title="<?php echo $P['label'] ?>"
data-url="">
관리
</button>
</li>
<?php endwhile?>
<?php while($R=db_fetch_array($RCD)):?>
<li class="table-view-cell">
<div class="media-body">
<?php echo $R['label'] ?>
<p>
<span class="text-muted"><?php echo $R['zip'] ?></span>
<?php echo $R['addr1'] ?><br><?php echo $R['addr2'] ?>
<span class="ml-1"><?php echo $R['tel1'] ?></span>
<span class="ml-1"><?php echo $R['tel2'] ?></span>
<span class="ml-1"><?php echo $R['name'] ?></span>
</p>
</div>
<button class="btn btn-secondary"
data-toggle="page"
data-target="#page-edit"
data-start="#page-main"
data-uid="<?php echo $R['uid'] ?>"
data-act="edit"
data-title="<?php echo $R['label'] ?>"
data-url="">
관리
</button>
</li>
<?php endwhile?>
<?php if(!$NUM):?>
<li class="table-view-cell text-xs-center p-5 text-muted d-flex align-items-center justify-content-center bg-faded" style="height: calc(100vh - 10.5rem);">
내역이 없습니다.
</li>
<?php endif?>
</ul>
</main>
</div><!-- /.page -->
<div class="page right" id="page-edit">
<header class="bar bar-nav bar-dark bg-primary px-0">
<a class="icon icon-left-nav pull-left p-x-1" role="button" data-history="back"></a>
<button class="btn btn-link pull-right mr-3">
저장
</button>
<h1 class="title" data-location="reload">
<i class="fa fa-truck fa-fw text-muted mr-1" aria-hidden="true"></i> <span data-role="title"></span>
</h1>
</header>
<div class="bar bar-standard bar-footer bar-light bg-faded">
<button class="btn btn-outline-danger btn-block">
배송지 삭제
</button>
</div>
<main class="content bg-faded">
<div class="content-padded">
<div class="form-group">
<label>배송지명</label>
<input type="text" class="form-control" name="label" value="" placeholder="배송지명을 입력하세요." autocomplete="off">
<div class="invalid-feedback">
배송지명을 입력해주세요.
</div>
</div>
<div class="form-group">
<label>수령인 <span class="text-danger">*</span></label>
<input type="text" class="form-control" name="name" value="" placeholder="수령인을 입력하세요." autocomplete="off">
<div class="invalid-feedback">
수령인을 입력해주세요.
</div>
</div>
<div class="form-group">
<label>주소 <span class="text-danger">*</span></label>
<div id="addrbox"<?php if($my['addr0']=='해외'):?> class="hidden"<?php endif?>>
<div class="input-group" style="margin-bottom: 5px">
<input type="number" class="form-control" name="zip" value="<?php echo substr($my['zip'],0,5)?>" id="zip1" placeholder="" readonly>
<span class="input-group-btn">
<button class="btn btn-secondary" type="button" id="execDaumPostcode">
<i class="fa fa-search"></i>우편번호
</button>
</span>
</div>
<input class="form-control" type="text" value="<?php echo $my['addr1']?>" name="addr1" id="addr1" readonly placeholder="우편번호를 선택" style="margin-bottom: 5px">
<input class="form-control" type="text" value="<?php echo $my['addr2']?>" name="addr2" id="addr2" style="margin-bottom: 5px" placeholder="상세 주소를 입력">
<div class="invalid-feedback">
주소를 입력해주세요.
</div>
</div>
<?php if($d['member']['form_settings_overseas']):?>
<div class="m-t-1">
<?php if($my['addr0']=='해외'):?>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="overseas" value="1" checked="checked" onclick="overseasChk(this);">
<span class="custom-control-indicator"></span>
<span class="custom-control-description" id="overseas_ment">해외거주자 입니다.</span>
</label>
<?php else:?>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="overseas" value="1" onclick="overseasChk(this);">
<span class="custom-control-indicator"></span>
<span class="custom-control-description" id="overseas_ment">해외거주자일 경우 체크해 주세요.</span>
</label>
<?php endif?>
</div>
<?php endif?>
</div><!-- /.form-group -->
<div class="form-group">
<label>연락처 <span class="text-danger">*</span></label>
<?php $tel1=explode('-',$my['tel1'])?>
<div class="form-row">
<div class="col-xs-4">
<input type="text" name="tel1_1" value="<?php echo $tel1[0]?>" maxlength="4" size="4" class="form-control" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<input type="text" name="tel1_2" value="<?php echo $tel1[1]?>" maxlength="4" size="4" class="form-control" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<input type="text" name="tel1_3" value="<?php echo $tel1[2]?>" maxlength="4" size="4" class="form-control" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
</div>
</div>
<div class="form-group">
<label>연락처2</label>
<?php $tel1=explode('-',$my['tel1'])?>
<div class="form-row">
<div class="col-xs-4">
<input type="text" name="tel1_1" value="<?php echo $tel1[0]?>" maxlength="4" size="4" class="form-control" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<input type="text" name="tel1_2" value="<?php echo $tel1[1]?>" maxlength="4" size="4" class="form-control" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
<div class="col-xs-4">
<input type="text" name="tel1_3" value="<?php echo $tel1[2]?>" maxlength="4" size="4" class="form-control" autocomplete="off">
<div class="invalid-feedback">
입력필요
</div>
</div>
</div>
</div>
<label class="custom-control custom-checkbox m-t-3">
<input type="checkbox" class="custom-control-input" name="birthtype" id="birthtype" value="1">
<span class="custom-control-indicator"></span>
<span class="custom-control-description">기본 배송지로 등록</span>
</label>
</div><!-- /.content-padded -->
</main>
</div><!-- /.page -->
<!-- Modal -->
<div id="modal-DaumPostcode" class="modal">
<header class="bar bar-nav bar-light bg-faded px-0">
<a class="icon icon-close pull-right p-x-1" data-history="back" role="button"></a>
<h1 class="title">우편번호 검색</h1>
</header>
<div class="content" id="postLayer">
</div>
</div>
<?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>
$(function() {
});
</script>