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,10 @@
body,
.fullscreen {
width: 100%;
height: 100vh;
padding: 30vh;
}
#qrcode img {
margin : 30px auto
}

View File

@@ -0,0 +1,34 @@
<div class="text-center" style="margin-top: -100px">
<h1>
<i class="kf kf-bi-06 fa-lg d-block mb-4" title="KimsQ is Kind" data-tooltip="tooltip"></i>
설치가 완료되었습니다.
</h1>
<p class="text-muted">
<?php echo sprintf('%s님, 이 페이지를 보고 계시면 킴스큐가 정상적으로 설치된 것입니다.',$my['name'])?><br>
이제 킴스큐를 시작할 준비가 되셨습니다.
</p>
<div id="qrcode"></div>
<a href="<?php echo RW(0) ?>" class="btn btn-primary btn-lg animated bounce delay-3">
시작하기
</a>
</div>
<script src="//cdn.jsdelivr.net/npm/davidshimjs-qrcodejs@0.0.2/qrcode.min.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-55876126-3', 'auto');
ga('send', 'pageview');
var qrcode = new QRCode(document.getElementById("qrcode"), {
text: '<?php echo $g['url_root'].$g['s'] ?>',
width: 150,
height: 150,
colorDark : "#333",
colorLight : "#f8f9fa",
correctLevel : QRCode.CorrectLevel.H
});
</script>

View File

@@ -0,0 +1,35 @@
html,
body,
#content,
#content-main,
.rb-guide-wrapper {
height: 98% !important;
width: 100%;
}
body {
font-family: "Open Sans", '돋움', dotum, sans-serif;
}
.rb-guide-wrapper {
display: table;
text-align: center;
}
.rb-guide-wrapper-inner {
display: table-cell;
vertical-align: middle;
}
.rb-guide-wrapper-inner .container {
margin-top: -100px;
line-height: 1.8
}
.rb-guide-wrapper-inner h1 .fa {
margin-bottom: 15px
}
.rb-guide-wrapper-inner h1 .fa.text-muted {
color: #B4B3B3
}

View File

@@ -0,0 +1,26 @@
<meta name="robots" content="noindex">
<div class="rb-guide-wrapper">
<div class="rb-guide-wrapper-inner">
<div class="container">
<h1>
<i class="fa fa-lock fa-3x text-muted"></i><br>
서비스 안내
</h1>
<p class="text-muted">
요청하신 페이지는 권한이 있어야 접근하실 있습니다.<br class="hidden-xs">
로그인하신 후에 이용하세요.<br class="hidden-xs">
로그인을 하신 후에도 페이지가 출력되면 회원등급 권한이 없는 경우입니다.
</p>
<p>
<button type="button" class="btn btn-default" onclick="goBack();">이전으로</button>
</p>
</div>
</div>
</div>
<script>
function goBack() {
window.history.back()
}
</script>

View File

@@ -0,0 +1,35 @@
html,
body,
#content,
#content-main,
.rb-guide-wrapper {
height: 98% !important;
width: 100%;
}
body {
font-family: "Open Sans", '돋움', dotum, sans-serif;
}
.rb-guide-wrapper {
display: table;
text-align: center;
}
.rb-guide-wrapper-inner {
display: table-cell;
vertical-align: middle;
}
.rb-guide-wrapper-inner .container {
margin-top: -100px;
line-height: 1.8
}
.rb-guide-wrapper-inner h1 .fa {
margin-bottom: 15px
}
.rb-guide-wrapper-inner h1 .fa.text-muted {
color: #B4B3B3
}

View File

