first
This commit is contained in:
4
modules/module/README.md
Normal file
4
modules/module/README.md
Normal file
@@ -0,0 +1,4 @@
|
||||
## Copyright and license
|
||||
Copyright 2020 Redblock, Inc.
|
||||
|
||||
Licensed under the [RBL](https://kimsq.com/p/rbl) License
|
||||
48
modules/module/action/a.module_delete.php
Normal file
48
modules/module/action/a.module_delete.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
checkAdmin(0);
|
||||
|
||||
$R = getDbData($table['s_module'],"id='".$moduleid."'",'*');
|
||||
if (!$R['id']) getLink('','','존재하지 않는 모듈입니다.','');
|
||||
if ($R['sys'] || $R['system']) getLink('','','시스템모듈은 삭제할 수 없습니다.','');
|
||||
|
||||
getDbDelete($table['s_module'],"id='".$moduleid."'");
|
||||
|
||||
include_once $g['path_core'].'function/dir.func.php';
|
||||
|
||||
$table_db = $g['path_module'].$moduleid.'/_setting/db.table.php.done';
|
||||
$_tmptfile = $g['path_var'].'table.info.php';
|
||||
|
||||
if(is_file($table_db))
|
||||
{
|
||||
$module= $moduleid;
|
||||
$_table= $table;
|
||||
$table = array();
|
||||
include_once $table_db;
|
||||
|
||||
$fp = fopen($_tmptfile,'w');
|
||||
fwrite($fp, "<?php\n");
|
||||
foreach($_table as $key => $val)
|
||||
{
|
||||
if (!$table[$key])
|
||||
{
|
||||
fwrite($fp, "\$table['$key'] = \"$val\";\n");
|
||||
}
|
||||
}
|
||||
fwrite($fp, "?>");
|
||||
fclose($fp);
|
||||
@chmod($_tmptfile,0707);
|
||||
|
||||
foreach($table as $key => $val)
|
||||
{
|
||||
db_query('drop table '.$val,$DB_CONNECT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DirDelete($g['path_module'].$R['id']);
|
||||
|
||||
getLink($g['s'].'/?r='.$r.'&m=admin&panel=Y&pickmodule='.$m,'parent.parent.','','');
|
||||
|
||||
?>
|
||||
12
modules/module/action/a.moduleinfo_update.php
Normal file
12
modules/module/action/a.moduleinfo_update.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
checkAdmin(0);
|
||||
|
||||
if ($moduleid)
|
||||
{
|
||||
getDbUpdate($table['s_module'],"name='".trim($name)."',hidden='$hidden',mobile='$mobile',icon='".trim($icon)."',lang='$modulelang'","id='".$moduleid."'");
|
||||
}
|
||||
|
||||
getLink('reload','parent.','','');
|
||||
?>
|
||||
10
modules/module/action/a.modulemobile_update.php
Normal file
10
modules/module/action/a.modulemobile_update.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
checkAdmin(0);
|
||||
|
||||
$mobile = $mobile ? 0 : 1;
|
||||
getDbUpdate($table['s_module'],'mobile='.$mobile,"id='".$moduleid."'");
|
||||
|
||||
getLink('reload','parent.','','');
|
||||
?>
|
||||
10
modules/module/action/a.moduleorder_update.php
Normal file
10
modules/module/action/a.moduleorder_update.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
checkAdmin(0);
|
||||
|
||||
$i=0;
|
||||
foreach($modulemembers as $val) getDbUpdate($table['s_module'],'gid='.($i++),"id='".$val."'");
|
||||
|
||||
getLink('reload','parent.','','');
|
||||
?>
|
||||
10
modules/module/action/a.moduleshow_update.php
Normal file
10
modules/module/action/a.moduleshow_update.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
checkAdmin(0);
|
||||
|
||||
$hidden = $hidden ? 0 : 1;
|
||||
getDbUpdate($table['s_module'],'hidden='.$hidden,"id='".$moduleid."'");
|
||||
|
||||
getLink('reload','parent.','','');
|
||||
?>
|
||||
77
modules/module/action/a.update_extension.php
Normal file
77
modules/module/action/a.update_extension.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
checkAdmin(0);
|
||||
getLink('','','죄송합니다. 이 기능은 현재 지원하지 않습니다.','');
|
||||
|
||||
$_upath = str_replace('./','',$extension_path);
|
||||
$_ufile = $extension_path.'update/'.$ufile.'.txt';
|
||||
|
||||
if ($type == 'delete')
|
||||
{
|
||||
unlink($_ufile);
|
||||
getLink('reload','parent.','업데이트 기록이 제거되었습니다.','');
|
||||
}
|
||||
else if ($type == 'manual')
|
||||
{
|
||||
$fp = fopen($_ufile,'w');
|
||||
fwrite($fp,$date['today'].',1');
|
||||
fclose($fp);
|
||||
@chmod($_ufile,0707);
|
||||
getLink('reload','parent.','수동 업데이트 처리되었습니다.','');
|
||||
}
|
||||
else {
|
||||
require $g['path_core'].'opensrc/unzip/ArchiveExtractor.class.php';
|
||||
require $g['path_core'].'function/dir.func.php';
|
||||
include $g['path_core'].'function/rss.func.php';
|
||||
include $g['path_module'].'market/var/var.php';
|
||||
$_serverinfo = explode('/',$d['update']['url']);
|
||||
$_updatedate = getUrlData('http://'.$_serverinfo[2].'/__update/market/'.$_upath.'update.txt',10);
|
||||
$_updatelist = explode("\n",$_updatedate);
|
||||
$_updateleng = count($_updatelist)-1;
|
||||
$_includeup = false;
|
||||
for($i=$_updateleng;$i>=0;$i--)
|
||||
{
|
||||
$_upx = explode(',',trim($_updatelist[$i]));
|
||||
if ($_upx[1]==$ufile)
|
||||
{
|
||||
$_includeup = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$_includeup) getLink('','','업데이트 파일이 존재하지 않습니다.','');
|
||||
$_updatefile = getUrlData('http://'.$_serverinfo[2].'/__update/market/'.$_upath.$ufile.'.zip',10);
|
||||
$folder = './';
|
||||
$extPath = $g['path_tmp'].'app';
|
||||
$extPath1 = $extPath.'/';
|
||||
$saveFile = $extPath1.'rb_update_app.zip';
|
||||
|
||||
$fp = fopen($saveFile,'w');
|
||||
fwrite($fp,$_updatefile);
|
||||
fclose($fp);
|
||||
@chmod($saveFile,0707);
|
||||
|
||||
$extractor = new ArchiveExtractor();
|
||||
$extractor -> extractArchive($saveFile,$extPath1);
|
||||
unlink($saveFile);
|
||||
|
||||
$_updateFile = $extPath1.'/_update.php';
|
||||
if (is_file($_updateFile))
|
||||
{
|
||||
include $_updateFile;
|
||||
unlink($_updateFile);
|
||||
}
|
||||
|
||||
DirCopy($extPath1,$folder);
|
||||
DirDelete($extPath);
|
||||
mkdir($extPath,0707);
|
||||
@chmod($extPath,0707);
|
||||
|
||||
$fp = fopen($_ufile,'w');
|
||||
fwrite($fp,$date['today'].',0');
|
||||
fclose($fp);
|
||||
@chmod($_ufile,0707);
|
||||
|
||||
getLink('reload','parent.','업데이트가 완료되었습니다.','');
|
||||
}
|
||||
?>
|
||||
88
modules/module/action/a.update_plugin.php
Normal file
88
modules/module/action/a.update_plugin.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
|
||||
checkAdmin(0);
|
||||
getLink('','','죄송합니다. 이 기능은 현재 지원하지 않습니다.','');
|
||||
|
||||
require $g['path_core'].'function/dir.func.php';
|
||||
|
||||
$_upath = str_replace('./','',$extension_path);
|
||||
$_ufile = $extension_path.'update/'.$ufile.'.txt';
|
||||
$_ufileexp = explode('.',$ufile);
|
||||
|
||||
if ($type == 'delete')
|
||||
{
|
||||
unlink($_ufile);
|
||||
//여기에 실제 테마 삭제처리
|
||||
DirDelete($extension_path.'themes/'.$_ufileexp[0]);
|
||||
getLink('reload','parent.','테마가 제거되었습니다.','');
|
||||
}
|
||||
else if ($type == 'download')
|
||||
{
|
||||
//여기에 다운로드 처리
|
||||
getLink('','','다운로드 처리','');
|
||||
}
|
||||
else {
|
||||
require $g['path_core'].'opensrc/unzip/ArchiveExtractor.class.php';
|
||||
include $g['path_core'].'function/rss.func.php';
|
||||
include $g['path_module'].'market/var/var.php';
|
||||
$_serverinfo = explode('/',$d['update']['url']);
|
||||
$_updatedate = getUrlData('http://'.$_serverinfo[2].'/__update/market/'.$_upath.'theme.txt',10);
|
||||
$_updatelist = explode("\n",$_updatedate);
|
||||
$_updateleng = count($_updatelist)-1;
|
||||
$_includeup = false;
|
||||
for($i=$_updateleng;$i>=0;$i--)
|
||||
{
|
||||
$_upx = explode(',',trim($_updatelist[$i]));
|
||||
if ($_upx[5]==$_ufileexp[1])
|
||||
{
|
||||
$_includeup = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!$_includeup) getLink('','','테마가 존재하지 않습니다.','');
|
||||
$_updatefile = getUrlData('http://'.$_serverinfo[2].'/__update/market/'.$_upath.$_ufileexp[1].'.zip',10);
|
||||
$folder = './';
|
||||
$extPath = $g['path_tmp'].'app';
|
||||
$extPath1 = $extPath.'/';
|
||||
$saveFile = $extPath1.'rb_update_app.zip';
|
||||
|
||||
$fp = fopen($saveFile,'w');
|
||||
fwrite($fp,$_updatefile);
|
||||
fclose($fp);
|
||||
@chmod($saveFile,0707);
|
||||
|
||||
$extractor = new ArchiveExtractor();
|
||||
$extractor -> extractArchive($saveFile,$extPath1);
|
||||
unlink($saveFile);
|
||||
|
||||
$_updateFile = $extPath1.'/_update.php';
|
||||
if (is_file($_updateFile))
|
||||
{
|
||||
include $_updateFile;
|
||||
unlink($_updateFile);
|
||||
}
|
||||
|
||||
DirCopy($extPath1,$folder);
|
||||
DirDelete($extPath);
|
||||
mkdir($extPath,0707);
|
||||
@chmod($extPath,0707);
|
||||
|
||||
|
||||
|
||||
// 테스트용
|
||||
mkdir($extension_path.'themes',0707);
|
||||
@chmod($extension_path.'themes',0707);
|
||||
mkdir($extension_path.'themes/'.$_ufileexp[0],0707);
|
||||
@chmod($extension_path.'themes/'.$_ufileexp[0],0707);
|
||||
|
||||
|
||||
|
||||
$fp = fopen($_ufile,'w');
|
||||
fwrite($fp,$date['today']);
|
||||
fclose($fp);
|
||||
@chmod($_ufile,0707);
|
||||
|
||||
getLink('reload','parent.','테마가 설치되었습니다.','');
|
||||
}
|
||||
?>
|
||||
4
modules/module/admin.php
Normal file
4
modules/module/admin.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
include $g['path_module'].$module.'/admin/'.$front.'.php';
|
||||
?>
|
||||
29
modules/module/admin/_info.php
Normal file
29
modules/module/admin/_info.php
Normal 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>
|
||||
430
modules/module/admin/main.css
Normal file
430
modules/module/admin/main.css
Normal 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;
|
||||
}
|
||||
370
modules/module/admin/main.php
Normal file
370
modules/module/admin/main.php
Normal 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']?>&recnum=<?php echo $recnum?>&p=<?php echo $p?>&id=<?php echo $_R['id']?>&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?>&m=<?php echo $m?>&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?>&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?>&m=<?php echo $module?>&a=module_delete&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><i class=""></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>
|
||||
430
modules/module/admin/plugin.css
Normal file
430
modules/module/admin/plugin.css
Normal 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;
|
||||
}
|
||||
}
|
||||
211
modules/module/admin/plugin.php
Normal file
211
modules/module/admin/plugin.php
Normal 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']?>&recnum=<?php echo $recnum?>&p=<?php echo $p?>&id=<?php echo $_R['id']?>&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?>&m=<?php echo $m?>&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?>&m=<?php echo $module?>&a=update_plugin&extension_path=./modules/<?php echo $id?>/&type=download&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?>&m=<?php echo $module?>&a=update_plugin&extension_path=./modules/<?php echo $id?>/&type=delete&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?>&m=<?php echo $module?>&a=update_plugin&extension_path=./modules/<?php echo $id?>/&type=download&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?>&m=<?php echo $module?>&a=update_plugin&extension_path=./modules/<?php echo $id?>/&type=install&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>
|
||||
437
modules/module/admin/update.css
Normal file
437
modules/module/admin/update.css
Normal 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;
|
||||
}
|
||||
}
|
||||
200
modules/module/admin/update.php
Normal file
200
modules/module/admin/update.php
Normal 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']?>&recnum=<?php echo $recnum?>&p=<?php echo $p?>&id=<?php echo $_R['id']?>&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?>&m=<?php echo $m?>&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?>&m=<?php echo $module?>&a=update_extension&extension_path=./modules/<?php echo $id?>/&type=delete&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?>&m=<?php echo $module?>&a=update_extension&extension_path=./modules/<?php echo $id?>/&type=auto&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?>&m=<?php echo $module?>&a=update_extension&extension_path=./modules/<?php echo $id?>/&type=manual&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>
|
||||
4
modules/module/admin/var/var.menu.php
Normal file
4
modules/module/admin/var/var.menu.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
$d['amenu']['main'] = '모듈목록';
|
||||
$d['amenu']['update'] = '업데이트';
|
||||
?>
|
||||
3
modules/module/main.php
Normal file
3
modules/module/main.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
if(!defined('__KIMS__')) exit;
|
||||
?>
|
||||
1
modules/module/name.txt
Normal file
1
modules/module/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
모듈관리
|
||||
11
modules/module/var/var.moduleinfo.php
Normal file
11
modules/module/var/var.moduleinfo.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
/*
|
||||
각각의 링크를 제공하려면 다음과 같은 형식으로 지정해 주세요.
|
||||
이 링크는 관리자모드 모듈정보 링크에 사용됩니다.
|
||||
*/
|
||||
$d['moduleinfo']['market'] = 'http://www.kimsq.co.kr/market'; // 마켓
|
||||
$d['moduleinfo']['github'] = 'https://github.com/kimsQ/rb'; // 저장소
|
||||
$d['moduleinfo']['issue'] = 'https://github.com/kimsQ/rb/issues'; // 이슈접수
|
||||
$d['moduleinfo']['website'] = 'http://www.kimsq.co.kr/'; // 웹사이트
|
||||
$d['moduleinfo']['help'] = 'http://docs.kimsq.com/rb2/docs/c/Users/modules/module'; // 도움말
|
||||
?>
|
||||
Reference in New Issue
Block a user