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,29 @@
<?php
$license_local = $g['path_module'].$module.'/LICENSE';
$license_global = $g['path_root'].'LICENSE';
if (file_exists($license_local)) $license = $license_local;
else $license = $license_global;
?>
<link href="<?php echo $g['s']?>/_core/css/github-markdown.css" rel="stylesheet">
<?php getImport('jquery-markdown','jquery.markdown','0.0.10','js')?>
<?php @include $g['path_module'].$module.'/var/var.moduleinfo.php' ?>
<article class="rb-docs markdown-body px-5 pt-3">
<h1><?php echo sprintf('%s 모듈정보',ucfirst($MD['name']))?></h1>
<div class="pb-5 readme">
<?php readfile($g['path_module'].$module.'/README.md')?>
</div>
<div class="pb-5">
<h2>라이센스</h2>
<textarea class="form-control" rows="10"><?php readfile($license)?></textarea>
</div>
</article>
<script type="text/javascript">
$(".markdown-body .readme").markdown();
</script>

View File

@@ -0,0 +1,430 @@
#rb-body .tab-content .form-group.tab-content {
border: 0;
padding: 0 15px;
}
#rb-body .tab-content .form-group {
margin-bottom: 15px;
}
.help-text {
margin-top: 5px
}
.dataTables_wrapper a{
color: #666
}
#module-list_wrapper > .panel-body {
min-height: 403px;
padding: 0 !important
}
#module-list_wrapper .dataTable {
margin-top: 0 !important;
margin-bottom: 0 !important;
max-width: none !important;
}
#module-list_wrapper .dataTables_paginate {
margin-top: 0 !important;
}
#module-list_wrapper .dataTables_empty {
text-align: center;
color: #999;
line-height: 100px
}
#module-list_wrapper .dataTables_filter label {
font-weight: normal;
float: none;
}
#module-list_wrapper .dataTables_length label {
font-weight: normal;
float: none;
text-align: left;
}
#module-list_wrapper .dataTables_paginate {
float: none;
margin-top: 15px
}
#module-list_wrapper .rb-time {
text-align: center;
}
#module-list_wrapper td.rb-time {
color: #999;
}
#module-list_wrapper td.rb-time time {
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden
}
#module-list_wrapper .active td.rb-time {
color: #eee
}
#module-list_wrapper td a {
display: block;
}
#module-list_wrapper td a:hover {
text-decoration: none;
}
#module-list_wrapper .table thead tr {
background-image: none;
background-color: inherit;
}
#module-list_wrapper .table > thead > tr > th {
border-bottom: 1px solid #ddd;
font-size: 12px;
}
@media (max-width: 479px) {
#module-list .rb-id,
#module-list .rb-time {
display: none;
}
}
#module-list_filter {
border-bottom: 1px solid #ddd;
}
#module-list_filter .input-group {
margin-bottom: 0;
border-radius: 0;
border: none;
width: 100%
}
#module-list_filter .form-control {
background-color: #fff;
box-shadow: none;
}
#module-list_length {
padding: 10px;
border-bottom: 1px solid #ddd;
background-color: #F5F5F5
}
#module-list_length .input-group {
margin-bottom: 0
}
.form-horizontal .tab-content {
border: 0;
padding-top: 0;
padding-bottom: 0
}
.rb-advance {
border-top: 1px solid #EFEFEF;
padding-top: 5px;
margin-top: 30px;
margin-bottom: 30px
}
.rb-advance .btn span:before {
content: "숨기기"
}
.rb-advance .btn.collapsed span:before {
content: "표시"
}
.input-group-addon:first-child,
.input-group-btn:last-child>.btn,
.input-group-addon:last-child {
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
}
.help-block {
margin-top: 10px;
font-size: 13px
}
.rb-guide {
margin: 10px 0 0;
padding: 15px;
color: #777;
border-top: 1px solid #eee;
font-size: 13px
}
.form-horizontal .has-feedback.rb-outside .form-control-feedback {
right: -925px;
}
@media (min-width: 1200px) {
.form-horizontal .has-feedback.rb-outside .form-control-feedback {
width: 46px;
height: 46px;
line-height: 46px;
right: -25px;
}
#page-settings .panel-body {
padding-left:0;
padding-right:0;
}
}
.rb-hidden a {
color: #B7B6B6
}
/*rb-box */
.rb-box {
position: relative;
background-color: #444;
border-radius: 6px;
text-align: center;
padding: 8px;
margin: 4px;
width: 70px;
height : 65px;
overflow: hidden;
box-shadow: 0 1px 2px #eee;
}
.rb-box a {
color: #fff
}
.rb-box a:hover {
text-decoration: none;
color: #428BCA
}
.rb-box a:active {
color: #428BCA
}
.rb-box i {
font-style: normal;
}
.rb-box .rb-icon {
font-size: 34px;
text-shadow: 1px 1px 1px #222;
}
.rb-box .rb-name {
font-family: 'Open Sans', sans-serif;
position: absolute;
bottom: 4px;
left: 5px;
right: 5px;
top: auto;
text-align: center;
color: #eee;
text-shadow: 1px 1px 1px #222;
font-size: 11px;
text-transform: capitalize;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
}
/**
* Nestable
*/
.dd {
position: relative;
display: block;
margin: 0;
padding: 0;
list-style: none;
font-size: 13px;
line-height: 20px;
}
.dd-list {
display: block;
position: relative;
margin: 0;
padding: 0;
list-style: none;
}
.dd-item,
.dd-empty,
.dd-placeholder {
display: block;
position: relative;
margin: 0;
padding: 0;
min-height: 20px;
line-height: 20px;
}
.dd-handle {
display: block;
margin: 5px 0;
padding: 10px;
text-decoration: none;
background-color: rgba(255,255,255,.03);
color: #fff;
border: 1px solid rgba(0,0,0,.125);
box-shadow: 0 1px 0 rgba(0,0,0,.03);
-webkit-border-radius: 3px;
border-radius: 3px;
box-sizing: border-box; -moz-box-sizing: border-box;
cursor: move;
font-size: 13px
}
.dd-item > button {
display: block;
position: relative;
cursor: pointer;
float: left;
width: 35px;
height: 35px;
margin: 5px 0;
padding: 0;
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
border: 0;
background: transparent;
font-size: 13px;
line-height: 1;
text-align: center;
}
.dd-placeholder,
.dd-empty {
margin: 5px 0;
padding: 0;
min-height: 30px;
background: #f2fbff;
border: 1px dashed #b6bcbf;
box-sizing: border-box;
-moz-box-sizing: border-box
}
.dd-empty {
border: 1px dashed #bbb;
min-height: 100px;
background-color: #e5e5e5;
background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-size: 60px 60px;
background-position: 0 0, 30px 30px;
}
.dd-dragel {
position: absolute;
pointer-events: none;
z-index: 9999;
}
.dd-dragel > .dd-item .dd-handle { margin-top: 0; }
.dd-dragel .dd-handle {
-webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
}
/*김성호추가*/
.table {
}
#panel-search,
.table thead {
border-top: #ccc solid 1px;
}
.table thead td {
color: #666;
font-weight: bold;
font-size: 11px;
}
.table tbody td a {
color: #666;
text-decoration: none;
}
.table tbody tr:hover {
cursor: pointer;
}
.table tbody td small {
font-size: 11px;
}
.rb-keyword-search input {
border-top: #dfdfdf solid 1px;
border-bottom: 0;
border-left: 0;
border-right: 0;
}
.rb-name {
color: #666;
}
.rb-name i {
margin-left: 13px;
}
.rb-id {
color: #666;
}
.rb-name span {
padding-left: 34px;
}
.rb-time {
width: 100px;
font-size:13px;
text-align:center;
color:#999;
}
.rb-search-box .input-group {
width: 190px;
}
.rb-panel-footer {
text-align: center;
}
.rb-panel-footer .pagination {
margin-top: 5px;
margin-bottom: 5px;
}
@media (max-width: 1199px) {
.form-horizontal .control-label {
margin-bottom: 5px;
}
}
@media (max-width: 767px) {
#rb-body .row,
#rb-body .xrow {
margin-right: -16px;
margin-left: -16px;
}
}
#module-list {
overflow-y: auto;
}