@@ -0,0 +1,25 @@
<meta name="robots" content="noindex">
<div class="rb-guide-wrapper">
<div class="rb-guide-wrapper-inner">
<div class="container">
<h1>
<i class="fa fa-exclamation-triangle fa-3x text-muted"></i><br>
서비스 안내
</h1>
<p class="text-muted">
서비스가 일시적으로 중단되었거나 서버 작업중에 있습니다.<br class="hidden-xs">
작업이 완료되는대로 재오픈될 예정입니다.
</p>
<p>
<button type="button" class="btn btn-default" onclick="goBack();">이전으로</button>
</p>
</div>
</div>
</div>
<script>
function goBack() {
window.history.back()
}
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,182 @@
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" href="#kf" data-toggle="tab">kimsQ</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#awesome" data-toggle="tab">Awesome</a>
</li>
</ul>
<!-- Tab panes -->
<div class="tab-content icon-gallery">
<div class="tab-pane active" id="kf">
<h5>Default Modules</h5>
<ul class="icon-list kf">
<li><span class="kf-comment" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-bbs" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-analysis" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-admin" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-widget" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-upload" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-tag" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-home" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-search" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-popup" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-notify" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-module" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-member" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-media" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-market" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-layout" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-domain" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-device" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-dbmanager" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-dashboard" onclick="iconDrop(this.className);"></span></li>
<li><span class="kf-contents" onclick="iconDrop(this.className);"></span></li>
</ul>
<h5>kimsQ BI</h5>
<ul class="icon-list kf">
<li><span class="fa kf-bi-03" onclick="iconDrop(this.className);"></span></li>
<li><span class="fa kf-bi-04" onclick="iconDrop(this.className);"></span></li>
<li><span class="fa kf-bi-05" onclick="iconDrop(this.className);"></span></li>
<li><span class="fa kf-bi-06" onclick="iconDrop(this.className);"></span></li>
<li><span class="fa kf-bi-07" onclick="iconDrop(this.className);"></span></li>
</ul>
</div>
<div class="tab-pane" id="awesome">
<h5 class="text-primary">Brand Icons <small></small></h5>
<ul class="icon-list awesome">
<li title="android"><span class="fa fa-android" onclick="iconDrop(this.className);"></span></li>
<li title="apple"><span class="fa fa-apple" onclick="iconDrop(this.className);"></span></li>
<li title="google-plus"><span class="fa fa-google-plus" onclick="iconDrop(this.className);"></span></li>
<li title="twitter"><span class="fa fa-twitter" onclick="iconDrop(this.className);"></span></li>
<li title="facebook"><span class="fa fa-facebook" onclick="iconDrop(this.className);"></span></li>
<li title="html5"><span class="fa fa-html5" onclick="iconDrop(this.className);"></span></li>
<li title="css3"><span class="fa fa-css3" onclick="iconDrop(this.className);"></span></li>
<li title="dropbox"><span class="fa fa-dropbox" onclick="iconDrop(this.className);"></span></li>
<li title="flickr"><span class="fa fa-flickr" onclick="iconDrop(this.className);"></span></li>
<li title="github"><span class="fa fa-github" onclick="iconDrop(this.className);"></span></li>
<li title="github-alt"><span class="fa fa-github-alt" onclick="iconDrop(this.className);"></span></li>
<li title="instagram"><span class="fa fa-instagram" onclick="iconDrop(this.className);"></span></li>
<li title="linkedin"><span class="fa fa-linkedin" onclick="iconDrop(this.className);"></span></li>
<li title="linux"><span class="fa fa-linux" onclick="iconDrop(this.className);"></span></li>
<li title="pinterest"><span class="fa fa-pinterest" onclick="iconDrop(this.className);"></span></li>
<li title="skype"><span class="fa fa-skype" onclick="iconDrop(this.className);"></span></li>
<li title="vimeo"><span class="fa fa-vimeo-square" onclick="iconDrop(this.className);"></span></li>
<li title="windows"><span class="fa fa-windows" onclick="iconDrop(this.className);"></span></li>
<li title="youtube"><span class="fa fa-youtube" onclick="iconDrop(this.className);"></span></li>
<li title="dribbble"><span class="fa fa-dribbble" onclick="iconDrop(this.className);"></span></li>
<li title="foursquare"><span class="fa fa-foursquare" onclick="iconDrop(this.className);"></span></li>
<li title="tumblr"><span class="fa fa-tumblr" onclick="iconDrop(this.className);"></span></li>
<li title="pagelines"><span class="fa fa-pagelines" onclick="iconDrop(this.className);"></span></li>
<li title="maxcdn"><span class="fa fa-maxcdn" onclick="iconDrop(this.className);"></span></li>
</ul>
<h5 class="text-primary">Web Application Icons <small>(업데이트 예정)</small></h5>
<ul class="icon-list awesome">
<li><span class="fa fa-adjust" onclick="iconDrop(this.className);"></span></li>
<li><span class="fa fa-anchor" onclick="iconDrop(this.className);"></span></li>
</ul>
</div>
</div>
<!-- @부모레이어를 제어할 있도록 모달의 헤더와 풋터를 부모레이어에 출력시킴 -->
<div id="_modal_header" hidden>
<h4 class="modal-title" id="myModalLabel"><i class="fa fa-flag"></i> 아이콘 갤러리</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div id="_modal_footer" hidden>
<button type="button" class="btn btn-default" aria-hidden="true" data-dismiss="modal">닫기</button>
</div>
<script type="text/javascript">
//<![CDATA[
function iconDrop(val)
{
parent.iconDrop(val);
}
function modalSetting()
{
parent.getId('modal_window_dialog_modal_window').style.width = '100%';
parent.getId('modal_window_dialog_modal_window').style.paddingRight = '20px';
parent.getId('modal_window_dialog_modal_window').style.maxWidth = '600px';
parent.getId('_modal_iframe_modal_window').style.height = '450px'
parent.getId('_modal_body_modal_window').style.height = '450px';
parent.getId('_modal_header_modal_window').innerHTML = getId('_modal_header').innerHTML;
parent.getId('_modal_header_modal_window').className = 'modal-header';
parent.getId('_modal_header_modal_window').style.background = '#3F424B';
parent.getId('_modal_header_modal_window').style.color = '#fff';
parent.getId('_modal_body_modal_window').style.padding = '0';
parent.getId('_modal_body_modal_window').style.margin = '0';
parent.getId('_modal_footer_modal_window').innerHTML = getId('_modal_footer').innerHTML;
parent.getId('_modal_footer_modal_window').className = 'modal-footer';
}
modalSetting();
//]]>
</script>
<style>
#rb-body {
background-color: #fff;
padding: 15px;
}
/*icon-gallery*/
.icon-gallery {
height: 380px;
overflow: auto;
padding: 15px;
}
.icon-gallery .icon-list {
padding-left: 0;
padding-bottom: 1px;
margin-bottom: 20px;
list-style: none;
overflow: hidden;
}
.icon-gallery .icon-list li {
float: left;
width: 12.5%;
padding: 10px;
margin: 0 -1px -1px 0;
font-size: 12px;
line-height: 1.4;
text-align: center;
border: 1px solid #ddd;
list-style-type: none;
cursor: pointer;
}
.icon-gallery .kf span {
font-size: 30px;
}
.icon-gallery .awesome span {
font-size: 30px;
}
.icon-gallery .icon-list .glyphicon {
font-size: 25px;
}
.icon-gallery .icon-list .glyphicon-class {
display: block;
text-align: center;
}
.icon-gallery .icon-list li:hover {
background-color: rgba(86,61,124,.1);
}
.icon-gallery .icon-list li.active {
background-color: rgba(86,61,124,.1);
}
</style>

View File

@@ -0,0 +1,35 @@
html,
body,
#content,
#content-main,
.rb-guide-wrapper {
height: 98% !important;
width: 100%;
}
body {
font-family: "Open Sans", '돋움', dotum, sans-serif;
}
.rb-guide-wrapper {
display: table;
text-align: center;
}
.rb-guide-wrapper-inner {
display: table-cell;
vertical-align: middle;
}
.rb-guide-wrapper-inner .container {
margin-top: -100px;
line-height: 1.8
}
.rb-guide-wrapper-inner h1 .fa {
margin-bottom: 15px
}
.rb-guide-wrapper-inner h1 .fa.text-muted {
color: #B4B3B3
}

View File

@@ -0,0 +1,25 @@
<meta name="robots" content="noindex">
<div class="rb-guide-wrapper">
<div class="rb-guide-wrapper-inner">
<div class="container">
<h1>
<i class="fa fa-exclamation-circle fa-3x text-muted"></i><br>
페이지를 찾을 없습니다.
</h1>
<p class="text-muted">
요청하신 페이지는 존재하지 않거나 컨텐츠연결이 잘못된 상태입니다.<br class="hidden-xs">
관리자로 로그인하시면 요청하신 페이지를 직접 만드시거나 페이지에 대한 세부설정을 확인하실 있습니다.
</p>
<p>
<button type="button" class="btn btn-default" onclick="goBack();">이전으로</button>
</p>
</div>
</div>
</div>
<script>
function goBack() {
window.history.back()
}
</script>

View File

