@@ -82,6 +82,11 @@ box-shadow: 0 0 3px #A5C760; | |||||
outline: none; | outline: none; | ||||
} | } | ||||
input:disabled, input[readonly] { | |||||
background-color: #e9ecef; | |||||
opacity: 1; | |||||
} | |||||
label { | label { | ||||
display: inline-block; | display: inline-block; | ||||
margin: .5rem 0; | margin: .5rem 0; | ||||
@@ -20,21 +20,25 @@ if($action=='') | |||||
require_once(dirname(__FILE__)."/templets/module_make.htm"); | require_once(dirname(__FILE__)."/templets/module_make.htm"); | ||||
exit(); | exit(); | ||||
} | } | ||||
/*--------- | |||||
//获得Hash码 | |||||
function GetHash() | |||||
----------*/ | |||||
else if($action=='gethash') | |||||
{ | |||||
echo md5($modulname.$email); | |||||
exit(); | |||||
} | |||||
/*------------- | /*------------- | ||||
//生成项目 | //生成项目 | ||||
function Makemodule() | function Makemodule() | ||||
--------------*/ | --------------*/ | ||||
else if($action=='make') | else if($action=='make') | ||||
{ | { | ||||
require_once(DEDEINC.'/dedehttpdown.class.php'); | |||||
// 校验私钥,确定开发者身份 | |||||
$devURL = DEDECDNURL."/developers/$dev_id.json"; | |||||
$dhd = new DedeHttpDown(); | |||||
$dhd->OpenUrl($devURL); | |||||
$devContent = $dhd->GetHtml(); | |||||
$devInfo = (array)json_decode($devContent); | |||||
if (($devInfo['auth_at']+60*60*24*365) < time()) { | |||||
ShowMsg("您的开发者账号已经过期,请登录www.dedebiz.com重新申请!","-1"); | |||||
exit(); | |||||
} | |||||
$filelist = str_replace("\r", "\n", trim($filelist)); | $filelist = str_replace("\r", "\n", trim($filelist)); | ||||
$filelist = trim(preg_replace("#[\n]{1,}#", "\n", $filelist)); | $filelist = trim(preg_replace("#[\n]{1,}#", "\n", $filelist)); | ||||
if($filelist=='') | if($filelist=='') | ||||
@@ -42,6 +46,37 @@ else if($action=='make') | |||||
ShowMsg("对不起,你没有指定模块的文件列表,因此不能创建项目!","-1"); | ShowMsg("对不起,你没有指定模块的文件列表,因此不能创建项目!","-1"); | ||||
exit(); | exit(); | ||||
} | } | ||||
if (empty($dev_id)) { | |||||
ShowMsg("开发者ID不能为空!","-1"); | |||||
exit(); | |||||
} | |||||
if (empty($priv)) { | |||||
ShowMsg("请填写开发者私钥信息","-1"); | |||||
exit(); | |||||
} | |||||
if (strlen($modulname) > 150) { | |||||
ShowMsg("模块名称过长","-1"); | |||||
exit(); | |||||
} | |||||
// 校验私钥合法性 | |||||
$enstr = json_encode(array( | |||||
"module_name" => $modulname, | |||||
"dev_id" => $devInfo['dev_id'], | |||||
)); | |||||
// 私钥加密模块信息 | |||||
openssl_private_encrypt($enstr,$encotent,$priv); | |||||
$moduleInfo = base64url_encode($encotent); | |||||
openssl_public_decrypt($encotent,$decontent,$devInfo['pub_key']); | |||||
$minfo = (array)json_decode($decontent); | |||||
if ($minfo['module_name'] != $modulname || $minfo['dev_id'] != $devInfo['dev_id']) { | |||||
ShowMsg("开发者私钥校验失败,请确保填写正确的开发者私钥","-1"); | |||||
exit(); | |||||
} | |||||
//去除转义 | //去除转义 | ||||
foreach($_POST as $k=>$v) $$k = stripslashes($v); | foreach($_POST as $k=>$v) $$k = stripslashes($v); | ||||
@@ -49,7 +84,7 @@ else if($action=='make') | |||||
if(!isset($autosetup)) $autosetup = 0; | if(!isset($autosetup)) $autosetup = 0; | ||||
if(!isset($autodel)) $autodel = 0; | if(!isset($autodel)) $autodel = 0; | ||||
$mdir = DEDEDATA.'/module'; | $mdir = DEDEDATA.'/module'; | ||||
$hashcode = md5($modulname.$email); | |||||
$hashcode = md5($modulname.$devInfo['dev_id']); | |||||
$moduleFilename = $mdir.'/'.$hashcode.'.xml'; | $moduleFilename = $mdir.'/'.$hashcode.'.xml'; | ||||
$menustring = base64_encode($menustring); | $menustring = base64_encode($menustring); | ||||
$indexurl = str_replace('=', '**', $indexurl); | $indexurl = str_replace('=', '**', $indexurl); | ||||
@@ -101,17 +136,16 @@ else if($action=='make') | |||||
$modulinfo = "<module> | $modulinfo = "<module> | ||||
<baseinfo> | <baseinfo> | ||||
name={$modulname} | name={$modulname} | ||||
team={$team} | |||||
dev_id={$devInfo['dev_id']} | |||||
info={$moduleInfo} | |||||
time={$mtime} | time={$mtime} | ||||
email={$email} | |||||
url={$url} | |||||
hash={$hashcode} | hash={$hashcode} | ||||
indexname={$indexname} | indexname={$indexname} | ||||
indexurl={$indexurl} | indexurl={$indexurl} | ||||
ismember={$ismember} | ismember={$ismember} | ||||
autosetup={$autosetup} | autosetup={$autosetup} | ||||
autodel={$autodel} | autodel={$autodel} | ||||
lang={$lang} | |||||
lang=utf-8 | |||||
moduletype={$moduletype} | moduletype={$moduletype} | ||||
</baseinfo> | </baseinfo> | ||||
<systemfile> | <systemfile> | ||||
@@ -173,6 +207,48 @@ else if($action=='edit') | |||||
ShowMsg("对不起,你没有指定模块的文件列表,因此不能创建项目!","-1"); | ShowMsg("对不起,你没有指定模块的文件列表,因此不能创建项目!","-1"); | ||||
exit(); | exit(); | ||||
} | } | ||||
if (empty($dev_id)) { | |||||
ShowMsg("开发者ID不能为空!","-1"); | |||||
exit(); | |||||
} | |||||
if (empty($priv)) { | |||||
ShowMsg("请填写开发者私钥信息","-1"); | |||||
exit(); | |||||
} | |||||
// 校验私钥,确定开发者身份 | |||||
$devURL = DEDECDNURL."/developers/$dev_id.json"; | |||||
$dhd = new DedeHttpDown(); | |||||
$dhd->OpenUrl($devURL); | |||||
$devContent = $dhd->GetHtml(); | |||||
$devInfo = (array)json_decode($devContent); | |||||
if (($devInfo['auth_at']+60*60*24*365) < time()) { | |||||
ShowMsg("您的开发者账号已经过期,请登录www.dedebiz.com重新申请!","-1"); | |||||
exit(); | |||||
} | |||||
if (strlen($modulname) > 150) { | |||||
ShowMsg("模块名称过长","-1"); | |||||
exit(); | |||||
} | |||||
// 校验私钥合法性 | |||||
$enstr = json_encode(array( | |||||
"module_name" => $modulname, | |||||
"dev_id" => $devInfo['dev_id'], | |||||
)); | |||||
// 私钥加密模块信息 | |||||
openssl_private_encrypt($enstr,$encotent,$priv); | |||||
$moduleInfo = base64url_encode($encotent); | |||||
openssl_public_decrypt($encotent,$decontent,$devInfo['pub_key']); | |||||
$minfo = (array)json_decode($decontent); | |||||
if ($minfo['module_name'] != $modulname || $minfo['dev_id'] != $devInfo['dev_id']) { | |||||
ShowMsg("开发者私钥校验失败,请确保填写正确的开发者私钥","-1"); | |||||
exit(); | |||||
} | |||||
//已经去除转义 | //已经去除转义 | ||||
foreach($_POST as $k=>$v) $$k = stripslashes($v); | foreach($_POST as $k=>$v) $$k = stripslashes($v); | ||||
@@ -182,8 +258,6 @@ else if($action=='edit') | |||||
$hashcode = $hash; | $hashcode = $hash; | ||||
$moduleFilename = $mdir.'/'.$hashcode.'.xml'; | $moduleFilename = $mdir.'/'.$hashcode.'.xml'; | ||||
$modulname = str_replace('=', '', $modulname); | $modulname = str_replace('=', '', $modulname); | ||||
$email = str_replace('=', '', $email); | |||||
$team = str_replace('=', '', $team); | |||||
$indexurl = str_replace('=', '**', $indexurl); | $indexurl = str_replace('=', '**', $indexurl); | ||||
$menustring = base64_encode($menustring); | $menustring = base64_encode($menustring); | ||||
$dm = new DedeModule($mdir); | $dm = new DedeModule($mdir); | ||||
@@ -219,17 +293,16 @@ else if($action=='edit') | |||||
$modulinfo = "<module> | $modulinfo = "<module> | ||||
<baseinfo> | <baseinfo> | ||||
name={$modulname} | name={$modulname} | ||||
team={$team} | |||||
dev_id={$devInfo['dev_id']} | |||||
info={$moduleInfo} | |||||
time={$mtime} | time={$mtime} | ||||
email={$email} | |||||
url={$url} | |||||
hash={$hashcode} | hash={$hashcode} | ||||
indexname={$indexname} | indexname={$indexname} | ||||
indexurl={$indexurl} | indexurl={$indexurl} | ||||
ismember={$ismember} | ismember={$ismember} | ||||
autosetup={$autosetup} | autosetup={$autosetup} | ||||
autodel={$autodel} | autodel={$autodel} | ||||
lang={$lang} | |||||
lang=utf-8 | |||||
moduletype={$moduletype} | moduletype={$moduletype} | ||||
</baseinfo> | </baseinfo> | ||||
<systemfile> | <systemfile> | ||||
@@ -97,15 +97,15 @@ else | |||||
<tr> | <tr> | ||||
<td height='30'>文件格式:</td> | <td height='30'>文件格式:</td> | ||||
<td> | <td> | ||||
<input name='filetype' type='radio' value='0' checked='checked' /> | |||||
正常的模块包 | |||||
<input type='radio' name='filetype' value='1' /> | |||||
经过 zip 压缩的模块包 </td> | |||||
<label><input name='filetype' type='radio' value='0' checked='checked' /> | |||||
正常的模块包</label> | |||||
<label><input type='radio' name='filetype' value='1' /> | |||||
经过 zip 压缩的模块包</label> </td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td height='30'>已有模块:</td> | <td height='30'>已有模块:</td> | ||||
<td> | <td> | ||||
<input name='delhas' type='checkbox' id='delhas' value='1' /> 强制删除同名模块(这可能导致已经安装的模块无法卸载) | |||||
<label><input name='delhas' type='checkbox' id='delhas' value='1' /> 强制删除同名模块(这可能导致已经安装的模块无法卸载)</label> | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -2,31 +2,10 @@ | |||||
<html xmlns="http://www.w3.org/1999/xhtml"> | <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>"> | <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>"> | ||||
<link rel="stylesheet" href="../static/css/bootstrap.min.css"> | |||||
<link href="../static/font-awesome/css/font-awesome.min.css" rel="stylesheet"> | |||||
<script language="javascript" src="../static/js/dedeajax2.js"></script> | <script language="javascript" src="../static/js/dedeajax2.js"></script> | ||||
<script language="javascript"> | <script language="javascript"> | ||||
function LoadHashCode() | |||||
{ | |||||
var tgobj = document.getElementById('modulcode'); | |||||
var email = document.form1.email.value; | |||||
var modulname = document.form1.modulname.value; | |||||
var myajax = new DedeAjax(tgobj,false,true,'-','-','...'); | |||||
<?php | |||||
if(strtolower(substr($cfg_soft_lang, 0, 3)) == 'utf') { | |||||
?> | |||||
myajax.AddKeyUtf8('action','gethash'); | |||||
myajax.AddKeyUtf8('email',email); | |||||
myajax.AddKeyUtf8('modulname',modulname); | |||||
myajax.SendPost2('module_make.php'); | |||||
<?php | |||||
} | |||||
elseif (strtolower(substr($cfg_soft_lang, 0, 2)) == 'gb') { | |||||
echo 'myajax.SendGet2("module_make.php?action=gethash&email="+email+"&modulname="+modulname);'; | |||||
} | |||||
?> | |||||
//myajax.SendGet2('module_make.php?action=gethash&email='+email+'&modulname='+modulname); | |||||
DedeXHTTP = null; | |||||
} | |||||
function ShowHideField(cbox,vid,nid) | function ShowHideField(cbox,vid,nid) | ||||
{ | { | ||||
var cboxobj = document.getElementById(cbox); | var cboxobj = document.getElementById(cbox); | ||||
@@ -61,13 +40,14 @@ td{padding-left:8px} | |||||
</style> | </style> | ||||
</head> | </head> | ||||
<body background='images/allbg.gif' leftmargin='8' topmargin='8'> | <body background='images/allbg.gif' leftmargin='8' topmargin='8'> | ||||
<div class="bodytitle"> | |||||
<div class="bodytitle mt-3"> | |||||
<div class="bodytitleleft"></div> | <div class="bodytitleleft"></div> | ||||
<div class="bodytitletxt" style="padding-left:10px;">模块管理</div> | <div class="bodytitletxt" style="padding-left:10px;">模块管理</div> | ||||
</div> | </div> | ||||
<table width="98%" border="0" cellpadding="1" cellspacing="1" align="center" class="tbtitle" style="background:#CFCFCF;"> | |||||
<table width="98%" border="0" cellpadding="1" cellspacing="1" align="center" class="table maintable mb-3" style="background:#CFCFCF;"> | |||||
<form action="module_make.php" method="post" enctype="multipart/form-data" name="form1"> | <form action="module_make.php" method="post" enctype="multipart/form-data" name="form1"> | ||||
<input type='hidden' name='action' value='edit'> | <input type='hidden' name='action' value='edit'> | ||||
<input type='hidden' name='dev_id' value='<?php echo $dev_id; ?>'> | |||||
<tr> | <tr> | ||||
<td height="20" colspan="2" bgcolor="#EDF9D5" background='images/wbg.gif' style="padding-left:10px;"><b> | <td height="20" colspan="2" bgcolor="#EDF9D5" background='images/wbg.gif' style="padding-left:10px;"><b> | ||||
<a href="module_main.php"><u>模块管理</u></a> | <a href="module_main.php"><u>模块管理</u></a> | ||||
@@ -81,55 +61,47 @@ td{padding-left:8px} | |||||
<input name="modulname" type="text" id="modulname" style="width:180px" value="<?php echo $name; ?>" class='alltxt'/> | <input name="modulname" type="text" id="modulname" style="width:180px" value="<?php echo $name; ?>" class='alltxt'/> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td width="19%" align="center" bgcolor="#FFFFFF"><b>开发者ID:</b></td> | |||||
<td width="81%" bgcolor="#FFFFFF"> | |||||
<input name="dev_id2" type="text" id="dev_id2" style="width:180px" value="<?php echo $dev_id; ?>" class='alltxt' disabled/> <a | |||||
href="<?php echo $cfg_biz_dedebizUrl;?>/developer" target="_blank" class="text-success">如何获取开发者ID?</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>语言编码:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>语言编码:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input name="lang" type="radio" id="lang1" class='np' value='gb2312'<?php if($lang=='gb2312') echo " checked='1' "; ?>/> GBK | |||||
<input name="lang" type="radio" id="lang2" class='np' value='utf-8'<?php if($lang=='utf-8') echo " checked='1' "; ?>/> UTF8 | |||||
<input name="lang" type="radio" id="lang3" class='np' value='big5'<?php if($lang=='big5') echo " checked='1' "; ?>/> BIG5 | |||||
<?php echo $lang;?> | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>封装类型:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>封装类型:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input name="moduletype" type="radio" id="moduletype1" class='np' value='soft'<?php if($moduletype=='soft') echo " checked='1' "; ?>/> 模块 | |||||
<input name="moduletype" type="radio" id="moduletype2" class='np' value='templets'<?php if($moduletype=='templets') echo " checked='1' "; ?>/> 模板 | |||||
<input name="moduletype" type="radio" id="moduletype3" class='np' value='plus'<?php if($moduletype=='plus') echo " checked='1' "; ?>/> 小插件 | |||||
<input name="moduletype" type="radio" id="moduletype3" class='np' value='patch'<?php if($moduletype=='patch') echo " checked='1' "; ?>/> 补丁 | |||||
<label><input name="moduletype" type="radio" id="moduletype1" class='np' value='soft'<?php if($moduletype=='soft') echo " checked='1' "; ?>/> 模块</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype2" class='np' value='templets'<?php if($moduletype=='templets') echo " checked='1' "; ?>/> 模板</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype3" class='np' value='plus'<?php if($moduletype=='plus') echo " checked='1' "; ?>/> 小插件</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype3" class='np' value='patch'<?php if($moduletype=='patch') echo " checked='1' "; ?>/> 补丁</label> | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>联系Email:</b></td> | |||||
<td bgcolor="#FFFFFF"><input name="email" type="text" id="email" style="width:180px" value="<?php echo $email; ?>" class='alltxt'/> </td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>模块识别码:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>模块识别码:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input type='hidden' name='hash' value='<?php echo $hash; ?>' /> | <input type='hidden' name='hash' value='<?php echo $hash; ?>' /> | ||||
<input type='text' name='hashv' value='<?php echo $hash; ?>' style="width:280px" class='alltxt' />(不可改) | |||||
<input type='text' disabled name='hashv' value='<?php echo $hash; ?>' style="width:280px" class='alltxt' />(不可改) | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>开发团队:</b></td> | |||||
<td bgcolor="#FFFFFF"><input name="team" type="text" id="team" style="width:180px" value="<?php echo $team; ?>" class='alltxt' /> </td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>发布时间:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>发布时间:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input name="mtime" type="text" id="mtime" style="width:180px" value="<?php echo $time; ?>" class='alltxt'/> | <input name="mtime" type="text" id="mtime" style="width:180px" value="<?php echo $time; ?>" class='alltxt'/> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>官方网址:</b></td> | |||||
<td bgcolor="#FFFFFF"><input name="url" type="text" id="url" style="width:250px" value="<?php echo $url; ?>" class='alltxt' /> </td> | |||||
</tr> | |||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>是否涉及会员系统:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>是否涉及会员系统:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input name="ismember" type="radio" class='np' id="ismember0" value="0" onclick="ShowHideMb('ismember0','rboxct')" <?php if($ismember=='0') echo " checked='1' ";?> /> | |||||
不涉及 | |||||
<input name="ismember" type="radio" id="ismember1" value="1" onclick="ShowHideMb('ismember0','rboxct')" class='np' <?php if($ismember=='1') echo " checked='1' ";?> /> 涉及 | |||||
<label><input name="ismember" type="radio" class='np' id="ismember0" value="0" onclick="ShowHideMb('ismember0','rboxct')" <?php if($ismember=='0') echo " checked='1' ";?> /> | |||||
不涉及</label> | |||||
<label><input name="ismember" type="radio" id="ismember1" value="1" onclick="ShowHideMb('ismember0','rboxct')" class='np' <?php if($ismember=='1') echo " checked='1' ";?> /> 涉及</label> | |||||
<div id='rboxct' style='display:<?php echo ($ismember=='0' ? 'none' : 'block'); ?>'> | <div id='rboxct' style='display:<?php echo ($ismember=='0' ? 'none' : 'block'); ?>'> | ||||
导航使用名称: | 导航使用名称: | ||||
<input name="indexname" type="text" id="indexname" style="width:180px" value="<?php echo $indexname; ?>" class='alltxt'/> | <input name="indexname" type="text" id="indexname" style="width:180px" value="<?php echo $indexname; ?>" class='alltxt'/> | ||||
@@ -138,7 +110,6 @@ td{padding-left:8px} | |||||
<input name="indexurl" type="text" id="indexurl" style="width:180px" value="<?php echo $indexurl; ?>" class='alltxt' /> | <input name="indexurl" type="text" id="indexurl" style="width:180px" value="<?php echo $indexurl; ?>" class='alltxt' /> | ||||
(用相对于会员中心的网址,如:../ask) | (用相对于会员中心的网址,如:../ask) | ||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -170,9 +141,8 @@ td{padding-left:8px} | |||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>安装程序:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>安装程序:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input type="checkbox" name="autosetup" id="autosetup" value='1' class="np" onclick="ShowHideField('autosetup','autosetupinput','autosetupct')"<?php if(isset($autosetup) && $autosetup==1) echo " checked='1'"; ?> /> | |||||
自动生成(由系统自动处理安装) | |||||
<label><input type="checkbox" name="autosetup" id="autosetup" value='1' class="np" onclick="ShowHideField('autosetup','autosetupinput','autosetupct')"<?php if(isset($autosetup) && $autosetup==1) echo " checked='1'"; ?> /> | |||||
自动生成(由系统自动处理安装)</label> | |||||
<br /> | <br /> | ||||
<div style='display:<?php if(!isset($autosetup) || $autosetup==0) echo "block"; else echo 'none'; ?>' id='autosetupinput'> | <div style='display:<?php if(!isset($autosetup) || $autosetup==0) echo "block"; else echo 'none'; ?>' id='autosetupinput'> | ||||
<input name="setup" type="file" id="setup" style="width:350px" /> | <input name="setup" type="file" id="setup" style="width:350px" /> | ||||
@@ -201,9 +171,8 @@ td{padding-left:8px} | |||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>删除程序:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>删除程序:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input type="checkbox" name="autodel" id="autodel" value='1' class="np" onclick="ShowHideField('autodel','autodelinput','autodelct')" <?php if(isset($autodel) && $autodel==1) echo " checked='1' "; ?> /> | |||||
自动生成(由系统自动处理卸载) | |||||
<label><input type="checkbox" name="autodel" id="autodel" value='1' class="np" onclick="ShowHideField('autodel','autodelinput','autodelct')" <?php if(isset($autodel) && $autodel==1) echo " checked='1' "; ?> /> | |||||
自动生成(由系统自动处理卸载)</label> | |||||
<br /> | <br /> | ||||
<div style='display:<?php if(!isset($autodel) || $autodel==0) echo 'block'; else echo 'none'; ?>' id='autodelinput'> | <div style='display:<?php if(!isset($autodel) || $autodel==0) echo 'block'; else echo 'none'; ?>' id='autodelinput'> | ||||
<input name="uninstall" type="file" id="uninstall" style="width:350px" /> | <input name="uninstall" type="file" id="uninstall" style="width:350px" /> | ||||
@@ -231,8 +200,8 @@ td{padding-left:8px} | |||||
<tr> | <tr> | ||||
<td align="center" bgcolor="#FFFFFF"><b>模块文件选项:</b></td> | <td align="center" bgcolor="#FFFFFF"><b>模块文件选项:</b></td> | ||||
<td bgcolor="#FFFFFF"> | <td bgcolor="#FFFFFF"> | ||||
<input name="rebuild" type="radio" id="rebuild1" class='np' value='yes' checked='1'/> 重新编译所有文件 | |||||
<input name="rebuild" type="radio" id="rebuild2" class='np' value='no'/> 不对[<b>文件列表</b>]内文件重编译 | |||||
<label><input name="rebuild" type="radio" id="rebuild1" class='np' value='yes' checked='1'/> 重新编译所有文件</label> | |||||
<label><input name="rebuild" type="radio" id="rebuild2" class='np' value='no'/> 不对[<b>文件列表</b>]内文件重编译</label> | |||||
</td> | </td> | ||||
</tr> | </tr> | ||||
@@ -246,12 +215,26 @@ td{padding-left:8px} | |||||
</p> | </p> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>开发者私钥:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<p> | |||||
开发者认证后获取的私钥 | |||||
<br /> | |||||
<textarea name="priv" rows="8" id="priv" style="width:80%"></textarea> | |||||
</p> | |||||
</td> | |||||
</tr> | |||||
<tr bgcolor="#F9FDF0"> | <tr bgcolor="#F9FDF0"> | ||||
<td height="28" colspan="2"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> | <td height="28" colspan="2"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> | ||||
<tr> | <tr> | ||||
<td width="26%"> </td> | <td width="26%"> </td> | ||||
<td width="15%"><input name="imageField" type="submit" class="np coolbg" value="提交" /></td> | |||||
<td width="59%"><input type="button" name="button" id="button" value="返回" onClick="location='plus_main.php';" class="np coolbg" /></td> | |||||
<td width="15%"> | |||||
<button name="imageField" type="submit" class="btn btn-secondary">提交</button> | |||||
</td> | |||||
<td width="59%"><button name="button" id="button" onClick="location='plus_main.php';" class="btn btn-secondary">返回</button></td> | |||||
</tr> | </tr> | ||||
</table></td> | </table></td> | ||||
</tr> | </tr> | ||||
@@ -3,6 +3,8 @@ | |||||
<head> | <head> | ||||
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>"> | <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>"> | ||||
<title>模块打包</title> | <title>模块打包</title> | ||||
<link rel="stylesheet" href="../static/css/bootstrap.min.css"> | |||||
<link href="../static/font-awesome/css/font-awesome.min.css" rel="stylesheet"> | |||||
<link href="css/base.css" rel="stylesheet" type="text/css" /> | <link href="css/base.css" rel="stylesheet" type="text/css" /> | ||||
<script src="../static/js/dedeajax2.js" language="javascript" type="text/javascript"></script> | <script src="../static/js/dedeajax2.js" language="javascript" type="text/javascript"></script> | ||||
<script language="javascript" type="text/javascript"> | <script language="javascript" type="text/javascript"> | ||||
@@ -17,11 +19,11 @@ function getmodule(action,hash) | |||||
</script> | </script> | ||||
</head> | </head> | ||||
<body background='images/allbg.gif' leftmargin='8' topmargin='8'> | <body background='images/allbg.gif' leftmargin='8' topmargin='8'> | ||||
<div class="bodytitle"> | |||||
<div class="bodytitle mt-3"> | |||||
<div class="bodytitleleft"></div> | <div class="bodytitleleft"></div> | ||||
<div class="bodytitletxt" style="padding-left:10px;">模块管理</div> | <div class="bodytitletxt" style="padding-left:10px;">模块管理</div> | ||||
</div> | </div> | ||||
<table width="98%" border="0" cellpadding="1" cellspacing="1" align="center" class="tbtitle" style="background:#CFCFCF;"> | |||||
<table width="98%" border="0" cellpadding="1" cellspacing="1" align="center" class="table maintable" style="background:#CFCFCF;"> | |||||
<form name="form1" action="plus_add.php" method="post"> | <form name="form1" action="plus_add.php" method="post"> | ||||
<input type='hidden' name='dopost' value='save'> | <input type='hidden' name='dopost' value='save'> | ||||
<tr> | <tr> | ||||
@@ -39,7 +41,6 @@ function getmodule(action,hash) | |||||
<tr bgcolor="#FBFCE2" > | <tr bgcolor="#FBFCE2" > | ||||
<td align="center" width="16%">模块名称</td> | <td align="center" width="16%">模块名称</td> | ||||
<td align="center" width="12%">发布时间</td> | <td align="center" width="12%">发布时间</td> | ||||
<td align="center" width="14%">开发团队</td> | |||||
<td align="center" width="10%">编码</td> | <td align="center" width="10%">编码</td> | ||||
<td align="center" width="10%">类型</td> | <td align="center" width="10%">类型</td> | ||||
<td align="center" width="12%">模块状态</td> | <td align="center" width="12%">模块状态</td> | ||||
@@ -53,7 +54,6 @@ foreach($modules as $k=>$v) | |||||
<tr bgcolor="#FFFFFF" height="26" align="center" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';"> | <tr bgcolor="#FFFFFF" height="26" align="center" onMouseMove="javascript:this.bgColor='#FCFDEE';" onMouseOut="javascript:this.bgColor='#FFFFFF';"> | ||||
<td><?php echo $v['name']; ?></td> | <td><?php echo $v['name']; ?></td> | ||||
<td><?php echo $v['time']; ?></td> | <td><?php echo $v['time']; ?></td> | ||||
<td><?php echo $v['team']; ?></td> | |||||
<td> | <td> | ||||
<?php | <?php | ||||
if($cfg_soft_lang != $v['lang']) echo "<font color='red'>".$v['lang']."</font>"; | if($cfg_soft_lang != $v['lang']) echo "<font color='red'>".$v['lang']."</font>"; | ||||
@@ -80,13 +80,11 @@ foreach($modules as $k=>$v) | |||||
<td> | <td> | ||||
<div id = 'manager_<?php echo $v['hash']; ?>' <?php if(!file_exists(DEDEDATA."/module/{$v['hash']}.xml")) echo 'style="display:none;"'?>> | <div id = 'manager_<?php echo $v['hash']; ?>' <?php if(!file_exists(DEDEDATA."/module/{$v['hash']}.xml")) echo 'style="display:none;"'?>> | ||||
<a href='module_main.php?action=showreadme&hash=<?php echo $v['hash']; ?>'>使用说明</a> | |||||
| | |||||
<a href='module_main.php?action=view&hash=<?php echo $v['hash']; ?>'>详细</a> | |||||
| | |||||
<a href='module_main.php?action=edit&hash=<?php echo $v['hash']; ?>'>修改</a> | |||||
| | |||||
<a href='module_main.php?action=del&hash=<?php echo $v['hash']; ?>'>删除</a> | |||||
<a class="btn btn-secondary btn-sm" href='module_main.php?action=showreadme&hash=<?php echo $v['hash']; ?>'>开发者</a> | |||||
<a class="btn btn-secondary btn-sm" href='module_main.php?action=showreadme&hash=<?php echo $v['hash']; ?>'>说明</a> | |||||
<a class="btn btn-secondary btn-sm" href='module_main.php?action=view&hash=<?php echo $v['hash']; ?>'>详细</a> | |||||
<a class="btn btn-secondary btn-sm" href='module_main.php?action=edit&hash=<?php echo $v['hash']; ?>'>修改</a> | |||||
<a class="btn btn-secondary btn-sm" href='module_main.php?action=del&hash=<?php echo $v['hash']; ?>'>删除</a> | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
@@ -1,262 +1,253 @@ | |||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||||
<!DOCTYPE html | |||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||||
<html xmlns="http://www.w3.org/1999/xhtml"> | <html xmlns="http://www.w3.org/1999/xhtml"> | ||||
<head> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>"> | |||||
<link rel="stylesheet" href="../static/css/bootstrap.min.css"> | |||||
<link href="../static/font-awesome/css/font-awesome.min.css" rel="stylesheet"> | |||||
<script language="javascript" src="../static/js/dedeajax2.js"></script> | |||||
<script language="javascript"> | |||||
function LoadHashCode() | |||||
{ | |||||
var tgobj = document.getElementById('modulcode'); | |||||
var email = document.form1.email.value; | |||||
var modulname = document.form1.modulname.value; | |||||
var myajax = new DedeAjax(tgobj,false,true,'-','-','...'); | |||||
<?php | |||||
if(strtolower(substr($cfg_soft_lang, 0, 3)) == 'utf') { | |||||
?> | |||||
myajax.AddKeyUtf8('action','gethash'); | |||||
myajax.AddKeyUtf8('email',email); | |||||
myajax.AddKeyUtf8('modulname',modulname); | |||||
myajax.SendPost2('module_make.php'); | |||||
<?php | |||||
} | |||||
elseif (strtolower(substr($cfg_soft_lang, 0, 2)) == 'gb') { | |||||
echo 'myajax.SendGet2("module_make.php?action=gethash&email="+email+"&modulname="+modulname);'; | |||||
} | |||||
?> | |||||
//myajax.SendGet2('module_make.php?action=gethash&email='+email+'&modulname='+modulname); | |||||
DedeXHTTP = null; | |||||
} | |||||
function ShowHideField(cbox,vid,nid) | |||||
{ | |||||
var cboxobj = document.getElementById(cbox); | |||||
if(cboxobj.checked) | |||||
{ | |||||
document.getElementById(nid).style.display = 'block'; | |||||
document.getElementById(vid).style.display = 'none'; | |||||
} | |||||
else | |||||
{ | |||||
document.getElementById(nid).style.display = 'none'; | |||||
document.getElementById(vid).style.display = 'block'; | |||||
} | |||||
} | |||||
function ShowHideMb(rbox1,nid) | |||||
{ | |||||
var rboxobj = document.getElementById(rbox1); | |||||
if(rboxobj.checked) | |||||
{ | |||||
document.getElementById(nid).style.display = 'none'; | |||||
} | |||||
else | |||||
{ | |||||
document.getElementById(nid).style.display = 'block'; | |||||
} | |||||
} | |||||
</script> | |||||
<title>模块打包</title> | |||||
<link href="css/base.css" rel="stylesheet" type="text/css" /> | |||||
<style> | |||||
td{padding-left:8px} | |||||
</style> | |||||
<head> | |||||
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>"> | |||||
<link rel="stylesheet" href="../static/css/bootstrap.min.css"> | |||||
<link href="../static/font-awesome/css/font-awesome.min.css" rel="stylesheet"> | |||||
<script language="javascript" src="../static/js/dedeajax2.js"></script> | |||||
<script language="javascript"> | |||||
function ShowHideField(cbox, vid, nid) { | |||||
var cboxobj = document.getElementById(cbox); | |||||
if (cboxobj.checked) { | |||||
document.getElementById(nid).style.display = 'block'; | |||||
document.getElementById(vid).style.display = 'none'; | |||||
} | |||||
else { | |||||
document.getElementById(nid).style.display = 'none'; | |||||
document.getElementById(vid).style.display = 'block'; | |||||
} | |||||
} | |||||
function ShowHideMb(rbox1, nid) { | |||||
var rboxobj = document.getElementById(rbox1); | |||||
if (rboxobj.checked) { | |||||
document.getElementById(nid).style.display = 'none'; | |||||
} | |||||
else { | |||||
document.getElementById(nid).style.display = 'block'; | |||||
} | |||||
} | |||||
</script> | |||||
<title>模块打包</title> | |||||
<link href="css/base.css" rel="stylesheet" type="text/css" /> | |||||
<style> | |||||
td { | |||||
padding-left: 8px | |||||
} | |||||
</style> | |||||
</head> | </head> | ||||
<body background='images/allbg.gif' leftmargin='8' topmargin='8'> | <body background='images/allbg.gif' leftmargin='8' topmargin='8'> | ||||
<div class="bodytitle"> | |||||
<div class="bodytitleleft"></div> | |||||
<div class="bodytitletxt" style="padding-left:10px;"><b>模块管理</b></div> | |||||
</div> | |||||
<table width="98%" border="0" cellpadding="1" cellspacing="1" align="center" class="table maintable" style="background:#CFCFCF;"> | |||||
<form action="module_make.php" method="post" enctype="multipart/form-data" name="form1"> | |||||
<input type='hidden' name='action' value='make'> | |||||
<tr> | |||||
<td height="20" colspan="2" bgcolor="#EDF9D5" background="images/tbg.gif" style="padding-left:10px;"><a href="module_main.php"><u><b>模块管理</b></u></a> | |||||
> <b> 模块打包:</b> </td> | |||||
</tr> | |||||
<tr> | |||||
<td width="19%" align="center" bgcolor="#FFFFFF"><b>模块名称:</b></td> | |||||
<td width="81%" bgcolor="#FFFFFF"> | |||||
<input name="modulname" type="text" id="modulname" style="width:180px" class='alltxt'/> </td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>语言编码:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<b><?php echo $cfg_soft_lang; ?></b> | |||||
(不同编码模块可以使用,但不能在此打包) | |||||
<input name="lang" type="hidden" value='<?php echo $cfg_soft_lang; ?>' /> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>封装类型:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input name="moduletype" type="radio" id="moduletype1" class='np' value='soft' checked='1' /> 模块</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype2" class='np' value='templets' /> 模板</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype3" class='np' value='plus' /> 小插件</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype3" class='np' value='patch' /> 补丁</label> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>开发者ID:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<input name="dev_id" type="text" id="dev_id" style="width:180px" class='alltxt'/> <a href="<?php echo $cfg_biz_dedebizUrl;?>/developer" target="_blank" class="text-success">如何获取开发者ID?</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>发布时间:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<input name="mtime" type="text" id="mtime" style="width:180px" value="<?php echo GetDateMk(time()); ?>" class='alltxt'/> </td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>是否涉及会员系统:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input name="ismember" type="radio" class='np' id="ismember0" value="0" onclick="ShowHideMb('ismember0','rboxct')" checked="checked" /> | |||||
不涉及</label> | |||||
<label><input name="ismember" type="radio" id="ismember1" value="1" onclick="ShowHideMb('ismember0','rboxct')" class='np' /> 涉及</label> | |||||
<div id='rboxct' style='display:none'> | |||||
导航使用名称: | |||||
<input name="indexname" type="text" id="indexname" style="width:180px" value=""/> | |||||
<br /> | |||||
导航使用网址: | |||||
<input name="indexurl" type="text" id="indexurl" style="width:180px" value="" /> | |||||
(用相对于会员中心的网址,如:../ask) | |||||
</div> | |||||
<div class="bodytitle mt-3"> | |||||
<div class="bodytitleleft"></div> | |||||
<div class="bodytitletxt" style="padding-left:10px;"><b>模块管理</b></div> | |||||
</div> | |||||
<table width="98%" border="0" cellpadding="1" cellspacing="1" align="center" class="table maintable" | |||||
style="background:#CFCFCF;"> | |||||
<form action="module_make.php" method="post" enctype="multipart/form-data" name="form1"> | |||||
<input type='hidden' name='action' value='make'> | |||||
<tr> | |||||
<td height="20" colspan="2" bgcolor="#EDF9D5" background="images/tbg.gif" style="padding-left:10px;"><a | |||||
href="module_main.php"><u><b>模块管理</b></u></a> | |||||
> <b> 模块打包:</b> </td> | |||||
</tr> | |||||
<tr> | |||||
<td width="19%" align="center" bgcolor="#FFFFFF"><b>模块名称:</b></td> | |||||
<td width="81%" bgcolor="#FFFFFF"> | |||||
<input name="modulname" type="text" id="modulname" style="width:180px" class='alltxt' /> </td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>语言编码:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<b><?php echo $cfg_soft_lang; ?></b> | |||||
(不同编码模块可以使用,但不能在此打包) | |||||
<input name="lang" type="hidden" value='<?php echo $cfg_soft_lang; ?>' /> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>封装类型:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input name="moduletype" type="radio" id="moduletype1" class='np' value='soft' checked='1' /> | |||||
模块</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype2" class='np' value='templets' /> 模板</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype3" class='np' value='plus' /> 小插件</label> | |||||
<label><input name="moduletype" type="radio" id="moduletype3" class='np' value='patch' /> 补丁</label> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>开发者ID:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<input name="dev_id" type="text" id="dev_id" style="width:180px" class='alltxt' /> <a | |||||
href="<?php echo $cfg_biz_dedebizUrl;?>/developer" target="_blank" class="text-success">如何获取开发者ID?</a> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>发布时间:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<input name="mtime" type="text" id="mtime" style="width:180px" value="<?php echo GetDateMk(time()); ?>" | |||||
class='alltxt' /> </td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>是否涉及会员系统:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input name="ismember" type="radio" class='np' id="ismember0" value="0" | |||||
onclick="ShowHideMb('ismember0','rboxct')" checked="checked" /> | |||||
不涉及</label> | |||||
<label><input name="ismember" type="radio" id="ismember1" value="1" onclick="ShowHideMb('ismember0','rboxct')" | |||||
class='np' /> 涉及</label> | |||||
<div id='rboxct' style='display:none'> | |||||
导航使用名称: | |||||
<input name="indexname" type="text" id="indexname" style="width:180px" value="" /> | |||||
<br /> | |||||
导航使用网址: | |||||
<input name="indexurl" type="text" id="indexurl" style="width:180px" value="" /> | |||||
(用相对于会员中心的网址,如:../ask) | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>后台管理菜单:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<textarea name="menustring" rows="8" id="menustring" style="width:80%"></textarea> | |||||
<br /> | |||||
(普通插件或模板、补丁类不要填写,模块菜单格式请参考inc/inc_menu_module.php) | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>使用说明文件:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input type="checkbox" name="autoreadme" value='1' id="autoreadme" class="np" onclick="ShowHideField('autoreadme','autoreadmeinput','autoreadmect')" /> | |||||
直接填写</label> | |||||
<br /> | |||||
<div style='display:block' id='autoreadmeinput'> | |||||
<input name="readme" type="file" id="readme" style="width:350px" /> | |||||
</div> | |||||
<div style='margin:5px 0px 5px 5px;display:none' id='autoreadmect'> | |||||
<table width="80%" border="0" cellpadding="5" cellspacing="1" bgcolor="#83B771"> | |||||
<tr> | |||||
<td width="75%" bgcolor="#F3FDE1"> | |||||
<b>填写使用协议或说明:</b> | |||||
<br /> 如果需要带HTML格式,请编译后点击修改时使用HTML | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#FFFFFF" align="center"> | |||||
<textarea name="readmetxt" rows="10" id="readmetxt" style="width:99%"></textarea> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>安装程序:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input type="checkbox" name="autosetup" value='1' id="autosetup" class="np" onclick="ShowHideField('autosetup','autosetupinput','autosetupct')" /> | |||||
自动生成(由系统自动处理安装)</label> | |||||
<br /> | |||||
<div style='display:block' id='autosetupinput'> | |||||
<input name="setup" type="file" id="setup" style="width:350px" /> | |||||
</div> | |||||
<div style='margin:5px 0px 5px 5px;display:none' id='autosetupct'> | |||||
<table width="80%" border="0" cellpadding="5" cellspacing="1" bgcolor="#83B771"> | |||||
<tr> | |||||
<td width="75%" bgcolor="#F3FDE1"> | |||||
<b>请使用MySQL4.0版本格式的SQL语句:</b> | |||||
<br /> | |||||
MySQL4.1/5.x版本请把创建表语句 ENGINE=MyISAM DEFAULT CHARSET=* ,改为 TYPE=MyISAM ,SQL语句允许换行,但必须用 ";换行" 表示一条SQL语句结束 | |||||
<br /> | |||||
如果SQL中包含有模块网址的,用 _ROOTURL_ 表示,如:_ROOTURL_/ask/index.php | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#FFFFFF" align="center"> | |||||
<textarea name="setupsql40" rows="10" id="setupsql40" style="width:99%"></textarea> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>后台管理菜单:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<textarea name="menustring" rows="8" id="menustring" style="width:80%"></textarea> | |||||
<br /> | |||||
(普通插件或模板、补丁类不要填写,模块菜单格式请参考inc/inc_menu_module.php) | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>使用说明文件:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input type="checkbox" name="autoreadme" value='1' id="autoreadme" class="np" | |||||
onclick="ShowHideField('autoreadme','autoreadmeinput','autoreadmect')" /> | |||||
直接填写</label> | |||||
<br /> | |||||
<div style='display:block' id='autoreadmeinput'> | |||||
<input name="readme" type="file" id="readme" style="width:350px" /> | |||||
</div> | |||||
<div style='margin:5px 0px 5px 5px;display:none' id='autoreadmect'> | |||||
<table width="80%" border="0" cellpadding="5" cellspacing="1" bgcolor="#83B771"> | |||||
<tr> | |||||
<td width="75%" bgcolor="#F3FDE1"> | |||||
<b>填写使用协议或说明:</b> | |||||
<br /> 如果需要带HTML格式,请编译后点击修改时使用HTML | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#FFFFFF" align="center"> | |||||
<textarea name="readmetxt" rows="10" id="readmetxt" style="width:99%"></textarea> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>安装程序:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input type="checkbox" name="autosetup" value='1' id="autosetup" class="np" | |||||
onclick="ShowHideField('autosetup','autosetupinput','autosetupct')" /> | |||||
自动生成(由系统自动处理安装)</label> | |||||
<br /> | |||||
<div style='display:block' id='autosetupinput'> | |||||
<input name="setup" type="file" id="setup" style="width:350px" /> | |||||
</div> | |||||
<div style='margin:5px 0px 5px 5px;display:none' id='autosetupct'> | |||||
<table width="80%" border="0" cellpadding="5" cellspacing="1" bgcolor="#83B771"> | |||||
<tr> | |||||
<td width="75%" bgcolor="#F3FDE1"> | |||||
<b>请使用MySQL4.0版本格式的SQL语句:</b> | |||||
<br /> | |||||
MySQL4.1/5.x版本请把创建表语句 ENGINE=MyISAM DEFAULT CHARSET=* ,改为 TYPE=MyISAM ,SQL语句允许换行,但必须用 ";换行" | |||||
表示一条SQL语句结束 | |||||
<br /> | |||||
如果SQL中包含有模块网址的,用 _ROOTURL_ 表示,如:_ROOTURL_/ask/index.php | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#FFFFFF" align="center"> | |||||
<textarea name="setupsql40" rows="10" id="setupsql40" style="width:99%"></textarea> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>删除程序:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input type="checkbox" name="autodel" value='1' id="autodel" class="np" onclick="ShowHideField('autodel','autodelinput','autodelct')" /> | |||||
自动生成(由系统自动处理卸载)</label> | |||||
<br /> | |||||
<div style='display:block' id='autodelinput'> | |||||
<input name="uninstall" type="file" id="uninstall" style="width:350px" /> | |||||
</div> | |||||
<div style='margin:5px 0px 5px 5px;display:none' id='autodelct'> | |||||
<table width="80%" border="0" cellpadding="5" cellspacing="1" bgcolor="#83B771"> | |||||
<tr> | |||||
<td width="75%" bgcolor="#F3FDE1"> | |||||
<b>卸载时执行的SQL语句:</b> | |||||
<br /> | |||||
(SQL允许换行,但必须用 ";换行" 表示一条SQL语句结束) | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#FFFFFF" align="center"> | |||||
<textarea name="delsql" rows="10" id="delsql" style="width:99%"></textarea> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>删除程序:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<label><input type="checkbox" name="autodel" value='1' id="autodel" class="np" | |||||
onclick="ShowHideField('autodel','autodelinput','autodelct')" /> | |||||
自动生成(由系统自动处理卸载)</label> | |||||
<br /> | |||||
<div style='display:block' id='autodelinput'> | |||||
<input name="uninstall" type="file" id="uninstall" style="width:350px" /> | |||||
</div> | |||||
<div style='margin:5px 0px 5px 5px;display:none' id='autodelct'> | |||||
<table width="80%" border="0" cellpadding="5" cellspacing="1" bgcolor="#83B771"> | |||||
<tr> | |||||
<td width="75%" bgcolor="#F3FDE1"> | |||||
<b>卸载时执行的SQL语句:</b> | |||||
<br /> | |||||
(SQL允许换行,但必须用 ";换行" 表示一条SQL语句结束) | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td bgcolor="#FFFFFF" align="center"> | |||||
<textarea name="delsql" rows="10" id="delsql" style="width:99%"></textarea> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>文件列表:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<p> | |||||
每行指定一个文件或目录,路径为相对于本目录,本目录的文件则直接用文件名即可,对于整个打包的目录,不需要指定子目录里的文件。<br /> | |||||
如:如果已经指定了: ../book 则不需要再指定目录里的 ../book/index.php 等文件或目录,系统会自动索引整个目录,<br /> | |||||
对于不需要索引整个目录的,请不要指定这个目录,否则可能会把不必要的文件也放进模块中。 <br /> | |||||
<textarea name="filelist" rows="8" id="filelist" style="width:80%"></textarea> | |||||
</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>文件列表:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<p> | |||||
每行指定一个文件或目录,路径为相对于本目录,本目录的文件则直接用文件名即可,对于整个打包的目录,不需要指定子目录里的文件。<br /> | |||||
如:如果已经指定了: ../book 则不需要再指定目录里的 ../book/index.php 等文件或目录,系统会自动索引整个目录,<br /> | |||||
对于不需要索引整个目录的,请不要指定这个目录,否则可能会把不必要的文件也放进模块中。 <br /> | |||||
<textarea name="filelist" rows="8" id="filelist" style="width:80%"></textarea> | |||||
</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>开发者私钥:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<p> | |||||
开发者认证后获取的私钥 | |||||
<br /> | |||||
<textarea name="filelist" rows="8" id="filelist" style="width:80%"></textarea> | |||||
</p> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td align="center" bgcolor="#FFFFFF"><b>开发者私钥:</b></td> | |||||
<td bgcolor="#FFFFFF"> | |||||
<p> | |||||
开发者认证后获取的私钥 | |||||
<br /> | |||||
<textarea name="priv" rows="8" id="priv" style="width:80%"></textarea> | |||||
</p> | |||||
</td> | |||||
</tr> | |||||
<tr bgcolor="#F9FDF0"> | |||||
<td height="28" colspan="2" bgcolor="#F9FCEF"> | |||||
<table width="100%" border="0" cellspacing="0" cellpadding="0"> | |||||
<tr> | |||||
<td width="26%"> </td> | |||||
<td width="15%"> | |||||
<button name="imageField" type="submit" class="btn btn-secondary">提交</button> | |||||
</td> | |||||
<td width="59%"> | |||||
<button type="button" name="button" id="button" onClick="location='plus_main.php';" class="btn btn-secondary">返回</button> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</form> | |||||
</table> | |||||
<tr bgcolor="#F9FDF0"> | |||||
<td height="28" colspan="2" bgcolor="#F9FCEF"> | |||||
<div class="alert alert-info" role="alert"> | |||||
制作模块即表示你同意<a href="<?php echo $cfg_biz_dedebizUrl;?>/license_developer" target="_blank">《DedeBIZ开发者协议》</a> | |||||
</div> | |||||
<table width="100%" border="0" cellspacing="0" cellpadding="0"> | |||||
<tr> | |||||
<td width="26%"> </td> | |||||
<td width="15%"> | |||||
<button name="imageField" type="submit" class="btn btn-secondary">提交</button> | |||||
</td> | |||||
<td width="59%"> | |||||
<button type="button" name="button" id="button" onClick="location='module_main.php';" | |||||
class="btn btn-secondary">返回</button> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</td> | |||||
</tr> | |||||
</form> | |||||
</table> | |||||
</body> | </body> | ||||
</html> | </html> |
@@ -44,7 +44,7 @@ NQabUzX9JoYtXqPcpZRT7ymHrppU0KFdUSEJiW0utTWJo0HrDOBIT5qWlM0MP9p/ | |||||
PwIDAQAB | PwIDAQAB | ||||
-----END PUBLIC KEY----- | -----END PUBLIC KEY----- | ||||
EOT); // DedeBIZ系统公钥 | EOT); // DedeBIZ系统公钥 | ||||
define('DEDECDNURL', 'https://cdn.dedebiz.com'); // 默认静态资源地址 | |||||
if (version_compare(PHP_VERSION, '5.3.0', '<') && function_exists("get_magic_quotes_gpc")) | if (version_compare(PHP_VERSION, '5.3.0', '<') && function_exists("get_magic_quotes_gpc")) | ||||
{ | { | ||||
@@ -12,6 +12,16 @@ require_once(DEDEINC . '/charset.func.php'); | |||||
require_once(DEDEINC . '/dedeatt.class.php'); | require_once(DEDEINC . '/dedeatt.class.php'); | ||||
require_once(DEDEINC . '/dedehttpdown.class.php'); | require_once(DEDEINC . '/dedehttpdown.class.php'); | ||||
function base64url_encode($data) | |||||
{ | |||||
return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); | |||||
} | |||||
function base64url_decode($data) | |||||
{ | |||||
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); | |||||
} | |||||
class DedeModule | class DedeModule | ||||
{ | { | ||||
var $modulesPath; | var $modulesPath; | ||||
@@ -160,7 +170,7 @@ class DedeModule | |||||
} else $filename = $this->modulesPath . '/' . $this->GetHashFile($hash); | } else $filename = $this->modulesPath . '/' . $this->GetHashFile($hash); | ||||
$start = 0; | $start = 0; | ||||
$minfos = array(); | $minfos = array(); | ||||
$minfos['name'] = $minfos['team'] = $minfos['time'] = $minfos['email'] = $minfos['url'] = ''; | |||||
$minfos['name'] = $minfos['info'] = $minfos['time'] = ''; | |||||
$minfos['hash'] = $minfos['indexname'] = $minfos['indexurl'] = ''; | $minfos['hash'] = $minfos['indexname'] = $minfos['indexurl'] = ''; | ||||
$minfos['ismember'] = $minfos['autosetup'] = $minfos['autodel'] = 0; | $minfos['ismember'] = $minfos['autosetup'] = $minfos['autodel'] = 0; | ||||
//$minfos['filename'] = $filename; | //$minfos['filename'] = $filename; | ||||
@@ -173,19 +183,23 @@ class DedeModule | |||||
while (!feof($fp)) { | while (!feof($fp)) { | ||||
$n++; | $n++; | ||||
if ($n > 30) break; | if ($n > 30) break; | ||||
$line = fgets($fp, 256); | |||||
$line = fgets($fp, 1024); | |||||
if ($start == 0) { | if ($start == 0) { | ||||
if (preg_match("/<baseinfo/is", $line)) $start = 1; | if (preg_match("/<baseinfo/is", $line)) $start = 1; | ||||
} else { | } else { | ||||
if (preg_match("/<\/baseinfo/is", $line)) break; | if (preg_match("/<\/baseinfo/is", $line)) break; | ||||
$line = trim($line); | $line = trim($line); | ||||
list($skey, $svalue) = explode('=', $line); | list($skey, $svalue) = explode('=', $line); | ||||
$skey = trim($skey); | $skey = trim($skey); | ||||
$minfos[$skey] = $svalue; | $minfos[$skey] = $svalue; | ||||
} | } | ||||
} | } | ||||
fclose($fp); | fclose($fp); | ||||
if (empty($minfos['lang'])) { | |||||
$minfos['lang'] = "utf-8"; | |||||
} | |||||
if (isset($minfos['lang'])) $this->moduleLang = trim($minfos['lang']); | if (isset($minfos['lang'])) $this->moduleLang = trim($minfos['lang']); | ||||
else $this->moduleLang = 'gbk'; | else $this->moduleLang = 'gbk'; | ||||