| @@ -82,6 +82,11 @@ box-shadow: 0 0 3px #A5C760; | |||
| outline: none; | |||
| } | |||
| input:disabled, input[readonly] { | |||
| background-color: #e9ecef; | |||
| opacity: 1; | |||
| } | |||
| label { | |||
| display: inline-block; | |||
| margin: .5rem 0; | |||
| @@ -20,21 +20,25 @@ if($action=='') | |||
| require_once(dirname(__FILE__)."/templets/module_make.htm"); | |||
| exit(); | |||
| } | |||
| /*--------- | |||
| //获得Hash码 | |||
| function GetHash() | |||
| ----------*/ | |||
| else if($action=='gethash') | |||
| { | |||
| echo md5($modulname.$email); | |||
| exit(); | |||
| } | |||
| /*------------- | |||
| //生成项目 | |||
| function Makemodule() | |||
| --------------*/ | |||
| 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 = trim(preg_replace("#[\n]{1,}#", "\n", $filelist)); | |||
| if($filelist=='') | |||
| @@ -42,6 +46,37 @@ else if($action=='make') | |||
| ShowMsg("对不起,你没有指定模块的文件列表,因此不能创建项目!","-1"); | |||
| 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); | |||
| @@ -49,7 +84,7 @@ else if($action=='make') | |||
| if(!isset($autosetup)) $autosetup = 0; | |||
| if(!isset($autodel)) $autodel = 0; | |||
| $mdir = DEDEDATA.'/module'; | |||
| $hashcode = md5($modulname.$email); | |||
| $hashcode = md5($modulname.$devInfo['dev_id']); | |||
| $moduleFilename = $mdir.'/'.$hashcode.'.xml'; | |||
| $menustring = base64_encode($menustring); | |||
| $indexurl = str_replace('=', '**', $indexurl); | |||
| @@ -101,17 +136,16 @@ else if($action=='make') | |||
| $modulinfo = "<module> | |||
| <baseinfo> | |||
| name={$modulname} | |||
| team={$team} | |||
| dev_id={$devInfo['dev_id']} | |||
| info={$moduleInfo} | |||
| time={$mtime} | |||
| email={$email} | |||
| url={$url} | |||
| hash={$hashcode} | |||
| indexname={$indexname} | |||
| indexurl={$indexurl} | |||
| ismember={$ismember} | |||
| autosetup={$autosetup} | |||
| autodel={$autodel} | |||
| lang={$lang} | |||
| lang=utf-8 | |||
| moduletype={$moduletype} | |||
| </baseinfo> | |||
| <systemfile> | |||
| @@ -173,6 +207,48 @@ else if($action=='edit') | |||
| ShowMsg("对不起,你没有指定模块的文件列表,因此不能创建项目!","-1"); | |||
| 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); | |||
| @@ -182,8 +258,6 @@ else if($action=='edit') | |||
| $hashcode = $hash; | |||
| $moduleFilename = $mdir.'/'.$hashcode.'.xml'; | |||
| $modulname = str_replace('=', '', $modulname); | |||
| $email = str_replace('=', '', $email); | |||
| $team = str_replace('=', '', $team); | |||
| $indexurl = str_replace('=', '**', $indexurl); | |||
| $menustring = base64_encode($menustring); | |||
| $dm = new DedeModule($mdir); | |||
| @@ -219,17 +293,16 @@ else if($action=='edit') | |||
| $modulinfo = "<module> | |||
| <baseinfo> | |||
| name={$modulname} | |||
| team={$team} | |||
| dev_id={$devInfo['dev_id']} | |||
| info={$moduleInfo} | |||
| time={$mtime} | |||
| email={$email} | |||
| url={$url} | |||
| hash={$hashcode} | |||
| indexname={$indexname} | |||
| indexurl={$indexurl} | |||
| ismember={$ismember} | |||
| autosetup={$autosetup} | |||
| autodel={$autodel} | |||
| lang={$lang} | |||
| lang=utf-8 | |||
| moduletype={$moduletype} | |||
| </baseinfo> | |||
| <systemfile> | |||
| @@ -97,15 +97,15 @@ else | |||
| <tr> | |||
| <td height='30'>文件格式:</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> | |||
| <td height='30'>已有模块:</td> | |||
| <td> | |||
| <input name='delhas' type='checkbox' id='delhas' value='1' /> 强制删除同名模块(这可能导致已经安装的模块无法卸载) | |||
| <label><input name='delhas' type='checkbox' id='delhas' value='1' /> 强制删除同名模块(这可能导致已经安装的模块无法卸载)</label> | |||
| </td> | |||
| </tr> | |||
| <tr> | |||
| @@ -2,31 +2,10 @@ | |||
| <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); | |||
| @@ -61,13 +40,14 @@ td{padding-left:8px} | |||
| </style> | |||
| </head> | |||
| <body background='images/allbg.gif' leftmargin='8' topmargin='8'> | |||
| <div class="bodytitle"> | |||
| <div class="bodytitle mt-3"> | |||
| <div class="bodytitleleft"></div> | |||
| <div class="bodytitletxt" style="padding-left:10px;">模块管理</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"> | |||
| <input type='hidden' name='action' value='edit'> | |||
| <input type='hidden' name='dev_id' value='<?php echo $dev_id; ?>'> | |||
| <tr> | |||
| <td height="20" colspan="2" bgcolor="#EDF9D5" background='images/wbg.gif' style="padding-left:10px;"><b> | |||
| <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'/> | |||
| </td> | |||
| </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> | |||
| <td align="center" bgcolor="#FFFFFF"><b>语言编码:</b></td> | |||
| <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> | |||
| </tr> | |||
| <tr> | |||
| <td align="center" bgcolor="#FFFFFF"><b>封装类型:</b></td> | |||
| <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> | |||
| </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> | |||
| <td align="center" bgcolor="#FFFFFF"><b>模块识别码:</b></td> | |||
| <td bgcolor="#FFFFFF"> | |||
| <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> | |||
| </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> | |||
| <td align="center" bgcolor="#FFFFFF"><b>发布时间:</b></td> | |||
| <td bgcolor="#FFFFFF"> | |||
| <input name="mtime" type="text" id="mtime" style="width:180px" value="<?php echo $time; ?>" class='alltxt'/> | |||
| </td> | |||
| </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> | |||
| <td align="center" bgcolor="#FFFFFF"><b>是否涉及会员系统:</b></td> | |||
| <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'); ?>'> | |||
| 导航使用名称: | |||
| <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' /> | |||
| (用相对于会员中心的网址,如:../ask) | |||
| </div> | |||
| </td> | |||
| </tr> | |||
| <tr> | |||
| @@ -170,9 +141,8 @@ td{padding-left:8px} | |||
| <tr> | |||
| <td align="center" bgcolor="#FFFFFF"><b>安装程序:</b></td> | |||
| <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 /> | |||
| <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" /> | |||
| @@ -201,9 +171,8 @@ td{padding-left:8px} | |||
| <tr> | |||
| <td align="center" bgcolor="#FFFFFF"><b>删除程序:</b></td> | |||
| <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 /> | |||
| <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" /> | |||
| @@ -231,8 +200,8 @@ td{padding-left:8px} | |||
| <tr> | |||
| <td align="center" bgcolor="#FFFFFF"><b>模块文件选项:</b></td> | |||
| <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> | |||
| </tr> | |||
| @@ -246,12 +215,26 @@ td{padding-left:8px} | |||
| </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"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> | |||
| <tr> | |||
| <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> | |||
| </table></td> | |||
| </tr> | |||
| @@ -3,6 +3,8 @@ | |||
| <head> | |||
| <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $cfg_soft_lang; ?>"> | |||
| <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" /> | |||
| <script src="../static/js/dedeajax2.js" language="javascript" type="text/javascript"></script> | |||
| <script language="javascript" type="text/javascript"> | |||
| @@ -17,11 +19,11 @@ function getmodule(action,hash) | |||
| </script> | |||
| </head> | |||
| <body background='images/allbg.gif' leftmargin='8' topmargin='8'> | |||
| <div class="bodytitle"> | |||
| <div class="bodytitle mt-3"> | |||
| <div class="bodytitleleft"></div> | |||
| <div class="bodytitletxt" style="padding-left:10px;">模块管理</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"> | |||
| <input type='hidden' name='dopost' value='save'> | |||
| <tr> | |||
| @@ -39,7 +41,6 @@ function getmodule(action,hash) | |||
| <tr bgcolor="#FBFCE2" > | |||
| <td align="center" width="16%">模块名称</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="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';"> | |||
| <td><?php echo $v['name']; ?></td> | |||
| <td><?php echo $v['time']; ?></td> | |||
| <td><?php echo $v['team']; ?></td> | |||
| <td> | |||
| <?php | |||
| if($cfg_soft_lang != $v['lang']) echo "<font color='red'>".$v['lang']."</font>"; | |||
| @@ -80,13 +80,11 @@ foreach($modules as $k=>$v) | |||
| <td> | |||
| <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> | |||
| </td> | |||
| </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"> | |||
| <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> | |||
| <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> | |||
| </html> | |||
| @@ -44,7 +44,7 @@ NQabUzX9JoYtXqPcpZRT7ymHrppU0KFdUSEJiW0utTWJo0HrDOBIT5qWlM0MP9p/ | |||
| PwIDAQAB | |||
| -----END PUBLIC KEY----- | |||
| EOT); // DedeBIZ系统公钥 | |||
| define('DEDECDNURL', 'https://cdn.dedebiz.com'); // 默认静态资源地址 | |||
| 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 . '/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 | |||
| { | |||
| var $modulesPath; | |||
| @@ -160,7 +170,7 @@ class DedeModule | |||
| } else $filename = $this->modulesPath . '/' . $this->GetHashFile($hash); | |||
| $start = 0; | |||
| $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['ismember'] = $minfos['autosetup'] = $minfos['autodel'] = 0; | |||
| //$minfos['filename'] = $filename; | |||
| @@ -173,19 +183,23 @@ class DedeModule | |||
| while (!feof($fp)) { | |||
| $n++; | |||
| if ($n > 30) break; | |||
| $line = fgets($fp, 256); | |||
| $line = fgets($fp, 1024); | |||
| if ($start == 0) { | |||
| if (preg_match("/<baseinfo/is", $line)) $start = 1; | |||
| } else { | |||
| if (preg_match("/<\/baseinfo/is", $line)) break; | |||
| $line = trim($line); | |||
| list($skey, $svalue) = explode('=', $line); | |||
| $skey = trim($skey); | |||
| $minfos[$skey] = $svalue; | |||
| } | |||
| } | |||
| fclose($fp); | |||
| if (empty($minfos['lang'])) { | |||
| $minfos['lang'] = "utf-8"; | |||
| } | |||
| if (isset($minfos['lang'])) $this->moduleLang = trim($minfos['lang']); | |||
| else $this->moduleLang = 'gbk'; | |||