@@ -0,0 +1,67 @@
#jointbox {
width: 100%;
height: 550px;
padding: 0;
margin: 0;
}
#jointbox .category {
float: left;
width: 205px;
height: 100%;
margin-right: -200px;
padding: 0;
border-right: #dfdfdf dashed 1px;
overflow-y: auto;
overflow-x: hidden;
}
#jointbox .category .list-group-item:first-child {
border-top: 0;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
#jointbox .category .list-group-item:last-child {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
#jointbox .category .list-group-item {
border-left: 0;
border-right: 0
}
#jointbox .content {
margin-left: 205px;
height: 430px;
padding: 20px;
overflow-y: auto;
overflow-x: hidden;
}
#jointbox .content .none {
color: #c0c0c0;
text-align: center;
padding-top: 70px;
}
#jointbox .list-group-item {
padding: 8px 5px 3px 7px;
}
@media (max-width: 600px) {
#jointbox {
overflow: auto;
}
#jointbox .category {
width: 100%;
height: auto;
border: 0;
}
#jointbox .content {
float: left;
width: 100%;
height: auto;
margin-left: 0;
padding: 10px 10px 120px 10px;
}
}

View File

@@ -0,0 +1,70 @@
<div id="jointbox">
<div class="category">
<div class="list-group">
<?php $MODULES = getDbArray($table['s_module'],'','*','gid','asc',0,1)?>
<?php while($R=db_fetch_array($MODULES)):?>
<?php $_jfile0 = $g['path_module'].$R['id'].'/admin/var/var.joint.php'?>
<?php if(!is_file($_jfile0)||strstr($cmodule,'['.$R['id'].']'))continue?>
<?php if($smodule==$R['id']) $g['var_joint_file'] = is_file($_jfile0)?$_jfile0:(is_file($_jfile1)?$_jfile1:$_jfile2)?>
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;system=<?php echo $system?>&amp;iframe=<?php echo $iframe?>&amp;dropfield=<?php echo $dropfield?>&amp;smodule=<?php echo $R['id']?>&amp;cmodule=<?php echo $cmodule?>" class="list-group-item list-group-item-action d-flex justify-content-between align-items-center<?php if($smodule==$R['id']):?> active<?php endif?>"><span><i class="kf fa-fw <?php echo $R['icon']?$R['icon']:'kf-'.$R['id']?>"></i> <?php echo $R['name']?></span><span class="badge badge-light badge-pill"><?php echo $R['id']?></span></a>
<?php endwhile?>
</div>
</div>
<div class="content">
<?php if($smodule):?>
<?php include $g['var_joint_file'] ?>
<?php else:?>
<div class="none">
<i class="kf kf-module fa-5x"></i><br><br>
연결할 모듈을 선택하세요.
</div>
<?php endif?>
</div>
</div>
<!-- @부모레이어를 제어할 수 있도록 모달의 헤더와 풋터를 부모레이어에 출력시킴 -->
<div id="_modal_header" class="hidden">
<h4 class="modal-title"><i class="kf-module kf-lg"></i> 모듈 연결하기</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
</div>
<div id="_modal_footer" class="hidden">
<?php if($dropButtonUrl):?>
<button type="button" class="btn btn-default pull-left" data-dismiss="modal" aria-hidden="true" id="_modalclosebtn_">닫기</button>
<button type="button" class="btn btn-primary" onclick="frames._modal_iframe_modal_window.dropJoint('<?php echo $dropButtonUrl?>');">모듈연결</button>
<?php else:?>
<button type="button" class="btn btn-primary" data-dismiss="modal" aria-hidden="true" id="_modalclosebtn_">닫기</button>
<?php endif?>
</div>
<script>
function dropJoint(m)
{
var f = parent.getId('<?php echo $dropfield?>');
f.value = m;
parent.$('#modal_window').modal('hide');
}
function modalSetting()
{
parent.getId('modal_window_dialog_modal_window').style.width = '100%';
parent.getId('modal_window_dialog_modal_window').style.paddingRight = '20px';
parent.getId('modal_window_dialog_modal_window').style.maxWidth = '800px';
parent.getId('_modal_iframe_modal_window').style.height = '430px';
parent.getId('_modal_body_modal_window').style.height = '430px';
parent.getId('_modal_header_modal_window').innerHTML = getId('_modal_header').innerHTML;
parent.getId('_modal_header_modal_window').className = 'modal-header';
parent.getId('_modal_body_modal_window').style.padding = '0';
parent.getId('_modal_body_modal_window').style.margin = '0';
parent.getId('_modal_footer_modal_window').innerHTML = getId('_modal_footer').innerHTML;
parent.getId('_modal_footer_modal_window').className = 'modal-footer';
}
modalSetting();
</script>

View File

@@ -0,0 +1,3 @@
#rb-modal-body {
padding: 20px;
}

View File

@@ -0,0 +1,91 @@
<div id="rb-modal-body">
<form name="LayoutLogForm" action="<?php echo $g['s']?>/" method="post" onsubmit="return layoutLogCheck(this);" role="form">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="a" value="login">
<input type="hidden" name="referer" value="">
<input type="hidden" name="isModal" value="Y">
<div class="form-group">
<label class="sr-only" for="username">아이디 또는 이메일</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" value="<?php echo getArrayCookie($_COOKIE['svshop'],'|',0)?>" id="username" name="id" placeholder="아이디 또는 이메일" class="form-control">
</div>
</div>
<div class="form-group">
<label class="sr-only" for="password">Password</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input type="password" id="password" name="pw" value="<?php echo getArrayCookie($_COOKIE['svshop'],'|',1)?>" placeholder="패스워드" class="form-control">
</div>
</div>
<div class="checkbox">
<label><input name="idpwsave" class="rb-confirm" type="checkbox" value="checked"<?php if($_COOKIE['svshop']):?> checked<?php endif?>> 아이디/패스워드 기억하기</label>
</div>
<button type="submit" class="btn btn-primary btn-block btn-lg">로그인</button>
</form>
</div>
<!----------------------------------------------------------------------------
@부모레이어를 제어할 수 있도록 모달의 헤더와 풋터를 부모레이어에 출력시킴
----------------------------------------------------------------------------->
<div id="_modal_header" class="hidden">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel"><i class="fa fa-sign-in fa-lg"></i> 로그인 </h4>
</div>
<div id="_modal_footer" class="hidden">
<a href="#" class="btn btn-default btn-block" data-dismiss="modal" aria-hidden="true">닫기</a>
</div>
<script>
var bootmsg = '<div class="media"><div class="media-body" style="font-size:12px;">';
bootmsg+= '<h4 class="media-heading">로그인 정보를 저장하시겠습니까?</h4>';
bootmsg+= '로그인 정보를 저장할 경우 다음접속시 정보를 입력하지 않으셔도 되지만,PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.<br>';
bootmsg+= '</div></div>';
$('.rb-confirm').on('click', function() {
bootbox.confirm(bootmsg, function(result){
document.LayoutLogForm.idpwsave.checked = result;
});
$('.bootbox .media-heading').css({'font-weight':'bold','margin-bottom':'8px'});
$('.bootbox .modal-footer').css({'margin-top':'0','background-color':'#f2f2f2'});
$('.bootbox .modal-footer .btn-default').addClass('pull-left');
});
function layoutLogCheck(f)
{
if (f.id.value == '')
{
alert('아이디나 이메일주소를 입력해 주세요.');
f.id.focus();
return false;
}
if (f.pw.value == '')
{
alert('패스워드를 입력해 주세요.');
f.pw.focus();
return false;
}
f.referer.value = parent.location.href;
getIframeForAction(f);
return true;
}
function modalSetting()
{
parent.getId('modal_window_dialog_modal_window').style.width = '100%';
parent.getId('modal_window_dialog_modal_window').style.paddingRight = '20px';
parent.getId('modal_window_dialog_modal_window').style.maxWidth = '400px';
parent.getId('_modal_iframe_modal_window').style.height = '210px';
parent.getId('_modal_body_modal_window').style.height = '210px';
parent.getId('_modal_header_modal_window').innerHTML = getId('_modal_header').innerHTML;
parent.getId('_modal_header_modal_window').className = 'modal-header';
parent.getId('_modal_body_modal_window').style.padding = '0';
parent.getId('_modal_body_modal_window').style.margin = '0';
parent.getId('_modal_footer_modal_window').innerHTML = getId('_modal_footer').innerHTML;
parent.getId('_modal_footer_modal_window').className = 'modal-footer';
}
modalSetting();
</script>