View File

@@ -0,0 +1,370 @@
<?php
$R=array();
$recnum= $recnum ? $recnum : 12;
$sendsql = 'gid>-1';
if ($keyw)
{
$sendsql .= " and (id like '%".$keyw."%' or name like '%".$keyw."%')";
}
$RCD = getDbArray($table['s_module'],$sendsql,'*','gid','asc',$recnum,$p);
$NUM = getDbRows($table['s_module'],$sendsql);
$TPG = getTotalPage($NUM,$recnum);
if (!$id)$id=$module;
$R = getDbData($table['s_module'],"id='".$id."'",'*');
?>
<div class="container-fluid">
<div class="row">
<div class="col-sm-5 col-md-5 col-xl-4 d-none d-sm-block sidebar" id="tab-content-list">
<div id="accordion">
<div class="card py-0 border-0">
<div class="card-header d-flex justify-content-between p-0 align-items-center border-bottom-0">
<a class="accordion-toggle d-block muted-link <?php if($_SESSION['module_main_collapse']):?> collapsed<?php endif?>"
data-toggle="collapse" href="#collapmetane" style="width: 95%;"
onclick="sessionSetting('module_main_collapse','','','');">
전체모듈
</a>
<button type="button"
class="btn btn-link py-0 muted-link"
data-toggle="collapse"
data-target="#panel-search"
data-tooltip="tooltip" title="검색필터" onclick="sessionSetting('module_search','1','','1');getSearchFocus();">
<i class="fa fa-search"></i>
</button>
</div>
<div class="collapse <?php if(!$_SESSION['module_main_collapse']):?> show<?php endif?>" id="collapmetane" data-parent="#accordion">
<div id="panel-search" class="collapse">
<form role="form" 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="module" value="<?php echo $module?>">
<input type="hidden" name="front" value="<?php echo $front?>">
<input type="hidden" name="id" value="<?php echo $id?>">
<div class="rb-search-box">
<div class="input-group w-100">
<div class="input-group-prepend">
<span class="input-group-text">출력수</span>
</div>
<select class="form-control custom-select" name="recnum" onchange="this.form.submit();">
<option value="15"<?php if($recnum==15):?> selected<?php endif?>>15</option>
<option value="30"<?php if($recnum==30):?> selected<?php endif?>>30</option>
<option value="60"<?php if($recnum==60):?> selected<?php endif?>>60</option>
<option value="100"<?php if($recnum==100):?> selected<?php endif?>>100</option>
</select>
</div>
</div>
<div class="rb-keyword-search">
<input type="text" name="keyw" class="form-control" value="<?php echo $keyw?>" placeholder="모듈명,아이디 검색">
</div>
</form>
</div>
<div id="module-list" style="height: calc(100vh - 12.5rem);">
<table class="table f14 border-bottom mb-0">
<thead>
<tr>
<td class="rb-name"><span>모듈명</span></td>
<td class="rb-id"><span>아이디</span></td>
<td class="rb-time"><span>등록일</span></td>
</tr>
</thead>
<tbody>
<?php while($_R = db_fetch_array($RCD)):?>
<tr<?php if($id==$_R['id']):?> class="table-active"<?php endif?> onclick="goHref('<?php echo $g['adm_href']?>&amp;recnum=<?php echo $recnum?>&amp;p=<?php echo $p?>&amp;id=<?php echo $_R['id']?>&amp;keyw=<?php echo urlencode($keyw)?>');">
<td class="rb-name">
<i class="kf <?php echo $_R['icon']?$_R['icon']:'kf-'.$_R['id']?> fa-fw mr-2"></i>
<?php echo $_R['name']?>
<?php if(!$_R['hidden']):?><small class="fa fa-eye ml-1"></small><?php endif?>
</td>
<td class="rb-id"><?php echo $_R['id']?></td>
<td class="rb-time">
<?php echo getDateFormat($_R['d_regis'],'Y.m.d')?>
</td>
</tr>
<?php endwhile?>
</tbody>
</table>
</div>
<?php if($TPG>1):?>
<ul class="pagination pagination-sm justify-content-center">
<script>getPageLink(5,<?php echo $p?>,<?php echo $TPG?>,'');</script>
</ul>
<?php endif?>
</div>
</div>
<div class="card">
<div class="card-header p-0">
<a class="accordion-toggle d-block muted-link<?php if($_SESSION['module_main_collapse']!='order'):?> collapsed<?php endif?>"
data-toggle="collapse" href="#collapseTwo"
onclick="sessionSetting('module_main_collapse','order','','');">
<i class="fa fa-retweet fa-lg fa-fw"></i>
순서 조정
</a>
</div>
<div class="collapse<?php if($_SESSION['module_main_collapse']=='order'):?> show<?php endif?>" id="collapseTwo" data-parent="#accordion">
<form role="form" action="<?php echo $g['s']?>/" method="post">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="m" value="<?php echo $module?>">
<input type="hidden" name="a" value="moduleorder_update">
<div class="card-body" style="height: calc(100vh - 9rem);overflow:auto">
<div class="dd" id="nestable-menu">
<ol class="dd-list">
<?php $RCD = getDbArray($table['s_module'],'','*','gid','asc',0,1)?>
<?php while($_R=db_fetch_array($RCD)):?>
<li class="dd-item" data-id="1">
<div class="dd-handle">
<input type="checkbox" name="modulemembers[]" value="<?php echo $_R['id']?>" checked hidden>
<i class="fa fa-arrows fa-fw"></i>
<i class="kf <?php echo $_R['icon']?$_R['icon']:'kf-'.$_R['id']?>"></i>
<?php echo $_R['name']?> (<?php echo $_R['id']?>)
</div>
</li>
<?php endwhile?>
</ol>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php if(!$R['id']) $R=getDbData($table['s_module'],"id='site'",'*')?>
<?php if($g['device']):?><a name="page-info"></a><?php endif?>
<div class="col-sm-7 col-md-7 ml-sm-auto col-xl-8 pt-3" id="tab-content-view">
<div class="page-header mt-0">
<h4>모듈 등록정보</h4>
</div>
<div class="row">
<div class="col-md-2 col-sm-2 text-center">
<div class="rb-box">
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $m?>&amp;module=<?php echo $_R['id']?>">
<i class="rb-icon kf <?php echo $R['icon']?$R['icon']:'kf-'.$R['id']?>"></i><br>
<i class="rb-name"><?php echo $R['id']?></i>
</a>
</div>
</div>
<div class="col-lg-10 col-xl-9 col-sm-10">
<h4 class="mb-2"><?php echo $R['name']?></h4>
<div class="btn-group mb-2">
<button type="button" class="btn btn-light">개발자 정보</button>
<button type="button" class="btn btn-light dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<div class="dropdown-menu dropdown-menu-right" role="menu">
<a class="dropdown-item" href="<?php echo $g['s']?>/?r=<?php echo $r?>&m=<?php echo $m?>&amp;module=<?php echo $R['id']?>">관리자 페이지</a>
<a class="dropdown-item" href="<?php echo $g['s']?>/?r=<?php echo $r?>&m=<?php echo $R['id']?>" target="_blank">사용자 페이지</a>
<div class="dropdown-divider"></div>
<?php @include $g['path_module'].$R['id'].'/var/var.moduleinfo.php' ?>
<?php if($d['moduleinfo']['market']):?>
<a class="dropdown-item" href="<?php echo $d['moduleinfo']['market']?>" target="_blank">
<?php else:?>
<a class="dropdown-item disabled">
<?php endif?>
<i class="fa fa-shopping-cart fa-fw fa-lg"></i> 마켓보기
</a>
<?php if($d['moduleinfo']['github']):?>
<a class="dropdown-item" href="<?php echo $d['moduleinfo']['github']?>" target="_blank">
<?php else:?>
<a class="dropdown-item disabled">
<?php endif?>
<i class="fa fa-github fa-fw fa-lg"></i> 저장소 보기
</a>
<?php if($d['moduleinfo']['issue']):?>
<a class="dropdown-item" href="<?php echo $d['moduleinfo']['issue']?>" target="_blank">
<?php else:?>
<a class="dropdown-item disabled">
<?php endif?>
<i class="fa fa-bug fa-fw fa-lg"></i> 이슈 접수
</a>
<?php if($d['moduleinfo']['website']):?>
<a class="dropdown-item" href="<?php echo $d['moduleinfo']['website']?>" target="_blank">
<?php else:?>
<a class="dropdown-item disabled">
<?php endif?>
<i class="fa fa-home fa-fw fa-lg"></i> 웹사이트
</a>
<?php if($d['moduleinfo']['help']):?>
<a class="dropdown-item" href="<?php echo $d['moduleinfo']['help']?>" target="_blank">
<?php else:?>
<a class="dropdown-item disabled">
<?php endif?>
<i class="fa fa-question-circle fa-fw fa-lg"></i> 도움말
</a>
<div class="dropdown-divider"></div>
<?php if(!$R['sys'] && !$R['system']):?>
<a class="dropdown-item" href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=module_delete&amp;moduleid=<?php echo $R['id']?>" onclick="return hrefCheck(this,true,'관련파일/DB데이터가 모두 삭제됩니다.\n정말로 삭제하시겠습니까?');">
<i class="fa fa-trash-o fa-fw fa-lg"></i> 모듈삭제
</a>
<?php else:?>
<button class="dropdown-item disabled" type="button"><i class="fa fa-trash-o fa-fw fa-lg"></i> 모듈삭제</button>
<?php endif?>
</div>
</div>
<p class="text-muted"><small>선택된 모듈에 대한 등록정보입니다. 시스템 기본모듈은 삭제할 수 없습니다.</small></p>
</div>
</div>
<hr>
<form class="rb-form" role="form" name="procForm" action="<?php echo $g['s']?>/" method="post" enctype="multipart/form-data" onsubmit="return saveCheck(this);">
<input type="hidden" name="r" value="<?php echo $r?>">
<input type="hidden" name="m" value="<?php echo $module?>">
<input type="hidden" name="moduleid" value="<?php echo $R['id']?>">
<input type="hidden" name="a" value="moduleinfo_update">
<input type="hidden" name="iconaction" value="">
<div class="form-group row">
<label class="col-lg-2 col-form-label text-lg-right">아이디</label>
<div class="col-lg-10 col-xl-9">
<p class="pt-2"><?php echo $R['id']?></p>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label text-lg-right">모듈명</label>
<div class="col-lg-10 col-xl-9">
<input class="form-control" placeholder="" type="text" name="name" value="<?php echo $R['name']?>">
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label text-lg-right">적용언어</label>
<div class="col-lg-10 col-xl-9">
<select name="modulelang" class="form-control custom-select">
<option value=""<?php if(!$R['lang']):?> selected<?php endif?>>시스템 언어 (<?php echo getFolderName($g['path_module'].$module.'/language/'.$d['admin']['syslang'])?>)</option>
<?php if(is_dir($g['path_module'].$R['id'].'/language')):?>
<?php $dirs = opendir($g['path_module'].$R['id'].'/language')?>
<?php while(false !== ($tpl = readdir($dirs))):?>
<?php if($tpl=='.'||$tpl=='..'||$tpl==$d['admin']['syslang'])continue?>
<option value="<?php echo $tpl?>"<?php if($R['lang']==$tpl):?> selected<?php endif?>><?php echo getFolderName($g['path_module'].$R['id'].'/language/'.$tpl)?></option>
<?php endwhile?>
<?php closedir($dirs)?>
<?php endif?>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label text-lg-right">아이콘</label>
<div class="col-lg-10 col-xl-9">
<div class="input-group">
<input type="text" name="icon" class="form-control" value="<?php echo $R['icon']?>">
<span class="input-group-append">
<button type="button" class="btn btn-light rb-modal-iconset" data-toggle="modal" data-target="#modal_window">아이콘 찾기</button>
</span>
</div>
<p class="form-control-static">
<ul class="list-unstyled text-muted mb-0">
<li><small>전용 아이콘 폰트를 사용하려면 모듈내부에 아이폰 폰트 파일을 내장 하고 있어야 합니다.</small></li>
<li><small>입력된 코드는 <code>&lt;i class=""&gt;</code>에 속성으로 반영 됩니다.</small></li>
</ul>
</p>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label text-lg-right"></label>
<div class="col-lg-10 col-xl-9">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="hidden" name="hidden" value="1"<?php if($R['hidden']):?> checked="checked"<?php endif?>>
<label class="custom-control-label" for="hidden">퀵패널에서 제외</label>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label text-lg-right">DB</label>
<div class="col-lg-10 col-xl-9">
<p class="text-muted pt-2">
<?php if($R['tblnum']):?>
<?php echo sprintf('DB테이블 %d개가 생성되었습니다.',$R['tblnum'])?>
<?php else:?>
이 모듈은 DB테이블을 생성하지 않습니다.
<?php endif?>
</p>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label text-lg-right">등록일</label>
<div class="col-lg-10 col-xl-9">
<p class="text-muted pt-2"><?php echo getDateFormat($R['d_regis'],'Y.m.d')?></p>
</div>
</div>
<button class="btn btn-outline-primary btn-block btn-lg my-4" type="submit"><i class="fa fa-check fa-lg"></i> 속성변경</button>
</form>
</div>
</div>
</div>
<!-- nestable : https://github.com/dbushell/Nestable -->
<?php getImport('nestable','jquery.nestable',false,'js')?>
<script>
$('#nestable-menu').nestable();
$('.dd').on('change', function() {
var f = document.forms[1];
getIframeForAction(f);
f.submit();
});
</script>
<!-- basic -->
<script>
$(document).ready(function()
{
$('.rb-modal-iconset').on('click',function() {
modalSetting('modal_window','<?php echo getModalLink('site/pages/modal.icons')?>');
});
});
function saveCheck(f)
{
if (f.name.value == '')
{
alert('모듈이름을 입력해 주세요. ');
f.name.focus();
return false;
}
getIframeForAction(f);
return confirm('정말로 실행하시겠습니까? ');
}
function getSearchFocus()
{
if(getId('panel-search').className.indexOf('in') == -1) setTimeout("document.forms[0].keyw.focus();",100);
}
function iconDrop(val)
{
var f = document.procForm;
f.icon.value = val;
iconDropAply();
}
function iconDropAply()
{
var f = document.procForm;
f.iconaction.value = '1';
getIframeForAction(f);
f.submit();
$('#modal_window').modal('hide');
}
</script>

