国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

376 lines
16KB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  6. <title>添加栏目</title>
  7. <link rel="stylesheet" href="../static/web/font/css/font-awesome.min.css">
  8. <link rel="stylesheet" href="../static/web/css/bootstrap.min.css">
  9. <link rel="stylesheet" href="../static/web/css/admin.css">
  10. <script src="../static/web/js/jquery.min.js"></script>
  11. <script src="js/main.js"></script>
  12. </head>
  13. <body>
  14. <form name="form1" action="catalog_add.php" method="post" onSubmit="return checkSubmit()">
  15. <input type="hidden" name="dopost" value="save">
  16. <input type="hidden" name="reid" id="reid" value="<?php echo $id;?>">
  17. <input type="hidden" name="topid" id="topid" value="<?php echo $topid;?>">
  18. <?php
  19. if ($id>0) {
  20. echo " <input type='hidden' name='moresite' value='{$myrow['moresite']}'>";
  21. echo " <input type='hidden' name='siteurl' value='{$myrow['siteurl']}'>";
  22. echo " <input type='hidden' name='sitepath' value='{$myrow['sitepath']}'>";
  23. }
  24. ?>
  25. <table align="center" class="table maintable my-3">
  26. <tr>
  27. <td bgcolor="#f5f5f5" colspan="4">添加栏目</td>
  28. </tr>
  29. <tr>
  30. <td width="10%">是否支持投稿:</td>
  31. <td width="40%">
  32. <label><input type="radio" name="issend" value="1" <?php if ($issend==1) echo " checked='checked' ";?>> 支持</label>
  33. <label><input type="radio" name="issend" value="0" <?php if ($issend==0) echo " checked='checked' ";?>> 不支持</label>
  34. </td>
  35. <td width="10%">是否隐藏栏目:</td>
  36. <td width="40%">
  37. <label><input type="radio" name="ishidden" value="0" checked="checked"> 显示</label>
  38. <label><input type="radio" name="ishidden" value="1"> 隐藏</label>
  39. </td>
  40. </tr>
  41. <tr>
  42. <td>文档模型:</td>
  43. <td>
  44. <input type="hidden" value="{style}" name="dfstyle">
  45. <select name="channeltype" id="channeltype" onChange="ParTemplet(this)" class="admin-input-sm">
  46. <?php
  47. foreach($channelArray as $k=>$arr)
  48. {
  49. if ($k==$channelid) {
  50. $nid = $arr['nid'];
  51. echo " <option value='{$k}' selected>{$arr['typename']} {$arr['nid']}</option>";
  52. } else {
  53. echo " <option value='{$k}'>{$arr['typename']} {$arr['nid']}</option>";
  54. }
  55. }
  56. ?>
  57. </select>
  58. <div id="smclass" class="mt-2" style="<?php echo ($channelid<0 ? '' : 'display:none');?>">
  59. <select name="smalltype[]" multiple="yes" class="admin-input-lg">
  60. <?php
  61. $sql = "SELECT * FROM `#@__sys_enum` WHERE egroup LIKE 'infotype' ORDER BY disorder ASC,evalue ASC ";
  62. $dsql->Execute('s',$sql);
  63. while($arr = $dsql->GetArray('s'))
  64. {
  65. if ($arr['evalue']%500==0) {
  66. echo "<option value='{$arr['evalue']}'>{$arr['ename']}</option>";
  67. } else if (preg_match("#\.#", $arr['evalue'])) {
  68. echo "<option value='{$arr['evalue']}'>└── {$arr['ename']}</option>";
  69. } else {
  70. echo "<option value='{$arr['evalue']}'>└─ {$arr['ename']}</option>";
  71. }
  72. }
  73. ?>
  74. </select>
  75. <span>(请选栏目的信息联动类型支持多选)</span>
  76. </div>
  77. </td>
  78. <td>上级目录:</td>
  79. <td>
  80. <?php
  81. $pardir = '{cmspath}'.$cfg_arcdir;
  82. if (!empty($typedir)) $pardir = $typedir.'/';
  83. $pardir = preg_replace("#\/{1,}#", '/', $pardir);
  84. echo $pardir;
  85. ?>
  86. <input type="hidden" name="nextdir" id="nextdir" value="<?php echo $pardir?>">
  87. </td>
  88. </tr>
  89. <tr>
  90. <td>中文名称:</td>
  91. <td><input type="text" name="typename" class="admin-input-lg"></td>
  92. <td>中文概述:</td>
  93. <td><input type="text" name="cnoverview" class="admin-input-lg"></td>
  94. </tr>
  95. <tr>
  96. <td>英文名称:</td>
  97. <td><input type="text" name="enname" class="admin-input-lg"></td>
  98. <td>英文概述:</td>
  99. <td><input type="text" name="enoverview" class="admin-input-lg"></td>
  100. </tr>
  101. <tr>
  102. <td>栏目大图:</td>
  103. <td>
  104. <input type="text" name="bigpic" class="admin-input-lg">
  105. <input type="button" class="btn btn-success btn-sm" value="选择" onclick="SelectImage('form1.bigpic');">
  106. </td>
  107. <td>栏目小图:</td>
  108. <td>
  109. <input type="text" name="litimg" class="admin-input-lg">
  110. <input type="button" class="btn btn-success btn-sm" value="选择" onclick="SelectImage('form1.litimg');">
  111. </td>
  112. </tr>
  113. <tr>
  114. <td>排列顺序:</td>
  115. <td><input type="text" name="sortrank" class="admin-input-sm">(由低到高)</td>
  116. <td>浏览权限:</td>
  117. <td>
  118. <select name="corank" id="corank" class="admin-input-sm">
  119. <?php
  120. $dsql->SetQuery("SELECT * FROM `#@__arcrank` WHERE `rank` >= 0 ORDER BY `rank` ASC");
  121. $dsql->Execute('cc');
  122. while($row = $dsql->GetObject('cc')) {
  123. if ($corank==$row->rank) echo "<option value='".$row->rank."' selected>".$row->membername."</option>";
  124. else {
  125. if ($corank==0){
  126. echo "<option value='".$row->rank."'>".$row->membername."</option>";
  127. }
  128. }
  129. }
  130. ?>
  131. </select>
  132. <span>(不支持静态)</span>
  133. </td>
  134. </tr>
  135. <tr>
  136. <td>文件保存目录:</td>
  137. <td>
  138. <input type="text" name="typedir" id="typedir" class="admin-input-lg">
  139. <label for="upinyin"><input type="checkbox" name="upinyin" id="upinyin" value="1" onclick="CheckTypeDir()"> 拼音</label>
  140. </td>
  141. <td>目录相对位置:</td>
  142. <td>
  143. <label><input type="radio" name="referpath" value="parent" checked="chekced"> 上级目录</label>
  144. <?php if ($moresite==0) {?>
  145. <label><input type="radio" name="referpath" value="cmspath"> 系统根目录</label>
  146. <label><input type="radio" name="referpath" value="basepath"> 站点根目录</label>
  147. <?php }?>
  148. </td>
  149. </tr>
  150. <tr>
  151. <td>栏目列表选项:</td>
  152. <td>
  153. <label><input type="radio" name="isdefault" value="1" checked="checked"> 静态浏览</label>
  154. <label><input type="radio" name="isdefault" value="-1"> 动态浏览</label>
  155. <label><input type="radio" name="isdefault" value="0"> 浏览列表第一页</label>
  156. </td>
  157. <td>默认页的名称:</td>
  158. <td><input type="text" name="defaultname" value="index.html" class="admin-input-lg"></td>
  159. </tr>
  160. <tr>
  161. <td>栏目属性:</td>
  162. <td>
  163. <label><input type="radio" name="ispart" value="0" checked="checked"> 列表栏目(允许发布)</label>
  164. <label><input type="radio" name="ispart" value="1"> 封面栏目(不允许发布)</label>
  165. <label><input type="radio" name="ispart" id="ispart2" value="2"> 外部栏目(文件保存目录填写链接)</label>
  166. </td>
  167. <td>栏目交叉:</td>
  168. <td>
  169. <label class="l-height-30"><input type="radio" name="cross" id="cross0" value="0" onclick="CheckCross()" checked="checked"> 不交叉</label>
  170. <label class="l-height-30"><input type="radio" name="cross" id="cross1" value="1" onclick="CheckCross()"> 自动获取同名栏目</label>
  171. <label class="l-height-30"><input type="radio" name="cross" id="cross2" value="2" onclick="CheckCross()"> 指定交叉栏目id(英文逗号分开)</label>
  172. <span onclick="ShowHide('helpvarco')" title="帮助" class="btn btn-success btn-sm"><i class="fa fa-question-circle"></i></span><br>
  173. <textarea name="crossid" id="crossid" class="admin-textarea-sm" style="display:none"></textarea>
  174. <div id="helpvarco" class="alert alert-info my-2" style="display:none">交叉栏目是大栏目与另一个非子栏目交叉的情况,相当于副栏目功能,需要在栏目里设置好</div>
  175. </td>
  176. </tr>
  177. <?php if ($id==0) {?>
  178. <tr>
  179. <td>多站点支持:</td>
  180. <td>
  181. <label><input type="radio" name="moresite" value="1"> 启用</label>
  182. <label><input type="radio" name="moresite" value="0" checked="checked"> 不启用</label>(需要绑定二级域名,系统变量中开启支持多站点)
  183. </td>
  184. <td>绑定域名:</td>
  185. <td><input type="text" name="siteurl" id="siteurl" onChange="CheckPathSet();" class="admin-input-lg">(请输入绑定域名http开头)</td>
  186. </tr>
  187. <?php }?>
  188. <tr>
  189. <td>列表模板:</td>
  190. <td>
  191. <input type="text" name="templist" value="{style}/list_<?php echo $nid?>.htm" class="admin-input-lg">
  192. <button type="button" name="set1" class="btn btn-success btn-sm" onclick="SelectTemplets('form1.templist')">选择</button>
  193. </td>
  194. <td>封面模板:</td>
  195. <td>
  196. <input type="text" name="tempindex" value="{style}/index_<?php echo $nid?>.htm" class="admin-input-lg">
  197. <button type="button" name="set2" class="btn btn-success btn-sm" onclick="SelectTemplets('form1.tempindex')">选择</button>
  198. <span onclick="ShowHide('helpvar1')" title="帮助" class="btn btn-success btn-sm"><i class="fa fa-question-circle"></i></span>
  199. <div id="helpvar1" class="alert alert-info my-2" style="display:none">
  200. <p>{tid} 栏目id</p>
  201. <span>{cid} 栏目模型名字id</span>
  202. </div>
  203. </td>
  204. </tr>
  205. <tr>
  206. <td>文档模板:</td>
  207. <td>
  208. <input type="text" name="temparticle" value="{style}/article_<?php echo $nid?>.htm" class="admin-input-lg">
  209. <button type="button" name="set3" class="btn btn-success btn-sm" onclick="SelectTemplets('form1.temparticle')">选择</button>
  210. </td>
  211. <td>列表命名规则:</td>
  212. <td>
  213. <input type="text" name="namerule2" id="namerule2" value="{typedir}/{tid}-{page}.html" class="admin-input-lg">
  214. <span onclick="ShowHide('helpvar2')" title="帮助" class="btn btn-success btn-sm"><i class="fa fa-question-circle"></i></span>
  215. <div id="helpvar2" class="alert alert-info my-2" style="display:none">
  216. <p>静态规则</p>
  217. <p>{tid} 栏目id</p>
  218. <p>{page} 栏目页码数</p>
  219. <p>伪静态规则(Nginx)</p>
  220. <p>rewrite ^/list-([0-9]+)$ /apps/list.php?tid=$1;</p>
  221. <span>rewrite ^/list-([0-9]+)-([0-9]+)$ /apps/list.php?tid=$1&PageNo=$2;</span>
  222. </div>
  223. </td>
  224. </tr>
  225. <tr>
  226. <td>文档命名规则:</td>
  227. <td>
  228. <input type="text" name="namerule" tid="namerule" value="<?php echo $cfg_df_namerule;?>" class="admin-input-lg">
  229. <span onclick="ShowHide('helpvar3')" title="帮助" class="btn btn-success btn-sm"><i class="fa fa-question-circle"></i></span>
  230. <div id="helpvar3" class="alert alert-info my-2" style="display:none">
  231. <p>静态规则</p>
  232. <p>{Y}{M}{D} 年月日</p>
  233. <p>{timestamp} INT类型的UNIX时间戳</p>
  234. <p>{aid} 文档id</p>
  235. <p>{pinyin} 拼音加文档id</p>
  236. <p>{py} 拼音部首加文档id</p>
  237. <p>{typedir} 栏目保存目录</p>
  238. <p>{cc} 日期加混编id后用转换为适合字母</p>
  239. <p>伪静态规则(Nginx)</p>
  240. <p>rewrite ^/doc-([0-9]+).html$ /apps/view.php?arcID=$1;</p>
  241. <span>rewrite ^/doc-([0-9]+)-([0-9]+).html$ /apps/view.php?aid=$1&pageno=$2;</span>
  242. </div>
  243. </td>
  244. <td>SEO标题:</td>
  245. <td>
  246. <input type="text" name="seotitle" id="seotitle" class="admin-input-lg">
  247. <span>(标签{dede:field.seotitle/}调用)</span>
  248. </td>
  249. </tr>
  250. <tr>
  251. <td>关键词:</td>
  252. <td>
  253. <textarea name="keywords" id="keywords" class="admin-textarea-sm"></textarea>
  254. <span>(标签{dede:field.keywords/}调用)</span>
  255. </td>
  256. <td>描述:</td>
  257. <td>
  258. <textarea name="description" id="description" class="admin-textarea-sm"></textarea>
  259. <span>(标签{dede:field.description/}调用)</span>
  260. </td>
  261. </tr>
  262. <tr>
  263. <td>栏目文档:</td>
  264. <td>(标签{dede:field.content/}调用)</td>
  265. <td>是否支持跨站调用:</td>
  266. <td>
  267. <input type="text" name="apikey" id="apikey" class="admin-input-lg" placeholder="请输入跨站调用秘钥">
  268. <label class="l-height-30"><input type="radio" name="apienabled" value="1"> 支持</label>
  269. <label class="l-height-30"><input type="radio" name="apienabled" value="0" checked="checked"> 不支持</label>
  270. <span class="btn btn-success btn-sm ml-2" title="更新秘钥" onclick="makeAPIKey()"><i class="fa fa-repeat"></i></span>
  271. </td>
  272. </tr>
  273. <tr>
  274. <td colspan="4"><?php GetEditor("content","","400","Default","print","false");?></td>
  275. </tr>
  276. <tr>
  277. <td bgcolor="#f5f5f5" colspan="4" align="center">
  278. <button type="submit" class="btn btn-success btn-sm">保存</button>
  279. <a href="catalog_main.php" class="btn btn-outline-success btn-sm">返回</a>
  280. </td>
  281. </tr>
  282. </table>
  283. </form>
  284. <script>
  285. var channelArray = new Array();
  286. <?php
  287. $i = 0;
  288. foreach($channelArray as $k=> $arr)
  289. {
  290. echo "channelArray[$k] = \"{$arr['nid']}\";";
  291. }
  292. ?>
  293. function Nav() {
  294. if (window.navigator.userAgent.indexOf("MSIE") >= 1) return 'IE';
  295. else if (window.navigator.userAgent.indexOf("Firefox") >= 1) return 'FF';
  296. else return "OT";
  297. }
  298. function checkSubmit() {
  299. if (document.form1.typename.value == "") {
  300. alert("栏目名称不能为空");
  301. document.form1.typename.focus();
  302. return false;
  303. }
  304. return true;
  305. }
  306. function SelectTemplets(fname) {
  307. var pos = GetWinPos(800,600);
  308. window.open("./dialog/select_templets.php?f=" + fname, "poptempWin", "scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=" + pos.left + ", top=" + pos.top);
  309. }
  310. function ShowHide(objname) {
  311. var obj = document.getElementById(objname);
  312. if (obj.style.display != "none")
  313. obj.style.display = "none";
  314. else {
  315. if (Nav() == 'IE') obj.style.display = "block";
  316. else obj.style.display = "block";
  317. }
  318. }
  319. function ShowObj(objname) {
  320. var obj = document.getElementById(objname);
  321. if (Nav() == 'IE') obj.style.display = "block";
  322. else obj.style.display = "block";
  323. }
  324. function HideObj(objname) {
  325. var obj = document.getElementById(objname);
  326. obj.style.display = "none";
  327. }
  328. function CheckTypeDir() {
  329. var upinyin = document.getElementById('upinyin');
  330. var tpobj = document.getElementById('typedir');
  331. if (upinyin.checked) tpobj.style.display = "none";
  332. else tpobj.style.display = "inline-block";
  333. }
  334. function ParTemplet(obj) {
  335. var sevvalue = channelArray[obj.value];
  336. var tobj = document.getElementById('smclass');
  337. var tempindex = document.getElementsByName('tempindex');
  338. var templist = document.getElementsByName('templist');
  339. var temparticle = document.getElementsByName('temparticle');
  340. var dfstyle = document.getElementsByName('dfstyle');
  341. var dfstyleValue = dfstyle[0].value;
  342. tempindex[0].value = dfstyleValue + "/index_" + sevvalue + ".htm";
  343. templist[0].value = dfstyleValue + "/list_" + sevvalue + ".htm";
  344. temparticle[0].value = dfstyleValue + "/article_" + sevvalue + ".htm";
  345. if (obj.value < 0) {
  346. if (Nav() == 'IE') tobj.style.display = "block";
  347. else tobj.style.display = "block";
  348. } else {
  349. tobj.style.display = "none";
  350. }
  351. }
  352. function CheckPathSet() {
  353. var surl = document.getElementById("siteurl");
  354. var sreid = document.getElementById("reid");
  355. var mysel = document.getElementById("truepath3");
  356. if (surl.value != "") {
  357. if (sreid.value == "0" || sreid.value == "") {
  358. mysel.checked = true;
  359. }
  360. }
  361. }
  362. function CheckCross() {
  363. var cross2 = document.getElementById('cross2');
  364. var crossid = document.getElementById('crossid');
  365. if (cross2.checked) crossid.style.display = 'block';
  366. else crossid.style.display = 'none';
  367. }
  368. function makeAPIKey(){
  369. var apikey = document.getElementById('apikey');
  370. jQuery.get("sys_info.php?dopost=make_encode", function(data) {
  371. jQuery("#apikey").val(data);
  372. });
  373. }
  374. </script>
  375. </body>
  376. </html>