View File

@@ -0,0 +1,357 @@
<?php
$g['notiVarForSite'] = $g['path_var'].'site/'.$r.'/notification.var.php';
include_once file_exists($g['notiVarForSite']) ? $g['notiVarForSite'] : $g['path_module'].'notification/var/var.php';
if($callMod == 'config')
{
$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]);
$_SESSION['sh_notify_auto_del'] = '';
$_SESSION['sh_notify_popup'] = '';
}
else if ($callMod == 'view')
{
$recnum = 1000;
$NUM = getDbRows($table['s_notice'],'mbruid='.$my['uid']);
$TPG = getTotalPage($NUM,$recnum);
}
?>
<div id="rb-modal-body" class="modal-body bg-light">
<?php if($callMod == 'config'):?>
<div class="callMod-config">
<form name="procForm" class="form-horizontal" 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">
<p class="mb-3 small text-muted">
알림을 수신하면 웹 사이트내의 정보는 물론 회원님이 언급되거나 관련된 정보들을<br>실시간으로 받아보실 수 있습니다.
</p>
<ul class="list-group mb-3">
<li class="list-group-item d-flex justify-content-between align-items-center">
알림 수신설정
<div class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons">
<label class="btn <?php if($nt_web==''):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="" name="nt_rcv"<?php if($nt_web==''):?> checked<?php endif?> id="nt_rcv" autocomplete="off"> 받음
</label>
<label class="btn <?php if($nt_web=='1'):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="1" name="nt_rcv"<?php if($nt_web=='1'):?> checked<?php endif?> id="nt_rcv_1" autocomplete="off"> 받지않음
</label>
</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
알림 수신방법
<div class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons">
<label class="btn <?php if($nt_webtype==''):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="" name="nt_rcvtype"<?php if($nt_webtype==''):?> checked<?php endif?> id="nt_rcvtype" autocomplete="off"> 갯수변동
</label>
<label class="btn <?php if($nt_webtype=='1'):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="1" name="nt_rcvtype"<?php if($nt_webtype=='1'):?> checked<?php endif?> id="nt_rcvtype_1" autocomplete="off"> 갯수변동+팝업
</label>
</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
이메일 연동
<div class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons">
<label class="btn <?php if($nt_email=='1'):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="1" name="nt_email"<?php if($nt_email=='1'):?> checked<?php endif?> id="nt_email_1" autocomplete="off"> 이메일도 받음
</label>
<label class="btn <?php if($nt_email==''):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="" name="nt_email"<?php if($nt_email==''):?> checked<?php endif?> id="nt_email" autocomplete="off"> 연동안함
</label>
</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
수신후 삭제처리
<div class="btn-group btn-group-sm btn-group-toggle" data-toggle="buttons">
<label class="btn <?php if($nt_webdel=='1'):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="1" name="nt_rcvdel"<?php if($nt_webdel=='1'):?> checked<?php endif?> id="nt_rcvdel_1" autocomplete="off"> 자동삭제
</label>
<label class="btn <?php if($nt_webdel==''):?>btn-primary active<?php else:?>btn-secondary<?php endif?>" onclick="btnCheck(this);">
<input type="radio" value="" name="nt_rcvdel"<?php if($nt_webdel==''):?> checked<?php endif?> id="nt_rcvdel" autocomplete="off"> 수동삭제
</label>
</div>
</li>
</ul>
<div class="card mb-3">
<div class="card-header border-bottom-0">
알림보내기 차단중인 곳
</div>
<table class="table table-hover text-center mb-0 f13">
<thead>
<tr>
<th class="rb-tbl-left"><span>모듈명 (보낸 곳)</span></th>
<th class="rb-tbl-right">차단해제</th>
</tr>
</thead>
<tbody>
<?php foreach($nt_modules['data'] as $_md):?>
<?php $_R=getDbData($table['s_module'],"id='".$_md."'",'*')?>
<tr>
<td class="rb-tbl-left">
<span>
<i class="<?php echo $_R['icon']?>"></i>
<?php echo $_R['name']?>
<small> <?php echo ucfirst($_R['id'])?></small>
</span>
</td>
<td class="rb-tbl-right">
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=notification&amp;a=notice_config_user&amp;module_id=<?php echo $_R['id']?>" onclick="return hrefCheck(this,true,'정말로 해제하시겠습니까?');">해제</a>
</td>
<tr>
<?php endforeach?>
</tbody>
</table>
<?php if(!$nt_modules['count']):?>
<div class="rb-none small text-center text-muted p-5">
차단된 곳이 없습니다.
</div>
<?php endif?>
</div><!-- /.card -->
<div class="card mb-3">
<div class="card-header border-bottom-0">
알림보내기 차단중인 회원
</div>
<table class="table table-hover text-center text-muted mb-0 f13">
<thead>
<tr>
<th class="rb-tbl-left"><span>회원명</span></th>
<th class="rb-tbl-right">차단해제</th>
</tr>
</thead>
<tbody>
<?php $_i=0;foreach($nt_members['data'] as $_md):?>
<?php $_R=getDbData($table['s_mbrdata'],'memberuid='.$_md,'*')?>
<tr>
<td class="rb-tbl-left">
<span>
<a href="#." id='_rb-popover-from-<?php echo $_i?>' data-placement="right" data-popover="popover" data-content="<div id='rb-popover-from-<?php echo $_i?>'><script>getPopover('member','<?php echo $_R['memberuid']?>','rb-popover-from-<?php echo $_i?>')</script></div>">
<i class="glyphicon glyphicon-user"></i>
<?php echo $_R['nic']?> (<?php echo $_R['name']?>)
</a>
</span>
</td>
<td class="rb-tbl-right">
<a 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>
</td>
<tr>
<?php $_i++;endforeach?>
</tbody>
</table>
<?php if(!$nt_members['count']):?>
<div class="rb-none small text-center p-5">
차단된 회원이 없습니다.
</div>
<?php endif?>
</div><!-- /.card -->
</form>
</div>
<?php else:?>
<form name="listForm" 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="">
<input type="hidden" name="deltype" value="">
<div id="rb-notifications-layer" class="list-group callMod-<?php echo $callMod?>">
<!-- 여기에 알림정보를 실시간으로 받아옴 -->
</div>
</form>
<?php if($callMod=='view'):?>
<div class="mt-3">
<fieldset<?php if(!$NUM):?> disabled<?php endif?>>
<div class="btn-group btn-group-sm">
<div class="btn-group dropup">
<a class="btn btn-secondary" href="#." onclick="actCheck('multi_delete_user','cut_member');">
차단
</a>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<h6 class="dropdown-header">알림 차단 처리</h6>
<a class="dropdown-item" href="#." onclick="actCheck('multi_delete_user','cut_member');">보낸회원 차단하기</a>
<a class="dropdown-item" href="#." onclick="actCheck('multi_delete_user','cut_module');">보낸곳 차단하기</a>
</div>
</div>
</div>
<div class="btn-group btn-group-sm">
<button type="button" onclick="chkFlag('noti_members[]');noti_check_all();" class="btn btn-secondary checkAll-noti-user">
<i class="fa fa-check" aria-hidden="true"></i>
</button>
<div class="btn-group dropup">
<a class="btn btn-secondary" href="#." onclick="actCheck('multi_delete_user','delete_select');">삭제</a>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<h6 class="dropdown-header">일괄 삭제 처리</h6>
<a class="dropdown-item" href="#." onclick="actCheck('multi_delete_user','delete_read');">읽은알림 삭제</a>
<a class="dropdown-item" href="#." onclick="actCheck('multi_delete_user','delete_all');">전체알림 삭제</a>
</ul>
</div>
</div>
</fieldset>
</div>
<?php endif?>
<?php endif?>
</div>
<!-- @부모레이어를 제어할 수 있도록 모달의 헤더와 풋터를 부모레이어에 출력시킴 -->
<div id="_modal_header" class="hidden">
<h4 class="modal-title" id="myModalLabel">
<i class="fa fa-bell-o"></i> 알림
<?php if($callMod=='config'):?>설정
<?php elseif($callMod=='view'):?>
<span class="badge badge-pill badge-light">전체</span>
<span id="rb-notification-modal-num" class="badge badge-pill badge-light"><?php echo $NUM?></span>
<?php else:?>
<span id="rb-notification-modal-num" class="badge badge-pill badge-light">x</span>
<?php endif?>
</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
</div>
<div id="_modal_footer" class="d-none">
<div class="d-flex justify-content-between w-100">
<div class="btn-group btn-group-justified">
<a href="#." class="btn btn-link" onclick="frames._modal_iframe_modal_window.getViewNotification('view');">전체보기</a>
<a href="#." class="btn btn-link" onclick="frames._modal_iframe_modal_window.getViewNotification('config');">설정</a>
</div>
<a href="#." class="btn btn-link" data-dismiss="modal" aria-hidden="true" id="_close_btn_">닫기</a>
</div>
</div>
<script>
function actCheck(act,type)
{
var f = document.listForm;
var l = document.getElementsByName('noti_members[]');
var n = l.length;
var j = 0;
var i;
if (type == 'delete_all' || type == 'delete_read')
{
if (confirm('정말로 일괄 삭제하시겠습니까?'))
{
getIframeForAction(f);
f.a.value = act;
f.deltype.value = type;
f.submit();
}
return false;
}
for (i = 0; i < n; i++)
{
if(l[i].checked == true)
{
j++;
}
}
if (!j)
{
alert('선택된 알림이 없습니다. ');
return false;
}
var xtypestr = type == 'delete_select' ? '정말로 삭제 하시겠습니까?' : '정말로 차단 하시겠습니까?';
if(confirm(xtypestr))
{
getIframeForAction(f);
f.a.value = act;
f.deltype.value = type;
f.submit();
}
return false;
}
function noti_check_child(obj)
{
noti_check_all();
}
function noti_check_all()
{
var l = document.getElementsByName('noti_members[]');
var n = l.length;
var i;
var val;
for (i = 0; i < n; i++)
{
val = l[i].value.split('|');
if (l[i].checked == true) getId('noti-'+val[0]).className = 'btn btn-primary ';
else getId('noti-'+val[0]).className = 'btn btn-secondary';
}
}
function btnCheckSubmit()
{
var f = document.procForm;
getIframeForAction(f);
f.submit();
}
function btnCheck(obj)
{
obj.parentNode.children[0].className = 'btn btn-secondary';
obj.parentNode.children[1].className = 'btn btn-secondary';
obj.className = 'btn btn-primary';
setTimeout("btnCheckSubmit();",100);
}
function getViewNotification(type)
{
location.href = rooturl + '/?r=' + raccount + '&iframe=Y&system=<?php echo $system?>&callMod='+type;
}
function getNotificationNum(num)
{
<?php if(!$callMod):?>
var badge = parent.getId('rb-notification-modal-num');
var _num = (num >= <?php echo $d['ntfc']['num']?> ? '+<?php echo $d['ntfc']['num']?>' : num);
badge.innerHTML = _num;
if(_num > 0) badge.style.background = '#ff0000';
<?php endif?>
}
function modalSetting()
{
<?php if($callMod != 'config'):?>
getId('rb-notifications-layer').innerHTML = getAjaxData('<?php echo $g['s']?>/?r=<?php echo $r?>&m=notification&a=notice_check&noticedata=Y&isModal=Y&callMod=<?php echo $callMod?>&p=<?php echo $p?>&recnum=<?php echo $recnum?$recnum:10?>');
<?php endif?>
var ht = 400;
parent.getId('modal_window_dialog_modal_window').style.width = '100%';
parent.getId('modal_window_dialog_modal_window').style.paddingRight = '20px';
parent.getId('modal_window_dialog_modal_window').style.maxWidth = '550px';
parent.getId('_modal_iframe_modal_window').style.height = '450px';
parent.getId('_modal_body_modal_window').style.height = '450px';
parent.getId('_modal_header_modal_window').innerHTML = getId('_modal_header').innerHTML;
parent.getId('_modal_header_modal_window').className = 'modal-header';
parent.getId('_modal_body_modal_window').style.padding = '0';
parent.getId('_modal_body_modal_window').style.margin = '0';
parent.getId('_modal_footer_modal_window').innerHTML = getId('_modal_footer').innerHTML;
parent.getId('_modal_footer_modal_window').className = 'modal-footer';
}
modalSetting();
</script>