View File

@@ -0,0 +1,430 @@
#rb-body .tab-content .form-group.tab-content {
border: 0;
padding: 0 15px;
}
#rb-body .tab-content .form-group {
margin-bottom: 15px;
}
.help-text {
margin-top: 5px
}
.dataTables_wrapper a{
color: #666
}
#module-list_wrapper > .panel-body {
min-height: 403px;
padding: 0 !important
}
#module-list_wrapper .dataTable {
margin-top: 0 !important;
margin-bottom: 0 !important;
max-width: none !important;
}
#module-list_wrapper .dataTables_paginate {
margin-top: 0 !important;
}
#module-list_wrapper .dataTables_empty {
text-align: center;
color: #999;
line-height: 100px
}
#module-list_wrapper .dataTables_filter label {
font-weight: normal;
float: none;
}
#module-list_wrapper .dataTables_length label {
font-weight: normal;
float: none;
text-align: left;
}
#module-list_wrapper .dataTables_paginate {
float: none;
margin-top: 15px
}
#module-list_wrapper .rb-time {
text-align: center;
}
#module-list_wrapper td.rb-time {
color: #999;
}
#module-list_wrapper td.rb-time time {
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden
}
#module-list_wrapper .active td.rb-time {
color: #eee
}
#module-list_wrapper td a {
display: block;
}
#module-list_wrapper td a:hover {
text-decoration: none;
}
#module-list_wrapper .table thead tr {
background-image: none;
background-color: inherit;
}
#module-list_wrapper .table > thead > tr > th {
border-bottom: 1px solid #ddd;
font-size: 12px;
}
@media (max-width: 479px) {
#module-list .rb-id,
#module-list .rb-time {
display: none;
}
}
#module-list_filter {
border-bottom: 1px solid #ddd;
}
#module-list_filter .input-group {
margin-bottom: 0;
border-radius: 0;
border: none;
width: 100%
}
#module-list_filter .form-control {
background-color: #fff;
box-shadow: none;
}
#module-list_length {
padding: 10px;
border-bottom: 1px solid #ddd;
background-color: #F5F5F5
}
#module-list_length .input-group {
margin-bottom: 0
}
.form-horizontal .tab-content {
border: 0;
padding-top: 0;
padding-bottom: 0
}
.rb-advance {
border-top: 1px solid #EFEFEF;
padding-top: 5px;
margin-top: 30px;
margin-bottom: 30px
}
.rb-advance .btn span:before {
content: "숨기기"
}
.rb-advance .btn.collapsed span:before {
content: "표시"
}
.input-group-addon:first-child,
.input-group-btn:last-child>.btn,
.input-group-addon:last-child {
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
}
.help-block {
margin-top: 10px;
font-size: 13px
}
.rb-guide {
margin: 10px 0 0;
padding: 15px;
color: #777;
border-top: 1px solid #eee;
font-size: 13px
}
.form-horizontal .has-feedback.rb-outside .form-control-feedback {
right: -925px;
}
@media (min-width: 1200px) {
.form-horizontal .has-feedback.rb-outside .form-control-feedback {
width: 46px;
height: 46px;
line-height: 46px;
right: -25px;
}
#page-settings .panel-body {
padding-left:0;
padding-right:0;
}
}
.rb-hidden a {
color: #B7B6B6
}
/*rb-box */
.rb-box {
position: relative;
background-color: #444;
border-radius: 6px;
text-align: center;
padding: 8px;
margin: 4px;
width: 70px;
height : 65px;
overflow: hidden;
box-shadow: 0 1px 2px #eee;
}
.rb-box a {
color: #fff
}
.rb-box a:hover {
text-decoration: none;
color: #428BCA
}
.rb-box a:active {
color: #428BCA
}
.rb-box i {
font-style: normal;
}
.rb-box .rb-icon {
font-size: 34px;
text-shadow: 1px 1px 1px #222;
}
.rb-box .rb-name {
font-family: 'Open Sans', sans-serif;
position: absolute;
bottom: 4px;
left: 5px;
right: 5px;
top: auto;
text-align: center;
color: #eee;
text-shadow: 1px 1px 1px #222;
font-size: 11px;
text-transform: capitalize;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
}
/**
* Nestable
*/
.dd {
position: relative;
display: block;
margin: 0;
padding: 0;
list-style: none;
font-size: 13px;
line-height: 20px;
}
.dd-list {
display: block;
position: relative;
margin: 0;
padding: 0;
list-style: none;
}
.dd-item,
.dd-empty,
.dd-placeholder {
display: block;
position: relative;
margin: 0;
padding: 0;
min-height: 20px;
line-height: 20px;
}
.dd-handle {
display: block;
margin: 5px 0;
padding: 10px;
text-decoration: none;
border: 1px solid #ccc;
background: #eee;
-webkit-border-radius: 3px;
border-radius: 3px;
box-sizing: border-box; -moz-box-sizing: border-box;
cursor: move;
font-size: 13px
}
.dd-handle:hover {
color: #2ea8e5;
}
.dd-item > button {
display: block;
position: relative;
cursor: pointer;
float: left;
width: 35px;
height: 35px;
margin: 5px 0;
padding: 0;
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
border: 0;
background: transparent;
font-size: 13px;
line-height: 1;
text-align: center;
}
.dd-placeholder,
.dd-empty {
margin: 5px 0;
padding: 0;
min-height: 30px;
background: #f2fbff;
border: 1px dashed #b6bcbf;
box-sizing: border-box;
-moz-box-sizing: border-box
}
.dd-empty {
border: 1px dashed #bbb;
min-height: 100px;
background-color: #e5e5e5;
background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-size: 60px 60px;
background-position: 0 0, 30px 30px;
}
.dd-dragel {
position: absolute;
pointer-events: none;
z-index: 9999;
}
.dd-dragel > .dd-item .dd-handle { margin-top: 0; }
.dd-dragel .dd-handle {
-webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
}
/*김성호추가*/
.table {
}
#panel-search,
.table thead {
border-top: #ccc solid 1px;
}
.table thead td {
color: #666;
font-weight: bold;
font-size: 11px;
}
.table tbody td a {
color: #666;
text-decoration: none;
}
.table tbody tr:hover {
cursor: pointer;
}
.table tbody td small {
color: #999;
font-size: 11px;
}
.rb-keyword-search input {
border-top: #dfdfdf solid 1px;
border-bottom: 0;
border-left: 0;
border-right: 0;
}
.rb-name {
color: #666;
}
.rb-name i {
margin-left: 13px;
}
.rb-id {
color: #666;
}
.rb-name span {
padding-left: 34px;
}
.rb-time {
width: 100px;
font-size:13px;
text-align:center;
color:#999;
}
.table .active1 td {
background-color: #428BCA;
}
.table .active1 td,
.table .active1 td small,
.table .active1 .rb-time {
color: #fff;
}
.rb-search-box {
background-color: #f5f5f5;
}
.rb-search-box .input-group {
width: 190px;
}
.rb-panel-footer {
text-align: center;
}
.rb-panel-footer .pagination {
margin-top: 5px;
margin-bottom: 5px;
}
@media (max-width: 1199px) {
.form-horizontal .control-label {
margin-bottom: 5px;
}
}

