国内流行的内容管理系统(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.

410 lines
19KB

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