View File

@@ -0,0 +1,29 @@
/* popover user profile */
#rb-member-profile .close {
position: relative;
top: -5px;
}
#rb-member-profile .media {
padding: 0;
border: 0
}
#rb-member-profile .media-object {
width: 100px;
height: 100px
}
#rb-member-profile.media-body {
position: relative;
}
#rb-member-profile .media-body .rb-log {
position: absolute;
bottom: 5px;
font-size: 12px
}
#rb-member-profile .media-heading {
padding-top: 2px;
font-size: 14px;
font-weight: bold;
}
#rb-member-profile {
font-size: 12px;
}

View File

@@ -0,0 +1,33 @@
<?php
$M = array_merge(getUidData($table['s_mbrid'],$mbruid),getDbData($table['s_mbrdata'],'memberuid='.(int)$mbruid,'*'));
?>
<div id="rb-member-profile" class="media">
<a class="pull-left" href="#">
<img class="media-object" src="<?php echo $g['s']?>/_var/avatar/180.<?php echo $M['photo']?$M['photo']:'0.gif'?>">
</a>
<div class="media-body">
<h4 class="media-heading">
<span data-placement="bottom" data-tooltip="tooltip" title="<?php echo $M['name']?>"><?php echo $M['nic']?>님</span>
<button class="close pull-right" type="button" onclick="hidePopover('<?php echo $layer?>');">&times;</button>
</h4>
<p class="text-muted">서울특별시</p>
<p class="rb-log" data-tooltip="tooltip" title="<?php echo getDateFormat($M['last_log'],'Y.m.d H:i')?>">
최근접속 (<time class="timeago" data-toggle="tooltip" datetime="<?php echo getDateFormat($M['last_log'],'c')?>"></time>)
</p>
</div>
</div>
<!-- timeago -->
<?php getImport('jquery-timeago','jquery.timeago',false,'js')?>
<?php getImport('jquery-timeago','locales/jquery.timeago.ko',false,'js')?>
<script>
jQuery(document).ready(function() {
$(".rb-log time").timeago();
});
function hidePopover(id)
{
parent.$('#_'+id).click();
}
</script>