View File

@@ -0,0 +1,211 @@
<?php
$R=array();
$recnum= $recnum ? $recnum : 12;
$sendsql = 'gid>-1';
if ($keyw)
{
$sendsql .= " and (id like '%".$keyw."%' or name like '%".$keyw."%')";
}
$RCD = getDbArray($table['s_module'],$sendsql,'*','gid','asc',$recnum,$p);
$NUM = getDbRows($table['s_module'],$sendsql);
$TPG = getTotalPage($NUM,$recnum);
if (!$id)$id=$module;
$R = getDbData($table['s_module'],"id='".$id."'",'*');
?>
<div class="container-fluid">
<div class="row">
<div class="col-sm-5 col-md-5 col-xl-4 d-none d-sm-block sidebar" id="tab-content-list">
<div class="card">
<div class="card-header">
<i class="fa kf kf-module fa-lg fa-fw"></i>
전체모듈
<span class="pull-right">
<button type="button" class="btn btn-link py-0 muted-link" data-toggle="collapse" data-target="#panel-search" data-tooltip="tooltip" title="검색필터" onclick="sessionSetting('sh_module_search','1','','1');getSearchFocus();">
<i class="fa fa-search"></i>
</button>
</span>
</div>
<div id="panel-search" class="collapse">
<form role="form" 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="module" value="<?php echo $module?>">
<input type="hidden" name="front" value="<?php echo $front?>">
<input type="hidden" name="id" value="<?php echo $id?>">
<div class="card-header rb-search-box">
<div class="input-group">
<div class="input-group-addon"><small>출력수</small></div>
<div class="input-group-btn">
<select class="form-control" name="recnum" onchange="this.form.submit();">
<option value="15"<?php if($recnum==15):?> selected<?php endif?>>15</option>
<option value="30"<?php if($recnum==30):?> selected<?php endif?>>30</option>
<option value="60"<?php if($recnum==60):?> selected<?php endif?>>60</option>
<option value="100"<?php if($recnum==100):?> selected<?php endif?>>100</option>
</select>
</div>
</div>
</div>
<div class="rb-keyword-search">
<input type="text" name="keyw" class="form-control" value="<?php echo $keyw?>" placeholder="모듈명,아이디 검색">
</div>
</form>
</div>
<div class="panel-collapse collapse show" id="collapmetane">
<table id="module-list" class="table">
<thead>
<tr>
<td class="rb-name"><span>모듈명</span></td>
<td class="rb-id"><span>아이디</span></td>
<td class="rb-time"><span>등록일</span></td>
</tr>
</thead>
<tbody>
<?php while($_R = db_fetch_array($RCD)):?>
<tr<?php if($id==$_R['id']):?> class="table-active"<?php endif?> onclick="goHref('<?php echo $g['adm_href']?>&amp;recnum=<?php echo $recnum?>&amp;p=<?php echo $p?>&amp;id=<?php echo $_R['id']?>&amp;keyw=<?php echo urlencode($keyw)?>#page-info');">
<td class="rb-name">
<i class="kf <?php echo $_R['icon']?$_R['icon']:'kf-'.$_R['id']?>"></i>
<?php echo $_R['name']?>
<?php if(!$_R['hidden']):?><small><small class="fa fa-eye"></small></small><?php endif?>
</td>
<td class="rb-id"><?php echo $_R['id']?></td>
<td class="rb-time">
<?php echo getDateFormat($_R['d_regis'],'Y.m.d')?>
</td>
</tr>
<?php endwhile?>
</tbody>
</table>
<?php if($TPG>1):?>
<ul class="pagination justify-content-center">
<script>getPageLink(5,<?php echo $p?>,<?php echo $TPG?>,'');</script>
</ul>
<?php endif?>
</div>
</div>
</div>
<?php if(!$R['id']) $R=getDbData($table['s_module'],"id='site'",'*')?>
<?php if($g['device']):?><a name="page-info"></a><?php endif?>
<div class="col-sm-7 col-md-7 ml-sm-auto col-xl-8 pt-3" id="tab-content-view">
<div class="page-header mt-0">
<h4>모듈 익스텐션 정보</h4>
</div>
<div class="row">
<div class="col-md-2 col-sm-2 text-center">
<div class="rb-box">
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $m?>&amp;module=<?php echo $_R['id']?>">
<i class="rb-icon kf <?php echo $R['icon']?$R['icon']:'kf-'.$R['id']?>"></i><br>
<i class="rb-name"><?php echo $R['id']?></i>
</a>
</div>
</div>
<div class="col-md-10 col-sm-10">
<h4 class="mb-2">
<strong><?php echo $R['name']?></strong>
</h4>
<button type="button" class="btn btn-light mb-2"><span class="badge badge-secondary">1.1.0</span> 최신 업데이트가 없습니다.</button>
<p class="text-muted"><small>선택된 모듈에 대한 플러그인 정보입니다.</small></p>
</div>
</div>
<hr>
<?php
include $g['path_core'].'function/rss.func.php';
include $g['path_module'].'market/var/var.php';
$_serverinfo = explode('/',$d['update']['url']);
$updatefile = 'http://'.$_serverinfo[2].'/__update/market/modules/'.$id.'/theme.txt';
$_updatelist = getUrlData($updatefile,10);
$_updatelist = explode("\n",$_updatelist);
$_updatelength = count($_updatelist)-1;
$recnum = 1000;
$TPG = getTotalPage($_updatelength,$recnum);
?>
<?php if (remoteFileExist($updatefile) == 1): ?>
<div class="table-responsive">
<table class="table table-hover f13 text-center">
<thead class="text-muted">
<tr>
<th>내 테마</th>
<th>테마명(아이디)</th>
<th>제작자</th>
<th>마켓등록일</td>
<th>설치일</th>
<th>다운로드</th>
<th>원격설치</th>
</tr>
</thead>
<tbody>
<?php $_ishistory=false?>
<?php for($i = $_updatelength-(($p-1)*$recnum)-1; $i > $_updatelength-($p*$recnum)-1; $i--):?>
<?php $_update=trim($_updatelist[$i]);if(!$_update)continue?>
<?php $var1=explode(',',$_update)?>
<?php $var2=explode(',',$_updatelist[$i-1])?>
<?php $_updatefile=$g['path_module'].$id.'/update/'.$var1[0].'.'.$var1[5].'.txt'?>
<?php if(is_file($_updatefile)):?>
<?php $_supdate=explode(',',implode('',file($_updatefile)))?>
<tr>
<td><?php if(is_dir($g['path_module'].$id.'/themes/'.$var1[0])):?><span style="color:red;">Y</span><?php else:?>N<?php endif?></td>
<td><a href="http://<?php echo $_serverinfo[2]?>/market/<?php echo $var1[2]?>" target="_blank"><?php echo $var1[3]?>(<?php echo $var1[0]?>)</a></td>
<td><?php echo $var1[4]?></td>
<td><?php echo getDateFormat($var1[1],'Y.m.d')?></td>
<td><?php echo getDateFormat($_supdate[0],'Y.m.d')?></td>
<td>
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=update_plugin&amp;extension_path=./modules/<?php echo $id?>/&amp;type=download&amp;ufile=<?php echo $var1[0]?>.<?php echo $var1[5]?>" onclick="return hrefCheck(this,true,'정말로 다운로드 받으시겠습니까?');" class="btn btn-light">다운로드</a>
</td>
<td>
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=update_plugin&amp;extension_path=./modules/<?php echo $id?>/&amp;type=delete&amp;ufile=<?php echo $var1[0]?>.<?php echo $var1[5]?>" title="테마 제거" onclick="return hrefCheck(this,true,'정말로 이 테마를 제거하시겠습니까?');" class="btn btn-light">테마제거</a>
</td>
</tr>
<?php else:?>
<tr>
<td><?php if(is_dir($g['path_module'].$id.'/theme/'.$var1[0])):?><span style="color:red;">Y</span><?php else:?>N<?php endif?></td>
<td></td>
<td><a href="http://<?php echo $_serverinfo[2]?>/market/<?php echo $var1[2]?>" target="_blank"><?php echo $var1[3]?>(<?php echo $var1[0]?>)</a></td>
<td><?php echo $var1[4]?></td>
<td><?php echo getDateFormat($var1[1],'Y.m.d')?></td>
<td><span class="label label-default">미설치</span></td>
<td>
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=update_plugin&amp;extension_path=./modules/<?php echo $id?>/&amp;type=download&amp;ufile=<?php echo $var1[0]?>.<?php echo $var1[5]?>" onclick="return hrefCheck(this,true,'정말로 다운로드 받으시겠습니까?');" class="btn btn-light">다운로드</a>
</td>
<td>
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=update_plugin&amp;extension_path=./modules/<?php echo $id?>/&amp;type=install&amp;ufile=<?php echo $var1[0]?>.<?php echo $var1[5]?>" onclick="return hrefCheck(this,true,'정말로 설치 하시겠습니까?');" class="btn btn-light">원격설치</a>
</td>
</tr>
<?php endif?>
<?php endfor?>
<?php if(!$_updatelength):?>
<tr>
<td colspan="8" class="text-center text-muted">마켓에 등록된 관련테마나 플러그인이 없습니다.</td>
</tr>
<?php endif?>
</tbody>
</table>
</div>
<ul class="pagination justify-content-center d-none">
<script type="text/javascript">getPageLink(5,<?php echo $p?>,<?php echo $TPG?>,'');</script>
</ul>
<?php else: ?>
<div class="p-5 text-muted small text-center">
업데이트 정보가 없습니다.
</div>
<?php endif; ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,437 @@
#rb-body .tab-content .form-group.tab-content {
border: 0;
padding: 0 15px;
}
#rb-body .tab-content .form-group {
margin-bottom: 15px;
}
.help-text {
margin-top: 5px
}
.dataTables_wrapper a{
color: #666
}
#module-list_wrapper > .panel-body {
min-height: 403px;
padding: 0 !important
}
#module-list_wrapper .dataTable {
margin-top: 0 !important;
margin-bottom: 0 !important;
max-width: none !important;
}
#module-list_wrapper .dataTables_paginate {
margin-top: 0 !important;
}
#module-list_wrapper .dataTables_empty {
text-align: center;
color: #999;
line-height: 100px
}
#module-list_wrapper .dataTables_filter label {
font-weight: normal;
float: none;
}
#module-list_wrapper .dataTables_length label {
font-weight: normal;
float: none;
text-align: left;
}
#module-list_wrapper .dataTables_paginate {
float: none;
margin-top: 15px
}
#module-list_wrapper .rb-time {
text-align: center;
}
#module-list_wrapper td.rb-time {
color: #999;
}
#module-list_wrapper td.rb-time time {
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden
}
#module-list_wrapper .active td.rb-time {
color: #eee
}
#module-list_wrapper td a {
display: block;
}
#module-list_wrapper td a:hover {
text-decoration: none;
}
#module-list_wrapper .table thead tr {
background-image: none;
background-color: inherit;
}
#module-list_wrapper .table > thead > tr > th {
border-bottom: 1px solid #ddd;
font-size: 12px;
}
@media (max-width: 479px) {
#module-list .rb-id,
#module-list .rb-time {
display: none;
}
}
#module-list_filter {
border-bottom: 1px solid #ddd;
}
#module-list_filter .input-group {
margin-bottom: 0;
border-radius: 0;
border: none;
width: 100%
}
#module-list_filter .form-control {
background-color: #fff;
box-shadow: none;
}
#module-list_length {
padding: 10px;
border-bottom: 1px solid #ddd;
background-color: #F5F5F5
}
#module-list_length .input-group {
margin-bottom: 0
}
.form-horizontal .tab-content {
border: 0;
padding-top: 0;
padding-bottom: 0
}
.rb-advance {
border-top: 1px solid #EFEFEF;
padding-top: 5px;
margin-top: 30px;
margin-bottom: 30px
}
.rb-advance .btn span:before {
content: "숨기기"
}
.rb-advance .btn.collapsed span:before {
content: "표시"
}
.input-group-addon:first-child,
.input-group-btn:last-child>.btn,
.input-group-addon:last-child {
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
}
.help-block {
margin-top: 10px;
font-size: 13px
}
.rb-guide {
margin: 10px 0 0;
padding: 15px;
color: #777;
border-top: 1px solid #eee;
font-size: 13px
}
.form-horizontal .has-feedback.rb-outside .form-control-feedback {
right: -925px;
}
@media (min-width: 1200px) {
.form-horizontal .has-feedback.rb-outside .form-control-feedback {
width: 46px;
height: 46px;
line-height: 46px;
right: -25px;
}
#page-settings .panel-body {
padding-left:0;
padding-right:0;
}
}
.rb-hidden a {
color: #B7B6B6
}
/*rb-box */
.rb-box {
position: relative;
background-color: #444;
border-radius: 6px;
text-align: center;
padding: 8px;
margin: 4px;
width: 70px;
height : 65px;
overflow: hidden;
box-shadow: 0 1px 2px #eee;
}
.rb-box a {
color: #fff
}
.rb-box a:hover {
text-decoration: none;
color: #428BCA
}
.rb-box a:active {
color: #428BCA
}
.rb-box i {
font-style: normal;
}
.rb-box .rb-icon {
font-size: 34px;
text-shadow: 1px 1px 1px #222;
}
.rb-box .rb-name {
font-family: 'Open Sans', sans-serif;
position: absolute;
bottom: 4px;
left: 5px;
right: 5px;
top: auto;
text-align: center;
color: #eee;
text-shadow: 1px 1px 1px #222;
font-size: 11px;
text-transform: capitalize;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
}
/**
* Nestable
*/
.dd {
position: relative;
display: block;
margin: 0;
padding: 0;
list-style: none;
font-size: 13px;
line-height: 20px;
}
.dd-list {
display: block;
position: relative;
margin: 0;
padding: 0;
list-style: none;
}
.dd-item,
.dd-empty,
.dd-placeholder {
display: block;
position: relative;
margin: 0;
padding: 0;
min-height: 20px;
line-height: 20px;
}
.dd-handle {
display: block;
margin: 5px 0;
padding: 10px;
text-decoration: none;
border: 1px solid #ccc;
background: #eee;
-webkit-border-radius: 3px;
border-radius: 3px;
box-sizing: border-box; -moz-box-sizing: border-box;
cursor: move;
font-size: 13px
}
.dd-handle:hover {
color: #2ea8e5;
}
.dd-item > button {
display: block;
position: relative;
cursor: pointer;
float: left;
width: 35px;
height: 35px;
margin: 5px 0;
padding: 0;
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
border: 0;
background: transparent;
font-size: 13px;
line-height: 1;
text-align: center;
}
.dd-placeholder,
.dd-empty {
margin: 5px 0;
padding: 0;
min-height: 30px;
background: #f2fbff;
border: 1px dashed #b6bcbf;
box-sizing: border-box;
-moz-box-sizing: border-box
}
.dd-empty {
border: 1px dashed #bbb;
min-height: 100px;
background-color: #e5e5e5;
background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
background-size: 60px 60px;
background-position: 0 0, 30px 30px;
}
.dd-dragel {
position: absolute;
pointer-events: none;
z-index: 9999;
}
.dd-dragel > .dd-item .dd-handle { margin-top: 0; }
.dd-dragel .dd-handle {
-webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
}
/*김성호추가*/
.table {
}
#panel-search,
.table thead {
border-top: #ccc solid 1px;
}
.table thead td {
color: #666;
font-weight: bold;
font-size: 11px;
}
.table tbody td a {
color: #666;
text-decoration: none;
}
.table tbody tr:hover {
cursor: pointer;
}
.table tbody td small {
font-size: 11px;
}
.rb-keyword-search input {
border-top: #dfdfdf solid 1px;
border-bottom: 0;
border-left: 0;
border-right: 0;
}
.rb-name {
color: #666;
}
.rb-name i {
margin-left: 13px;
}
.rb-id {
color: #666;
}
.rb-name span {
padding-left: 34px;
}
.rb-time {
width: 100px;
font-size:13px;
text-align:center;
color:#999;
}
.table .active1 td {
background-color: #428BCA;
}
.table .active1 td,
.table .active1 td small,
.table .active1 .rb-time {
color: #fff;
}
.rb-search-box {
background-color: #f5f5f5;
}
.rb-search-box .input-group {
width: 190px;
}
.rb-panel-footer {
text-align: center;
}
.rb-panel-footer .pagination {
margin-top: 5px;
margin-bottom: 5px;
}
@media (max-width: 1199px) {
.form-horizontal .control-label {
margin-bottom: 5px;
}
}
@media (max-width: 767px) {
#rb-body .row,
#rb-body .xrow {
margin-right: -16px;
margin-left: -16px;
}
}