Binary file not shown.

View File

@@ -0,0 +1,23 @@
<div id="snippetbox">
<iframe src="http://docs.kimsq.com/rb2/_snippet/index.php?selectLang=<?php echo $lang['admin']['flag']?>" width="100%" height="600" frameborder="0"></iframe>
</div>
<script>
function modalSetting()
{
parent.getId('modal_window_dialog_modal_window').style.width = '100%';
parent.getId('modal_window_dialog_modal_window').style.paddingRight = '20px';
parent.getId('modal_window_dialog_modal_window').style.maxWidth = '1000px';
parent.getId('_modal_iframe_modal_window').style.height = '600px';
parent.getId('_modal_body_modal_window').style.height = '630px';
parent.getId('_modal_header_modal_window').innerHTML = getId('_modal_header').innerHTML;
parent.getId('_modal_header_modal_window').className = 'modal-header';
parent.getId('_modal_body_modal_window').style.padding = '0';
parent.getId('_modal_body_modal_window').style.margin = '0';
parent.getId('_modal_footer_modal_window').innerHTML = getId('_modal_footer').innerHTML;
parent.getId('_modal_footer_modal_window').className = 'modal-footer';
}
modalSetting();
</script>

View File

@@ -0,0 +1,69 @@
<div class="modal-header">
<h5 class="modal-title"><i class="fa fa-code fa-lg"></i> 위젯코드</h5>
<button type="button" class="close js-hideModal">&times;</button>
</div>
<div class="modal-body">
<textarea id="rb-widget-code-area" class="form-control border border-primary" readonly></textarea>
</div>
<div class="modal-footer d-flex justify-content-between">
<button type="button" class="btn btn-outline-primary btn-block js-hideModal" data-plugin="clipboard" data-clipboard-target="#rb-widget-code-area">복사하기</button>
</div>
<!-- clipboard.js : https://github.com/zenorocha/clipboard.js -->
<?php getImport('clipboard','clipboard.min','1.5.5','js') ?>
<script>
$(function () {
var clipboard = new Clipboard('[data-plugin="clipboard"]');
setTimeout(function(){
$('#rb-widget-code-area').focus().select();
$('#rb-widget-code-area').focus(function(){
$(this).on("mouseup.a keyup.a", function(e){
$(this).off("mouseup.a keyup.a").select();
});
});
}, 300);
$(".js-hideModal").click(function() {
setTimeout(function(){
hideModal()
}, 100);
});
})
function hideModal(){
parent.$('.rb-modal-x').modal('hide');
}
function modalSetting(){
getId('rb-widget-code-area').innerHTML = parent.frames._modal_iframe_modal_window.getId('rb-widget-code-result').value;
parent.getId('_modal_dialog_top_').style.top = '120px';
parent.getId('_modal_dialog_top_').style.paddingRight = '20px';
parent.getId('_modal_dialog_top_').style.width = '100%';
parent.getId('_modal_dialog_top_').style.maxWidth = '600px';
parent.getId('_modal_iframe_sub_').style.height = '250px';
}
modalSetting();
</script>
<style>
#rb-widget-code-area {
width: 100%;
height: 100%;
border: 0;
padding: 10px;
line-height: 150%;
font-size: 12px;
background-color: #eee;
min-height: 80px;
}
#rb-widget-code-area::selection {
background: rgba(255,238,51,0.99);
}
</style>

View File

@@ -0,0 +1,112 @@
#widgetbox {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
#widgetbox .category {
position: absolute;
left:0;
top: 0;
bottom:0;
width: 205px;
height: 100%;
margin-right: -200px;
padding: 0;
border-right: #dfdfdf solid 1px;
overflow-y: auto;
overflow-x: hidden;
}
#widgetbox .category .list-group-item:first-child {
border-top: 0;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
#widgetbox .category .list-group-item:last-child {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
#widgetbox .category .list-group-item {
padding: .55rem .75rem;
border-left: 0;
border-right: 0;
font-size: 13px
}
#widgetbox .content {
margin-left: 205px;
/* height: 430px; */
overflow-y: auto;
overflow-x: hidden;
}
#widgetbox .content .none {
color: #c0c0c0;
text-align: center;
padding-top: 70px;
}
@media (max-width: 600px) {
#widgetbox {
overflow: auto;
}
#widgetbox .category {
width: 100%;
height: auto;
border: 0;
}
#widgetbox .category span {
width: 100%;
}
#widgetbox .content {
float: left;
width: 100%;
height: auto;
margin-left: 0;
padding: 10px 10px 120px 10px;
}
}
.nav-tabs {
border-bottom: 1px solid #ccc;
}
.nav-tabs .nav-item:first-child .nav-link {
border-left: 0
}
.nav-tabs .nav-link {
text-align: center;
padding: .5rem 2rem;
border-right: 1px solid #ccc;
border-bottom: 0;
color: #999;
background-color: rgba(0, 0, 0, 0.03);
border-radius: 0;
border-top: 1px solid #ddd;
}
.nav-tabs .nav-link.active {
color: #333;
background-color: inherit;
border: 1px solid #ccc;
border-top: 0;
border-bottom-color: #fff;
border-top: 1px solid #007bff;
}
.position-relative .js-del {
position: absolute;
right: 10px;
top: 5px
}
#mjointbox h5 {
border-bottom:#dfdfdf dashed 1px;
padding:5px 0 15px 0;
margin:0 0 30px 0
}
#mjointbox .rb-label {
font-weight:normal;
cursor:pointer
}

View File