View File

@@ -0,0 +1,200 @@
<?php
$R=array();
$recnum= $recnum ? $recnum : 12;
$sendsql = 'gid>-1';
if ($keyw)
{
$sendsql .= " and (id like '%".$keyw."%' or name like '%".$keyw."%')";
}
$RCD = getDbArray($table['s_module'],$sendsql,'*','gid','asc',$recnum,$p);
$NUM = getDbRows($table['s_module'],$sendsql);
$TPG = getTotalPage($NUM,$recnum);
if (!$id)$id=$module;
$R = getDbData($table['s_module'],"id='".$id."'",'*');
?>
<div class="container-fluid">
<div class="row">
<div class="col-sm-5 col-md-5 col-xl-4 d-none d-sm-block sidebar" id="tab-content-list">
<div class="card border-0">
<div class="card-header dropdown border-bottom-0">
전체모듈
<span class="pull-right">
<button type="button" class="btn btn-link py-0 muted-link" data-toggle="collapse" data-target="#panel-search" data-tooltip="tooltip" title="검색필터" onclick="sessionSetting('sh_module_search','1','','1');getSearchFocus();">
<i class="fa fa-search"></i>
</button>
</span>
</div>
<div id="panel-search" class="collapse">
<form role="form" 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="module" value="<?php echo $module?>">
<input type="hidden" name="front" value="<?php echo $front?>">
<input type="hidden" name="id" value="<?php echo $id?>">
<div class="panel-heading rb-search-box">
<div class="input-group">
<div class="input-group-addon"><small>출력수</small></div>
<div class="input-group-btn">
<select class="form-control" name="recnum" onchange="this.form.submit();">
<option value="15"<?php if($recnum==15):?> selected<?php endif?>>15</option>
<option value="30"<?php if($recnum==30):?> selected<?php endif?>>30</option>
<option value="60"<?php if($recnum==60):?> selected<?php endif?>>60</option>
<option value="100"<?php if($recnum==100):?> selected<?php endif?>>100</option>
</select>
</div>
</div>
</div>
<div class="rb-keyword-search">
<input type="text" name="keyw" class="form-control" value="<?php echo $keyw?>" placeholder="모듈명,아이디 검색">
</div>
</form>
</div>
<div class="panel-collapse collapse show" id="collapmetane" style="height: calc(100vh - 12.5rem);overflow:auto">
<table id="module-list" class="table mb-0 f14 border-bottom">
<thead>
<tr>
<td class="rb-name"><span>모듈명</span></td>
<td class="rb-id"><span>아이디</span></td>
<td class="rb-time"><span>등록일</span></td>
</tr>
</thead>
<tbody>
<?php while($_R = db_fetch_array($RCD)):?>
<tr<?php if($id==$_R['id']):?> class="table-active"<?php endif?> onclick="goHref('<?php echo $g['adm_href']?>&amp;recnum=<?php echo $recnum?>&amp;p=<?php echo $p?>&amp;id=<?php echo $_R['id']?>&amp;keyw=<?php echo urlencode($keyw)?>#page-info');">
<td class="rb-name">
<i class="kf <?php echo $_R['icon']?$_R['icon']:'kf-'.$_R['id']?> fa-fw mr-2"></i>
<?php echo $_R['name']?>
<?php if(!$_R['hidden']):?><small><small class="fa fa-eye ml-1"></small></small><?php endif?>
</td>
<td class="rb-id"><?php echo $_R['id']?></td>
<td class="rb-time">
<?php echo getDateFormat($_R['d_regis'],'Y.m.d')?>
</td>
</tr>
<?php endwhile?>
</tbody>
</table>
</div>
<?php if($TPG>1):?>
<ul class="pagination pagination-sm justify-content-center mt-3">
<script>getPageLink(5,<?php echo $p?>,<?php echo $TPG?>,'');</script>
</ul>
<?php endif?>
</div>
</div>
<?php if(!$R['id']) $R=getDbData($table['s_module'],"id='site'",'*')?>
<?php if($g['device']):?><a name="page-info"></a><?php endif?>
<div class="col-sm-7 col-md-7 ml-sm-auto col-xl-8 pt-3" id="tab-content-view">
<div class="page-header mt-0">
<h4>모듈 업데이트 정보</h4>
</div>
<div class="row">
<div class="col-md-2 col-sm-2 text-center">
<div class="rb-box">
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $m?>&amp;module=<?php echo $_R['id']?>">
<i class="rb-icon kf <?php echo $R['icon']?$R['icon']:'kf-'.$R['id']?>"></i><br>
<i class="rb-name"><?php echo $R['id']?></i>
</a>
</div>
</div>
<div class="col-md-10 col-sm-10">
<h4 class="mb-3">
<strong><?php echo $R['name']?></strong>
</h4>
<button type="button" class="btn btn-light mb-2"><span class="label label-default">1.1.0</span> 최신 업데이트가 없습니다.</button>
<p class="text-muted"><small>선택된 모듈에 대한 업데이트 정보입니다.</small></p>
</div>
</div>
<hr>
<?php
include $g['path_core'].'function/rss.func.php';
include $g['path_module'].'market/var/var.php';
$_serverinfo = explode('/',$d['update']['url']);
$updatefile = 'http://'.$_serverinfo[2].'/__update/market/modules/'.$id.'/update.txt';
$_updatelist = getUrlData($updatefile,10);
$_updatelist = explode("\n",$_updatelist);
$_updatelength = count($_updatelist)-1;
$recnum2 = 1000;
$TPG2 = getTotalPage($_updatelength,$recnum2);
?>
<?php if (remoteFileExist($updatefile) == 1): ?>
<div class="table-responsive">
<table class="table table-hover f13 text-center">
<thead class="text-muted">
<tr>
<th>버전</th>
<th>패치/업데이트</th>
<th>적용일자</th>
<th>처리여부</th>
<th>관리</th>
</tr>
</thead>
<tbody>
<?php $_ishistory=false?>
<?php for($i = $_updatelength-(($p2-1)*$recnum2)-1; $i > $_updatelength-($p2*$recnum2)-1; $i--):?>
<?php $_update=trim($_updatelist[$i]);if(!$_update)continue?>
<?php $var1=explode(',',$_update)?>
<?php $var2=explode(',',$_updatelist[$i-1])?>
<?php $_updatefile=$g['path_module'].$id.'/update/'.$var1[1].'.txt'?>
<?php if(is_file($_updatefile)):?>
<?php $_supdate=explode(',',implode('',file($_updatefile)))?>
<tr>
<td><?php echo $var1[0]?></td>
<td><a href="http://<?php echo $_serverinfo[2]?>/market/<?php echo $var1[2]?>" target="_blank"><?php echo $var1[0]?>_<?php echo $var1[1]?></a></td>
<td><?php echo getDateFormat($_supdate[0],'Y.m.d')?></td>
<td><span class="label label-default">완료됨 <?php if($_supdate[1]):?>(수동)<?php else:?>(원격)<?php endif?></span></td>
<td>
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=update_extension&amp;extension_path=./modules/<?php echo $id?>/&amp;type=delete&amp;ufile=<?php echo $var1[1]?>" title="업데이트기록 제거" class="btn btn-light btn-sm" onclick="return hrefCheck(this,true,'정말로 업데이트 기록을 제거하시겠습니까?');">기록제거</a>
</td>
</tr>
<?php else:?>
<tr>
<td><?php echo $var1[0]?></td>
<td><a href="http://<?php echo $_serverinfo[2]?>/market/<?php echo $var1[2]?>" target="_blank"><?php echo $var1[0]?>_<?php echo $var1[1]?></a></td>
<td></td>
<td>미적용</td>
<td>
<a class="btn btn-light" href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=update_extension&amp;extension_path=./modules/<?php echo $id?>/&amp;type=auto&amp;ufile=<?php echo $var1[1]?>" onclick="return hrefCheck(this,true,'정말로 업데이트 하시겠습니까?');">원격 업데이트</a>
<a class="btn btn-light" href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=<?php echo $module?>&amp;a=update_extension&amp;extension_path=./modules/<?php echo $id?>/&amp;type=manual&amp;ufile=<?php echo $var1[1]?>" title="수동 업데이트 처리" onclick="return hrefCheck(this,true,'정말로 수동으로 업데이트 처리하시겠습니까?\n수동 업데이트 처리시 원격업데이트는 건너뜁니다.');">수동 업데이트</a>
</td>
</tr>
<?php endif?>
<?php endfor?>
<?php if(!$_updatelength):?>
<tr>
<td colspan="5" class="text-center text-muted">업데이트 대기리스트가 없습니다.</td>
</tr>
<?php endif?>
</tbody>
</table>
</div>
<ul class="pagination justify-content-center d-none">
<script type="text/javascript">getPageLink(5,<?php echo $p2?>,<?php echo $TPG2?>,'');</script>
</ul>
<?php else: ?>
<div class="p-5 text-muted small text-center">
업데이트 정보가 없습니다.
</div>
<?php endif; ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,4 @@
<?php
$d['amenu']['main'] = '모듈목록';
$d['amenu']['update'] = '업데이트';
?>