@@ -0,0 +1,267 @@
<?php
$step_start = 1;
$pwd_start = $g['path_widget'];
$g['adm_href'] = $g['s']."/?r=".$r."&amp;system=".$system."&amp;iframe=".$iframe.($dropfield?"&amp;dropfield=".$dropfield:'').($option?"&amp;option=".$option:'').($isWcode?"&amp;isWcode=".$isWcode:'').($isEdit?"&amp;isEdit=".$isEdit:'');
if ($option)
{
$wdgvar=array();
//$swval=explode(',',getKRtoUTF(urldecode(str_replace('[!]','&',$option))));
$swval=explode(',',urldecode(str_replace('[!]','&',$option)));
$swidget=$swval[0];
$pwd = $pwd_start.$swidget.'/';
foreach($swval as $_cval)
{
$_xval=explode('^',$_cval);
$wdgvar[$_xval[0]]=$_xval[1];
}
}
else {
$pwd = $pwd ? urldecode($pwd) : $pwd_start;
$swidget = is_file($pwd.'main.php') ? str_replace($g['path_widget'],'',$pwd) : '';
if ($swidget) $swidget = substr($swidget,0,strlen($swidget)-1);
}
if (strstr($pwd,'..'))
{
getLink('','','정상적인 접근이 아닙니다.','close');
}
if(!is_dir($pwd))
{
getLink('','','존재하지 않는 폴더입니다.','close');
}
function getDirexists($dir)
{
$opendir = opendir($dir);
while(false !== ($file = readdir($opendir)))
{
if(is_dir($dir.'/'.$file) && !strstr('[.][..][images][data]',$file)){$fex = 1; break;}
}
closedir($opendir);
return $fex;
}
function getPrintdir( $nTab, $filepath, $files, $state ,$dir_ex)
{
global $g,$pwd,$file,$step_start;
if($step_start) { $nTab = $nTab - $step_start; }
$css = strstr($pwd,$filepath) ? ' active' : '';
$fname1 = getKRtoUTF($files);
$fname2 = getFolderName($filepath);
echo '<a href="'.$g['adm_href'].'&amp;pwd='.urlencode($filepath).'" class="list-group-item list-group-item-action d-flex justify-content-between align-items-center';
if($state && $dir_ex) {
echo '"><span><i class="fa fa-folder-o"></i>&nbsp; ';
}
else if (!$state && $dir_ex) {
echo '"><span><i class="fa fa-folder-open-o"></i>&nbsp; ';
}
else {
echo $css.'" style="color:#'.($css?'fff':'999').'"><span class="pl-3"<i class="fa fa-puzzle-piece"></i>&nbsp; ';
}
echo $fname2.'</span></a>';
}
function getDirlist($dirpath,$nStep)
{
global $pwd;
$arrPath = explode('/', $pwd );
if( $dir_handle = opendir($dirpath) )
{
while( false !== ($files = readdir($dir_handle)) )
{
$subDir = $dirpath.$files.'/';
if(is_dir($subDir) && !strstr('[.][..][images][data]',$files))
{
getPrintdir( $nStep, $subDir, $files, !strstr($pwd,$subDir) , getDirexists($subDir) );
if( $arrPath[$nStep+1] == $files ) {
getDirlist( $subDir, $nStep+1);
}
}
}
}
closedir( $dir_handle );
}
function getWidgetPreviewImg($path)
{
if (is_file($path.'.jpg')) return $path.'.jpg';
if (is_file($path.'.gif')) return $path.'.gif';
if (is_file($path.'.png')) return $path.'.png';
return false;
}
?>
<link href="<?php echo $g['s']?>/_core/css/github-markdown.css" rel="stylesheet">
<div id="widgetbox">
<div class="category bg-light">
<?php getDirlist($pwd_start,$step_start)?>
</div>
<div class="content">
<?php if($swidget):?>
<?php if($option):?>
<input type="hidden" id="s_w" value="">
<input type="hidden" id="s_h" value="">
<input type="hidden" id="s_t" value="">
<input type="hidden" id="s_l" value="">
<?php endif?>
<div class="position-relative">
<ul class="nav nav-tabs f14" role="tablist">
<li class="nav-item"><a class="nav-link active" href="#code" role="tab" data-toggle="tab">설정하기</a></li>
<li class="nav-item"><a class="nav-link" href="#preview" role="tab" data-toggle="tab">미리보기</a></li>
<li class="nav-item"><a class="nav-link" href="#readme" role="tab" data-toggle="tab">사용안내</a></li>
</ul>
<?php if($isWcode=='Y'):?>
<div class="js-del">
<a class="btn btn-link muted-link btn-sm" href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $m?>&amp;a=deletewidget&amp;pwd=<?php echo $pwd?>" title="삭제" data-tooltip="tooltip" data-placement="left" onclick="return hrefCheck(this,true,'정말로 삭제하시겠습니까?');">
<i class="fa fa-trash-o fa-fw"></i>
</a>
</div>
<?php endif?>
</div><!-- /.position-relative -->
<div class="tab-content p-3">
<div class="tab-pane active f14" id="code">
<?php include $g['path_widget'].$swidget.'/admin.php' ?>
</div>
<div class="tab-pane" id="preview">
<?php $_widgetPreview=getWidgetPreviewImg($g['path_widget'].$swidget.'/thumb')?>
<?php if($_widgetPreview):?>
<div class="text-center mt-4">
<a href="<?php echo $_widgetPreview?>" target="_blank">
<img src="<?php echo $_widgetPreview?>" class="img-fluid" alt="">
</a>
</div>
<?php else:?>
<div class="none">
<i class="fa fa-puzzle-piece fa-5x"></i><br><br>
미리보기가 없습니다.
</div>
<?php endif?>
</div>
<div class="tab-pane" id="readme">
<div class="bg-light text-center text-muted f12 rounded border p-2">
위젯파일 경로: <span class="ml-2"><?php echo $g['path_widget'].$swidget ?>/main.php</span>
</div>
<?php $markdown_readme = $g['path_widget'].$swidget.'/README.md';?>
<?php if (file_exists($markdown_readme)): ?>
<div class="pb-5 readme">
<?php readfile($g['path_widget'].$swidget.'/README.md')?>
</div>
<?php else: ?>
<div class="d-flex align-items-center justify-content-center" style="height: calc(100vh - 5.53rem);">
<div class="text-muted text-center">
<h1><i class="fa fa-file-text-o" aria-hidden="true"></i></h1>
<small>안내문서가 없습니다.</small>
</div>
</div>
<?php endif; ?>
</div>
</div>
<?php else:?>
<div class="d-flex align-items-center justify-content-center" style="height: calc(100vh - 5.53rem);">
<div class="text-muted text-center">
<h1><i class="fa fa-mouse-pointer" aria-hidden="true"></i></h1>
<small>추가할 위젯을 선택하세요.</small>
</div>
</div>
<?php endif?>
<textarea id="rb-widget-code-result" class="hidden"></textarea>
</div>
</div>
<!-- @부모레이어를 제어할 수 있도록 모달의 헤더와 풋터를 부모레이어에 출력시킴 -->
<div id="_modal_header" hidden>
<h5 class="modal-title">
<i class="kf-widget kf-lg"></i>
위젯 선택하기
</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div id="_modal_footer" hidden>
<button type="button" class="btn btn-light pull-left" data-dismiss="modal" aria-hidden="true" id="_modalclosebtn_">닫기</button>
<?php if(!$isWcode||$isEdit):?>
<?php if($isCodeOnly):?>
<button type="button" class="btn btn-primary" onclick="frames._modal_iframe_modal_window._widgetCode();modalSetting('.rb-modal-x','<?php echo getModalLink('site/pages/popup.widget.code')?>');" data-toggle="modal" data-target=".rb-modal-x"<?php if(!$swidget):?> disabled<?php endif?>>
<i class="fa fa-code fa-lg"></i> 코드보기
</a>
<button type="button" class="btn btn-light" disabled>위젯코드만 지원</button>
<?php else:?>
<button type="button" class="btn btn-light" onclick="frames._modal_iframe_modal_window._widgetCode();modalSetting('.rb-modal-x','<?php echo getModalLink('site/pages/popup.widget.code')?>');" data-toggle="modal" data-target=".rb-modal-x"<?php if(!$swidget):?> disabled<?php endif?>>
<i class="fa fa-code fa-lg"></i> 코드보기
</a>
<button type="button" class="btn btn-primary" onclick="frames._modal_iframe_modal_window._saveCheck(<?php echo $isEdit?1:0?>);"<?php if(!$swidget):?> disabled<?php endif?>>삽입하기</button>
<?php endif?>
<?php else:?>
<button type="button" class="btn btn-primary" onclick="frames._modal_iframe_modal_window._widgetCode();modalSetting('.rb-modal-x','<?php echo getModalLink('site/pages/popup.widget.code')?>');" data-toggle="modal" data-target=".rb-modal-x"<?php if(!$swidget):?> disabled<?php endif?>>
<i class="fa fa-code fa-lg"></i> 코드보기
</a>
<?php endif?>
</div>
<?php getImport('jquery-markdown','jquery.markdown','0.0.10','js')?>
<script>
$("#readme .readme").markdown();
function _widgetCode()
{
getId('rb-widget-code-result').innerHTML = widgetCode(0);
}
function _saveCheck(n)
{
saveCheck(n);
parent.$('#modal_window').modal('hide');
}
function dropJoint(m)
{
var f = opener.getId('<?php echo $dropfield?>');
f.value = m;
f.focus();
top.close();
}
<?php if($swidget && $option):?>
var dp = <?php echo $dropfield?>;
var sz = parent.moveObject[dp];
getId('s_w').value = parseInt(sz.style.width);
getId('s_h').value = parseInt(sz.style.height);
getId('s_t').value = parseInt(sz.style.top);
getId('s_l').value = parseInt(sz.style.left);
<?php endif?>
function modalSetting(){
parent.getId('modal_window_dialog_modal_window').style.paddingRight = '20px';
parent.getId('modal_window_dialog_modal_window').style.maxWidth = '800px';
parent.getId('_modal_iframe_modal_window').style.height = '580px';
parent.getId('_modal_body_modal_window').style.height = '580px';
parent.getId('_modal_header_modal_window').innerHTML = getId('_modal_header').innerHTML;
parent.getId('_modal_header_modal_window').className = 'modal-header';
parent.getId('_modal_body_modal_window').style.padding = '0';
parent.getId('_modal_body_modal_window').style.margin = '0';
parent.getId('_modal_footer_modal_window').innerHTML = getId('_modal_footer').innerHTML;
parent.getId('_modal_footer_modal_window').className = 'modal-footer';
}
modalSetting();
</script>