chenhao 4 năm trước cách đây
commit
037f640863
100 tập tin đã thay đổi với 12205 bổ sung0 xóa
  1. 8 0
      .idea/S473.iml
  2. 6 0
      .idea/misc.xml
  3. 8 0
      .idea/modules.xml
  4. 61 0
      .idea/workspace.xml
  5. 130 0
      a/jingqujianjie/index.html
  6. 74 0
      a/jingqutese/1.html
  7. 74 0
      a/jingqutese/2.html
  8. 74 0
      a/jingqutese/3.html
  9. 74 0
      a/jingqutese/4.html
  10. 130 0
      a/jingqutese/index.html
  11. 130 0
      a/jingqutese/list_2_1.html
  12. 114 0
      a/jingqutese/list_2_2.html
  13. 74 0
      a/jingxinminsu/5.html
  14. 74 0
      a/jingxinminsu/6.html
  15. 74 0
      a/jingxinminsu/7.html
  16. 103 0
      a/jingxinminsu/index.html
  17. 103 0
      a/jingxinminsu/list_6_1.html
  18. 96 0
      a/lianxiwomen/index.html
  19. 76 0
      a/nuanxinmeishi/13.html
  20. 76 0
      a/nuanxinmeishi/14.html
  21. 76 0
      a/nuanxinmeishi/15.html
  22. 105 0
      a/nuanxinmeishi/index.html
  23. 105 0
      a/nuanxinmeishi/list_7_1.html
  24. 74 0
      a/shangxintiyan/16.html
  25. 74 0
      a/shangxintiyan/8.html
  26. 74 0
      a/shangxintiyan/9.html
  27. 98 0
      a/shangxintiyan/index.html
  28. 98 0
      a/shangxintiyan/list_4_1.html
  29. 87 0
      a/zuixindongtai/10.html
  30. 84 0
      a/zuixindongtai/11.html
  31. 82 0
      a/zuixindongtai/12.html
  32. 103 0
      a/zuixindongtai/index.html
  33. 103 0
      a/zuixindongtai/list_3_1.html
  34. 20 0
      admin/action_search.php
  35. 94 0
      admin/actionsearch_class.php
  36. 98 0
      admin/ad_add.php
  37. 88 0
      admin/ad_edit.php
  38. 67 0
      admin/ad_main.php
  39. 49 0
      admin/adtype_main.php
  40. 384 0
      admin/album_add.php
  41. 433 0
      admin/album_edit.php
  42. 21 0
      admin/album_testhtml.php
  43. 375 0
      admin/api_ucenter.php
  44. 240 0
      admin/archives_add.php
  45. 1016 0
      admin/archives_do.php
  46. 248 0
      admin/archives_edit.php
  47. 197 0
      admin/archives_sg_add.php
  48. 181 0
      admin/archives_sg_edit.php
  49. 285 0
      admin/article_add.php
  50. 44 0
      admin/article_allowurl_edit.php
  51. 130 0
      admin/article_coonepage_rule.php
  52. 202 0
      admin/article_description_main.php
  53. 266 0
      admin/article_edit.php
  54. 104 0
      admin/article_keywords_main.php
  55. 223 0
      admin/article_keywords_make.php
  56. 35 0
      admin/article_keywords_select.php
  57. 53 0
      admin/article_select_sw.php
  58. 44 0
      admin/article_source_edit.php
  59. 49 0
      admin/article_string_mix.php
  60. 128 0
      admin/article_template_rand.php
  61. 89 0
      admin/article_test_same.php
  62. 19 0
      admin/article_test_title.php
  63. 46 0
      admin/article_writer_edit.php
  64. 84 0
      admin/baidunews.php
  65. 68 0
      admin/cards_make.php
  66. 67 0
      admin/cards_manage.php
  67. 55 0
      admin/cards_type.php
  68. 284 0
      admin/catalog_add.php
  69. 42 0
      admin/catalog_del.php
  70. 362 0
      admin/catalog_do.php
  71. 300 0
      admin/catalog_edit.php
  72. 14 0
      admin/catalog_main.php
  73. 26 0
      admin/catalog_menu.php
  74. 188 0
      admin/co_add.php
  75. 287 0
      admin/co_do.php
  76. 172 0
      admin/co_edit.php
  77. 40 0
      admin/co_edit_text.php
  78. 306 0
      admin/co_export.php
  79. 36 0
      admin/co_export_corule.php
  80. 34 0
      admin/co_gather_start.php
  81. 87 0
      admin/co_gather_start_action.php
  82. 101 0
      admin/co_get_corule.php
  83. 115 0
      admin/co_getsource_url_action.php
  84. 31 0
      admin/co_main.php
  85. 17 0
      admin/co_test_rule.php
  86. 62 0
      admin/co_url.php
  87. 59 0
      admin/co_view.php
  88. 324 0
      admin/config.php
  89. 31 0
      admin/content_att.php
  90. 13 0
      admin/content_batch_up.php
  91. 215 0
      admin/content_batchup_action.php
  92. 12 0
      admin/content_i_list.php
  93. 241 0
      admin/content_list.php
  94. 15 0
      admin/content_s_list.php
  95. 12 0
      admin/content_select_list.php
  96. 101 0
      admin/content_sg_list.php
  97. 60 0
      admin/content_tj.php
  98. 0 0
      admin/css/base.css
  99. 53 0
      admin/css/boxy.css
  100. 341 0
      admin/css/codemirror.css

+ 8 - 0
.idea/S473.iml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 6 - 0
.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/S473.iml" filepath="$PROJECT_DIR$/.idea/S473.iml" />
+    </modules>
+  </component>
+</project>

+ 61 - 0
.idea/workspace.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="0be2afa7-dbc2-43bd-8fbe-bf5f32573952" name="Default Changelist" comment="" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ComposerSettings">
+    <execution>
+      <executable />
+    </execution>
+  </component>
+  <component name="ProjectId" id="1c3qLmnuZplVWCrCmxCJfinIGPx" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showExcludedFiles" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent">
+    <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="node.js.detected.package.eslint" value="true" />
+    <property name="node.js.detected.package.tslint" value="true" />
+    <property name="node.js.path.for.package.eslint" value="project" />
+    <property name="node.js.path.for.package.tslint" value="project" />
+    <property name="node.js.selected.package.eslint" value="(autodetect)" />
+    <property name="node.js.selected.package.tslint" value="(autodetect)" />
+  </component>
+  <component name="ServiceViewManager">
+    <option name="viewStates">
+      <list>
+        <serviceView>
+          <treeState>
+            <expand />
+            <select />
+          </treeState>
+        </serviceView>
+      </list>
+    </option>
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="0be2afa7-dbc2-43bd-8fbe-bf5f32573952" name="Default Changelist" comment="" />
+      <created>1589767570142</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1589767570142</updated>
+      <workItem from="1589767572427" duration="2736000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+</project>

+ 130 - 0
a/jingqujianjie/index.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>景区简介_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 -------------------------------------->
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        <li><a href='/a/jingqujianjie/' class='on'>景区简介</a></li>
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"><img src="/skin/images/banner-img1.jpg" alt=""> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-title">
+        <p class="p1">景区简介</p>
+        <p class="p2">Wash Xinzhilv</p>
+      </div>
+      <div class="ui-viewinfo hd wow fadeInUp">
+        <div class="l">
+          <div class="text">
+            <h3>山水驿站</h3>
+            <p>溪流如客,穿行在熙熙攘攘的古街巷,带着山泉的清冽和田间的稻香,一路人潮般的欢闹。客如溪流,穿行在琳琅满目的民街老铺中,提携折久违的地道美食和各色老器,一路溪流般的激荡。这就是夏棠寨民街的美妙。时隐时现在田畔山脚的村舍,是回忆里牵挂的最美片段,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟,那是,家人无声而深情的召唤,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟....</p>
+          </div>
+        </div>
+        <div class="r">
+          <div class="view"> <img src="/skin/images/point-view.jpg" alt=""> </div>
+        </div>
+        <div class="clearfix"></div>
+      </div>
+    </div>
+  </div>
+  <div class="ui-fullpart" style="background-color: #202320;">
+    <div class="container">
+      <div class="ui-viewinfo bg-1 df wow fadeInUp">
+        <div class="l">
+          <div class="text">
+            <h3>村落回忆</h3>
+            <p>溪流如客,穿行在熙熙攘攘的古街巷,带着山泉的清冽和田间的稻香,一路人潮般的欢闹。客如溪流,穿行在琳琅满目的民街老铺中,提携折久违的地道美食和各色老器,一路溪流般的激荡。这就是夏棠寨民街的美妙。时隐时现在田畔山脚的村舍,是回忆里牵挂的最美片段,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟,那是,家人无声而深情的召唤,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟....</p>
+          </div>
+        </div>
+        <div class="r">
+          <div class="view"> <img src="/skin/images/point-img1.jpg" alt=""> </div>
+        </div>
+        <div class="clearfix"></div>
+      </div>
+    </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-viewinfo bg-2 wow fadeInUp">
+        <div class="l">
+          <div class="text">
+            <h3>自然禅修</h3>
+            <p>溪流如客,穿行在熙熙攘攘的古街巷,带着山泉的清冽和田间的稻香,一路人潮般的欢闹。客如溪流,穿行在琳琅满目的民街老铺中,提携折久违的地道美食和各色老器,一路溪流般的激荡。这就是夏棠寨民街的美妙。时隐时现在田畔山脚的村舍,是回忆里牵挂的最美片段,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟,那是,家人无声而深情的召唤,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟....</p>
+          </div>
+        </div>
+        <div class="r">
+          <div class="view"> <img src="/skin/images/point-img2.jpg" alt=""> </div>
+        </div>
+        <div class="clearfix"></div>
+      </div>
+    </div>
+  </div>
+  <div class="ui-fullpart">
+    <div class="container">
+      <div class="ui-viewinfo df bg-3 wow fadeInUp">
+        <div class="l">
+          <div class="text">
+            <h3>休闲时刻</h3>
+            <p>溪流如客,穿行在熙熙攘攘的古街巷,带着山泉的清冽和田间的稻香,一路人潮般的欢闹。客如溪流,穿行在琳琅满目的民街老铺中,提携折久违的地道美食和各色老器,一路溪流般的激荡。这就是夏棠寨民街的美妙。时隐时现在田畔山脚的村舍,是回忆里牵挂的最美片段,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟,那是,家人无声而深情的召唤,不是因为那玲珑高挑的屋檐,也不是因为那素面朝天的清墙。而是因为那淡淡的飘入山峰中的袅袅炊烟....</p>
+          </div>
+        </div>
+        <div class="r">
+          <div class="view"> <img src="/skin/images/point-img3.jpg" alt=""> </div>
+        </div>
+        <div class="clearfix"></div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+</body>
+</html>

+ 74 - 0
a/jingqutese/1.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>农家小苑_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="农,家小苑,此处,文案,内容,可,根据,您,企业," />
+<meta name="description" content="此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        <li><a href='/a/jingqutese/' class='on'>景区特色</a></li>
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>农家小苑</h3>
+          <p>2020-01-08 17:32</p>
+        </div>
+        <div class="ct"> 此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑。 </div>
+        <div class="ft">
+          <p>上一篇:没有了 </p>
+          <p>下一篇:<a href='/a/jingqutese/2.html'>茗品茶香</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/jingqutese/2.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>茗品茶香_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="茗品,茶香,此处,文案,内容,可,根据,您,企业," />
+<meta name="description" content="此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        <li><a href='/a/jingqutese/' class='on'>景区特色</a></li>
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>茗品茶香</h3>
+          <p>2020-01-08 17:32</p>
+        </div>
+        <div class="ct"> 此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑。 </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/jingqutese/1.html'>农家小苑</a> </p>
+          <p>下一篇:<a href='/a/jingqutese/3.html'>幽静小村</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/jingqutese/3.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>幽静小村_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="幽静,小村,此处,文案,内容,可,根据,您,企业," />
+<meta name="description" content="此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        <li><a href='/a/jingqutese/' class='on'>景区特色</a></li>
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>幽静小村</h3>
+          <p>2020-01-08 17:32</p>
+        </div>
+        <div class="ct"> 此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑。 </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/jingqutese/2.html'>茗品茶香</a> </p>
+          <p>下一篇:<a href='/a/jingqutese/4.html'>古香古色</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/jingqutese/4.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>古香古色_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="古香古色,此处,文案,内容,可,根据,您,企业," />
+<meta name="description" content="此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        <li><a href='/a/jingqutese/' class='on'>景区特色</a></li>
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>古香古色</h3>
+          <p>2020-01-08 17:31</p>
+        </div>
+        <div class="ct"> 此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑。 </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/jingqutese/3.html'>幽静小村</a> </p>
+          <p>下一篇:没有了 </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 130 - 0
a/jingqutese/index.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>景区特色_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        <li><a href='/a/jingqutese/' class='on'>景区特色</a></li>
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"><img src="/skin/images/banner-img2.jpg" alt="">
+      <div class="ct">
+        <p></p>
+      </div>
+    </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="ui-title">
+      <p class="p1">景区特色</p>
+      <p class="p2 nodt">feature</p>
+    </div>
+    <div class="ui-roomlist wow fadeInUp">
+      <ul>
+        <li>
+          <div class="i">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QH4500-L.jpg" alt="农家小苑"> </div>
+            <div class="txt">
+              <h3>农家小苑</h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进...</p>
+            </div>
+          </div>
+        </li><li>
+          <div class="i">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QH5130-L.jpg" alt="茗品茶香"> </div>
+            <div class="txt">
+              <h3>茗品茶香</h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进...</p>
+            </div>
+          </div>
+        </li><li>
+          <div class="i">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QH5380-L.jpg" alt="幽静小村"> </div>
+            <div class="txt">
+              <h3>幽静小村</h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进...</p>
+            </div>
+          </div>
+        </li>
+        <div class="clearfix"></div>
+      </ul>
+    </div>
+    <div class="ht90"></div>
+    <div class="ui-title">
+      <p class="p1">暖心美食</p>
+      <p class="p2 nodt">WARM HEART FOOD</p>
+    </div>
+    <div class="ui-foodlist wow fadeInUp">
+      <div class="container">
+        <ul>
+          <li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091022020-L.jpg" alt="暖心夜宵">
+              <p>暖心夜宵</p>
+            </div>
+          </li>
+<li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091021500-L.jpg" alt="养生早餐">
+              <p>养生早餐</p>
+            </div>
+          </li>
+<li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091021380-L.jpg" alt="特色小吃">
+              <p>特色小吃</p>
+            </div>
+          </li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 130 - 0
a/jingqutese/list_2_1.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>景区特色_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        <li><a href='/a/jingqutese/' class='on'>景区特色</a></li>
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"><img src="/skin/images/banner-img2.jpg" alt="">
+      <div class="ct">
+        <p></p>
+      </div>
+    </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="ui-title">
+      <p class="p1">景区特色</p>
+      <p class="p2 nodt">feature</p>
+    </div>
+    <div class="ui-roomlist wow fadeInUp">
+      <ul>
+        <li>
+          <div class="i">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QH4500-L.jpg" alt="农家小苑"> </div>
+            <div class="txt">
+              <h3>农家小苑</h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进...</p>
+            </div>
+          </div>
+        </li><li>
+          <div class="i">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QH5130-L.jpg" alt="茗品茶香"> </div>
+            <div class="txt">
+              <h3>茗品茶香</h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进...</p>
+            </div>
+          </div>
+        </li><li>
+          <div class="i">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QH5380-L.jpg" alt="幽静小村"> </div>
+            <div class="txt">
+              <h3>幽静小村</h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进...</p>
+            </div>
+          </div>
+        </li>
+        <div class="clearfix"></div>
+      </ul>
+    </div>
+    <div class="ht90"></div>
+    <div class="ui-title">
+      <p class="p1">暖心美食</p>
+      <p class="p2 nodt">WARM HEART FOOD</p>
+    </div>
+    <div class="ui-foodlist wow fadeInUp">
+      <div class="container">
+        <ul>
+          <li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091022020-L.jpg" alt="暖心夜宵">
+              <p>暖心夜宵</p>
+            </div>
+          </li>
+<li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091021500-L.jpg" alt="养生早餐">
+              <p>养生早餐</p>
+            </div>
+          </li>
+<li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091021380-L.jpg" alt="特色小吃">
+              <p>特色小吃</p>
+            </div>
+          </li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 114 - 0
a/jingqutese/list_2_2.html

@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>景区特色_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        <li><a href='/a/jingqutese/' class='on'>景区特色</a></li>
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"><img src="/skin/images/banner-img2.jpg" alt="">
+      <div class="ct">
+        <p></p>
+      </div>
+    </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="ui-title">
+      <p class="p1">景区特色</p>
+      <p class="p2 nodt">feature</p>
+    </div>
+    <div class="ui-roomlist wow fadeInUp">
+      <ul>
+        <li>
+          <div class="i">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QI0500-L.jpg" alt="古香古色"> </div>
+            <div class="txt">
+              <h3>古香古色</h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素,此处文案内容可根据您企业内容进...</p>
+            </div>
+          </div>
+        </li>
+        <div class="clearfix"></div>
+      </ul>
+    </div>
+    <div class="ht90"></div>
+    <div class="ui-title">
+      <p class="p1">暖心美食</p>
+      <p class="p2 nodt">WARM HEART FOOD</p>
+    </div>
+    <div class="ui-foodlist wow fadeInUp">
+      <div class="container">
+        <ul>
+          <li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091022020-L.jpg" alt="暖心夜宵">
+              <p>暖心夜宵</p>
+            </div>
+          </li>
+<li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091021500-L.jpg" alt="养生早餐">
+              <p>养生早餐</p>
+            </div>
+          </li>
+<li>
+            <div class="i"> <img src="/uploads/allimg/200109/1-2001091021380-L.jpg" alt="特色小吃">
+              <p>特色小吃</p>
+            </div>
+          </li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/jingxinminsu/5.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>静心民宿一_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="静心,民宿,一,此处,文案,内容,可,根据,您," />
+<meta name="description" content="此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        <li><a href='/a/jingxinminsu/' class='on'>静心民宿</a></li>
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>静心民宿一</h3>
+          <p>2020-01-08 17:34</p>
+        </div>
+        <div class="ct"> 此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。 </div>
+        <div class="ft">
+          <p>上一篇:没有了 </p>
+          <p>下一篇:<a href='/a/jingxinminsu/6.html'>静心民宿二</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/jingxinminsu/6.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>静心民宿二_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="静心,民宿,二,此处,文案,内容,可,根据,您," />
+<meta name="description" content="此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        <li><a href='/a/jingxinminsu/' class='on'>静心民宿</a></li>
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>静心民宿二</h3>
+          <p>2020-01-08 17:34</p>
+        </div>
+        <div class="ct"> 此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。 </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/jingxinminsu/5.html'>静心民宿一</a> </p>
+          <p>下一篇:<a href='/a/jingxinminsu/7.html'>静心民宿三</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/jingxinminsu/7.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>静心民宿三111sdfsf_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="静心,民宿,三,此处,文案,内容,可,根据,您," />
+<meta name="description" content="此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        <li><a href='/a/jingxinminsu/' class='on'>静心民宿</a></li>
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>静心民宿三111sdfsf</h3>
+          <p>2020-05-18 11:20</p>
+        </div>
+        <div class="ct"> 此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。 </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/jingxinminsu/6.html'>静心民宿二</a> </p>
+          <p>下一篇:没有了 </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 103 - 0
a/jingxinminsu/index.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>静心民宿_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        <li><a href='/a/jingxinminsu/' class='on'>静心民宿</a></li>
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img4.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-newslist">
+        <ul>
+          <li> <a href="/a/jingxinminsu/7.html" class="i"><img src="/uploads/allimg/200108/1-20010QI5310-L.jpg" alt="静心民宿三">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                静心民宿三 </h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/jingxinminsu/6.html" class="i"><img src="/uploads/allimg/200108/1-20010QI5030-L.jpg" alt="静心民宿二">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                静心民宿二 </h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/jingxinminsu/5.html" class="i"><img src="/uploads/allimg/200108/1-20010QI4230-L.jpg" alt="静心民宿一">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                静心民宿一 </h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 103 - 0
a/jingxinminsu/list_6_1.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>静心民宿_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        <li><a href='/a/jingxinminsu/' class='on'>静心民宿</a></li>
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img4.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-newslist">
+        <ul>
+          <li> <a href="/a/jingxinminsu/7.html" class="i"><img src="/uploads/allimg/200108/1-20010QI5310-L.jpg" alt="静心民宿三">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                静心民宿三 </h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/jingxinminsu/6.html" class="i"><img src="/uploads/allimg/200108/1-20010QI5030-L.jpg" alt="静心民宿二">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                静心民宿二 </h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/jingxinminsu/5.html" class="i"><img src="/uploads/allimg/200108/1-20010QI4230-L.jpg" alt="静心民宿一">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                静心民宿一 </h3>
+              <p>此处文案内容可根据您企业内容进行编辑,可更换文字、图片等常用元素。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 96 - 0
a/lianxiwomen/index.html

@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>联系我们</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        <li><a href='/a/lianxiwomen/' class='on'>联系我们</a></li>
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main style="padding-top: 0; background-image: url(/skin/images/bg-c.jpg);">
+  <div class="ui-fullpart nopd">
+    <div class="container">
+      <div class="bg-contactus">
+        <div class="ui-contactus">
+          <div class="hd wow fadeInDown">
+            <h3>坚持创新设计</h3>
+            <p><a href=''>联系我们</a></p>
+          </div>
+          <div class="ct wow fadeInUp">
+            <table>
+              <tr>
+                <td><div class="i">
+                    <h5>QQ</h5>
+                    <p>80044685</p>
+                  </div></td>
+                <td><div class="i">
+                    <h5>PHONE</h5>
+                    <p>020-88888888</p>
+                  </div></td>
+                <td><div class="i">
+                    <h5>E-MAIL</h5>
+                    <p>80044685@qq.com</p>
+                  </div></td>
+              </tr>
+              <tr>
+                <td colspan="3"><div class="i">
+                    <div class="ht50"></div>
+                    <h5>ADDRESS</h5>
+                    <p>广东省广州市番禺区</p>
+                  </div></td>
+              </tr>
+            </table>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 76 - 0
a/nuanxinmeishi/13.html

@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>特色小吃_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="特色,小吃,特色,小吃," />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>特色小吃</h3>
+          <p>2020-01-09 10:21</p>
+        </div>
+        <div class="ct">  </div>
+        <div class="ft">
+          <p>上一篇:没有了 </p>
+          <p>下一篇:<a href='/a/nuanxinmeishi/14.html'>养生早餐</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 76 - 0
a/nuanxinmeishi/14.html

@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>养生早餐_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="养生,早餐,养生,早餐," />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>养生早餐</h3>
+          <p>2020-01-09 10:21</p>
+        </div>
+        <div class="ct">  </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/nuanxinmeishi/13.html'>特色小吃</a> </p>
+          <p>下一篇:<a href='/a/nuanxinmeishi/15.html'>暖心夜宵</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 76 - 0
a/nuanxinmeishi/15.html

@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>暖心夜宵_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="暖心,夜宵,暖心,夜宵," />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>暖心夜宵</h3>
+          <p>2020-01-09 10:21</p>
+        </div>
+        <div class="ct">  </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/nuanxinmeishi/14.html'>养生早餐</a> </p>
+          <p>下一篇:没有了 </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 105 - 0
a/nuanxinmeishi/index.html

@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>暖心美食_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img4.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-newslist">
+        <ul>
+          <li> <a href="/a/nuanxinmeishi/15.html" class="i"><img src="/uploads/allimg/200109/1-2001091022020-L.jpg" alt="暖心夜宵">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-09</small></div>
+                暖心夜宵 </h3>
+              <p>...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/nuanxinmeishi/14.html" class="i"><img src="/uploads/allimg/200109/1-2001091021500-L.jpg" alt="养生早餐">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-09</small></div>
+                养生早餐 </h3>
+              <p>...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/nuanxinmeishi/13.html" class="i"><img src="/uploads/allimg/200109/1-2001091021380-L.jpg" alt="特色小吃">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-09</small></div>
+                特色小吃 </h3>
+              <p>...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 105 - 0
a/nuanxinmeishi/list_7_1.html

@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>暖心美食_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img4.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-newslist">
+        <ul>
+          <li> <a href="/a/nuanxinmeishi/15.html" class="i"><img src="/uploads/allimg/200109/1-2001091022020-L.jpg" alt="暖心夜宵">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-09</small></div>
+                暖心夜宵 </h3>
+              <p>...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/nuanxinmeishi/14.html" class="i"><img src="/uploads/allimg/200109/1-2001091021500-L.jpg" alt="养生早餐">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-09</small></div>
+                养生早餐 </h3>
+              <p>...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/nuanxinmeishi/13.html" class="i"><img src="/uploads/allimg/200109/1-2001091021380-L.jpg" alt="特色小吃">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-09</small></div>
+                特色小吃 </h3>
+              <p>...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/shangxintiyan/16.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>古老城楼1_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="古老,城楼,夏棠寨,依山傍水,拥有,山川,、," />
+<meta name="description" content="夏棠寨,依山傍水,拥有山川、湖泊等丰富的自然资源,潜心打造绝佳的度假休闲圣地,闲时约上老友,品茗垂钓。" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        <li><a href='/a/shangxintiyan/' class='on'>赏心体验</a></li>
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>古老城楼1</h3>
+          <p>2020-05-18 11:16</p>
+        </div>
+        <div class="ct"> 夏棠寨,依山傍水,拥有山川、湖泊等丰富的自然资源,潜心打造绝佳的度假休闲圣地,闲时约上老友,品茗垂钓。 </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/shangxintiyan/9.html'>鱼飞我所欲、只愿不上钩</a> </p>
+          <p>下一篇:没有了 </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/shangxintiyan/8.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>小憩时刻_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="小憩,时刻,在,春节,来临,之际,夏棠寨,推出," />
+<meta name="description" content="在春节来临之际,夏棠寨推出赏心民俗体验活动、欢迎大家前来体验乡村风光。" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        <li><a href='/a/shangxintiyan/' class='on'>赏心体验</a></li>
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>小憩时刻</h3>
+          <p>2020-01-08 17:37</p>
+        </div>
+        <div class="ct"> 在春节来临之际,夏棠寨推出赏心民俗体验活动、欢迎大家前来体验乡村风光。 </div>
+        <div class="ft">
+          <p>上一篇:没有了 </p>
+          <p>下一篇:<a href='/a/shangxintiyan/9.html'>鱼飞我所欲、只愿不上钩</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 74 - 0
a/shangxintiyan/9.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>鱼飞我所欲、只愿不上钩_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="鱼飞,我,所欲,、,只,愿不,上钩,夏棠寨," />
+<meta name="description" content="夏棠寨,依山傍水,拥有山川湖泊等丰富的自然资源,闲时约上老友,品茗垂钓。" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        <li><a href='/a/shangxintiyan/' class='on'>赏心体验</a></li>
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>鱼飞我所欲、只愿不上钩</h3>
+          <p>2020-01-08 17:37</p>
+        </div>
+        <div class="ct"> 夏棠寨,依山傍水,拥有山川湖泊等丰富的自然资源,闲时约上老友,品茗垂钓。 </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/shangxintiyan/8.html'>小憩时刻</a> </p>
+          <p>下一篇:<a href='/a/shangxintiyan/16.html'>古老城楼</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 98 - 0
a/shangxintiyan/index.html

@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>赏心体验_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        <li><a href='/a/shangxintiyan/' class='on'>赏心体验</a></li>
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img3.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-viewlist">
+        <ul>
+          <li> <a href="/a/shangxintiyan/16.html" class="i wow fadeInUp">
+            <div class="img"> <img src="/uploads/allimg/200109/1-2001091034530-L.jpg" alt="古老城楼"> </div>
+            <div class="txt">
+              <h3>古老城楼</h3>
+              <p>夏棠寨,依山傍水,拥有山川、湖泊等丰富的自然资源,潜心打造绝佳的度假休闲圣地,闲时约上老友,品茗垂钓。...</p>
+            </div>
+            </a> </li><li> <a href="/a/shangxintiyan/9.html" class="i wow fadeInUp">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QIH90-L.jpg" alt="鱼飞我所欲、只愿不上钩"> </div>
+            <div class="txt">
+              <h3>鱼飞我所欲、只愿不上钩</h3>
+              <p>夏棠寨,依山傍水,拥有山川湖泊等丰富的自然资源,闲时约上老友,品茗垂钓。...</p>
+            </div>
+            </a> </li><li> <a href="/a/shangxintiyan/8.html" class="i wow fadeInUp">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QIF50-L.jpg" alt="小憩时刻"> </div>
+            <div class="txt">
+              <h3>小憩时刻</h3>
+              <p>在春节来临之际,夏棠寨推出赏心民俗体验活动、欢迎大家前来体验乡村风光。...</p>
+            </div>
+            </a> </li>
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 98 - 0
a/shangxintiyan/list_4_1.html

@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>赏心体验_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        
+        <li><a href="/a/zuixindongtai/">最新动态</a></li>
+        <li><a href='/a/shangxintiyan/' class='on'>赏心体验</a></li>
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img3.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-viewlist">
+        <ul>
+          <li> <a href="/a/shangxintiyan/16.html" class="i wow fadeInUp">
+            <div class="img"> <img src="/uploads/allimg/200109/1-2001091034530-L.jpg" alt="古老城楼"> </div>
+            <div class="txt">
+              <h3>古老城楼</h3>
+              <p>夏棠寨,依山傍水,拥有山川、湖泊等丰富的自然资源,潜心打造绝佳的度假休闲圣地,闲时约上老友,品茗垂钓。...</p>
+            </div>
+            </a> </li><li> <a href="/a/shangxintiyan/9.html" class="i wow fadeInUp">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QIH90-L.jpg" alt="鱼飞我所欲、只愿不上钩"> </div>
+            <div class="txt">
+              <h3>鱼飞我所欲、只愿不上钩</h3>
+              <p>夏棠寨,依山傍水,拥有山川湖泊等丰富的自然资源,闲时约上老友,品茗垂钓。...</p>
+            </div>
+            </a> </li><li> <a href="/a/shangxintiyan/8.html" class="i wow fadeInUp">
+            <div class="img"> <img src="/uploads/allimg/200108/1-20010QIF50-L.jpg" alt="小憩时刻"> </div>
+            <div class="txt">
+              <h3>小憩时刻</h3>
+              <p>在春节来临之际,夏棠寨推出赏心民俗体验活动、欢迎大家前来体验乡村风光。...</p>
+            </div>
+            </a> </li>
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 87 - 0
a/zuixindongtai/10.html

@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>阳朔夏棠寨度假村首创“游居日记”推介旅游_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="阳朔,夏棠寨,度假村,首创,“,游居日记,”,离," />
+<meta name="description" content="离我们不远的地方,有个闻名天下的小城,那里有四季如春的山水美景,远离尘嚣的旖旎风光,恬谈静谧的幽静氛围,超凡脱俗的乡野情趣,异族风情的西街,琳琅如画的酒吧,善良可" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        <li><a href='/a/zuixindongtai/' class='on'>最新动态</a></li>
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>阳朔夏棠寨度假村首创“游居日记”推介旅游</h3>
+          <p>2020-01-08 17:44</p>
+        </div>
+        <div class="ct"> <p>
+	离我们不远的地方,有个闻名天下的小城,那里有四季如春的山水美景,远离尘嚣的旖旎风光,恬谈静谧的幽静氛围,超凡脱俗的乡野情趣,异族风情的西街,琳琅如画的酒吧,善良可亲的人儿,有您在这个水泥城市所梦想而又寻觅不到的一切&hellip;&hellip;&hellip;&ldquo;桂林山水甲天下,阳朔山水甲桂林&rdquo;!在这个假日请跟随我们相约同行,过几天真正属于自己的自由快乐生活,也许您还有意想不到的收获&hellip;&hellip; 深吸一口大自然最清馨的空气,掬一捧含着倒影的漓江水,一切是多么的美好!大家结绊而行,把心情放飞田野,让身心融入自然...来吧,朋友!有闲有缘阳朔见<br />
+	【活动内容】漓江揽胜、西街泡吧、漓江徒步、遇龙河漂流、溶洞探秘、洗泥巴浴、单车游乡间、吃农家饭...赏尽漓江风光,尝遍阳朔风味,领略&quot;甲天下&quot;的风情...交通工具:旅游大巴<br />
+	特别推介:阳朔十里画廊和遇龙河油菜花于3月盛开,加上烟雨漓江和梦幻西街,您还等什么呢?!!</p>
+<img alt="" src="/uploads/allimg/200108/1-20010QI936439.jpg" />&nbsp;<img alt="" src="/uploads/allimg/200108/1-20010QI943634.jpg" />
+<p>
+	【活动时间】:每周五晚七点半出发到周日晚十点回到广州,二天三夜阳朔住二晚.<br />
+	【出发时间和地点】晚上7点40分在广州天河体育中心东大门(金利来大厦对面,地铁一号线体育中心站C出口附近)集合发车,夜里1点左右半到阳朔安排酒店住宿休息,下午4点半酒店集合上车,22:00左右回到广州体育中心。 现广州-阳朔高速已经通车,全程只需五个半小时左右。<br />
+	【活动费用】&nbsp;<br />
+	A:220元/人(包含空调VCD旅游大巴来回车费和11万旅游意外险,其它费用和行程计划自理。)<br />
+	B:300元/人(包含全程空调大巴座位车费、旅游车责任险、桥路费、11万旅游意外险、景点接送费、两晚酒店住宿费、自行车租用费、活动组织费及领队费)<br />
+	C:520元/人,会员价:500元/人(包含全程空调大巴座位车费、旅游车责任险、桥路费、11万旅游意外险、景点接送费、阳朔漓江游船或竹排费、聚龙潭岩洞奇观门票费、图腾古道门票费、单车费、遇龙河漂流费、两晚酒店住宿费、一早餐费、两中餐费、活动组织费及领队费。。<br />
+	自2012年1月5日起兴坪古镇收取漓江公园大门票,价格98元,此费用不包含在活动费用内。</p>
+ </div>
+        <div class="ft">
+          <p>上一篇:没有了 </p>
+          <p>下一篇:<a href='/a/zuixindongtai/11.html'>桂林有哪些经典必去景点?哪些景点需要提前预</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 84 - 0
a/zuixindongtai/11.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>桂林有哪些经典必去景点?哪些景点需要提前预_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="桂林,有,哪些,经典,必去,景点,需要,提前,预," />
+<meta name="description" content="本人特别喜欢旅游,喜欢自己做攻略,用自己喜欢的方式去游玩,不久前刚从那边回来,说到桂林,我算是很有发言权了,前后和不同的人去过三次桂林,每次的感受都是不同的,分享" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        <li><a href='/a/zuixindongtai/' class='on'>最新动态</a></li>
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>桂林有哪些经典必去景点?哪些景点需要提前预</h3>
+          <p>2020-01-08 17:43</p>
+        </div>
+        <div class="ct"> <p>
+	本人特别喜欢旅游,喜欢自己做攻略,用自己喜欢的方式去游玩,不久前刚从那边回来,说到桂林,我算是很有发言权了,前后和不同的人去过三次桂林,每次的感受都是不同的,分享给你:</p>
+<p>
+	第一次:我带父母一起去,在我们当地组的团,价格不高,但行程太赶很累,导游还带着我们进了几个购物店,真心玩不好,而且随行的旅客和导游为了购物的事情吵架了,旅行的心情差到极点!</p>
+<p>
+	第二次:和同事一起自己去玩,要自己提前订房订票,找车,做攻略什么的,花了大量的时间并且费用过高,很自由,但很麻烦,去了阳朔包个车让司机给坑了,说好的100元到那边收了400,在苗寨买首饰2人花了1000元,后来发现有点贵。外面就值个400元&hellip;&hellip;如果楼主自己玩,切记一定要提前做好所有的功课。</p>
+<p>
+	第三次:这次和几个朋友去比前2次有心多了,也是玩的最开心的一次,还有花的费用比自己过去要少很多,我们是自己订好往返机票,提前联系了桂林当地畅享自由行的小玲子,由她全程安排了四天的行程、住宿、导游、门票、交通等,还有一天自由活动,安排的房间全是江景房,很省心也很划算,最主要的不用到处找攻略那样麻烦。</p>
+<p>
+	给大家看下我拍摄的遇龙河竹筏,绿水中的青山倒影仿若镜子一般,风景美不胜收。</p>
+ </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/zuixindongtai/10.html'>阳朔夏棠寨度假村首创“游居日记”推介旅游</a> </p>
+          <p>下一篇:<a href='/a/zuixindongtai/12.html'>百只熊猫现海口 憨态可掬惹人爱</a> </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 82 - 0
a/zuixindongtai/12.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>百只熊猫现海口 憨态可掬惹人爱_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="百只,熊猫,现,海口,憨态可掬,惹,人爱,茄子," />
+<meta name="description" content="3,2,1,茄子2020年元旦,万绿园里一块约60平方米的绿草坪上,摆满了不同形态的熊猫雕塑。百余只或坐或卧的熊猫宝宝成为一道靓丽的风景,吸引市民游客纷纷驻足观赏,拍照留念。" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        <li><a href='/a/zuixindongtai/' class='on'>最新动态</a></li>
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-article">
+        <div class="hd">
+          <h3>百只熊猫现海口 憨态可掬惹人爱</h3>
+          <p>2020-01-08 17:43</p>
+        </div>
+        <div class="ct"> &ldquo;3,2,1,茄子&hellip;&hellip;&rdquo;2020年元旦,万绿园里一块约60平方米的绿草坪上,摆满了不同形态的熊猫雕塑。百余只或坐或卧的&ldquo;熊猫宝宝&rdquo;成为一道靓丽的风景,吸引市民游客纷纷驻足观赏,拍照留念。<br />
+<br />
+&nbsp; &nbsp; 2019年12月30日至2020年1月15日,大型艺术公益活动&ldquo;1864熊猫巡展&rdquo;在海口展开,倡导公众保护大熊猫和其他野生物种,提升环保意识。<br />
+<br />
+&nbsp; &nbsp; 多款熊猫雕塑造型展出<br />
+<br />
+&nbsp; &nbsp; &ldquo;小熊猫太可爱啦,我要抱着它多拍几张照片。&rdquo;一名小朋友指着眼前的熊猫雕塑,兴奋地对她妈妈说。&ldquo;今天是元旦假期,小孩和我都放假,来万绿园时看到这边好热闹,走近一看发现有熊猫巡展,小朋友很开心可以跟熊猫雕塑合影,感觉很不错。&rdquo;小朋友的妈妈、海口市民李女士告诉记者。<br />
+<br />
+&nbsp; &nbsp; &ldquo;据全国第四次大熊猫调查数据显示,野生大熊猫数量只有1864只,&lsquo;1864熊猫巡展&rsquo;希望借此引起公众对大熊猫及其他野生动物的关注。&rdquo;世界自然基金会(瑞士)北京代表处(WWF)在中国的艺术总顾问韩美林,特别授权了多款熊猫雕塑造型,用于本次熊猫巡展的形象设计。&ldquo;我们的熊猫雕塑是通过环保纸特制而成的。&rdquo;现场的工作人员介绍,&ldquo;为了避免看展中熊猫雕塑可能被损坏,我们特地拿出10只左右的熊猫雕塑摆在旁边的木桩上,提供给市民游客拍照,方便近距离地观看和触摸。&rdquo; </div>
+        <div class="ft">
+          <p>上一篇:<a href='/a/zuixindongtai/11.html'>桂林有哪些经典必去景点?哪些景点需要提前预</a> </p>
+          <p>下一篇:没有了 </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 103 - 0
a/zuixindongtai/index.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>最新动态_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        <li><a href='/a/zuixindongtai/' class='on'>最新动态</a></li>
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img4.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-newslist">
+        <ul>
+          <li> <a href="/a/zuixindongtai/10.html" class="i"><img src="/uploads/200108/1-20010QJ040295.jpg" alt="阳朔夏棠寨度假村首创“游居日记”推介旅游">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                阳朔夏棠寨度假村首创“游居日记”推介旅游 </h3>
+              <p>离我们不远的地方,有个闻名天下的小城,那里有四季如春的山水美景,远离尘嚣的旖旎风光,恬谈静谧的幽静氛围,超凡脱俗的乡野情趣,异族风情的西街,琳琅如画的酒吧,善良可...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/zuixindongtai/11.html" class="i"><img src="/uploads/allimg/200108/1-20010QJ2140-L.jpg" alt="桂林有哪些经典必去景点?哪些景点需要提前预">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                桂林有哪些经典必去景点?哪些景点需要提前预 </h3>
+              <p>本人特别喜欢旅游,喜欢自己做攻略,用自己喜欢的方式去游玩,不久前刚从那边回来,说到桂林,我算是很有发言权了,前后和不同的人去过三次桂林,每次的感受都是不同的,分享...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/zuixindongtai/12.html" class="i"><img src="/uploads/allimg/200108/1-20010QJ3200-L.jpg" alt="百只熊猫现海口 憨态可掬惹人爱">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                百只熊猫现海口 憨态可掬惹人爱 </h3>
+              <p>3,2,1,茄子2020年元旦,万绿园里一块约60平方米的绿草坪上,摆满了不同形态的熊猫雕塑。百余只或坐或卧的熊猫宝宝成为一道靓丽的风景,吸引市民游客纷纷驻足观赏,拍照留念。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 103 - 0
a/zuixindongtai/list_3_1.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<meta name="format-detection" content="telephone=no">
+<title>最新动态_响应式民宿景区旅游类网站织梦模板(自适应手机端)</title>
+<meta name="keywords" content="" />
+<meta name="description" content="" />
+<link rel="stylesheet" type="text/css" href="/skin/css/style.css"/>
+<script src="/skin/js/script.js"></script>
+</head>
+<body style="display: none;">
+<!-------------------------------------- 头部开始 --------------------------------------> 
+<header>
+  <div class="container full-height">
+    <div class="logo"><a href="/"><img src="/skin/images/logo.png"></a></div>
+    <a class="mbtn"></a>
+    <div class="menu">
+      <ul>
+        <li><a  href="/">网站首页</a></li>
+        
+        <li><a href="/a/jingqujianjie/">景区简介</a></li>
+        
+        <li><a href="/a/jingqutese/">景区特色</a></li>
+        <li><a href='/a/zuixindongtai/' class='on'>最新动态</a></li>
+        <li><a href="/a/shangxintiyan/">赏心体验</a></li>
+        
+        <li><a href="/a/jingxinminsu/">静心民宿</a></li>
+        
+        <li><a href="/a/lianxiwomen/">联系我们</a></li>
+        
+      </ul>
+    </div>
+    <div class="foot">
+      <p class="p1"> <a href="http://wpa.qq.com/msgrd?v=3&uin=80044685&site=qq&menu=yes" class="ico ico1"></a> <a class="ico ico2"><img src="/skin/images/qbox.png"></a> <a href="https://weibo.com/" class="ico ico3"></a> </p>
+      <p class="p2">某某旅游景区有限公司 版权所有</p>
+    </div>
+  </div>
+</header>
+ 
+<!-------------------------------------- 头部结束 --------------------------------------> 
+<!-------------------------------------- 主体开始 -------------------------------------->
+<main>
+  <div class="ui-fullpart nopd">
+    <div class="ui-banner"> <img src="/skin/images/banner-img4.jpg"> </div>
+  </div>
+  <div class="ui-fullpart bg-g">
+    <div class="container">
+      <div class="ui-newslist">
+        <ul>
+          <li> <a href="/a/zuixindongtai/10.html" class="i"><img src="/uploads/200108/1-20010QJ040295.jpg" alt="阳朔夏棠寨度假村首创“游居日记”推介旅游">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                阳朔夏棠寨度假村首创“游居日记”推介旅游 </h3>
+              <p>离我们不远的地方,有个闻名天下的小城,那里有四季如春的山水美景,远离尘嚣的旖旎风光,恬谈静谧的幽静氛围,超凡脱俗的乡野情趣,异族风情的西街,琳琅如画的酒吧,善良可...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/zuixindongtai/11.html" class="i"><img src="/uploads/allimg/200108/1-20010QJ2140-L.jpg" alt="桂林有哪些经典必去景点?哪些景点需要提前预">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                桂林有哪些经典必去景点?哪些景点需要提前预 </h3>
+              <p>本人特别喜欢旅游,喜欢自己做攻略,用自己喜欢的方式去游玩,不久前刚从那边回来,说到桂林,我算是很有发言权了,前后和不同的人去过三次桂林,每次的感受都是不同的,分享...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li><li> <a href="/a/zuixindongtai/12.html" class="i"><img src="/uploads/allimg/200108/1-20010QJ3200-L.jpg" alt="百只熊猫现海口 憨态可掬惹人爱">
+            <div class="ct">
+              <h3>
+                <div class="pull-right"><small>2020-01-08</small></div>
+                百只熊猫现海口 憨态可掬惹人爱 </h3>
+              <p>3,2,1,茄子2020年元旦,万绿园里一块约60平方米的绿草坪上,摆满了不同形态的熊猫雕塑。百余只或坐或卧的熊猫宝宝成为一道靓丽的风景,吸引市民游客纷纷驻足观赏,拍照留念。...</p>
+            </div>
+            <div class="clearfix"></div>
+            </a> </li>
+        </ul>
+      </div>
+      <div class="ht50"></div>
+      <div class="ui-paging">
+        <ul>
+          <li><span class="pageinfo">共 <strong>1</strong>页<strong>3</strong>条记录</span></li>
+
+          <div class="clearfix"></div>
+        </ul>
+      </div>
+    </div>
+  </div>
+</main>
+<!-------------------------------------- 主体结束 --------------------------------------> 
+<!-------------------------------------- 尾部开始 --------------------------------------> 
+<footer>
+  <div class="container">
+    <div class="info">
+      <p><span class="pull-right"><span class="loca"><a href="/a/lianxiwomen/ ">目的地指南</a> <em>/</em>联系电话:020-88888888</span></span> <a href="/">网站首页</a> <i>|</i>  <a href="/a/jingqujianjie/">景区简介</a> <i>|</i> <a href="/a/jingqutese/">景区特色</a> <i>|</i> <a href="/a/zuixindongtai/">最新动态</a> <i>|</i> <a href="/a/shangxintiyan/">赏心体验</a> <i>|</i> <a href="/a/jingxinminsu/">静心民宿</a> <i>|</i> <a href="/a/lianxiwomen/">联系我们</a>  </p>
+    </div>
+  </div>
+</footer>
+ 
+<!-------------------------------------- 尾部开始 -------------------------------------->
+</body>
+</html>

+ 20 - 0
admin/action_search.php

@@ -0,0 +1,20 @@
+<?php
+/**
+ * 检索操作
+ *
+ * @version        $Id: action_search.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(dirname(__FILE__)."/actionsearch_class.php");
+
+//增加权限检查
+if(empty($dopost)) $dopost = "";
+
+$keyword=empty($keyword)? "" : $keyword;
+$actsearch = new ActionSearch($keyword);
+$asresult = $actsearch->Search();
+include DedeInclude('templets/action_search.htm');

+ 94 - 0
admin/actionsearch_class.php

@@ -0,0 +1,94 @@
+<?php
+/**
+ * @version        $Id: actionsearch_class.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+class ActionSearch 
+{
+    var $keyword;
+    var $asarray = array();
+    var $result    = array();
+    
+    //初始化系统
+    function ActionSearch($keyword){
+        $this->asarray = $this->GetSearchstr();
+        $this->keyword = $keyword;
+    }
+    
+    function GetSearchstr()
+    {
+        require_once(dirname(__FILE__)."/inc/inc_action_info.php");
+        return is_array($actionSearch)? $actionSearch : array();
+    }
+    
+    function search(){
+        $this->searchkeyword();
+        return $this->result;
+    }
+    
+    /**
+     *  遍历功能配置项进行关键词匹配
+     *
+     * @return    void
+     */
+    function searchkeyword(){
+        $i = 0; //数组序列索引
+        foreach ($this->asarray as $key=>$value) 
+        {
+            //对二级项目进行匹配
+            if(is_array($this->asarray[$key]['soniterm']))
+            {
+                foreach ($this->asarray[$key]['soniterm'] as $k=> $val) 
+                {
+                    //进行权限判断
+                    if(TestPurview($val['purview']))
+                    {
+                        //如果有操作权限
+                        if($this->_strpos($val['title'], $this->keyword) !== false || $this->_strpos($val['description'], $this->keyword)!== false)
+                        {
+                            //一级项目匹配
+                            $this->result[$i]['toptitle'] = $this->redColorKeyword($this->asarray[$key]['toptitle']);
+                            $this->result[$i]['title'] = $this->redColorKeyword($this->asarray[$key]['title']);
+                            $this->result[$i]['description'] = $this->redColorKeyword($this->asarray[$key]['description']);
+                            //二级项目匹配
+                            $this->result[$i]['soniterm'][] = $this->redColorKeyword($val);
+                        }
+                    }
+                }
+            }
+            $i++;
+        }
+    }
+
+    /**
+     *  加亮关键词
+     *
+     * @access    public
+     * @param     string  $text  关键词
+     * @return    string
+     */
+    function redColorKeyword($text){
+        if(is_array($text))
+        {
+            foreach ($text as $key => $value) {
+                if($key == 'title' || $key == 'description') 
+               {
+                    //仅对title,description进行数组替换
+                    $text[$key] = str_replace($this->keyword,'<font color="red">'.$this->keyword.'</font>',$text[$key]);
+               }
+            }
+        } else {
+            $text = str_replace($this->keyword,'<font color="red">'.$this->keyword.'</font>',$text);
+        }
+        return $text;
+    }
+    
+    function _strpos($string,$find) 
+    {
+        if (function_exists('stripos'))  return stripos($string,$find);
+        return strpos($string,$find);
+    }
+}

+ 98 - 0
admin/ad_add.php

@@ -0,0 +1,98 @@
+<?php
+/**
+ * 广告添加
+ *
+ * @version        $Id: ad_add.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+ 
+require(dirname(__FILE__)."/config.php");
+CheckPurview('plus_广告管理');
+require_once DEDEINC."/typelink.class.php";
+if(empty($dopost)) $dopost = "";
+
+if($dopost=="save")
+{
+    csrf_check();
+    //timeset tagname typeid normbody expbody
+    $tagname = trim($tagname);
+    $row = $dsql->GetOne("SELECT typeid FROM #@__myad WHERE typeid='$typeid' AND tagname LIKE '$tagname'");
+    if(is_array($row))
+    {
+        ShowMsg("在相同栏目下已经存在同名的标记!","-1");
+        exit();
+    }
+    $starttime = GetMkTime($starttime);
+    $endtime = GetMkTime($endtime);
+    $link = addslashes($normbody['link']);
+    if($normbody['style']=='code')
+    {
+        $normbody = addslashes($normbody['htmlcode']);
+    }
+    else if($normbody['style']=='txt')
+    {
+        
+        $normbody = "<a href=\"{$link}\" font-size=\"{$normbody['size']}\" color=\"{$normbody['color']}\">{$normbody['title']}</a>";
+    }
+    else if($normbody['style']=='img')
+    {
+        if(empty($normbody['width']))
+        {
+            $width = "";
+        }
+        else
+        {
+            $width = " width=\"{$normbody['width']}\"";
+        }
+        if (empty($normbody['height']))
+        {
+            $height = "";
+        }
+        else
+        {
+            $height = "height=\"{$normbody['height']}\"";
+        }
+        $normbody = "<a href=\"{$link}\"><img src=\"{$normbody['url']}\"$width $height border=\"0\" /></a>";
+    }
+    else
+    {
+        if(empty($normbody['width']))
+        {
+            $width = "";
+        }
+        else
+        {
+            $width = " width=\"{$normbody['width']}\"";
+        }
+        if (empty($normbody['height']))
+        {
+            $height = "";
+        }
+        else
+        {
+            $height = "height=\"{$normbody['height']}\"";
+        }
+        $normbody = "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.Macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\"$width $height><param name=\"movie\" value=\"{$link}\"/><param name=\"quality\" value=\"high\"/></object>";
+    }
+    $query = "
+     INSERT INTO #@__myad(clsid,typeid,tagname,adname,timeset,starttime,endtime,normbody,expbody)
+     VALUES('$clsid','$typeid','$tagname','$adname','$timeset','$starttime','$endtime','$normbody','$expbody');
+    ";
+    $dsql->ExecuteNoneQuery($query);
+    ShowMsg("成功增加一个广告!","ad_main.php");
+    exit();
+}
+$dsql->Execute('dd','SELECT * FROM `#@__myadtype` ORDER BY id DESC');
+$option = '';
+while($arr = $dsql->GetArray('dd'))
+{
+    $option .= "<option value='{$arr['id']}'>{$arr['typename']}</option>\n\r";
+}
+$startDay = time();
+$endDay = AddDay($startDay,30);
+$startDay = GetDateTimeMk($startDay);
+$endDay = GetDateTimeMk($endDay);
+include DedeInclude('templets/ad_add.htm');

+ 88 - 0
admin/ad_edit.php

@@ -0,0 +1,88 @@
+<?php
+/**
+ * 广告编辑
+ *
+ * @version        $Id: ad_edit.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require(dirname(__FILE__)."/config.php");
+CheckPurview('plus_广告管理');
+require_once(DEDEINC.'/typelink.class.php');
+if(empty($dopost)) $dopost = '';
+$aid = preg_replace("#[^0-9]#", '', $aid);
+$ENV_GOBACK_URL = empty($_COOKIE['ENV_GOBACK_URL']) ? "ad_main.php" : $_COOKIE['ENV_GOBACK_URL'];
+
+if($dopost=='delete')
+{
+    $dsql->ExecuteNoneQuery("DELETE FROM `#@__myad` WHERE aid='$aid' ");
+    ShowMsg("成功删除一则广告代码!",$ENV_GOBACK_URL);
+    exit();
+}
+else if($dopost=="gettag")
+{
+    require_once(DEDEINC.'/oxwindow.class.php');
+    $jscode = "<script src='{$cfg_phpurl}/ad_js.php?aid=$aid' language='javascript'></script>";
+    $showhtml = "<xmp style='color:#333333;background-color:#ffffff'>\r\n\r\n$jscode\r\n\r\n</xmp>";
+    $showhtml .= "预览:<iframe name='testfrm' frameborder='0' src='ad_edit.php?aid={$aid}&dopost=testjs' id='testfrm' width='100%' height='200'></iframe>";
+    $row = $dsql->GetOne("SELECT tagname from `#@__myad` WHERE aid='$aid' ");
+    
+    $showtag = '{'."dede:myad name='{$row['tagname']}'/".'}';
+    $info = "<b>说明:</b>如果嵌入的是织梦CMS广告标签,那么将会解析成标签中的内容到页面,广告更改后需要重新生成。<br />
+    如果不希望重新生成所有页面,则直接调用JS代码即可。
+    ";
+    $wintitle = "广告管理-获取广告标签";
+    $wecome_info = "<a href='ad_main.php'><u>广告管理</u></a>::获取JS";
+    $win = new OxWindow();
+    $win->Init();
+    $winform = $win->GetWindow("hand",$info);
+    $win->AddTitle("织梦CMS标签调用代码:");
+    $winform = $win->GetWindow("hand",$showtag);
+    $win->myWinItem = '';
+    $win->AddTitle("以下为选定广告的JS调用代码:");
+    $winform = $win->GetWindow("hand",$showhtml);
+    $win->Display();
+    exit();
+}
+else if($dopost=='testjs')
+{
+    echo "<script src='{$cfg_phpurl}/ad_js.php?aid=$aid&nocache=1' language='javascript'></script>";
+    exit();
+}
+else if($dopost=='saveedit')
+{
+    csrf_check();
+    $starttime = GetMkTime($starttime);
+    $endtime = GetMkTime($endtime);
+    $query = "UPDATE `#@__myad`
+     SET
+     clsid='$clsid',
+     typeid='$typeid',
+     adname='$adname',
+     timeset='$timeset',
+     starttime='$starttime',
+     endtime='$endtime',
+     normbody='$normbody',
+     expbody='$expbody'
+     WHERE aid='$aid'
+     ";
+    $dsql->ExecuteNoneQuery($query);
+    ShowMsg("成功更改一则广告代码!",$ENV_GOBACK_URL);
+    exit();
+}
+
+$row = $dsql->GetOne("SELECT * FROM `#@__myad` WHERE aid='$aid'");
+$dsql->Execute('dd','SELECT * FROM `#@__myadtype` ORDER BY id DESC');
+$option = '';
+while($arr = $dsql->GetArray('dd'))
+{
+    if ($arr['id'] == $row['clsid'])
+    {
+        $option .= "<option value='{$arr['id']}' selected='selected'>{$arr['typename']}</option>\n\r";
+    } else {
+        $option .= "<option value='{$arr['id']}'>{$arr['typename']}</option>\n\r";
+    }
+}
+include DedeInclude('templets/ad_edit.htm');

+ 67 - 0
admin/ad_main.php

@@ -0,0 +1,67 @@
+<?php
+/**
+ * 广告管理
+ *
+ * @version        $Id: ad_main.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+require_once(DEDEINC.'/datalistcp.class.php');
+require_once(DEDEINC.'/common.func.php');
+setcookie('ENV_GOBACK_URL',$dedeNowurl,time()+3600,'/');
+
+$clsid = isset($clsid)? intval($clsid) : 0;
+$keyword = isset($keyword)? addslashes($keyword) : '';
+
+$dsql->Execute('dd','SELECT * FROM `#@__myadtype` ORDER BY id DESC');
+$option = '';
+while($arr = $dsql->GetArray('dd'))
+{
+    if ($arr['id'] == $clsid)
+    {
+        $option .= "<option value='{$arr['id']}' selected='selected'>{$arr['typename']}</option>\n\r";
+    } else {
+        $option .= "<option value='{$arr['id']}'>{$arr['typename']}</option>\n\r";
+    }
+}
+$where_sql = ' 1=1';
+if($clsid!=0) $where_sql .= " AND clsid = $clsid";
+if($keyword!='') $where_sql .= " AND (ad.adname like '%$keyword%') ";
+
+$sql = "SELECT ad.aid,ad.clsid,ad.tagname,tp.typename as typename,ad.adname,ad.timeset,ad.endtime,ap.typename as clsname
+FROM `#@__myad` ad 
+LEFT JOIN `#@__arctype` tp on tp.id=ad.typeid 
+LEFT JOIN `#@__myadtype` ap on ap.id=ad.clsid
+WHERE $where_sql
+ORDER BY ad.aid desc";
+$dlist = new DataListCP();
+$dlist->SetTemplet(DEDEADMIN."/templets/ad_main.htm");
+$dlist->SetSource($sql);
+$dlist->display();
+
+function TestType($tname, $type="")
+{
+    if($tname=="")
+    {
+        return ($type == 1)? "默认分类" : "所有栏目";
+    }
+    else
+    {
+        return $tname;
+    }
+}
+
+function TimeSetValue($ts)
+{
+    if($ts==0)
+    {
+        return "不限时间";
+    }
+    else
+    {
+        return "限时标记";
+    }
+}

+ 49 - 0
admin/adtype_main.php

@@ -0,0 +1,49 @@
+<?php
+/**
+ * 友情链接类型
+ *
+ * @version        $Id: friendlink_type.php 1 8:48 2010年7月13日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+if(empty($dopost)) $dopost = '';
+
+//保存更改
+if($dopost=="save")
+{
+    $startID = 1;
+    $endID = $idend;
+    for(;$startID<=$endID;$startID++)
+    {
+        $query = '';
+        $tid = ${'ID_'.$startID};
+        $pname =   ${'pname_'.$startID};
+        if(isset(${'check_'.$startID}))
+        {
+            if($pname!='')
+            {
+                $query = "UPDATE `#@__myadtypee` SET typename='$pname' WHERE id='$tid' ";
+                $dsql->ExecuteNoneQuery($query);
+            }
+        }
+        else
+        {
+            $query = "DELETE FROM `#@__myadtype` WHERE id='$tid' ";
+            $dsql->ExecuteNoneQuery($query);
+        }
+    }
+    //增加新记录
+    if(isset($check_new) && $pname_new!='')
+    {
+        $query = "INSERT INTO `#@__myadtype`(typename) VALUES('{$pname_new}');";
+        $dsql->ExecuteNoneQuery($query);
+    }
+    header("Content-Type: text/html; charset={$cfg_soft_lang}");
+    ShowMsg("成功更新广告分类列表!", 'adtype_main.php');
+    exit;
+}
+
+include DedeInclude('templets/adtype_main.htm');

+ 384 - 0
admin/album_add.php

@@ -0,0 +1,384 @@
+<?php
+/**
+ * 图集发布
+ *
+ * @version        $Id: album_add.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('a_New,a_AccNew');
+require_once(DEDEINC."/customfields.func.php");
+require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+
+if(empty($dopost)) $dopost = '';
+
+if($dopost != 'save')
+{
+    require_once(DEDEINC."/dedetag.class.php");
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    ClearMyAddon();
+    $channelid = empty($channelid) ? 0 : intval($channelid);
+    $cid = empty($cid) ? 0 : intval($cid);
+
+    //获得频道模型ID
+    if($cid>0 && $channelid==0)
+    {
+        $row = $dsql->GetOne("SELECT channeltype FROM `#@__arctype` WHERE id='$cid'; ");
+        $channelid = $row['channeltype'];
+    }
+    else
+    {
+        if($channelid==0) $channelid = 2;
+    }
+
+    //获得频道模型信息
+    $cInfos = $dsql->GetOne(" SELECT * FROM  `#@__channeltype` WHERE id='$channelid' ");
+    $channelid = $cInfos['id'];
+    
+    //获取文章最大id以确定当前权重
+    $maxWright = $dsql->GetOne("SELECT COUNT(*) AS cc FROM #@__archives");
+    include DedeInclude("templets/album_add.htm");
+    exit();
+}
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+    
+    $flag = isset($flags) ? join(',',$flags) : '';
+    $notpost = isset($notpost) && $notpost == 1 ? 1: 0;
+    if(empty($click)) $click = ($cfg_arc_click=='-1' ? mt_rand(50, 200) : $cfg_arc_click);
+    
+    if(!isset($typeid2)) $typeid2 = 0;
+    if(!isset($autokey)) $autokey = 0;
+    if(!isset($remote)) $remote = 0;
+    if(!isset($dellink)) $dellink = 0;
+    if(!isset($autolitpic)) $autolitpic = 0;
+    if(!isset($formhtml)) $formhtml = 0;
+    if(!isset($formzip)) $formzip = 0;
+    if(!isset($ddisfirst)) $ddisfirst = 0;
+    if(!isset($delzip)) $delzip = 0;
+    if(empty($click)) $click = ($cfg_arc_click=='-1' ? mt_rand(50, 200) : $cfg_arc_click);
+
+    if($typeid==0)
+    {
+        ShowMsg("请指定文档的栏目!", "-1");
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg("文档为非指定的类型,请检查你发布内容的表单是否合法!","-1");
+        exit();
+    }
+    if(!CheckChannel($typeid,$channelid) )
+    {
+        ShowMsg("你所选择的栏目与当前模型不相符,请选择白色的选项!","-1");
+        exit();
+    }
+    if(!TestPurview('a_New'))
+    {
+        CheckCatalog($typeid,"对不起,你没有操作栏目 {$typeid} 的权限!");
+    }
+
+    //对保存的内容进行处理
+    if(empty($writer))$writer=$cuserLogin->getUserName();
+    if(empty($source))$source='未知';
+    $pubdate = GetMkTime($pubdate);
+    $senddate = time();
+    $sortrank = AddDay($pubdate,$sortup);
+    $ismake = $ishtml==0 ? -1 : 0;
+    $title = preg_replace("#\"#", '"', $title);
+    $title = cn_substrR($title,$cfg_title_maxlen);
+    $shorttitle = cn_substrR($shorttitle,36);
+    $color =  cn_substrR($color,7);
+    $writer =  cn_substrR($writer,20);
+    $source = cn_substrR($source,30);
+    $description = cn_substrR($description,$cfg_auot_description);
+    $keywords = cn_substrR($keywords,60);
+    $filename = trim(cn_substrR($filename,40));
+    $userip = GetIP();
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck'))
+    {
+        $arcrank = -1;
+    }
+    $adminid = $cuserLogin->getUserID();
+
+    //处理上传的缩略图
+    if(empty($ddisremote))
+    {
+        $ddisremote = 0;
+    }
+    $litpic = GetDDImage('none',$picname,$ddisremote);
+
+    //使用第一张图作为缩略图
+    if($ddisfirst==1 && $litpic=='')
+    {
+        if(isset($imgurl1))
+        {
+            $litpic = GetDDImage('ddfirst', $imgurl1, $isrm);
+        }
+    }
+    
+
+    //生成文档ID
+    $arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
+    if(empty($arcID))
+    {
+        ShowMsg("无法获得主键,因此无法进行后续操作!","-1");
+        exit();
+    }
+
+    $imgurls = "{dede:pagestyle maxwidth='$maxwidth' pagepicnum='$pagepicnum' ddmaxwidth='$ddmaxwidth' row='$row' col='$col' value='$pagestyle'/}\r\n";
+    $hasone = FALSE;
+
+    //处理并保存从网上复制的图片
+    /*---------------------
+    function _getformhtml()
+    ------------------*/
+    if($formhtml==1)
+    {
+        $imagebody = stripslashes($imagebody);
+        $imgurls .= GetCurContentAlbum($imagebody,$copysource,$litpicname);
+        if($ddisfirst==1 && $litpic=='' && !empty($litpicname))
+        {
+            $litpic = $litpicname;
+            $hasone = TRUE;
+        }
+    }
+    /*---------------------
+    function _getformzip()
+    处理从ZIP中解压的图片
+    ---------------------*/
+    if($formzip==1)
+    {
+        include_once(DEDEINC."/zip.class.php");
+        include_once(DEDEADMIN."/file_class.php");
+        $zipfile = $cfg_basedir.str_replace($cfg_mainsite,'',$zipfile);
+        $tmpzipdir = DEDEDATA.'/ziptmp/'.cn_substr(md5(ExecTime()),16);
+        $ntime = time();
+        if(file_exists($zipfile))
+        {
+            @mkdir($tmpzipdir,$GLOBALS['cfg_dir_purview']);
+            @chmod($tmpzipdir,$GLOBALS['cfg_dir_purview']);
+            $z = new zip();
+            $z->ExtractAll($zipfile,$tmpzipdir);
+            $fm = new FileManagement();
+            $imgs = array();
+            $fm->GetMatchFiles($tmpzipdir,"jpg|png|gif",$imgs);
+            $i = 0;
+            foreach($imgs as $imgold)
+            {
+                $i++;
+                $savepath = $cfg_image_dir."/".MyDate("Y-m",$ntime);
+                CreateDir($savepath);
+                $iurl = $savepath."/".MyDate("d",$ntime).dd2char(MyDate("His",$ntime).'-'.$adminid."-{$i}".mt_rand(1000,9999));
+                $iurl = $iurl.substr($imgold,-4,4);
+                $imgfile = $cfg_basedir.$iurl;
+                copy($imgold,$imgfile);
+                unlink($imgold);
+
+                if(is_file($imgfile))
+                {
+                    $litpicname = $pagestyle > 2 ? GetImageMapDD($iurl,$cfg_ddimg_width) : $iurl;
+                    //指定了提取第一张为缩略图的情况强制使用第一张缩略图
+                    if($i=='1')
+                    {
+                        if(!$hasone && $ddisfirst==1 && $litpic=='' && empty($litpicname))
+                        {
+                            $litpicname = GetImageMapDD($iurl,$cfg_ddimg_width);
+                        }
+                    }
+                    $info = '';
+                    $imginfos = GetImageSize($imgfile,$info);
+                    $imgurls .= "{dede:img ddimg='$litpicname' text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";
+
+                    //把图片信息保存到媒体文档管理档案中
+                    $inquery = "
+                   INSERT INTO #@__uploads(title,url,mediatype,width,height,playtime,filesize,uptime,mid)
+                    VALUES ('{$title}','{$iurl}','1','".$imginfos[0]."','".$imginfos[1]."','0','".filesize($imgfile)."','".$ntime."','$adminid');
+                 ";
+                    $dsql->ExecuteNoneQuery($inquery);
+                    $fid = $dsql->GetLastID();
+                    AddMyAddon($fid, $iurl);
+                    
+                    WaterImg($imgfile, 'up');
+
+                    if(!$hasone && $ddisfirst==1 && $litpic=='')
+                    {
+                        if(empty($litpicname))
+                        {
+                            $litpicname = $iurl;
+                            $litpicname = GetImageMapDD($iurl, $cfg_ddimg_width);
+                        }
+                        $litpic = $litpicname;
+                        $hasone = TRUE;
+                    }
+                }
+            }
+            if($delzip==1) unlink($zipfile);
+            $fm->RmDirFiles($tmpzipdir);
+        }
+    }
+    /*---------------------
+    function _getformupload()
+    通过swfupload正常上传的图片
+    ---------------------*/
+    if(is_array($_SESSION['bigfile_info']))
+    {
+        foreach($_SESSION['bigfile_info'] as $k=>$v)
+        {
+            $truefile = $cfg_basedir.$v;
+            if(strlen($v)<2 || !file_exists($truefile)) continue;
+            $info = '';
+            $imginfos = GetImageSize($truefile, $info);
+            $litpicname = $pagestyle > 2 ? GetImageMapDD($v, $cfg_ddimg_width) : '';
+            if(!$hasone && $ddisfirst==1 && $litpic=='')
+            {
+                 $litpic = empty($litpicname) ? GetImageMapDD($v, $cfg_ddimg_width) : $litpicname;
+                 $hasone = TRUE;
+            }
+            $imginfo =  !empty(${'picinfook'.$k}) ? ${'picinfook'.$k} : '';
+            $imgurls .= "{dede:img ddimg='$v' text='$imginfo' width='".$imginfos[0]."' height='".$imginfos[1]."'} $v {/dede:img}\r\n";
+        }
+    }
+
+    $imgurls = addslashes($imgurls);
+    
+    //处理body字段自动摘要、自动提取缩略图等
+    $body = AnalyseHtmlBody($body,$description,$litpic,$keywords,'htmltext');
+
+    //分析处理附加表数据
+    $inadd_f = '';
+    $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';',$dede_addonfields);
+        $inadd_f = '';
+        $inadd_v = '';
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='')
+                {
+                    continue;
+                }
+                $vs = explode(',',$v);
+                if(!isset(${$vs[0]}))
+                {
+                    ${$vs[0]} = '';
+                }
+                else if($vs[1]=='htmltext'||$vs[1]=='textdata') //HTML文本特殊处理
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
+                }
+                else
+                {
+                    if(!isset(${$vs[0]}))
+                    {
+                        ${$vs[0]} = '';
+                    }
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$arcID);
+                }
+                $inadd_f .= ','.$vs[0];
+                $inadd_v .= " ,'".${$vs[0]}."' ";
+            }
+        }
+    }
+
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+    if($redirecturl!='' && !preg_match("#j#", $flag))
+    {
+        $flag = ($flag=='' ? 'j' : $flag.',j');
+    }
+
+    //跳转网址的文档强制为动态
+    if(preg_match("#j#", $flag)) $ismake = -1;
+    //加入主档案表
+    $query = "INSERT INTO `#@__archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
+     color,writer,source,litpic,pubdate,senddate,mid,notpost,description,keywords,filename,dutyadmin,weight)
+    VALUES ('$arcID','$typeid','$typeid2','$sortrank','$flag','$ismake','$channelid','$arcrank','$click','$money','$title','$shorttitle',
+    '$color','$writer','$source','$litpic','$pubdate','$senddate','$adminid','$notpost','$description','$keywords','$filename','$adminid','$weight'); ";
+    if(!$dsql->ExecuteNoneQuery($query))
+    {
+        $gerr = $dsql->GetError();
+        $dsql->ExecuteNoneQuery(" DELETE FROM `#@__arctiny` WHERE id='$arcID' ");
+        ShowMsg("把数据保存到数据库主表 `#@__archives` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
+        exit();
+    }
+
+    //加入附加表
+    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if(empty($addtable))
+    {
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__archives` WHERE id='$arcID'");
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
+        ShowMsg("没找到当前模型[{$channelid}]的主表信息,无法完成操作!。","javascript:;");
+        exit();
+    }
+    $useip = GetIP();
+    $query = "INSERT INTO `$addtable`(aid,typeid,redirecturl,userip,pagestyle,maxwidth,imgurls,row,col,isrm,ddmaxwidth,pagepicnum,body{$inadd_f})
+         Values('$arcID','$typeid','$redirecturl','$useip','$pagestyle','$maxwidth','$imgurls','$row','$col','$isrm','$ddmaxwidth','$pagepicnum','$body'{$inadd_v}); ";
+    if(!$dsql->ExecuteNoneQuery($query))
+    {
+        $gerr = $dsql->GetError();
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__archives` WHERE id='$arcID'");
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
+        ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCMS官方。".str_replace('"','',$gerr),"javascript:;");
+        exit();
+    }
+
+    //生成HTML
+    InsertTags($tags,$arcID);
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!=""){
+            list($servurl,$servuser,$servpwd) = explode(',',$serviterm);
+            $config=array( 'hostname' => $servurl, 'username' => $servuser, 'password' => $servpwd,'debug' => 'TRUE');
+        }else{
+            $config=array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+    $artUrl = MakeArt($arcID, TRUE, TRUE, $isremote);
+    if($artUrl=='')
+    {
+        $artUrl = $cfg_phpurl."/view.php?aid=$arcID";
+    }
+    ClearMyAddon($arcID, $title);
+    //返回成功信息
+    $msg = "
+      请选择你的后续操作:
+    <a href='album_add.php?cid=$typeid'><u>继续发布图片</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改图集</u></a>
+    &nbsp;&nbsp;
+    <a href='$artUrl' target='_blank'><u>预览文档</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布图片管理</u></a>
+    &nbsp;&nbsp;
+    $backurl
+   ";
+  $msg = "<div style=\"line-height:36px;height:36px\">{$msg}</div>".GetUpdateTest();
+    
+    $wintitle = "成功发布一个图集!";
+    $wecome_info = "文章管理::发布图集";
+    $win = new OxWindow();
+    $win->AddTitle("成功发布一个图集:");
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand","&nbsp;",FALSE);
+    $win->Display();
+}

+ 433 - 0
admin/album_edit.php

@@ -0,0 +1,433 @@
+<?php
+/**
+ * 图集编辑
+ *
+ * @version        $Id: album_edit.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('a_Edit,a_AccEdit,a_MyEdit');
+require_once(DEDEINC."/customfields.func.php");
+require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+
+if(empty($dopost)) $dopost = '';
+
+if($dopost!='save')
+{
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    require_once(DEDEINC."/dedetag.class.php");
+    ClearMyAddon();
+    $aid = intval($aid);
+
+    //读取归档信息
+    $arcQuery = "SELECT ch.typename as channelname,ar.membername as rankname,arc.*
+    FROM `#@__archives` arc
+    LEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel
+    LEFT JOIN `#@__arcrank` ar ON ar.rank=arc.arcrank WHERE arc.id='$aid' ";
+    $arcRow = $dsql->GetOne($arcQuery);
+    if(!is_array($arcRow))
+    {
+        ShowMsg("读取档案基本信息出错!","-1");
+        exit();
+    }
+    $query = "SELECT * FROM `#@__channeltype` WHERE id='".$arcRow['channel']."'";
+    $cInfos = $dsql->GetOne($query);
+    if(!is_array($cInfos))
+    {
+        ShowMsg("读取频道配置信息出错!","javascript:;");
+        exit();
+    }
+    $addtable = $cInfos['addtable'];
+    $addRow = $dsql->GetOne("SELECT * FROM `$addtable` WHERE aid='$aid'");
+    $channelid = $arcRow['channel'];
+    $imgurls = $addRow["imgurls"];
+    $maxwidth = $addRow["maxwidth"];
+    $pagestyle = $addRow["pagestyle"];
+    $irow = $addRow["row"];
+    $icol = $addRow["col"];
+    $isrm = $addRow["isrm"];
+    $body = $addRow["body"];
+    $ddmaxwidth = $addRow["ddmaxwidth"];
+    $pagepicnum = $addRow["pagepicnum"];
+    $tags = GetTags($aid);
+    $arcRow=XSSClean($arcRow);$addRow=XSSClean($addRow);
+    include DedeInclude("templets/album_edit.htm");
+    exit();
+}
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+
+    $flag = isset($flags) ? join(',', $flags) : '';
+    $notpost = isset($notpost) && $notpost == 1 ? 1: 0;
+    if(empty($typeid2)) $typeid2 = 0;
+    if(!isset($autokey)) $autokey = 0;
+    if(!isset($remote)) $remote = 0;
+    if(!isset($dellink)) $dellink = 0;
+    if(!isset($autolitpic)) $autolitpic = 0;
+    if(!isset($formhtml)) $formhtml = 0;
+    if(!isset($formzip)) $formzip = 0;
+    if(!isset($ddisfirst)) $ddisfirst = 0;
+    if(!isset($delzip)) $delzip = 0;
+
+    if($typeid==0)
+    {
+        ShowMsg("请指定文档的栏目!","-1");
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg("文档为非指定的类型,请检查你发布内容的表单是否合法!","-1");
+        exit();
+    }
+    if(!CheckChannel($typeid,$channelid))
+    {
+        ShowMsg("你所选择的栏目与当前模型不相符,请选择白色的选项!","-1");
+        exit();
+    }
+    if(!TestPurview('a_Edit'))
+    {
+        if(TestPurview('a_AccEdit'))
+        {
+            CheckCatalog($typeid,"对不起,你没有操作栏目 {$typeid} 的文档权限!");
+        }
+        else
+        {
+            CheckArcAdmin($id,$cuserLogin->getUserID());
+        }
+    }
+
+    //对保存的内容进行处理
+    $pubdate = GetMkTime($pubdate);
+    $sortrank = AddDay($pubdate,$sortup);
+    $ismake = $ishtml==0 ? -1 : 0;
+    $title = cn_substrR($title,$cfg_title_maxlen);
+    $shorttitle = cn_substrR($shorttitle,36);
+    $color =  cn_substrR($color,7);
+    $writer =  cn_substrR($writer,20);
+    $source = cn_substrR($source,30);
+    $description = cn_substrR($description,250);
+    $keywords = trim(cn_substrR($keywords,60));
+    $filename = trim(cn_substrR($filename,40));
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck'))
+    {
+        $arcrank = -1;
+    }
+    $adminid = $cuserLogin->getUserID();
+
+    //处理上传的缩略图
+    if(empty($ddisremote))
+    {
+        $ddisremote = 0;
+    }
+    $litpic = GetDDImage('none', $picname, $ddisremote);
+    
+    //分析body里的内容
+    $body = AnalyseHtmlBody($body, $description, $litpic, $keywords, 'htmltext');
+
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+    if($redirecturl!='' && !preg_match("#j#", $flag))
+    {
+        $flag = ($flag=='' ? 'j' : $flag.',j');
+    }
+
+    //跳转网址的文档强制为动态
+    if(preg_match("#j#", $flag)) $ismake = -1;
+    
+    //更新数据库的SQL语句
+    $query = "
+    UPDATE `#@__archives` SET
+    typeid='$typeid',
+    typeid2='$typeid2',
+    sortrank='$sortrank',
+    flag='$flag',
+    click='$click',
+    ismake='$ismake',
+    arcrank='$arcrank',
+    money='$money',
+    title='$title',
+    color='$color',
+    source='$source',
+    writer='$writer',
+    litpic='$litpic',
+    pubdate='$pubdate',
+    notpost='$notpost',
+    description='$description',
+    keywords='$keywords',
+    shorttitle='$shorttitle',
+    filename='$filename',
+    dutyadmin='$adminid'
+    WHERE id='$id'; ";
+
+    if(!$dsql->ExecuteNoneQuery($query))
+    {
+        ShowMsg("更新数据库archives表时出错,请检查!".$dsql->GetError(),"javascript:;");
+        exit();
+    }
+
+    $imgurls = "{dede:pagestyle maxwidth='$maxwidth' pagepicnum='$pagepicnum' ddmaxwidth='$ddmaxwidth' row='$row' col='$col' value='$pagestyle'/}\r\n";
+    $hasone = false;
+
+    //----------------------------------------
+    //检查旧的图片是否有更新,并保存
+    //-----------------------------------------
+    for($i=1; $i<=120; $i++)
+    {
+        if( !isset(${'imgurl'.$i}) ) continue;
+        $info = '';
+        $iinfo = str_replace("'", "`", stripslashes(${'imgmsg'.$i}));
+        $iurl = stripslashes(${'imgurl'.$i});
+        $ddurl = stripslashes(${'imgddurl'.$i});
+        if(preg_match("#swfupload#i", $ddurl)) $ddurl = '';
+        $imgfile = $cfg_basedir.$iurl;
+        $litimgfile = $cfg_basedir.$ddurl;
+        //有上传文件的情况
+        if( isset(${'imgfile'.$i}) && is_uploaded_file(${'imgfile'.$i}) )
+        {
+            $tmpFile = ${'imgfile'.$i};
+            //检测上传的图片, 如果类型不对,保留原来图片
+            $imginfos = @GetImageSize($tmpFile, $info);
+            if(!is_array($imginfos))
+            {
+                $imginfos = @GetImageSize($imgfile, $info);
+                $imgurls .= "{dede:img ddimg='$ddurl' text='$iinfo' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";
+                continue;
+            }
+            move_uploaded_file($tmpFile, $imgfile);
+            $imginfos = @GetImageSize($imgfile, $info);
+            if($ddurl==$iurl)
+            {
+                $litpicname = $pagestyle > 2 ? GetImageMapDD($iurl, $cfg_ddimg_width) : $iurl;
+                $litimgfile = $cfg_basedir.$litpicname;
+            }
+            else
+            {
+                if($cfg_ddimg_full=='Y') ImageResizeNew($imgfile, $cfg_ddimg_width, $cfg_ddimg_height, $litimgfile);
+                else ImageResize($imgfile, $cfg_ddimg_width, $cfg_ddimg_height, $litimgfile);
+                $litpicname = $ddurl;
+            }
+            $imgurls .= "{dede:img ddimg='$litpicname' text='$iinfo' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";
+        }
+        //没上传图片(只修改msg信息)
+        else
+        {
+            $iinfo = str_replace("'", "`", stripslashes(${'imgmsg'.$i}));
+            $iurl = stripslashes(${'imgurl'.$i});
+            $ddurl = stripslashes(${'imgddurl'.$i});
+            if(preg_match("#swfupload#i", $ddurl))
+            {
+                $ddurl = $pagestyle > 2 ? GetImageMapDD($iurl, $cfg_ddimg_width) : $iurl;
+            }
+            $imginfos = @GetImageSize($imgfile, $info);
+            $imgurls .= "{dede:img ddimg='$ddurl' text='$iinfo' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";
+        }
+    }
+
+    //----------------------------
+    //从HTML中获取新图片
+    //----------------------------
+    if($formhtml==1 && !empty($imagebody))
+    {
+        $imagebody = stripslashes($imagebody);
+        $imgurls .= GetCurContentAlbum($imagebody,$copysource,$litpicname);
+        if($ddisfirst==1 && $litpic=="" && !empty($litpicname))
+        {
+            $litpic = $litpicname;
+            $hasone = true;
+        }
+    }
+    /*---------------------
+    function _getformzip()
+    从ZIP文件中获取新图片
+    ---------------------*/
+    if($formzip==1)
+    {
+        include_once(DEDEINC."/zip.class.php");
+        include_once(DEDEADMIN."/file_class.php");
+        $zipfile = $cfg_basedir.str_replace($cfg_mainsite,'',$zipfile);
+        $tmpzipdir = DEDEDATA.'/ziptmp/'.cn_substr(md5(ExecTime()),16);
+        $ntime = time();
+        if(file_exists($zipfile))
+        {
+
+            @mkdir($tmpzipdir,$GLOBALS['cfg_dir_purview']);
+            @chmod($tmpzipdir,$GLOBALS['cfg_dir_purview']);
+            $z = new zip();
+            $z->ExtractAll($zipfile,$tmpzipdir);
+            $fm = new FileManagement();
+            $imgs = array();
+            $fm->GetMatchFiles($tmpzipdir,"jpg|png|gif",$imgs);
+            $i = 0;
+            foreach($imgs as $imgold)
+            {
+                $i++;
+                $savepath = $cfg_image_dir."/".MyDate("Y-m",$ntime);
+                CreateDir($savepath);
+                $iurl = $savepath."/".MyDate("d",$ntime).dd2char(MyDate("His",$ntime).'-'.$adminid."-{$i}".mt_rand(1000,9999));
+                $iurl = $iurl.substr($imgold,-4,4);
+                $imgfile = $cfg_basedir.$iurl;
+                copy($imgold,$imgfile);
+                unlink($imgold);
+                if(is_file($imgfile))
+                {
+                    $litpicname = $pagestyle > 2 ? GetImageMapDD($iurl,$cfg_ddimg_width) : $iurl;
+                    $info = '';
+                    $imginfos = GetImageSize($imgfile,$info);
+                    $imgurls .= "{dede:img ddimg='$litpicname' text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}\r\n";
+
+                    //把图片信息保存到媒体文档管理档案中
+                    $inquery = "
+                   INSERT INTO #@__uploads(title,url,mediatype,width,height,playtime,filesize,uptime,mid)
+                    VALUES ('{$title}','{$iurl}','1','".$imginfos[0]."','".$imginfos[1]."','0','".filesize($imgfile)."','".$ntime."','$adminid');
+                 ";
+                    $dsql->ExecuteNoneQuery($inquery);
+                    if(!$hasone && $ddisfirst==1
+                    && $litpic=="" && !empty($litpicname))
+                    {
+                        if( file_exists($cfg_basedir.$litpicname) )
+                        {
+                            $litpic = $litpicname;
+                            $hasone = true;
+                        }
+                    }
+                }
+            }
+            if($delzip==1)
+            {
+                unlink($zipfile);
+            }
+            $fm->RmDirFiles($tmpzipdir);
+        }
+    }
+    /*---------------------
+    function _swfupload()
+    通过swfupload上传的新图片
+    ---------------------*/
+    if(is_array($_SESSION['bigfile_info']))
+    {
+        foreach($_SESSION['bigfile_info'] as $k=>$v)
+        {
+            $truefile = $cfg_basedir.$v;
+            if(strlen($v)<2 || !file_exists($truefile)) continue;
+            $info = '';
+            $imginfos = GetImageSize($truefile, $info);
+            $litpicname = $pagestyle > 2 ? GetImageMapDD($v, $cfg_ddimg_width) : $v;
+            $imginfo =  !empty(${'picinfook'.$k}) ? ${'picinfook'.$k} : '';
+            $imgurls .= "{dede:img ddimg='$litpicname' text='$imginfo' width='".$imginfos[0]."' height='".$imginfos[1]."'} $v {/dede:img}\r\n";
+        }
+    }
+    
+    $imgurls = addslashes($imgurls);
+
+    //分析处理附加表数据
+    $inadd_f = '';
+    $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';', $dede_addonfields);
+        $inadd_f = '';
+        $inadd_v = '';
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='')
+                {
+                    continue;
+                }
+                $vs = explode(',',$v);
+                if($vs[1]=='htmltext'||$vs[1]=='textdata') //HTML文本特殊处理
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
+                }else{
+                    if(!isset(${$vs[0]}))
+                    {
+                        ${$vs[0]} = '';
+                    }
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$id);
+                }
+                $inadd_f .= ",`{$vs[0]}` = '".${$vs[0]}."'";
+            }
+        }
+    }
+
+    //更新附加表
+    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if($addtable!='')
+    {
+        $useip = GetIP();
+        $query = "Update `$addtable`
+          set typeid='$typeid',
+          pagestyle='$pagestyle',
+        body='$body',
+          maxwidth = '$maxwidth',
+          ddmaxwidth = '$ddmaxwidth',
+          pagepicnum = '$pagepicnum',
+          imgurls='$imgurls',
+          row='$row',
+          col='$col',
+          isrm='$isrm'{$inadd_f},
+          redirecturl='$redirecturl',
+          userip = '$useip'
+        WHERE aid='$id'; ";
+        if(!$dsql->ExecuteNoneQuery($query))
+        {
+            ShowMsg("更新附加表 `$addtable` 时出错,请检查原因!".$dsql->GetError(),"javascript:;");
+            exit();
+        }
+    }
+
+    //生成HTML
+    UpIndexKey($id,$arcrank,$typeid,$sortrank,$tags);
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!=""){
+            list($servurl,$servuser,$servpwd) = explode(',',$serviterm);
+            $config=array( 'hostname' => $servurl, 'username' => $servuser, 'password' => $servpwd,'debug' => 'TRUE');
+        }else{
+            $config=array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+    $arcUrl = MakeArt($id,true,true,$isremote);
+    if($arcUrl=='')
+    {
+        $arcUrl = $cfg_phpurl."/view.php?aid=$id";
+    }
+    ClearMyAddon($id, $title);
+    //返回成功信息
+    $msg =
+    "   请选择你的后续操作:
+    <a href='album_add.php?cid=$typeid'><u>继续发布图片</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$id."&dopost=editArchives'><u>查看更改</u></a>
+    &nbsp;&nbsp;
+    <a href='$arcUrl' target='_blank'><u>预览文档</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>管理已发布图片</u></a>
+    &nbsp;&nbsp;
+    $backurl
+    ";
+
+    $wintitle = "成功更改图集!";
+    $wecome_info = "文章管理::更改图集";
+    $win = new OxWindow();
+    $win->AddTitle("成功更改一个图集:");
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand","&nbsp;",false);
+    $win->Display();
+}

+ 21 - 0
admin/album_testhtml.php

@@ -0,0 +1,21 @@
+<?php
+/**
+ * 图集测试
+ *
+ * @version        $Id: album_testhtml.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+
+require_once(dirname(__FILE__)."/config.php");
+AjaxHead();
+$myhtml = UnicodeUrl2Gbk(stripslashes($myhtml));
+echo "<div class='coolbg61'>[<a href='#' onclick='javascript:HideObj(\"_myhtml\")'>关闭</a>]</div>\r\n";
+preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|png))/isU", $myhtml, $img_array);
+$img_array = array_unique($img_array[2]);
+echo "<div class='coolbg62'><xmp>";
+echo "捕获的图片:\r\n";
+print_r($img_array);
+echo "</xmp></div>\r\n";

+ 375 - 0
admin/api_ucenter.php

@@ -0,0 +1,375 @@
+<?php
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('api_ucenter');
+if(!function_exists('file_put_contents')){ function file_put_contents($filename, $s)
+{
+	$fp = @fopen($filename, 'w');
+	@fwrite($fp, $s);
+	@fclose($fp);
+	return TRUE;
+}}
+require_once(DEDEINC.'/dedetemplate.class.php');
+if(file_exists(DEDEROOT.'/uc_client/client.php'))
+{
+	if(!defined('UC_API')) define('UC_API', '');
+	include_once DEDEROOT.'/uc_client/client.php';
+}
+else
+{
+	ShowMsg('请安装UCenter模块!',-1);
+	exit();
+}
+
+$dopost = api_gpc('dopost','R');
+
+$uc = new api_ucenter($dopost);
+
+class api_ucenter
+{
+	var $action;
+	var $dtp;
+	var $config;
+	
+	//php5构造函数PHP>=5.0
+	function __construct($ac = '')
+	{
+		$action = 'uc_'.(empty($ac)||(!in_array($ac,array('install','edit'))) ? 'show' : trim($ac));
+		$this->dtp = new DedeTemplate();
+		$this->config = DEDEINC.'/common.inc.php';
+		$this->$action();
+	}
+	
+	//构造类成员PHP<5.0
+	function api_ucenter($ac = '')
+	{
+		$this->__construct($ac);
+	}
+	
+	function uc_install()
+	{
+		$uc_setings = api_gpc('uc_setings','P');
+		
+		if(!isset($uc_setings['authkey']) || empty($uc_setings['authkey']))
+		{
+			ShowMsg('请填写uc创始人密码!',-1);
+			exit();
+		}
+		
+		$uc_setings['ucapi'] = preg_replace("/\/$/", '', trim($uc_setings['ucapi']));
+		
+		if(empty($uc_setings['ucapi']) || !preg_match("/^(http:\/\/)/i", $uc_setings['ucapi']))
+		{
+			ShowMsg('请填正确的服务端地址以http://开头!',-1);
+			exit();
+		}
+		else
+		{
+			if(!$uc_setings['ucip'])
+			{
+				$temp = @parse_url($uc_setings['ucapi']);
+				$uc_setings['ucapi'] = gethostbyname($temp['host']);
+				if(ip2long($uc_setings['ucapi']) == -1 || ip2long($uc_setings['ucapi']) === FALSE)
+				{
+					$uc_setings['ucip'] = '127.0.0.1';
+				}
+			}
+		}
+		
+		$ucinfo = api_fopen($uc_setings['ucapi'].'/index.php?m=app&a=ucinfo', 500, '', '', 1, $uc_setings['ucip']);
+		
+		list($status, $ucversion, $ucrelease, $uccharset, $ucdbcharset, $apptypes) = explode('|', $ucinfo);
+		
+		if($status != 'UC_STATUS_OK')
+		{
+			ShowMsg('uc服务端地址无效,请仔细检查您安装的uc服务端地址!',-1);
+			exit();
+		}
+		else
+		{
+			$ucdbcharset = strtolower($ucdbcharset ? str_replace('-', '', $ucdbcharset) : $ucdbcharset);
+			if(UC_CLIENT_VERSION > $ucversion)
+			{
+				ShowMsg('uc服务端版本不一致,您当前的uc客服端版本为:'.UC_CLIENT_VERSION.',而服务端版本为:'.$ucversion.'!',-1);
+				exit();	
+			}
+			elseif($ucdbcharset != 'gbk')
+			{
+				ShowMsg('uc服务端编码与DedeCMS编码不一致!要求您的uc服务端编码为:gbk编码.',-1);
+				exit();	
+			}
+			//标签应用模板
+			$app_tagtemplates = 'apptagtemplates[template]='.urlencode('<a href="{url}" target="_blank">{title}</a>').'&'.
+			'apptagtemplates[fields][title]='.urlencode('标题').'&'.
+			'apptagtemplates[fields][writer]='.urlencode('作者').'&'.
+			'apptagtemplates[fields][pubdate]='.urlencode('时间').'&'.
+			'apptagtemplates[fields][url]='.urlencode('地址');
+			
+			$postdata = 'm=app&a=add&ucfounder=&ucfounderpw='.urlencode($uc_setings['authkey']).'&apptype=OTHER&appname='.urlencode($GLOBALS['cfg_webname']).'&appurl='.urlencode($GLOBALS['cfg_basehost']).'&appip=&appcharset=gbk&appdbcharset=gbk&'.$app_tagtemplates.'&release='.UC_CLIENT_RELEASE;
+		
+			$ucconfig = api_fopen($uc_setings['ucapi'].'/index.php', 500, $postdata, '', 1, $uc_setings['ucip']);
+			
+			if(strstr($ucconfig,'<?xml'))
+			{
+				$temp = explode('<?xml', $ucconfig);
+				$ucconfig = $temp[0]; unset($temp);
+			}
+			
+			if(empty($ucconfig))
+			{
+				ShowMsg('请填写有效的配置信息!',-1);
+				exit();
+			}
+			elseif($ucconfig == '-1')
+			{
+				ShowMsg('创始人密码错误!',-1);
+				exit();
+			}
+			else
+			{
+				list($appauthkey, $appid) = explode('|', $ucconfig);
+				if(empty($appauthkey) || empty($appid))
+				{
+					ShowMsg('数据获取失败!',-1);
+					exit();
+				}
+				elseif($succeed = api_write_config($ucconfig."|".$uc_setings['ucapi']."|".$uc_setings['ucip'], $this->config))
+				{
+					ShowMsg('安装成功!',-1);
+					exit();
+				}
+				else
+				{
+					ShowMsg('写入配置数据失败!'.$this->config.' 请设置可写权限!',-1);
+					exit();
+				}
+			}
+		}
+	}
+	
+	function uc_edit()
+	{
+		$uc_setings = api_gpc('uc_setings','P');		
+		$uc_dbpass = $uc_setings['dbpass'] == '********' ? UC_DBPW : $uc_setings['dbpass'];	
+		$fp = fopen($this->config, 'r');
+		$content = fread($fp, filesize($this->config));
+		$content = trim($content);
+		$content = substr($content, -2) == '?>' ? substr($content, 0, -2) : $content;
+		$content = strstr($content, '_|cfg_|GLOBALS') ? str_replace('_|cfg_|GLOBALS','cfg_|GLOBALS',$content) : $content;
+		fclose($fp);
+		
+		$connect = '';		
+		if($uc_setings['connect'])
+		{
+			$uc_dblink = @mysql_connect($uc_setings['dbhost'], $uc_setings['dbuser'], $uc_dbpass, 1);
+			if(!$uc_dblink)
+			{
+				ShowMsg('数据库连接失败!',-1);
+				exit();
+			}else{
+				mysql_close($uc_dblink);
+			}
+			
+			$connect = 'mysql';
+			$content = api_insert_config($content, "/define\('UC_DBHOST',\s*'.*?'\);/i", "define('UC_DBHOST', '".$uc_setings['dbhost']."');");
+			$content = api_insert_config($content, "/define\('UC_DBUSER',\s*'.*?'\);/i", "define('UC_DBUSER', '".$uc_setings['dbuser']."');");
+			$content = api_insert_config($content, "/define\('UC_DBPW',\s*'.*?'\);/i", "define('UC_DBPW', '".$uc_dbpass."');");
+			$content = api_insert_config($content, "/define\('UC_DBNAME',\s*'.*?'\);/i", "define('UC_DBNAME', '".$uc_setings['dbname']."');");
+			$content = api_insert_config($content, "/define\('UC_DBTABLEPRE',\s*'.*?'\);/i", "define('UC_DBTABLEPRE', '`".$uc_setings['dbname'].'`.'.$uc_setings['dbtablepre']."');");
+		}
+		
+		$content = api_insert_config($content, "/define\('UC_CONNECT',\s*'.*?'\);/i", "define('UC_CONNECT', '$connect');");
+		$content = api_insert_config($content, "/define\('UC_KEY',\s*'.*?'\);/i", "define('UC_KEY', '".$uc_setings['authkey']."');");
+		$content = api_insert_config($content, "/define\('UC_API',\s*'.*?'\);/i", "define('UC_API', '".$uc_setings['ucapi']."');");
+		$content = api_insert_config($content, "/define\('UC_IP',\s*'.*?'\);/i", "define('UC_IP', '".$uc_setings['ucip']."');");
+		$content = api_insert_config($content, "/define\('UC_APPID',\s*'?.*?'?\);/i", "define('UC_APPID', '".UC_APPID."');");
+		$content .= '?>';
+		
+		if($fp = @fopen($this->config, 'w'))
+		{
+			@fwrite($fp, trim($content));
+			@fclose($fp);
+			ShowMsg('配置已经更改!',-1);
+			exit();
+		}else{
+			ShowMsg('写入配置数据失败!'.$this->config.' 请设置可写权限!',-1);
+			exit();
+		}
+	}	
+	
+	function uc_show()
+	{
+		$this->dtp->Assign('uc_config_file',$this->config);
+		
+		if(!defined('UC_APPID'))
+		{
+			$this->dtp->LoadTemplate(DEDEADMIN.'/templets/api_ucenter_install.htm');
+		}
+		else
+		{
+			$uc_api_open = false;			
+			$ucapparray = uc_app_ls();
+			foreach($ucapparray as $apparray)
+			{
+				if($apparray['appid'] == UC_APPID)
+				{
+					$uc_api_open = true;
+					break;
+				}
+			}
+	
+			if(!$uc_api_open)
+			{
+				ShowMsg("DedeCMS没找到正确的uc配置!",-1);
+				exit();
+			}
+			
+	
+			list($dbname,$dbtablepre) = explode('.',str_replace('`','',UC_DBTABLEPRE));	
+			$uc_setings = array('appid' => UC_APPID, 'ucapi' => UC_API, 'connect' => UC_CONNECT, 'dbhost' => UC_DBHOST, 'dbuser' => UC_DBUSER,'dbpass' => UC_DBPW, 'dbname' => $dbname, 'dbtablepre' => $dbtablepre,'ucip' => UC_IP,'authkey' => UC_KEY);
+		
+			$this->dtp->Assign('uc_setings',$uc_setings);
+			$this->dtp->LoadTemplate(DEDEADMIN.'/templets/api_ucenter_edit.htm');
+		}
+		$this->dtp->Display();
+		exit();
+	}
+}
+/*
+class uc_function{...}
+*/
+function api_fopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE)
+{
+	$return = '';
+	$matches = parse_url($url);
+	$host = $matches['host'];
+	$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
+	$port = !empty($matches['port']) ? $matches['port'] : 80;
+	if($post)
+	{
+		$out = "POST $path HTTP/1.0\r\n";
+		$out .= "Accept: */*\r\n";
+		//$out .= "Referer: $boardurl\r\n";
+		$out .= "Accept-Language: zh-cn\r\n";
+		$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
+		$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
+		$out .= "Host: $host\r\n";
+		$out .= 'Content-Length: '.strlen($post)."\r\n";
+		$out .= "Connection: Close\r\n";
+		$out .= "Cache-Control: no-cache\r\n";
+		$out .= "Cookie: $cookie\r\n\r\n";
+		$out .= $post;
+	}else{
+		$out = "GET $path HTTP/1.0\r\n";
+		$out .= "Accept: */*\r\n";
+		//$out .= "Referer: $boardurl\r\n";
+		$out .= "Accept-Language: zh-cn\r\n";
+		$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
+		$out .= "Host: $host\r\n";
+		$out .= "Connection: Close\r\n";
+		$out .= "Cookie: $cookie\r\n\r\n";
+	}
+
+	$fp = @fsockopen(($host ? $host : $ip), $port, $errno, $errstr, $timeout);
+	if(!$fp)
+	{
+		return '';
+	}else{
+		stream_set_blocking($fp, $block);
+		stream_set_timeout($fp, $timeout);
+		@fwrite($fp, $out);
+		$status = stream_get_meta_data($fp);
+		if(!$status['timed_out'])
+		{
+			while (!feof($fp))
+			{
+				if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header == "\n"))
+				{
+					break;
+				}
+			}
+
+			$stop = false;
+			while(!feof($fp) && !$stop)
+			{
+				$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
+				$return .= $data;
+				if($limit)
+				{
+					$limit -= strlen($data);
+					$stop = $limit <= 0;
+				}
+			}
+		}
+		@fclose($fp);
+		return $return;
+	}
+}
+
+function api_write_config($config, $file)
+{
+	$success = false;
+	list($appauthkey, $appid, $ucdbhost, $ucdbname, $ucdbuser, $ucdbpw, $ucdbcharset, $uctablepre, $uccharset, $ucapi, $ucip) = explode('|', $config);
+		
+	if($content = file_get_contents($file))
+	{
+		$content = trim($content);
+		$content = substr($content, -2) == '?>' ? substr($content, 0, -2) : $content;
+		$content = strstr($content, '_|cfg_|GLOBALS') ? str_replace('_|cfg_|GLOBALS','cfg_|GLOBALS',$content) : $content;
+		$link = mysql_connect($ucdbhost, $ucdbuser, $ucdbpw, 1);
+		$uc_connnect = $link && mysql_select_db($ucdbname, $link) ? 'mysql' : '';
+		$content = api_insert_config($content, "/define\('UC_CONNECT',\s*'.*?'\);/i", "define('UC_CONNECT', '$uc_connnect');");
+		$content = api_insert_config($content, "/define\('UC_DBHOST',\s*'.*?'\);/i", "define('UC_DBHOST', '$ucdbhost');");
+		$content = api_insert_config($content, "/define\('UC_DBUSER',\s*'.*?'\);/i", "define('UC_DBUSER', '$ucdbuser');");
+		$content = api_insert_config($content, "/define\('UC_DBPW',\s*'.*?'\);/i", "define('UC_DBPW', '$ucdbpw');");
+		$content = api_insert_config($content, "/define\('UC_DBNAME',\s*'.*?'\);/i", "define('UC_DBNAME', '$ucdbname');");
+		$content = api_insert_config($content, "/define\('UC_DBCHARSET',\s*'.*?'\);/i", "define('UC_DBCHARSET', '$ucdbcharset');");
+		$content = api_insert_config($content, "/define\('UC_DBTABLEPRE',\s*'.*?'\);/i", "define('UC_DBTABLEPRE', '`$ucdbname`.$uctablepre');");
+		$content = api_insert_config($content, "/define\('UC_DBCONNECT',\s*'.*?'\);/i", "define('UC_DBCONNECT', '0');");
+		$content = api_insert_config($content, "/define\('UC_KEY',\s*'.*?'\);/i", "define('UC_KEY', '$appauthkey');");
+		$content = api_insert_config($content, "/define\('UC_API',\s*'.*?'\);/i", "define('UC_API', '$ucapi');");
+		$content = api_insert_config($content, "/define\('UC_CHARSET',\s*'.*?'\);/i", "define('UC_CHARSET', '$uccharset');");
+		$content = api_insert_config($content, "/define\('UC_IP',\s*'.*?'\);/i", "define('UC_IP', '$ucip');");
+		$content = api_insert_config($content, "/define\('UC_APPID',\s*'?.*?'?\);/i", "define('UC_APPID', '$appid');");
+		$content = api_insert_config($content, "/define\('UC_PPP',\s*'?.*?'?\);/i", "define('UC_PPP', '20');");
+		$content .= "\r\n".'?>';
+		
+		if(@file_put_contents($file, $content))
+		{
+			$success = true;
+		}
+	}
+	return $success;
+}
+
+function api_insert_config($s, $find, $replace)
+{
+	if(preg_match($find, $s))
+	{
+		$s = preg_replace($find, $replace, $s);
+	}else{
+		// 插入到最后一行
+		$s .= "\r\n".$replace;
+	}
+	return $s;
+}
+
+function api_gpc($k, $var='R')
+{
+	switch($var)
+	{
+		case 'G': $var = &$_GET; break;
+		case 'P': $var = &$_POST; break;
+		case 'C': $var = &$_COOKIE; break;
+		case 'R': $var = &$_REQUEST; break;
+	}
+	return isset($var[$k]) ? $var[$k] : NULL;
+}
+
+if(!function_exists('file_put_contents')){ function file_put_contents($filename, $s)
+{
+	$fp = @fopen($filename, 'w');
+	@fwrite($fp, $s);
+	@fclose($fp);
+	return TRUE;
+}}
+?>

+ 240 - 0
admin/archives_add.php

@@ -0,0 +1,240 @@
+<?php
+/**
+ * 文档发布
+ *
+ * @version        $Id: archives_add.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+CheckPurview('a_New,a_AccNew');
+require_once(DEDEINC.'/customfields.func.php');
+require_once(DEDEADMIN.'/inc/inc_archives_functions.php');
+
+if(empty($dopost)) $dopost = '';
+
+if($dopost != 'save')
+{
+    require_once(DEDEINC.'/dedetag.class.php');
+    require_once(DEDEADMIN.'/inc/inc_catalog_options.php');
+    ClearMyAddon();
+    $channelid = empty($channelid) ? 0 : intval($channelid);
+    $cid = empty($cid) ? 0 : intval($cid);
+
+    //获得频道模型ID
+    if($cid > 0 && $channelid == 0)
+    {
+        $row = $dsql->GetOne("SELECT channeltype FROM `#@__arctype` WHERE id='$cid'; ");
+        $channelid = $row['channeltype'];
+    }
+    else
+    {
+        if($channelid==0)
+        {
+            ShowMsg('无法识别模型信息,因此无法操作!', '-1');
+            exit();
+        }
+    }
+
+    //获得频道模型信息
+    $cInfos = $dsql->GetOne(" SELECT * FROM  `#@__channeltype` WHERE id='$channelid' ");
+    $channelid = $cInfos['id'];
+    //获取文章最大id以确定当前权重
+    $maxWright = $dsql->GetOne("SELECT COUNT(*) AS cc FROM #@__archives");
+    include DedeInclude('templets/archives_add.htm');
+    exit();
+}
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+
+    $flag = isset($flags) ? join(',',$flags) : '';
+    $notpost = isset($notpost) && $notpost == 1 ? 1: 0;
+    if(empty($click)) $click = ($cfg_arc_click=='-1' ? mt_rand(50, 200) : $cfg_arc_click);
+
+    if(empty($typeid2)) $typeid2 = 0;
+    if(!isset($autokey)) $autokey = 0;
+    if(!isset($remote)) $remote = 0;
+    if(!isset($dellink)) $dellink = 0;
+    if(!isset($autolitpic)) $autolitpic = 0;
+    if(empty($click)) $click = ($cfg_arc_click=='-1' ? mt_rand(50, 200) : $cfg_arc_click);
+
+    if($typeid==0)
+    {
+        ShowMsg('请指定文档的栏目!', '-1');
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg('文档为非指定的类型,请检查你发布内容的表单是否合法!', '-1');
+        exit();
+    }
+    if(!CheckChannel($typeid,$channelid) )
+    {
+        ShowMsg('你所选择的栏目与当前模型不相符,请选择白色的选项!', '-1');
+        exit();
+    }
+    if(!TestPurview('a_New'))
+    {
+        CheckCatalog($typeid, "对不起,你没有操作栏目 {$typeid} 的权限!");
+    }
+
+    //对保存的内容进行处理
+    if(empty($writer)) $writer = $cuserLogin->getUserName();
+    if(empty($source)) $source = '未知';
+    $pubdate = GetMkTime($pubdate);
+    $senddate = time();
+    $sortrank = AddDay($pubdate,$sortup);
+    $ismake = $ishtml == 0 ? -1 : 0;
+    $title = preg_replace("#\"#", '"', $title);
+    $title = cn_substrR($title,$cfg_title_maxlen);
+    $shorttitle = cn_substrR($shorttitle,36);
+    $color =  cn_substrR($color,7);
+    $writer =  cn_substrR($writer,20);
+    $source = cn_substrR($source,30);
+    $description = cn_substrR($description,$cfg_auot_description);
+    $keywords = cn_substrR($keywords,60);
+    $filename = trim(cn_substrR($filename,40));
+    $userip = GetIP();
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $voteid = (empty($voteid)? 0 : $voteid);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck'))
+    {
+        $arcrank = -1;
+    }
+    $adminid = $cuserLogin->getUserID();
+
+    //处理上传的缩略图
+    if(empty($ddisremote))
+    {
+        $ddisremote = 0;
+    }
+    $litpic = GetDDImage('none',$picname,$ddisremote);
+
+    //生成文档ID
+    $arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
+
+    if(empty($arcID))
+    {
+        ShowMsg("无法获得主键,因此无法进行后续操作!","-1");
+        exit();
+    }
+
+    //分析处理附加表数据
+    $inadd_f = $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';', $dede_addonfields);
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='') continue;
+                $vs = explode(',', $v);
+                if($vs[1]=='htmltext' || $vs[1]=='textdata')
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]}, $description, $litpic, $keywords, $vs[1]);
+                }
+                else
+                {
+                    if(!isset(${$vs[0]})) ${$vs[0]} = '';
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]}, $vs[1], $arcID);
+                }
+                $inadd_f .= ','.$vs[0];
+                $inadd_v .= " ,'".${$vs[0]}."' ";
+            }
+        }
+    }
+
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+    if($redirecturl!='' && !preg_match("#j#", $flag))
+    {
+        $flag = ($flag=='' ? 'j' : $flag.',j');
+    }
+
+    //跳转网址的文档强制为动态
+    if(preg_match("#j#", $flag)) $ismake = -1;
+    //保存到主表
+    $query = "INSERT INTO `#@__archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
+color,writer,source,litpic,pubdate,senddate,mid,voteid,notpost,description,keywords,filename,dutyadmin,weight)
+    VALUES ('$arcID','$typeid','$typeid2','$sortrank','$flag','$ismake','$channelid','$arcrank','$click','$money','$title','$shorttitle',
+    '$color','$writer','$source','$litpic','$pubdate','$senddate','$adminid','$voteid','$notpost','$description','$keywords','$filename','$adminid','$weight');";
+
+    if(!$dsql->ExecuteNoneQuery($query))
+    {
+        $gerr = $dsql->GetError();
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
+        ShowMsg("把数据保存到数据库主表 `#@__archives` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
+        exit();
+    }
+
+    //保存到附加表
+    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if(!empty($addtable))
+    {
+        $useip = GetIP();
+        $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,userip{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$useip'{$inadd_v})";
+        if(!$dsql->ExecuteNoneQuery($query))
+        {
+            $gerr = $dsql->GetError();
+            $dsql->ExecuteNoneQuery("DELETE FROM `#@__archives` WHERE id='$arcID'");
+            $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
+            ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
+            exit();
+        }
+    }
+
+    //生成HTML
+    InsertTags($tags, $arcID);
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!="")
+        {
+            list($servurl,$servuser,$servpwd) = explode(',',$serviterm);
+            $config=array( 'hostname' => $servurl, 'username' => $servuser, 
+                                                 'password' => $servpwd,'debug' => 'TRUE');
+        } else {
+            $config=array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+    $artUrl = MakeArt($arcID, true, true,$isremote);
+    if($artUrl=='')
+    {
+        $artUrl = $cfg_phpurl."/view.php?aid=$arcID";
+    }
+    ClearMyAddon($arcID, $title);
+    //返回成功信息
+    $msg = "      请选择你的后续操作:
+    <a href='archives_add.php?cid=$typeid'><u>继续发布文档</u></a>
+    &nbsp;&nbsp;
+    <a href='$artUrl' target='_blank'><u>查看文档</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文档</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布文档管理</u></a>
+    &nbsp;&nbsp;
+    $backurl
+  ";
+    $msg = "<div style=\"line-height:36px;height:36px\">{$msg}</div>".GetUpdateTest();
+
+    $wintitle = '成功发布文档!';
+    $wecome_info = '文档管理::发布文档';
+    $win = new OxWindow();
+    $win->AddTitle('成功发布文档:');
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow('hand', '&nbsp;', false);
+    $win->Display();
+}

+ 1016 - 0
admin/archives_do.php

@@ -0,0 +1,1016 @@
+<?php
+/**
+ * 文档处理
+ *
+ * @version        $Id: archives_do.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+require_once(DEDEADMIN.'/inc/inc_batchup.php');
+require_once(DEDEADMIN.'/inc/inc_archives_functions.php');
+require_once(DEDEINC.'/typelink.class.php');
+require_once(DEDEINC.'/arc.archives.class.php');
+$ENV_GOBACK_URL = (empty($_COOKIE['ENV_GOBACK_URL']) ? 'content_list.php' : $_COOKIE['ENV_GOBACK_URL']);
+
+if(empty($dopost))
+{
+    ShowMsg('对不起,你没指定运行参数!','-1');
+    exit();
+}
+$aid = isset($aid) ? preg_replace("#[^0-9]#", '', $aid) : '';
+
+/*--------------------------
+//编辑文档
+function editArchives(){ }
+---------------------------*/
+if($dopost=='editArchives')
+{
+    $query = "SELECT arc.id,arc.typeid,ch.maintable,ch.editcon
+           FROM `#@__arctiny` arc
+           LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid
+           LEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel
+          WHERE arc.id='$aid' ";
+    $row = $dsql->GetOne($query);
+    $gurl = $row['editcon'];
+    if($gurl=='') $gurl='article_edit.php';
+    header("location:{$gurl}?aid=$aid");
+    exit();
+}
+/*--------------------------
+//浏览文档
+function viewArchives(){ }
+---------------------------*/
+else if($dopost=="viewArchives")
+{
+    $aid = preg_replace("#[^0-9]#", '', $aid);
+
+    //获取主表信息
+    $query = "SELECT arc.*,ch.maintable,ch.addtable,ch.issystem,ch.editcon,
+              tp.typedir,tp.typename,tp.corank,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.sitepath,tp.siteurl
+           FROM `#@__arctiny` arc
+           LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid
+           LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype
+           WHERE arc.id='$aid' ";
+    $trow = $dsql->GetOne($query);
+    $trow['maintable'] = ( trim($trow['maintable'])=='' ? '#@__archives' : trim($trow['maintable']) );
+    if($trow['issystem'] != -1)
+    {
+        $arcQuery = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.sitepath,tp.siteurl
+                   FROM `{$trow['maintable']}` arc LEFT JOIN `#@__arctype` tp on arc.typeid=tp.id
+                   LEFT JOIN `#@__channeltype` ch on ch.id=arc.channel WHERE arc.id='$aid' ";
+        $arcRow = $dsql->GetOne($arcQuery);
+		PutCookie('DedeUserID',$arcRow['mid'],1800);
+		PutCookie('DedeLoginTime',time(),1800);
+        if($arcRow['ismake']==-1 || $arcRow['corank']!=0 || $arcRow['arcrank']!=0 || ($arcRow['typeid']==0 && $arcRow['channel']!=-1) || $arcRow['money']>0)
+        {
+            echo "<script language='javascript'>location.href='{$cfg_phpurl}/view.php?aid={$aid}';</script>";
+            exit();
+        }
+    }
+    else
+    {
+        $arcRow['id'] = $aid;
+        $arcRow['typeid'] = $trow['typeid'];
+        $arcRow['senddate'] = $trow['senddate'];
+        $arcRow['title'] = '';
+        $arcRow['ismake'] = 1;
+        $arcRow['arcrank'] = $trow['corank'];
+        $arcRow['namerule'] = $trow['namerule'];
+        $arcRow['typedir'] = $trow['typedir'];
+        $arcRow['money'] = 0;
+        $arcRow['filename'] = '';
+        $arcRow['moresite'] = $trow['moresite'];
+        $arcRow['siteurl'] = $trow['siteurl'];
+        $arcRow['sitepath'] = $trow['sitepath'];
+    }
+    $arcurl  = GetFileUrl($arcRow['id'],$arcRow['typeid'],$arcRow['senddate'],$arcRow['title'],$arcRow['ismake'],$arcRow['arcrank'],
+    $arcRow['namerule'],$arcRow['typedir'],$arcRow['money'],$arcRow['filename'],$arcRow['moresite'],$arcRow['siteurl'],$arcRow['sitepath']);
+    $arcfile = GetFileUrl($arcRow['id'],$arcRow['typeid'],$arcRow['senddate'],$arcRow['title'],
+    $arcRow['ismake'],$arcRow['arcrank'],$arcRow['namerule'],$arcRow['typedir'],$arcRow['money'],$arcRow['filename']);
+    if(preg_match("#^http:#", $arcfile))
+    {
+        $arcfile = preg_replace("#^http:\/\/([^\/]*)\/#i", '/', $arcfile);
+    }
+    $truefile = GetTruePath().$arcfile;
+    if(!file_exists($truefile))
+    {
+        MakeArt($aid,TRUE);
+    }
+    echo "<script language='javascript'>location.href='$arcurl"."?".time()."';</script>";
+    exit();
+}
+/*--------------------------
+//异步上传缩略图
+function uploadLitpic(){ }
+---------------------------*/
+else if($dopost=="uploadLitpic")
+{
+    $upfile = AdminUpload('litpic', 'imagelit', 0, false );
+    if($upfile=='-1')
+    {
+        $msg = "<script language='javascript'>
+                parent.document.getElementById('uploadwait').style.display = 'none';
+                alert('你没指定要上传的文件或文件大小超过限制!');
+            </script>";
+    }
+    else if($upfile=='-2')
+    {
+        $msg = "<script language='javascript'>
+                parent.document.getElementById('uploadwait').style.display = 'none';
+                alert('上传文件失败,请检查原因!');
+            </script>";
+    }
+    else if($upfile=='0')
+    {
+        $msg = "<script language='javascript'>
+                parent.document.getElementById('uploadwait').style.display = 'none';
+                alert('文件类型不正确!');
+            </script>";
+    }
+    else
+    {
+         if(!empty($cfg_uplitpic_cut) && $cfg_uplitpic_cut=='N')
+         {
+                 $msg = "<script language='javascript'>
+                    parent.document.getElementById('uploadwait').style.display = 'none';
+                    parent.document.getElementById('picname').value = '{$upfile}';
+                    if(parent.document.getElementById('divpicview'))
+                    {
+                        parent.document.getElementById('divpicview').style.width = '150px';
+                        parent.document.getElementById('divpicview').innerHTML = \"<img src='{$upfile}?n' width='150' />\";
+                    }
+                </script>";
+         }
+         else
+         {
+               $msg = "<script language='javascript'>
+                    parent.document.getElementById('uploadwait').style.display = 'none';
+                    window.open('imagecut.php?f=picname&isupload=yes&file={$upfile}', 'popUpImagesWin', 'scrollbars=yes,resizable=yes,statebar=no,width=800,height=600,left=150, top=50');
+                </script>";
+         }
+    }
+    echo $msg;
+    exit();
+}
+/*--------------------------
+//推荐文档
+function commendArchives(){ }
+---------------------------*/
+else if($dopost=="commendArchives")
+{
+    CheckPurview('a_Commend,sys_ArcBatch');
+    if( !empty($aid) && empty($qstr) )
+    {
+        $qstr = $aid;
+    }
+    if($qstr=='')
+    {
+        ShowMsg("参数无效!",$ENV_GOBACK_URL);
+        exit();
+    }
+    $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#`#", ',', $qstr));
+    $query = "SELECT arc.id,arc.typeid,ch.issystem,ch.maintable,ch.addtable FROM `#@__arctiny` arc
+           LEFT JOIN `#@__arctype` tp on tp.id=arc.typeid
+           LEFT JOIN `#@__channeltype` ch on ch.id=tp.channeltype
+          WHERE arc.id in($arcids) ";
+    $dsql->SetQuery($query);
+    $dsql->Execute();
+    while($row = $dsql->GetArray())
+    {
+        $aid = $row['id'];
+        if($row['issystem']!=-1)
+        {
+            $maintable = ( trim($row['maintable'])=='' ? '#@__archives' : trim($row['maintable']) );
+            $arr = $dsql->GetOne("SELECT flag FROM `{$maintable}` WHERE id='$aid' ");
+            $flag = ($arr['flag']=='' ? 'c' : $arr['flag'].',c');
+            $dsql->ExecuteNoneQuery(" UPDATE `{$maintable}` SET `flag`='$flag' WHERE id='{$aid}' ");
+        }
+        else
+        {
+            $maintable = trim($row['addtable']);
+            $arr = $dsql->GetOne("SELECT flag From `{$maintable}` where aid='$aid' ");
+            $flag = ($arr['flag']=='' ? 'c' : $arr['flag'].',c');
+            $dsql->ExecuteNoneQuery(" UPDATE `{$maintable}` SET `flag`='$flag' WHERE aid='{$aid}' ");
+        }
+    }
+    ShowMsg("成功把所选的文档设为推荐!",$ENV_GOBACK_URL);
+    exit();
+}
+
+/*--------------------------
+//生成HTML
+function makeArchives();
+---------------------------*/
+else if($dopost=="makeArchives")
+{
+    CheckPurview('sys_MakeHtml,sys_ArcBatch');
+    if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+    
+    if($qstr=='')
+    {
+        ShowMsg('参数无效!',$ENV_GOBACK_URL);
+        exit();
+    }
+    require_once(DEDEADMIN.'/inc/inc_archives_functions.php');
+    $qstrs = explode('`',$qstr);
+    $i = 0;
+    foreach($qstrs as $aid)
+    {
+        $i++;
+        $pageurl = MakeArt($aid,false);
+    }
+    ShowMsg("成功更新指定 $i 个文件...",$ENV_GOBACK_URL);
+    exit();
+}
+/*--------------------------
+//审核文档
+function checkArchives() {   }
+---------------------------*/
+else if($dopost=="checkArchives")
+{
+    CheckPurview('a_Check,a_AccCheck,sys_ArcBatch');
+    require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+    if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+    if($qstr=='')
+    {
+        ShowMsg("参数无效!",$ENV_GOBACK_URL);
+        exit();
+    }
+    $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#`#", ',', $qstr));
+    $query = "SELECT arc.id,arc.typeid,ch.issystem,ch.maintable,ch.addtable FROM `#@__arctiny` arc
+               LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid
+            LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype
+            WHERE arc.id in($arcids) ";
+    $dsql->SetQuery($query);
+    $dsql->Execute('ckall');
+    while($row = $dsql->GetArray('ckall'))
+    {
+        $aid = $row['id'];
+        $maintable = ( trim($row['maintable'])=='' ? '#@__archives' : trim($row['maintable']) );
+        $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET arcrank='0' WHERE id='$aid' ");
+        if($row['issystem']==-1)
+        {
+            $dsql->ExecuteNoneQuery("UPDATE `".trim($row['addtable'])."` SET arcrank='0' WHERE aid='$aid' ");
+        }
+        else
+        {
+            $dsql->ExecuteNoneQuery("UPDATE `$maintable` SET arcrank='0', dutyadmin='".$cuserLogin->getUserID()."' WHERE id='$aid' ");
+        }
+        $dsql->ExecuteNoneQuery("UPDATE `#@__taglist` SET arcrank='0' WHERE aid='$aid' "); 
+        $pageurl = MakeArt($aid,false);
+    }
+    ShowMsg("成功审核指定的文档!",$ENV_GOBACK_URL);
+    exit();
+}
+/*--------------------------
+//删除文档
+function delArchives(){ }
+---------------------------*/
+else if($dopost=="delArchives")
+{
+    CheckPurview('a_Del,a_AccDel,a_MyDel,sys_ArcBatch');
+    require_once(DEDEINC."/oxwindow.class.php");
+    if(empty($fmdo)) $fmdo = '';
+
+    if($fmdo=='yes')
+    {
+        if( !empty($aid) && empty($qstr) )
+        {
+            $qstr = $aid;
+        }
+        if($qstr=='')
+        {
+            ShowMsg("参数无效!",$ENV_GOBACK_URL);
+            exit();
+        }
+        $qstrs = explode("`",$qstr);
+        $okaids = Array();
+
+        foreach($qstrs as $aid)
+        {
+            if(!isset($okaids[$aid]))
+            {
+                DelArc($aid);
+            }
+            else
+            {
+                $okaids[$aid] = 1;
+            }
+        }
+        ShowMsg("成功删除指定的文档!",$ENV_GOBACK_URL);
+        exit();
+    }
+
+    else
+    {
+        $wintitle = "文档管理-删除文档";
+        $wecome_info = "<a href='".$ENV_GOBACK_URL."'>文档管理</a>::删除文档";
+        $win = new OxWindow();
+        $win->Init("archives_do.php","js/blank.js","POST");
+        $win->AddHidden("fmdo","yes");
+        $win->AddHidden("dopost",$dopost);
+        $win->AddHidden("qstr",$qstr);
+        $win->AddHidden("aid",$aid);
+        $win->AddTitle("你确实要删除“ $qstr 和 $aid ”这些文档?");
+        $winform = $win->GetWindow("ok");
+        $win->Display();
+    }
+}
+/*-----------------------------
+function moveArchives(){ }
+------------------------------*/
+else if($dopost=='moveArchives')
+{
+    CheckPurview('sys_ArcBatch');
+    if(empty($totype))
+    {
+        require_once(DEDEINC.'/typelink.class.php');
+        if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+ 
+        AjaxHead();
+        $channelid = empty($channelid) ? 0 : $channelid;
+        $tl = new TypeLink($aid);
+        $typeOptions = $tl->GetOptionArray(0, $admin_catalogs, $channelid);
+        $typeOptions = "<select name='totype' style='width:90%'>
+        <option value='0'>请选择移动到的位置...</option>\r\n
+        $typeOptions
+        </select>";
+        
+        //输出AJAX可移动窗体
+        $divname = 'moveArchives';
+        echo "<div class='title' onmousemove=\"DropMoveHand('{$divname}', 225);\" onmousedown=\"DropStartHand();\" onmouseup=\"DropStopHand();\">\r\n";
+        echo "    <div class='titLeft'>移动文档</div>\r\n";
+        echo "    <div class='titRight'><img src='images/ico-close.gif' style='cursor:pointer;' onclick='HideObj(\"{$divname}\");ChangeFullDiv(\"hide\");' alt='关闭' title='关闭' /></div>\r\n";
+        echo "</div>\r\n";
+        echo "<form name='quickeditform' action='archives_do.php' method='post'>\r\n";
+        echo "<input type='hidden' name='dopost' value='{$dopost}' />\r\n";
+        echo "<input type='hidden' name='qstr' value='{$qstr}' />\r\n";
+        echo "<table width='100%' style='margin-top:6px;z-index:9000;'>\r\n";
+?>
+<tr height='28'>
+    <td width="80" class='bline'>&nbsp;目标栏目:</td>
+    <td class='bline'>
+    <?php echo $typeOptions; ?>
+    </td>
+</tr>
+<tr height='32'>
+    <td width="80" class='bline'>&nbsp;文档ID:</td>
+    <td class='bline'>
+        <input type='text' name='tmpids' value="<?php echo $qstr; ?>" style='width:310px;overflow:hidden;' />
+        <br />
+        移动到的目标栏目必须和选定的文档频道类型一致,否则程序会自动勿略不符合的文档。
+    </td>
+</tr>
+<tr height='32'>
+    <td colspan='2' align='center' style='padding-top:12px'>
+        <input name="imageField" type="image" src="images/button_ok.gif" width="60" height="22" class="np" border="0" style="cursor:pointer" />
+        &nbsp;&nbsp;
+        <img src="images/button_back.gif" width="60" height="22" border="0" onclick='HideObj("<?php echo $divname; ?>");ChangeFullDiv("hide");' style="cursor:pointer" />
+    </td>
+</td>
+</tr>
+</table>
+</form>
+<?php
+    //AJAX窗体结束
+    }
+    else
+    {
+        $totype = preg_replace("#[^0-9]#", '', $totype);
+        $typeInfos = $dsql->GetOne("SELECT tp.channeltype,tp.ispart,tp.channeltype,ch.maintable,ch.addtable,ch.issystem FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch on ch.id=tp.channeltype WHERE tp.id='$totype' ");
+        $idtype = "id";
+        if(!is_array($typeInfos))
+        {
+            ShowMsg('参数错误!','-1');
+            exit();
+        }
+        if($typeInfos['ispart']!=0)
+        {
+            ShowMsg('文档保存的栏目必须为最终列表栏目!','-1');
+            exit();
+        }
+        if(empty($typeInfos['addtable']))
+        {
+            $typeInfos['maintable'] = '#@__archives';
+        }
+        //增加单表模型判断
+        if($typeInfos['issystem'] == -1)
+        {
+            $typeInfos['maintable'] = $typeInfos['addtable'];
+            $idtype = "aid";
+        }
+        $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#`#", ',', $qstr));
+        $arc = '';
+        $j = 0;
+        $okids = array();
+        $dsql->SetQuery("SELECT {$idtype},typeid FROM `{$typeInfos['maintable']}` WHERE {$idtype} in($arcids) AND channel='{$typeInfos['channeltype']}' ");
+        $dsql->Execute();
+        while($row = $dsql->GetArray())
+        {
+            if($row['typeid']!=$totype)
+            {
+                $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny`  SET typeid='$totype' WHERE id='{$row[$idtype]}' ");
+                $dsql->ExecuteNoneQuery("UPDATE `{$typeInfos['maintable']}` SET typeid='$totype' WHERE id='{$row[$idtype]}' ");
+                $dsql->ExecuteNoneQuery("UPDATE `{$typeInfos['addtable']}` SET typeid='$totype' WHERE aid='{$row[$idtype]}' ");
+                $okids[] = $row[$idtype];
+                $j++;
+            }
+        }
+        //更新HTML
+        foreach($okids as $aid)
+        {
+            $arc = new Archives($aid);
+            $arc->MakeHtml();
+        }
+        ShowMsg("成功移动 $j 个文档!", $ENV_GOBACK_URL);
+        exit();
+    }
+}
+/*-----------------------------
+//还原文档
+function RbReturnArchives(){ }
+------------------------------*/
+else if($dopost=='return')
+{
+    CheckPurview('a_Del,a_AccDel,a_MyDel,sys_ArcBatch');
+    require_once(DEDEINC."/oxwindow.class.php");
+
+    if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+
+    if($qstr=='')
+    {
+        ShowMsg("参数无效!","recycling.php");
+        exit();
+    }
+    $qstrs = explode("`", $qstr);
+    foreach($qstrs as $aid)
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET arcrank='-1',ismake='0' WHERE id='$aid'");
+        $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET `arcrank` = '-1' WHERE id = '$aid'; ");
+    }
+    ShowMsg("成功还原指定的文档!","recycling.php");
+    exit();
+}
+/*-----------------------------
+//清空文档
+function RbClearArchives(){ }
+------------------------------*/
+else if($dopost=='clear')
+{
+    CheckPurview('a_Del,a_AccDel,a_MyDel,sys_ArcBatch');
+    require_once(DEDEINC."/oxwindow.class.php");
+    if(empty($fmdo)) $fmdo = '';
+    $recycle = empty($recycle)? "" : $recycle;
+
+    if($fmdo=='yes')
+    {
+        if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+        if($qstr=='')
+        {
+            ShowMsg("参数无效!","recycling.php");
+            exit();
+        }
+        $qstrs = explode(",", $qstr);
+        $okaids = Array();
+        foreach($qstrs as $qstr)
+        {
+            if(!isset($okaids[$qstr]))
+            {
+                DelArc($qstr, "OK", FALSE, $recycle);
+                $okaids[$qstr] = $qstr;
+            }
+            else
+            {
+                $okaids[$qstr] = 1;
+            }
+        }
+        ShowMsg("成功删除指定的文档!","recycling.php");
+        exit();
+    }
+    else
+    {
+        $dsql->SetQuery("SELECT id FROM `#@__archives` WHERE `arcrank` = '-2'");
+        $dsql->Execute();
+        $qstr = '';
+        while($row = $dsql->GetArray())
+        {
+            $qstr .= $row['id'].",";
+            $aid = $row['id'];
+        }
+        $num = $dsql->GetTotalRow();
+        if(empty($num))
+        {
+            ShowMsg("对不起,未发现相关文档!","recycling.php");
+            exit();
+        }
+        $wintitle = "文档管理-清空所有文档";
+        $wecome_info = "<a href='recycling.php'>文档回收站</a>::清空所有文档";
+        $win = new OxWindow();
+        $win->Init("archives_do.php","js/blank.js","POST");
+        $win->AddHidden("fmdo","yes");
+        $win->AddHidden("dopost",$dopost);
+        $win->AddHidden("qstr",$qstr);
+        $win->AddHidden("aid",$aid);
+        $win->AddHidden("recycle",$recycle);
+        $win->AddTitle("本次操作将清空回收站<font color='#FF0000'>所有共 $num 篇文档</font><br>你确实要永久删除“ $qstr ”这些文档?");
+        $winform = $win->GetWindow("ok");
+        $win->Display();
+    }
+}
+/*-----------------------------
+//清除文档
+function RbDelArchives(){ }
+------------------------------*/
+else if($dopost=='del')
+{
+    CheckPurview('a_Del,a_AccDel,a_MyDel,sys_ArcBatch');
+    require_once(DEDEINC."/oxwindow.class.php");
+    if(empty($fmdo)) $fmdo = '';
+    $recycle = empty($recycle)? "" : $recycle;
+
+    if($fmdo=='yes')
+    {
+        if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+        if($qstr=='')
+        {
+            ShowMsg("参数无效!","recycling.php");
+            exit();
+        }
+        $qstrs = explode("`", $qstr);
+        $okaids = Array();
+
+        foreach($qstrs as $aid)
+        {
+            if(!isset($okaids[$aid]))
+            {
+                DelArc($aid,"OK","",$recycle);
+            }
+            else
+            {
+                $okaids[$aid] = 1;
+            }
+        }
+        ShowMsg("成功删除指定的文档!","recycling.php");
+        exit();
+    }
+
+    else
+    {
+        $wintitle = "文档管理-删除文档";
+        $wecome_info = "<a href='recycling.php'>文档管理</a>::删除文档";
+        $win = new OxWindow();
+        $win->Init("archives_do.php","js/blank.js","POST");
+        $win->AddHidden("fmdo","yes");
+        $win->AddHidden("dopost",$dopost);
+        $win->AddHidden("qstr",$qstr);
+        $win->AddHidden("aid",$aid);
+        $win->AddHidden("recycle",$recycle);
+        $win->AddTitle("你确实要永久删除“ $qstr 和 $aid ”这些文档?");
+        $winform = $win->GetWindow("ok");
+        $win->Display();
+    }
+}
+/*-----------------------------
+//快速编辑
+function quickEdit(){ }
+------------------------------*/
+else if($dopost=='quickEdit')
+{
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    AjaxHead();
+    $query = "SELECT ch.typename as channelname,ch.addtable,ar.membername as rankname,arc.*
+    FROM `#@__archives` arc
+    LEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel
+    LEFT JOIN `#@__arcrank` ar ON ar.rank=arc.arcrank WHERE arc.id='$aid' ";
+    $arcRow = $dsql->GetOne($query);
+    $divname = 'quickEdit';
+    echo "<div class='title' onmousemove=\"DropMoveHand('{$divname}', 225);\" onmousedown=\"DropStartHand();\" onmouseup=\"DropStopHand();\">\r\n";
+    echo "    <div class='titLeft'>快速属性编辑</div>\r\n";
+    echo "    <div class='titRight'><img src='images/ico-close.gif' style='cursor:pointer;' onclick='HideObj(\"{$divname}\");ChangeFullDiv(\"hide\");' alt='关闭' title='关闭' /></div>\r\n";
+    echo "</div>\r\n";
+    echo "<form name='quickeditform' action='archives_do.php?dopost=quickEditSave&aid={$aid}' method='post'>\r\n";
+    echo "<input type='hidden' name='addtable' value='{$arcRow['addtable']}' />\r\n";
+    echo "<input type='hidden' name='oldtypeid' value='{$arcRow['typeid']}' />\r\n";
+    echo "<table width='100%' style='margin-top:6px;z-index:9000;'>\r\n";
+?>
+<tr height='32'>
+    <td width="80" class='bline'>&nbsp;所属栏目:</td>
+    <td class='bline'>
+        <?php
+            $typeOptions = GetOptionList($arcRow['typeid'],$cuserLogin->getUserChannel(), $arcRow['channel']);
+            echo "<select name='typeid' style='width:70%'>\r\n";
+            if($arcRow["typeid"]=="0") echo "<option value='0' selected>请选择栏目...</option>\r\n";
+            echo $typeOptions;
+            echo "</select>";
+        ?>
+    </td>
+</tr>
+<tr height='28'>
+    <td width="80" class='bline'>&nbsp;属 性:</td>
+    <td class='bline'>
+    <input type='hidden' name='oldflag' value='<?php echo $arcRow['flag']; ?>' />
+    <?php
+    $dsql->SetQuery("SELECT * FROM `#@__arcatt` ORDER BY sortid ASC");
+    $dsql->Execute();
+    while($trow = $dsql->GetObject())
+    {
+        if($trow->att=='j' || $trow->att=='p') continue;
+                  if(preg_match("#".$trow->att."#", $arcRow['flag']))
+                  echo "<input class='np' type='checkbox' name='flags[]' id='flags{$trow->att}' value='{$trow->att}' checked='checked' />{$trow->attname}.{$trow->att}";
+        else
+                  echo "<input class='np' type='checkbox' name='flags[]' id='flags{$trow->att}' value='{$trow->att}' />{$trow->attname}.{$trow->att}";
+    }
+    ?>
+    </td>
+</tr>
+<tr height='32'>
+    <td width="80" class='bline'>&nbsp;标 题:</td>
+    <td class='bline'>
+        <input name="title" type="text" id="title" value="<?php echo $arcRow['title']; ?>" style="width:90%" />
+    </td>
+</tr>
+<tr height='32'>
+    <td width="80" class='bline'>&nbsp;简略标题:</td>
+    <td class='bline'>
+        <input name="shorttitle" type="text" id="shorttitle" value="<?php echo $arcRow['shorttitle']; ?>" style="width:60%" />
+    </td>
+</tr>
+<tr height='32'>
+    <td width="80" class='bline'>&nbsp;阅读权限:</td>
+    <td class='bline'>
+        <select name="arcrank" id="arcrank" style="width:120px">
+    <option value='<?php echo $arcRow["arcrank"]?>'>
+    <?php echo $arcRow["rankname"]?>                </option>
+    <?php
+    $urank = $cuserLogin->getUserRank();
+
+    $dsql->SetQuery("SELECT * FROM `#@__arcrank` WHERE adminrank<='$urank'");
+    $dsql->Execute();
+    while($row = $dsql->GetObject()){
+        echo "     <option value='".$row->rank."'>".$row->membername."</option>\r\n";
+    }
+    ?>
+    </select>
+    需要金币:<input name="money" type="text" id="money" value="<?php echo $arcRow["money"]; ?>" style="width:80px" />
+    </td>
+</tr>
+<tr height='32'>
+    <td width="80" class='bline'>&nbsp;关键字:</td>
+    <td class='bline'>
+        <input name="keywords" type="text" id="keywords" value="<?php echo $arcRow['keywords']; ?>" style="width:70%" />
+    </td>
+</tr>
+<tr height='32'>
+    <td colspan='2' align='center' style='padding-top:12px'>
+        <input name="imageField" type="image" src="images/button_ok.gif" width="60" height="22" class="np" border="0" style="cursor:pointer" />
+        &nbsp;&nbsp;
+        <img src="images/button_back.gif" width="60" height="22" border="0" onclick='HideObj("<?php echo $divname; ?>");ChangeFullDiv("hide");' style="cursor:pointer" />
+    </td>
+</td>
+</tr>
+</table>
+</form>
+<?php
+//AJAX窗体结束
+}
+/*-----------------------------
+//保存快速编辑的内容
+function quickEditSave(){ }
+------------------------------*/
+else if($dopost=='quickEditSave')
+{
+    require_once(DEDEADMIN.'/inc/inc_archives_functions.php');
+    //权限检测
+    if(!TestPurview('a_Edit'))
+    {
+        if(TestPurview('a_AccEdit'))
+        {
+            CheckCatalog($typeid, "对不起,你没有操作栏目 {$typeid} 的文档权限!");
+        }
+        else
+        {
+            CheckArcAdmin($aid, $cuserLogin->getUserID());
+        }
+    }
+    $title = dede_htmlspecialchars(cn_substrR($title, $cfg_title_maxlen));
+    $shorttitle = cn_substrR($shorttitle, 36);
+    $keywords = trim(cn_substrR($keywords, 60));
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck')) $arcrank = -1;
+
+    $adminid = $cuserLogin->getUserID();
+    
+    //属性处理
+    $flag = isset($flags) ? join(',', $flags) : '';
+    if(!empty($flag))
+    {
+        if(preg_match("#p#", $oldflag)) $flag .= ',p';
+        if(preg_match("#j#", $oldflag)) $flag .= ',j';
+    }
+	/*
+    else
+    {
+        $flag = $oldflag;
+    }
+	*/
+    
+    $query = "UPDATE `#@__archives` SET
+    typeid = '$typeid',
+    flag = '$flag',
+    arcrank = '$arcrank',
+    money = '$money',
+    title = '$title', 
+    shorttitle = '$shorttitle',
+    keywords = '$keywords',
+    dutyadmin = '$adminid'
+    WHERE id = '$aid'; ";
+    //更新主表
+    $dsql->ExecuteNoneQuery($query);
+    //更新微表
+    $dsql->ExecuteNoneQuery(" UPDATE `#@__arctiny` SET typeid='$typeid',arcrank='$arcrank' WHERE id='$aid' ");
+    //更新附加表
+    if($typeid != $oldtypeid)
+    {
+        $addtable = trim($addtable);
+        if(empty($addtable)) $addtable = '#@__addonarticle';
+        else $addtable = preg_replace("#[^a-z0-9__#@-]#i", "", $addtable);
+            $dsql->ExecuteNoneQuery(" UPDATE `$addtable` SET typeid='$typeid' WHERE aid='$aid' ");
+      }
+    //更新HTML
+    $artUrl = MakeArt($aid, TRUE, TRUE);
+
+        $backurl = !empty($_COOKIE['ENV_GOBACK_URL']) ? $_COOKIE['ENV_GOBACK_URL'] : '-1';
+        ShowMsg('成功更新一篇文档的基本信息!', $backurl);
+        exit();
+}
+/*--------------------------
+分析并自动获取文档关键词
+function makekw(){ }
+--------------------------*/
+else if($dopost=="makekw")
+{
+    include_once(DEDEINC.'/splitword.class.php');
+    CheckPurview('a_Commend,sys_ArcBatch');
+    if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+
+    if($qstr=='')
+    {
+        ShowMsg("参数无效!", $ENV_GOBACK_URL);
+        exit();
+    }
+    $sp = new SplitWord($cfg_soft_lang, $cfg_soft_lang);
+    $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#`#", ',', $qstr));
+    $query = "SELECT arc.*, addt.* From `#@__archives` arc LEFT JOIN `#@__addonarticle` addt ON addt.aid=arc.id  WHERE arc.id in($arcids) AND arc.channel=1 ";
+    $dsql->SetQuery($query);
+    $dsql->Execute();
+    while($row = $dsql->GetArray())
+    {
+        //跳过已经有关键字的内容
+        if(trim($row['keywords']) !='' ) continue;
+        
+        $aid = $row['id'];
+        $keywords = '';
+        $title = $row['title'];
+        $description = $row['description'];
+        $body = cn_substr($row['body'], 5000);
+        $sp->SetSource($title, $cfg_soft_lang, $cfg_soft_lang);
+        $sp->StartAnalysis();
+        $titleindexs = preg_replace("/#p#|#e#/",'',$sp->GetFinallyIndex());
+        $sp->SetSource(Html2Text($body), $cfg_soft_lang, $cfg_soft_lang);
+        $sp->StartAnalysis();
+        $allindexs = preg_replace("/#p#|#e#/",'',$sp->GetFinallyIndex());
+        
+        if(is_array($allindexs) && is_array($titleindexs))
+        {
+            foreach($titleindexs as $k => $v)
+            {
+                if(strlen($keywords.$k)>=60)
+                {
+                    break;
+                }
+                else
+                {
+                    if(strlen($k) <= 2) continue;
+                    $keywords .= $k.',';
+                }
+            }
+            foreach($allindexs as $k => $v)
+            {
+                if(strlen($keywords.$k)>=60)
+                {
+                    break;
+                }
+                else if(!in_array($k,$titleindexs))
+                {
+                    if(strlen($k) <= 2) continue;
+                    $keywords .= $k.',';
+                }
+            }
+        }
+
+        $description = str_replace(' ', ' ', trim($description));
+        $description = str_replace('[', ' ', $description);
+        $description = str_replace(']', ' ', $description);
+        $description = preg_replace("#[ \r\n\t]{1,}#is", ' ', $description);
+        $description = str_replace('关键字', '', $description);
+        $description = str_replace('关键词', '', $description);
+        $description = addslashes($description);
+        $dsql->ExecuteNoneQuery(" UPDATE `#@__archives` SET `keywords`='$keywords',`description`='$description'  WHERE id='{$aid}' ");
+    }
+    $sp = null;
+    ShowMsg("成功分析指定文档的关键词!", $ENV_GOBACK_URL);
+    exit();
+}
+/*--------------------------
+//批量增加属性
+function attsAdd(){ }
+---------------------------*/
+else if($dopost=='attsAdd')
+{
+    CheckPurview('a_Commend,sys_ArcBatch');
+    if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+
+    if($qstr=='')
+    {
+        ShowMsg("参数无效!",$ENV_GOBACK_URL);
+        exit();
+    }
+    if(empty($flagname))
+    {
+        ShowMsg("必须指定要添加的属性!",$ENV_GOBACK_URL);
+        exit();
+    }
+    $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#`#", ',', $qstr));
+    $query = "SELECT arc.id,arc.typeid,ch.issystem,ch.maintable,ch.addtable FROM `#@__arctiny` arc
+           LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid
+           LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype
+          WHERE arc.id in($arcids) ";
+    $dsql->SetQuery($query);
+    $dsql->Execute();
+    while($row = $dsql->GetArray())
+    {
+        $aid = $row['id'];
+        if($row['issystem'] != -1)
+        {
+            $maintable = ( trim($row['maintable'])=='' ? '#@__archives' : trim($row['maintable']) );
+            $arr = $dsql->GetOne("SELECT flag FROM `{$maintable}` WHERE id='$aid' ");
+            $flag = ($arr['flag']=='' ? $flagname : $arr['flag'].','.$flagname);
+            $dsql->ExecuteNoneQuery(" UPDATE `{$maintable}` SET `flag`='$flag' WHERE id='{$aid}' ");
+        }
+        else
+        {
+            $maintable = trim($row['addtable']);
+            $arr = $dsql->GetOne("SELECT flag FROM `{$maintable}` WHERE aid='$aid' ");
+            $flag = ($arr['flag']=='' ? $flagname : $arr['flag'].','.$flagname);
+            $dsql->ExecuteNoneQuery(" UPDATE `{$maintable}` SET `flag`='$flag' WHERE aid='{$aid}' ");
+        }
+    }
+    ShowMsg("成功对选中文档增加指定的属性!",$ENV_GOBACK_URL);
+    exit();
+}
+/*--------------------------
+//批量删除属性
+function attsDel(){ }
+---------------------------*/
+else if($dopost=='attsDel')
+{
+    CheckPurview('a_Commend,sys_ArcBatch');
+    if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+    if($qstr=='')
+    {
+        ShowMsg("参数无效!", $ENV_GOBACK_URL);
+        exit();
+    }
+    if(empty($flagname))
+    {
+        ShowMsg("必须指定要删除的属性!", $ENV_GOBACK_URL);
+        exit();
+    }
+    $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#`#", ',', $qstr));
+    $query = "SELECT arc.id,arc.typeid,ch.issystem,ch.maintable,ch.addtable FROM `#@__arctiny` arc
+           LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid
+           LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype
+          WHERE arc.id in($arcids) ";
+    $dsql->SetQuery($query);
+    $dsql->Execute();
+    while($row = $dsql->GetArray())
+    {
+        $aid = $row['id'];
+        if($row['issystem'] != -1)
+        {
+            $idname = 'id';
+            $maintable = ( trim($row['maintable'])=='' ? '#@__archives' : trim($row['maintable']) );
+            $arr = $dsql->GetOne("SELECT flag FROM `{$maintable}` WHERE id='$aid' ");
+        }
+        else
+        {
+            $idname = 'aid';
+            $maintable = trim($row['addtable']);
+            $arr = $dsql->GetOne("SELECT flag FROM `{$maintable}` WHERE aid='$aid' ");
+        }
+        $flag = $arr['flag'];
+        if(trim($flag)=='' || !preg_match("#".$flagname."#", $flag) )
+        {
+            continue;
+        }
+        else
+        {
+            $flags  = explode(',', $flag);
+            $okflags = array();
+            foreach($flags as $f)
+            {
+                if($f != $flagname) $okflags[] = $f;
+            }
+        }
+        $flag = trim(join(',', $okflags));
+        $dsql->ExecuteNoneQuery(" UPDATE `{$maintable}` SET `flag`='$flag' WHERE {$idname}='{$aid}' ");
+    }
+    ShowMsg("成功对选中文档删除指定的属性!", $ENV_GOBACK_URL);
+    exit();
+}
+/*--------------------------
+//获得批量属性处理的AJAX窗体
+function attsDlg(){ }
+---------------------------*/
+else if($dopost=='attsDlg')
+{
+    if( !empty($aid) && empty($qstr) ) $qstr = $aid;
+
+    $dojobname = ($dojob=='attsDel' ? '批量删除属性' : '批量增加属性');
+    AjaxHead();
+    //输出AJAX可移动窗体
+    $divname = 'attsDlg';
+    echo "<div class='title' onmousemove=\"DropMoveHand('{$divname}', 225);\" onmousedown=\"DropStartHand();\" onmouseup=\"DropStopHand();\">\r\n";
+    echo "    <div class='titLeft'>{$dojobname}</div>\r\n";
+    echo "    <div class='titRight'><img src='images/ico-close.gif' style='cursor:pointer;' onclick='HideObj(\"{$divname}\");ChangeFullDiv(\"hide\");' alt='关闭' title='关闭' /></div>\r\n";
+    echo "</div>\r\n";
+    echo "<form name='quickeditform' action='archives_do.php' method='post'>\r\n";
+    echo "<input type='hidden' name='dopost' value='{$dojob}' />\r\n";
+    echo "<input type='hidden' name='qstr' value='{$qstr}' />\r\n";
+    echo "<table width='100%' style='margin-top:6px;z-index:9000;'>\r\n";
+?>
+<tr height='28'>
+    <td width="80" class='bline'>&nbsp;属 性:</td>
+    <td class='bline'>
+    <input type='hidden' name='oldflag' value='<?php echo $arcRow['flag']; ?>' />
+    <?php
+    $dsql->SetQuery("SELECT * FROM `#@__arcatt` ORDER BY sortid ASC");
+    $dsql->Execute();
+    while($trow = $dsql->GetObject())
+    {
+        if($trow->att=='j' || $trow->att=='p') continue;
+        echo "<input class='np' type='radio' name='flagname' id='flags{$trow->att}' value='{$trow->att}' />{$trow->attname}.{$trow->att}";
+    }
+    ?>
+    </td>
+</tr>
+<tr height='32'>
+    <td width="80" class='bline'>&nbsp;文档ID:</td>
+    <td class='bline'>
+        <input type='text' name='tmpids' value="<?php echo $qstr; ?>" style='width:310px;overflow:hidden;' />
+    </td>
+</tr>
+<tr height='32'>
+    <td colspan='2' align='center' style='padding-top:12px'>
+        <input name="imageField" type="image" src="images/button_ok.gif" width="60" height="22" class="np" border="0" style="cursor:pointer" />
+        &nbsp;&nbsp;
+        <img src="images/button_back.gif" width="60" height="22" border="0" onclick='HideObj("<?php echo $divname; ?>");ChangeFullDiv("hide");' style="cursor:pointer" />
+    </td>
+</td>
+</tr>
+</table>
+</form>
+<?php
+//AJAX窗体结束
+}
+/*------------------------
+function getCatMap() {  }
+-------------------------*/
+else if($dopost=='getCatMap')
+{
+    require_once(DEDEINC.'/typeunit.class.selector.php');
+    AjaxHead();
+    //输出AJAX可移动窗体
+    $divname = 'getCatMap';
+    echo "<div class='title' style='cursor:default;'>\r\n";
+    echo "    <div class='titLeft'>栏目快速选择器</div>\r\n";
+    echo "    <div class='titRight'><img src='images/ico-close.gif' style='cursor:pointer;' onclick='HideObj(\"{$divname}\");ChangeFullDiv(\"hide\");' alt='关闭' title='关闭' /></div>\r\n";
+    echo "</div>\r\n";
+    $tus = new TypeUnitSelector();
+?>
+<form name='quicksel' action='javascript:;' method='get'>
+<div class='quicksel'>
+    <?php $tus->ListAllType($channelid); ?>
+</div>
+<div align='center' class='quickselfoot'>
+    <img src="images/button_ok.gif" onclick="getSelCat('<?php echo $targetid; ?>');" width="60" height="22" class="np" border="0" style="cursor:pointer" />
+        &nbsp;&nbsp;
+    <img src="images/button_back.gif" onclick='HideObj("<?php echo $divname; ?>");ChangeFullDiv("hide");' width="60" height="22" border="0"  style="cursor:pointer" />
+</div>
+</form>
+<?php
+//AJAX窗体结束
+}
+?>

+ 248 - 0
admin/archives_edit.php

@@ -0,0 +1,248 @@
+<?php
+/**
+ * 文档编辑
+ *
+ * @version        $Id: archives_edit.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('a_Edit,a_AccEdit,a_MyEdit');
+require_once(DEDEINC."/customfields.func.php");
+require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+
+if(empty($dopost)) $dopost = '';
+
+if($dopost!='save')
+{
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    require_once(DEDEINC."/dedetag.class.php");
+    ClearMyAddon();
+    $aid = intval($aid);
+
+    //读取归档信息
+    $arcQuery = "SELECT ch.typename as channelname,ar.membername as rankname,arc.*
+    FROM `#@__archives` arc
+    LEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel
+    LEFT JOIN `#@__arcrank` ar ON ar.rank=arc.arcrank WHERE arc.id='$aid'
+    ";
+
+    $arcRow = $dsql->GetOne($arcQuery);
+    if(!is_array($arcRow))
+    {
+        ShowMsg("读取档案基本信息出错!","-1");
+        exit();
+    }
+
+    $query = "SELECT * FROM `#@__channeltype` WHERE id='".$arcRow['channel']."'";
+    $cInfos = $dsql->GetOne($query);
+    if(!is_array($cInfos))
+    {
+        ShowMsg("读取频道配置信息出错!","javascript:;");
+        exit();
+    }
+    $addtable = $cInfos['addtable'];
+    $addRow = $dsql->GetOne("SELECT * FROM `$addtable` WHERE aid='$aid'");
+    $channelid = $arcRow['channel'];
+    $tags = GetTags($aid);
+    include DedeInclude("templets/archives_edit.htm");
+    exit();
+}
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+    $flag = isset($flags) ? join(',',$flags) : '';
+    $notpost = isset($notpost) && $notpost == 1 ? 1: 0;
+    
+    if(empty($typeid2)) $typeid2 = 0;
+    if(!isset($autokey)) $autokey = 0;
+    if(!isset($remote)) $remote = 0;
+    if(!isset($dellink)) $dellink = 0;
+    if(!isset($autolitpic)) $autolitpic = 0;
+    if(!isset($writer)) $writer = '';
+
+    if($typeid==0)
+    {
+        ShowMsg("请指定文档的栏目!","-1");
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg("文档为非指定的类型,请检查你发布内容的表单是否合法!","-1");
+        exit();
+    }
+    if(!CheckChannel($typeid,$channelid))
+    {
+        ShowMsg("你所选择的栏目与当前模型不相符,请选择白色的选项!","-1");
+        exit();
+    }
+    if(!TestPurview('a_Edit'))
+    {
+        if(TestPurview('a_AccEdit'))
+        {
+            CheckCatalog($typeid,"对不起,你没有操作栏目 {$typeid} 的文档权限!");
+        }
+        else
+        {
+            CheckArcAdmin($id,$cuserLogin->getUserID());
+        }
+    }
+
+    //对保存的内容进行处理
+    $pubdate = GetMkTime($pubdate);
+    $sortrank = AddDay($pubdate, $sortup);
+    $ismake = $ishtml==0 ? -1 : 0;
+    $title = cn_substrR($title, $cfg_title_maxlen);
+    $shorttitle = cn_substrR($shorttitle, 36);
+    $color =  cn_substrR($color, 7);
+    $writer =  cn_substrR($writer, 20);
+    $source = cn_substrR($source, 30);
+    $description = cn_substrR($description, $cfg_auot_description);
+    $keywords = trim(cn_substrR($keywords, 60));
+    $filename = trim(cn_substrR($filename, 40));
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck')) $arcrank = -1;
+
+    $adminid = $cuserLogin->getUserID();
+
+    //处理上传的缩略图
+    if(empty($ddisremote)) $ddisremote = 0;
+
+    $litpic = GetDDImage('none', $picname, $ddisremote);
+
+    //分析处理附加表数据
+    $inadd_f = '';
+    $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';',$dede_addonfields);
+        $inadd_f = '';
+        $inadd_v = '';
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='')
+                {
+                    continue;
+                }
+                $vs = explode(',',$v);
+                if($vs[1]=='htmltext'||$vs[1]=='textdata') //HTML文本特殊处理
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
+                }else
+                {
+                    if(!isset(${$vs[0]}))
+                    {
+                        ${$vs[0]} = '';
+                    }
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$id);
+                }
+                $inadd_f .= ",`{$vs[0]}` = '".${$vs[0]}."'";
+            }
+        }
+    }
+
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+    if($redirecturl!='' && !preg_match("#j#", $flag))
+    {
+        $flag = ($flag=='' ? 'j' : $flag.',j');
+    }
+
+    //跳转网址的文档强制为动态
+    if(preg_match("#j#", $flag)) $ismake = -1;
+    //更新数据库的SQL语句
+    $inQuery = "UPDATE `#@__archives` SET
+    typeid='$typeid',
+    typeid2='$typeid2',
+    sortrank='$sortrank',
+    flag='$flag',
+    notpost='$notpost',
+    click='$click',
+    ismake='$ismake',
+    arcrank='$arcrank',
+    money='$money',
+    title='$title',
+    color='$color',
+    writer='$writer',
+    source='$source',
+    litpic='$litpic',
+    pubdate='$pubdate',
+    description='$description',
+    keywords='$keywords',
+    shorttitle='$shorttitle',
+    filename='$filename',
+    dutyadmin='$adminid',
+    weight='$weight'
+    WHERE id='$id'; ";
+    if(!$dsql->ExecuteNoneQuery($inQuery))
+    {
+        ShowMsg("更新数据库archives表时出错,请检查!","-1");
+        exit();
+    }
+
+    $cts = $dsql->GetOne("SELECT addtable From `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if($addtable!='')
+    {
+        $useip = GetIP();
+        $iquery = "UPDATE `$addtable` SET typeid='$typeid'{$inadd_f},redirecturl='$redirecturl',userip='$useip' WHERE aid='$id' ";
+        if(!$dsql->ExecuteNoneQuery($iquery))
+        {
+            ShowMsg("更新附加表 `$addtable`  时出错,请检查原因!","javascript:;");
+            exit();
+        }
+    }
+
+    //生成HTML
+    UpIndexKey($id, $arcrank, $typeid, $sortrank, $tags);
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!="")
+        {
+            list($servurl, $servuser, $servpwd) = explode(',', $serviterm);
+            $config=array( 'hostname' => $servurl, 'username' => $servuser, 'password' => $servpwd,'debug' => 'TRUE');
+        } else {
+            $config=array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+    $artUrl = MakeArt($id, TRUE, TRUE, $isremote);
+    if($artUrl=='')
+    {
+        $artUrl = $cfg_phpurl."/view.php?aid=$id";
+    }
+    ClearMyAddon($id, $title);
+    //返回成功信息
+    $msg = "
+      请选择你的后续操作:
+    <a href='archives_add.php?cid=$typeid'><u>发布新文档</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$id."&dopost=editArchives'><u>查看更改</u></a>
+    &nbsp;&nbsp;
+    <a href='$artUrl' target='_blank'><u>查看文档</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>管理文档</u></a>
+    &nbsp;&nbsp;
+    $backurl
+    ";
+
+    $wintitle = "成功更改文档!";
+    $wecome_info = "文档管理::更改文档";
+    $win = new OxWindow();
+    $win->AddTitle("成功更改文档:");
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand","&nbsp;",false);
+    $win->Display();
+}

+ 197 - 0
admin/archives_sg_add.php

@@ -0,0 +1,197 @@
+<?php
+/**
+ * 单表模型文档发布
+ *
+ * @version        $Id: archives_sg_add.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('a_New,a_AccNew');
+require_once(DEDEINC."/customfields.func.php");
+require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+
+if(empty($dopost)) $dopost = '';
+
+if($dopost!='save')
+{
+    require_once(DEDEINC."/dedetag.class.php");
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    ClearMyAddon();
+    $channelid = empty($channelid) ? 0 : intval($channelid);
+    $cid = empty($cid) ? 0 : intval($cid);
+
+    //获得频道模型ID
+    if($cid > 0 && $channelid == 0)
+    {
+        $row = $dsql->GetOne("SELECT channeltype FROM `#@__arctype` WHERE id='$cid'; ");
+        $channelid = $row['channeltype'];
+    }
+    else
+    {
+        if($channelid==0)
+        {
+            ShowMsg("无法识别模型信息,因此无法操作!","-1");
+            exit();
+        }
+    }
+
+    //获得频道模型信息
+    $cInfos = $dsql->GetOne(" SELECT * FROM  `#@__channeltype` WHERE id='$channelid' ");
+    $channelid = $cInfos['id'];
+    include DedeInclude("templets/archives_sg_add.htm");
+    exit();
+}
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+
+    if($typeid==0)
+    {
+        ShowMsg("请指定文档的栏目!","-1");
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg("文档为非指定的类型,请检查你发布内容的表单是否合法!","-1");
+        exit();
+    }
+    if(!CheckChannel($typeid,$channelid) )
+    {
+        ShowMsg("你所选择的栏目与当前模型不相符,请选择白色的选项!","-1");
+        exit();
+    }
+    if(!TestPurview('a_New'))
+    {
+        CheckCatalog($typeid,"对不起,你没有操作栏目 {$typeid} 的权限!");
+    }
+    //对保存的内容进行处理
+    if(empty($writer))$writer=$cuserLogin->getUserName();
+    if(empty($source))$source='未知';
+    if(empty($flags)) $flag = '';
+    else $flag = join(',', $flags);
+    $senddate = time();
+    $title = cn_substrR($title,$cfg_title_maxlen);
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck')) $arcrank = -1;
+
+    $adminid = $cuserLogin->getUserID();
+    $userip = GetIP();
+
+    if(empty($ddisremote)) $ddisremote = 0;
+
+    $litpic = GetDDImage('none', $picname, $ddisremote);
+
+    //生成文档ID
+    $arcID = GetIndexKey($arcrank, $typeid, $senddate, $channelid, $senddate, $adminid);
+
+    if(empty($arcID))
+    {
+        ShowMsg("无法获得主键,因此无法进行后续操作!","-1");
+        exit();
+    }
+
+    //分析处理附加表数据
+    $inadd_f = '';
+    $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';',$dede_addonfields);
+        $inadd_f = '';
+        $inadd_v = '';
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='')
+                {
+                    continue;
+                }
+                $vs = explode(',',$v);
+                if($vs[1]=='htmltext'||$vs[1]=='textdata') //HTML文本特殊处理
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
+                }
+                else
+                {
+                    if(!isset(${$vs[0]}))
+                    {
+                        ${$vs[0]} = '';
+                    }
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$arcID);
+                }
+                $inadd_f .= ','.$vs[0];
+                $inadd_v .= " ,'".${$vs[0]}."' ";
+            }
+        }
+    }
+
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+
+    //保存到附加表
+    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if(!empty($addtable))
+    {
+        $query = "INSERT INTO `{$addtable}`(aid,typeid,channel,arcrank,mid,click,title,senddate,flag,litpic,userip{$inadd_f})
+                       VALUES('$arcID','$typeid','$channelid','$arcrank','$adminid','0','$title','$senddate','$flag','$litpic','$userip'{$inadd_v})";
+        if(!$dsql->ExecuteNoneQuery($query))
+        {
+            $gerr = $dsql->GetError();
+            $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
+            ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
+            exit();
+        }
+    }
+
+    //生成HTML
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!="")
+        {
+            list($servurl, $servuser, $servpwd) = explode(',', $serviterm);
+            $config=array( 'hostname' => $servurl, 'username' => $servuser, 'password' => $servpwd,'debug' => 'TRUE');
+        } else {
+            $config=array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+    $artUrl = MakeArt($arcID, TRUE, TRUE, $isremote);
+    if($artUrl=='')
+    {
+        $artUrl = $cfg_phpurl."/view.php?aid=$arcID";
+    }
+    ClearMyAddon($arcID, $title);
+    //返回成功信息
+    $msg = "
+      请选择你的后续操作:
+    <a href='archives_sg_add.php?cid=$typeid'><u>继续发布文档</u></a>
+    &nbsp;&nbsp;
+    <a href='$artUrl' target='_blank'><u>查看文档</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文档</u></a>
+    &nbsp;&nbsp;
+    <a href='content_sg_list.php?cid=$typeid&channelid={$channelid}&dopost=listArchives'><u>已发布文档管理</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_main.php'><u>网站栏目管理</u></a>
+    ";
+
+    $wintitle = "成功发布文档!";
+    $wecome_info = "文档管理::发布文档";
+    $win = new OxWindow();
+    $win->AddTitle("成功发布文档:");
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand","&nbsp;",false);
+    $win->Display();
+}

+ 181 - 0
admin/archives_sg_edit.php

@@ -0,0 +1,181 @@
+<?php
+/**
+ * 单表模型文档编辑
+ *
+ * @version        $Id: archives_sg_edit.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('a_Edit,a_AccEdit,a_MyEdit');
+require_once(DEDEINC."/customfields.func.php");
+require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+
+if(empty($dopost)) $dopost = '';
+
+if($dopost!='save')
+{
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    require_once(DEDEINC."/dedetag.class.php");
+    ClearMyAddon();
+    $aid = intval($aid);
+
+    //读取归档信息
+    $arcQuery = "SELECT ch.*,arc.* FROM `#@__arctiny` arc
+    LEFT JOIN `#@__channeltype` ch on ch.id=arc.channel WHERE arc.id='$aid' ";
+
+    $cInfos = $dsql->GetOne($arcQuery);
+    if(!is_array($cInfos))
+    {
+        ShowMsg("读频道模型信息出错!","-1");
+        exit();
+    }
+
+    $addtable = $cInfos['addtable'];
+    $addRow = $dsql->GetOne("SELECT arc.*,ar.membername as rankname FROM `$addtable` arc LEFT JOIN `#@__arcrank` ar on ar.rank=arc.arcrank WHERE arc.aid='$aid'");
+    $channelid = $cInfos['channel'];
+    $tags = GetTags($aid);
+    include DedeInclude('templets/archives_sg_edit.htm');
+    exit();
+}
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+    if($typeid==0)
+    {
+        ShowMsg("请指定文档的栏目!","-1");
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg("文档为非指定的类型,请检查你发布内容的表单是否合法!","-1");
+        exit();
+    }
+    if(!CheckChannel($typeid,$channelid))
+    {
+        ShowMsg("你所选择的栏目与当前模型不相符,请选择白色的选项!","-1");
+        exit();
+    }
+    if(!TestPurview('a_Edit'))
+    {
+        if(TestPurview('a_AccEdit'))
+        {
+            CheckCatalog($typeid, "对不起,你没有操作栏目 {$typeid} 的文档权限!");
+        }
+        else
+        {
+            CheckArcAdmin($id,$cuserLogin->getUserID());
+        }
+    }
+    //对保存的内容进行处理
+    if(empty($flags)) $flag = '';
+    else $flag = join(',', $flags);
+    $title = cn_substrR($title, $cfg_title_maxlen);
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck')) $arcrank = -1;
+
+    $adminid = $cuserLogin->getUserID();
+    
+    //处理上传的缩略图
+    if(empty($ddisremote)) $ddisremote = 0;
+    $litpic = GetDDImage('none', $picname, $ddisremote);
+    
+    //分析处理附加表数据
+    $inadd_f = '';
+    $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';', $dede_addonfields);
+        $inadd_f = '';
+        $inadd_v = '';
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='')
+                {
+                    continue;
+                }
+                $vs = explode(',',$v);
+                if($vs[1]=='htmltext'||$vs[1]=='textdata') //HTML文本特殊处理
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
+                }else
+                {
+                    if(!isset(${$vs[0]}))
+                    {
+                        ${$vs[0]} = '';
+                    }
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$id);
+                }
+                $inadd_f .= ",`{$vs[0]}` = '".${$vs[0]}."'";
+            }
+        }
+    }
+    
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+
+    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if($addtable!='')
+    {
+        $iquery = "UPDATE `$addtable` SET typeid='$typeid',arcrank='$arcrank',title='$title',flag='$flag',litpic='$litpic'{$inadd_f} WHERE aid='$id' ";
+        if(!$dsql->ExecuteNoneQuery($iquery))
+        {
+            ShowMsg("更新附加表 `$addtable`  时出错,请检查原因!","javascript:;");
+            exit();
+        }
+    }
+
+    //生成HTML
+    UpIndexKey($id, $arcrank, $typeid, $sortrank, '');
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!="")
+        {
+            list($servurl, $servuser, $servpwd) = explode(',', $serviterm);
+            $config = array( 'hostname' => $servurl, 'username' => $servuser, 
+                                      'password' => $servpwd,'debug' => 'TRUE');
+        } else {
+            $config = array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+
+    $artUrl = MakeArt($id, TRUE, TRUE, $isremote);
+    if($artUrl=='') $artUrl = $cfg_phpurl."/view.php?aid=$id";
+
+    ClearMyAddon($id, $title);
+    //返回成功信息
+    $msg = "
+      请选择你的后续操作:
+    <a href='archives_sg_add.php?cid=$typeid'><u>发布新文档</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$id."&dopost=editArchives'><u>查看更改</u></a>
+    &nbsp;&nbsp;
+    <a href='$artUrl' target='_blank'><u>查看文档</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_do.php?cid=$typeid&channelid={$channelid}&dopost=listArchives'><u>管理文档</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_main.php'><u>网站栏目管理</u></a>
+    ";
+
+    $wintitle = "成功更改文档!";
+    $wecome_info = "文档管理::更改文档";
+    $win = new OxWindow();
+    $win->AddTitle("成功更改文档:");
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand","&nbsp;",false);
+    $win->Display();
+}

+ 285 - 0
admin/article_add.php

@@ -0,0 +1,285 @@
+<?php
+require_once(dirname(__FILE__).'/config.php');
+CheckPurview('a_New,a_AccNew');
+require_once(DEDEINC.'/customfields.func.php');
+require_once(DEDEADMIN.'/inc/inc_archives_functions.php');
+if(file_exists(DEDEDATA.'/template.rand.php'))
+{
+    require_once(DEDEDATA.'/template.rand.php');
+}
+if(empty($dopost)) $dopost = '';
+
+if($dopost!='save')
+{
+    require_once(DEDEINC."/dedetag.class.php");
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    ClearMyAddon();
+    $channelid = empty($channelid) ? 0 : intval($channelid);
+    $cid = empty($cid) ? 0 : intval($cid);
+
+    if(empty($geturl)) $geturl = '';
+    
+    $keywords = $writer = $source = $body = $description = $title = '';
+
+    //采集单个网页
+    if(preg_match("#^http:\/\/#", $geturl))
+    {
+        require_once(DEDEADMIN."/inc/inc_coonepage.php");
+        $redatas = CoOnePage($geturl);
+        extract($redatas);
+    }
+
+    //获得频道模型ID
+    if($cid>0 && $channelid==0)
+    {
+        $row = $dsql->GetOne("Select channeltype From `#@__arctype` where id='$cid'; ");
+        $channelid = $row['channeltype'];
+    }
+    else
+    {
+        if($channelid==0)
+        {
+            $channelid = 1;
+        }
+    }
+
+    //获得频道模型信息
+    $cInfos = $dsql->GetOne(" Select * From  `#@__channeltype` where id='$channelid' ");
+    
+    //获取文章最大id以确定当前权重
+    $maxWright = $dsql->GetOne("SELECT COUNT(*) AS cc FROM #@__archives");
+    
+    include DedeInclude("templets/article_add.htm");
+    exit();
+}
+
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+    $flag = isset($flags) ? join(',',$flags) : '';
+    $notpost = isset($notpost) && $notpost == 1 ? 1: 0;
+    
+    if(empty($typeid2)) $typeid2 = '';
+    if(!isset($autokey)) $autokey = 0;
+    if(!isset($remote)) $remote = 0;
+    if(!isset($dellink)) $dellink = 0;
+    if(!isset($autolitpic)) $autolitpic = 0;
+    if(empty($click)) $click = ($cfg_arc_click=='-1' ? mt_rand(50, 200) : $cfg_arc_click);
+    
+    if(empty($typeid))
+    {
+        ShowMsg("请指定文档的栏目!","-1");
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg("文档为非指定的类型,请检查你发布内容的表单是否合法!","-1");
+        exit();
+    }
+    if(!CheckChannel($typeid,$channelid))
+    {
+        ShowMsg("你所选择的栏目与当前模型不相符,请选择白色的选项!","-1");
+        exit();
+    }
+    if(!TestPurview('a_New'))
+    {
+        CheckCatalog($typeid,"对不起,你没有操作栏目 {$typeid} 的权限!");
+    }
+
+    //对保存的内容进行处理
+    if(empty($writer))$writer=$cuserLogin->getUserName();
+    if(empty($source))$source='未知';
+    $pubdate = GetMkTime($pubdate);
+    $senddate = time();
+    $sortrank = AddDay($pubdate,$sortup);
+    $ismake = $ishtml==0 ? -1 : 0;
+    $title = preg_replace("#\"#", '"', $title);
+    $title = dede_htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
+    $shorttitle = cn_substrR($shorttitle,36);
+    $color =  cn_substrR($color,7);
+    $writer =  cn_substrR($writer,20);
+    $source = cn_substrR($source,30);
+    $description = cn_substrR($description,$cfg_auot_description);
+    $keywords = cn_substrR($keywords,60);
+    $filename = trim(cn_substrR($filename,40));
+    $userip = GetIP();
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck'))
+    {
+        $arcrank = -1;
+    }
+    $adminid = $cuserLogin->getUserID();
+
+    //处理上传的缩略图
+    if(empty($ddisremote))
+    {
+        $ddisremote = 0;
+    }
+    
+    $litpic = GetDDImage('none', $picname, $ddisremote);
+
+    //生成文档ID
+    $arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
+    
+    if(empty($arcID))
+    {
+        ShowMsg("无法获得主键,因此无法进行后续操作!","-1");
+        exit();
+    }
+    if(trim($title) == '')
+    {
+        ShowMsg('标题不能为空', '-1');
+        exit();
+    }
+
+    //处理body字段自动摘要、自动提取缩略图等
+    $body = AnalyseHtmlBody($body,$description,$litpic,$keywords,'htmltext');
+
+    //自动分页
+    if($sptype=='auto')
+    {
+        $body = SpLongBody($body,$spsize*1024,"#p#分页标题#e#");
+    }
+
+    //分析处理附加表数据
+    $inadd_f = $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';',$dede_addonfields);
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='') continue;
+                $vs = explode(',',$v);
+                if($vs[1]=='htmltext'||$vs[1]=='textdata')
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
+                }
+                else
+                {
+                    if(!isset(${$vs[0]})) ${$vs[0]} = '';
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$arcID);
+                }
+                $inadd_f .= ','.$vs[0];
+                $inadd_v .= " ,'".${$vs[0]}."' ";
+            }
+        }
+    }
+
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+    if($redirecturl!='' && !preg_match("#j#", $flag))
+    {
+        $flag = ($flag=='' ? 'j' : $flag.',j');
+    }
+    
+    //跳转网址的文档强制为动态
+    if(preg_match("#j#", $flag)) $ismake = -1;
+
+    //保存到主表
+    $query = "INSERT INTO `#@__archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
+    color,writer,source,litpic,pubdate,senddate,mid,voteid,notpost,description,keywords,filename,dutyadmin,weight)
+    VALUES ('$arcID','$typeid','$typeid2','$sortrank','$flag','$ismake','$channelid','$arcrank','$click','$money',
+    '$title','$shorttitle','$color','$writer','$source','$litpic','$pubdate','$senddate',
+    '$adminid','$voteid','$notpost','$description','$keywords','$filename','$adminid','$weight');";
+
+    if(!$dsql->ExecuteNoneQuery($query))
+    {
+        $gerr = $dsql->GetError();
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
+        ShowMsg("把数据保存到数据库主表 `#@__archives` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
+        exit();
+    }
+
+    //保存到附加表
+    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if(empty($addtable))
+    {
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__archives` WHERE id='$arcID'");
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
+        ShowMsg("没找到当前模型[{$channelid}]的主表信息,无法完成操作!。","javascript:;");
+        exit();
+    }
+    $useip = GetIP();
+    $templet = empty($templet) ? '' : $templet;
+    $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body'{$inadd_v})";
+    if(!$dsql->ExecuteNoneQuery($query))
+    {
+        $gerr = $dsql->GetError();
+        $dsql->ExecuteNoneQuery("Delete From `#@__archives` where id='$arcID'");
+        $dsql->ExecuteNoneQuery("Delete From `#@__arctiny` where id='$arcID'");
+        ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
+        exit();
+    }
+    //生成HTML
+    InsertTags($tags,$arcID);
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!=""){
+            list($servurl,$servuser,$servpwd) = explode(',',$serviterm);
+            $config=array( 'hostname' => $servurl, 'username' => $servuser, 'password' => $servpwd,'debug' => 'TRUE');
+        }else{
+            $config=array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+	$picTitle = false;
+	if(count($_SESSION['bigfile_info']) > 0)
+	{
+		foreach ($_SESSION['bigfile_info'] as $k => $v)
+		{
+			if(!empty($v))
+			{
+				$pictitle = ${'picinfook'.$k};
+				$titleSet = '';
+				if(!empty($pictitle))
+				{
+					$picTitle = TRUE;
+					$titleSet = ",title='{$pictitle}'";
+				}
+				$dsql->ExecuteNoneQuery("UPDATE `#@__uploads` SET arcid='{$arcID}'{$titleSet} WHERE url LIKE '{$v}'; ");
+			}
+		}
+	}
+    $artUrl = MakeArt($arcID,true,true,$isremote);
+    if($artUrl=='')
+    {
+        $artUrl = $cfg_phpurl."/view.php?aid=$arcID";
+    }
+    ClearMyAddon($arcID, $title);
+
+
+    //返回成功信息
+    $msg = "      请选择你的后续操作:
+    <a href='article_add.php?cid=$typeid'><u>继续发布文章</u></a>
+    &nbsp;&nbsp;
+    <a href='$artUrl' target='_blank'><u>查看文章</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$arcID."&dopost=editArchives'><u>更改文章</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>已发布文章管理</u></a>
+    &nbsp;&nbsp;
+    $backurl
+  ";
+  $msg = "<div style=\"line-height:36px;height:36px\">{$msg}</div>".GetUpdateTest();
+    $wintitle = "成功发布文章!";
+    $wecome_info = "文章管理::发布文章";
+    $win = new OxWindow();
+    $win->AddTitle("成功发布文章:");
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand","&nbsp;",false);
+    $win->Display();
+}
+
+?>

+ 44 - 0
admin/article_allowurl_edit.php

@@ -0,0 +1,44 @@
+<?php
+/**
+ * 允许的站内链接
+ *
+ * @version        $Id: article_allowurl_edit.php 1 11:36 2010年10月8日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/oxwindow.class.php");
+CheckPurview('sys_Source');
+if(empty($dopost)) $dopost = '';
+if(empty($allurls)) $allsource = '';
+else $allurls = stripslashes($allurls);
+
+$m_file = DEDEDATA."/admin/allowurl.txt";
+
+//保存
+if($dopost=='save')
+{
+    $fp = fopen($m_file,'w');
+    flock($fp,3);
+    fwrite($fp,$allurls);
+    fclose($fp);
+    echo "<script>alert('Save OK!');</script>";
+}
+//读出
+if(empty($allurls) && filesize($m_file)>0)
+{
+    $fp = fopen($m_file,'r');
+    $allurls = fread($fp,filesize($m_file));
+    fclose($fp);
+}
+$wintitle = "";
+$wecome_info = "允许的超链接";
+$win = new OxWindow();
+$win->Init('article_allowurl_edit.php','js/blank.js','POST');
+$win->AddHidden('dopost','save');
+$win->AddTitle("每行保存一个超链接:");
+$win->AddMsgItem("<textarea name='allurls' id='allurls' style='width:100%;height:300px'>$allurls</textarea>");
+$winform = $win->GetWindow('ok');
+$win->Display();

+ 130 - 0
admin/article_coonepage_rule.php

@@ -0,0 +1,130 @@
+<?php
+/**
+ * 文档规则采集
+ *
+ * @version        $Id: article_coonepage_rule.php 1 14:12 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/datalistcp.class.php");
+setcookie("ENV_GOBACK_URL",$dedeNowurl,time()+3600,"/");
+if(empty($action)) $action = '';
+
+/*------
+function _AddNote(){ }
+-------*/
+if($action == 'add')
+{
+    $row = $dsql->GetOne("SELECT * FROM `#@__co_onepage` WHERE url LIKE '$url' ");
+    if(is_array($row))
+    {
+        echo "系统已经存在这个网址的条目!";
+    } else {
+        $query = " INSERT INTO `#@__co_onepage`(`url`,`title`,`issource`,`lang`,`rule`) Values('$url','$title','$issource','$lang','$rule'); ";
+        $dsql->ExecuteNonequery($query);
+        echo $dsql->GetError();
+    }
+}
+/*------
+function _DelNote(){ }
+-------*/
+else if($action == 'del')
+{
+    if(!preg_match("#,#", $ids))
+    {
+        $query = "DELETE FROM `#@__co_onepage` WHERE id='$ids' ";
+    }
+    else
+    {
+        $query = "DELETE FROM `#@__co_onepage` WHERE id IN($ids) ";
+    }
+    $dsql->ExecuteNonequery($query);
+}
+
+/*------
+function _EditNote(){ }
+-------*/
+else if($action == 'editsave')
+{
+    $query = "UPDATE `#@__co_onepage` SET `url`='$url',`title`='$title',`issource`='$issource',`lang`='$lang',`rule`='$rule' WHERE id='$id' ";
+    $dsql->ExecuteNonequery($query);
+    echo $dsql->GetError();
+}
+/*------
+function _EditNoteLoad(){ }
+-------*/
+else if($action == 'editload')
+{
+    $row = $dsql->GetOne("SELECT * FROM `#@__co_onepage` WHERE id='$id' ");
+    AjaxHead();
+?>
+<form name='addform' action='article_coonepage_rule.php' method='post'>
+<input type='hidden' name='id' value='<?php echo $id; ?>' />
+<input type='hidden' name='action' value='editsave' />
+<table width="430" border="0" cellspacing="0" cellpadding="0">
+  <tr>
+    <td width="102" height="30">网站名称:</td>
+    <td width="302"><input name="title" type="text" id="title" style="width:200px" value="<?php echo $row['title']; ?>" /></td>
+    <td width="26" align="center"><a href="javascript:CloseEditNode()"><img src="images/close.gif" width="12" height="12" border="0" /></a></td>
+  </tr>
+  <tr>
+    <td height="30">原内容编码:</td>
+    <td colspan="2">
+      <input type="radio" name="lang" value="gb2312" <?php echo ($row['lang']=='gb2312' ? ' checked="checked" ' : ''); ?> />
+      GB2312/GBK
+      <input type="radio" name="lang" value="utf-8" <?php echo ($row['lang']=='utf-8' ? ' checked="checked" ' : ''); ?> />
+      UTF-8
+    </td>
+  </tr>
+  <tr>
+    <td height="30">用作文章来源:</td>
+    <td colspan="2">
+        <input type="radio" name="issource" value="0" <?php echo ($row['issource']==0 ? ' checked="checked" ' : ''); ?> />
+      否
+      <input name="issource" type="radio" value="1" <?php echo ($row['issource']==1 ? ' checked="checked" ' : ''); ?> />
+      是
+    </td>
+  </tr>
+  <tr>
+    <td height="30">网站网址:</td>
+    <td colspan="2">
+        <input name="url" type="text" id="url" value="<?php echo $row['url']; ?>" style="width:200px" />
+    </td>
+  </tr>
+  <tr>
+    <td height="30">&nbsp;</td>
+    <td colspan="2">
+    使用不带http及任何附加目录的网址<br />
+    如:news.dedecms.com
+    </td>
+  </tr>
+  <tr>
+    <td height="30">采集规则:</td>
+    <td colspan="2">仅针对文章内容,格式:前面HTML{@body}后面HMTL</td>
+  </tr>
+  <tr>
+    <td height="90">&nbsp;</td>
+    <td colspan="2"><textarea name="rule" style="width:300px;height:80px"><?php echo $row['rule']; ?></textarea></td>
+  </tr>
+  <tr>
+    <td height="32">&nbsp;</td>
+    <td colspan="2"><input class="nbt" type="submit" name="Submit" value="保存规则" /> 
+    <input type="reset" class="nbt" name="Submit2" value="重置" /></td>
+  </tr>
+</table>
+</form>
+<?php
+    exit();
+} //loadedit
+/*---------------
+function _ShowLoad(){ }
+-------------*/
+$sql = "";
+$sql = "SELECT id,url,title,lang,issource FROM `#@__co_onepage` ORDER BY id DESC";
+$dlist = new DataListCP();
+$dlist->SetTemplate(DEDEADMIN."/templets/article_coonepage_rule.htm");
+$dlist->SetSource($sql);
+$dlist->Display();

+ 202 - 0
admin/article_description_main.php

@@ -0,0 +1,202 @@
+<?php
+/**
+ * 文档描述管理
+ *
+ * @version        $Id: article_description_main.php 1 14:12 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+@ob_start();
+@set_time_limit(3600);
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('sys_Keyword');
+if(empty($dojob)) $dojob = '';
+if($dojob=='')
+{
+    include DedeInclude("templets/article_description_main.htm");
+    exit();
+}
+else
+{
+    if(empty($startdd)) $startdd = 0;
+    if(empty($pagesize)) $pagesize = 100;
+    if(empty($totalnum)) $totalnum = 0;
+    if(empty($sid)) $sid = 0;
+    if(empty($eid)) $eid = 0;
+    if(empty($dojob)) $dojob = 'des';
+
+    $table = preg_replace("#[^0-9a-zA-Z_\#@]#", "", $table);
+    $field = preg_replace("#[^0-9a-zA-Z_\[\]]#", "", $field);
+    $channel = intval($channel);
+    if($dsize>250) $dsize = 250;
+    $tjnum = 0;
+
+    //获取自动摘要
+    if($dojob=='des')
+    {
+        if(empty($totalnum))
+        {
+            $addquery  = "";
+            if($sid!=0)
+            {
+                $addquery  .= " AND id>='$sid' ";
+            }
+            if($eid!=0)
+            {
+                $addquery  .= " AND id<='$eid' ";
+            }
+            $tjQuery = "SELECT COUNT(*) AS dd FROM #@__archives WHERE channel='{$channel}' $addquery";
+            $row = $dsql->GetOne($tjQuery);
+            $totalnum = $row['dd'];
+        }
+        if($totalnum > 0)
+        {
+            $addquery  = "";
+            if($sid!=0)
+            {
+                $addquery  .= " AND #@__archives.id>='$sid' ";
+            }
+            if($eid!=0)
+            {
+                $addquery  .= " AND #@__archives.id<='$eid' ";
+            }
+            $fquery = "SELECT #@__archives.id,#@__archives.title,#@__archives.description,{$table}.{$field}
+              FROM #@__archives LEFT JOIN {$table} ON {$table}.aid=#@__archives.id
+              WHERE #@__archives.channel='{$channel}' $addquery LIMIT $startdd,$pagesize ; ";
+            $dsql->SetQuery($fquery);
+            $dsql->Execute();
+            while($row=$dsql->GetArray())
+            {
+                $body = $row[$field];
+                $description = $row['description'];
+                if(strlen($description)>10 || $description=='-')
+                {
+                    continue;
+                }
+                $bodytext = preg_replace("/#p#|#e#|副标题|分页标题/isU","",Html2Text($body));
+                if(strlen($bodytext) < $msize)
+                {
+                    continue;
+                }
+                $des = trim(addslashes(cn_substr($bodytext,$dsize)));
+                if(strlen($des)<3)
+                {
+                    $des = "-";
+                }
+                $dsql->ExecuteNoneQuery("UPDATE #@__archives SET description='{$des}' WHERE id='{$row['id']}';");
+            }
+
+            //返回进度信息
+            $startdd = $startdd + $pagesize;
+            if($totalnum > $startdd)
+            {
+                $tjlen = ceil( ($startdd/$totalnum) * 100 );
+            } else {
+                $tjlen=100;
+                ShowMsg('完成所有任务', 'javascript:;');
+                exit();
+            }
+            $dvlen = $tjlen * 2;
+            $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>";
+            $tjsta .= "<br/>完成处理文档总数的:$tjlen %,继续执行任务...";
+            $nurl = "article_description_main.php?totalnum=$totalnum&startdd={$startdd}&pagesize=$pagesize&table={$table}&field={$field}&dsize={$dsize}&msize={$msize}&channel={$channel}&dojob={$dojob}";
+            ShowMsg($tjsta,$nurl,0,500);
+            exit();
+        }
+        else
+        {
+            ShowMsg('完成所有任务', 'javascript:;');
+            exit();
+        }
+    }//获取自动摘要代码结束
+
+    //更新自动分页
+    if($dojob=='page')
+    {
+        require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+
+        $addquery  = "";
+        if($sid!=0)
+        {
+            $addquery  .= " and aid>='$sid' ";
+        }
+        if($eid!=0)
+        {
+            $addquery  .= " and aid<='$eid' ";
+        }
+
+        //统计记录总数
+        if($totalnum==0)
+        {
+            $sql = "SELECT COUNT(*) AS dd FROM $table WHERE 1 $addquery";
+            $row = $dsql->GetOne($sql);
+            $totalnum = $row['dd'];
+        }
+
+        //获取记录,并分析
+        if($totalnum > $startdd+$pagesize)
+        {
+            $limitSql = " LIMIT $startdd,$pagesize";
+        }
+        else if(($totalnum-$startdd)>0)
+        {
+            $limitSql = " LIMIT $startdd,".($totalnum - $startdd);
+        }
+        else
+        {
+            $limitSql = "";
+        }
+        $tjnum = $startdd;
+        if($limitSql!="")
+        {
+            $fquery = "SELECT aid,$field FROM $table WHERE 1 $addquery $limitSql ;";
+            $dsql->SetQuery($fquery);
+            $dsql->Execute();
+            while($row=$dsql->GetArray())
+            {
+                $tjnum++;
+                $body = $row[$field];
+                $aid = $row['aid'];
+                if(strlen($body) < $msize)
+                {
+                    continue;
+                }
+                if(!preg_match("/#p#/iU",$body))
+                {
+                    $body = SpLongBody($body,$cfg_arcautosp_size*1024,"#p#分页标题#e#");
+                    $body = addslashes($body);
+                    $dsql->ExecuteNoneQuery("UPDATE $table SET $field='$body' WHERE aid='$aid' ; ");
+                }
+            }
+        }//end if limit
+
+        //返回进度提示
+        if($totalnum>0)
+        {
+            $tjlen = ceil( ($tjnum/$totalnum) * 100 );
+        }
+        else
+        {
+            $tjlen=100;
+        }
+
+        $dvlen = $tjlen * 2;
+
+        $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>";
+        $tjsta .= "<br/>完成处理文档总数的:$tjlen %,继续执行任务...";
+
+        if($tjnum < $totalnum)
+        {
+            $nurl = "article_description_main.php?totalnum=$totalnum&startdd=".($startdd+$pagesize)."&pagesize=$pagesize&table={$table}&field={$field}&dsize={$dsize}&msize={$msize}&channel={$channel}&dojob={$dojob}";
+            ShowMsg($tjsta,$nurl,0,500);
+            exit();
+        }
+        else
+        {
+            ShowMsg('完成所有任务', 'javascript:;');
+            exit();
+        }
+    }//更新自动分页处理代码结束
+}

+ 266 - 0
admin/article_edit.php

@@ -0,0 +1,266 @@
+<?php
+/**
+ * 文档编辑
+ *
+ * @version        $Id: article_edit.php 1 14:12 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('a_Edit,a_AccEdit,a_MyEdit');
+require_once(DEDEINC."/customfields.func.php");
+require_once(DEDEADMIN."/inc/inc_archives_functions.php");
+if(file_exists(DEDEDATA.'/template.rand.php'))
+{
+    require_once(DEDEDATA.'/template.rand.php');
+}
+if(empty($dopost)) $dopost = '';
+
+
+$aid = isset($aid) && is_numeric($aid) ? $aid : 0;
+if($dopost!='save')
+{
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    require_once(DEDEINC."/dedetag.class.php");
+    ClearMyAddon();
+
+    //读取归档信息
+    $query = "SELECT ch.typename AS channelname,ar.membername AS rankname,arc.*
+    FROM `#@__archives` arc
+    LEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel
+    LEFT JOIN `#@__arcrank` ar ON ar.rank=arc.arcrank WHERE arc.id='$aid' ";
+    $arcRow = $dsql->GetOne($query);
+    if(!is_array($arcRow))
+    {
+        ShowMsg("读取档案基本信息出错!","-1");
+        exit();
+    }
+    $query = "SELECT * FROM `#@__channeltype` WHERE id='".$arcRow['channel']."'";
+    $cInfos = $dsql->GetOne($query);
+    if(!is_array($cInfos))
+    {
+        ShowMsg("读取频道配置信息出错!","javascript:;");
+        exit();
+    }
+    $addtable = $cInfos['addtable'];
+    $addRow = $dsql->GetOne("SELECT * FROM `$addtable` WHERE aid='$aid'");
+    if(!is_array($addRow))
+    {
+        ShowMsg("读取附加信息出错!","javascript:;");
+        exit();
+    }
+    $channelid = $arcRow['channel'];
+    $tags = GetTags($aid);
+    include DedeInclude("templets/article_edit.htm");
+    exit();
+}
+/*--------------------------------
+function __save(){  }
+-------------------------------*/
+else if($dopost=='save')
+{
+    require_once(DEDEINC.'/image.func.php');
+    require_once(DEDEINC.'/oxwindow.class.php');
+    $flag = isset($flags) ? join(',',$flags) : '';
+    $notpost = isset($notpost) && $notpost == 1 ? 1: 0;
+    
+    if(empty($typeid2)) $typeid2 = 0;
+    if(!isset($autokey)) $autokey = 0;
+    if(!isset($remote)) $remote = 0;
+    if(!isset($dellink)) $dellink = 0;
+    if(!isset($autolitpic)) $autolitpic = 0;
+    
+    if(empty($typeid))
+    {
+        ShowMsg("请指定文档的栏目!", "-1");
+        exit();
+    }
+    if(empty($channelid))
+    {
+        ShowMsg("文档为非指定的类型,请检查你发布内容的表单是否合法!", "-1");
+        exit();
+    }
+    if(!CheckChannel($typeid, $channelid))
+    {
+        ShowMsg("你所选择的栏目与当前模型不相符,请选择白色的选项!", "-1");
+        exit();
+    }
+    if(!TestPurview('a_Edit'))
+    {
+        if(TestPurview('a_AccEdit'))
+        {
+            CheckCatalog($typeid, "对不起,你没有操作栏目 {$typeid} 的文档权限!");
+        }
+        else
+        {
+            CheckArcAdmin($id, $cuserLogin->getUserID());
+        }
+    }
+
+
+    //对保存的内容进行处理
+    $pubdate = GetMkTime($pubdate);
+    $sortrank = AddDay($pubdate,$sortup);
+    $ismake = $ishtml==0 ? -1 : 0;
+    $autokey = 1;
+    $title = dede_htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
+    $shorttitle = cn_substrR($shorttitle,36);
+    $color =  cn_substrR($color,7);
+    $writer =  cn_substrR($writer,20);
+    $source = cn_substrR($source,30);
+    $description = cn_substrR($description,250);
+    $keywords = trim(cn_substrR($keywords,60));
+    $filename = trim(cn_substrR($filename,40));
+    $isremote  = (empty($isremote)? 0  : $isremote);
+    $serviterm=empty($serviterm)? "" : $serviterm;
+    if(!TestPurview('a_Check,a_AccCheck,a_MyCheck'))
+    {
+        $arcrank = -1;
+    }
+    $adminid = $cuserLogin->getUserID();
+
+    //处理上传的缩略图
+    if(empty($ddisremote))
+    {
+        $ddisremote = 0;
+    }
+    $litpic = GetDDImage('none',$picname,$ddisremote);
+
+    //分析body里的内容
+    $body = AnalyseHtmlBody($body,$description,$litpic,$keywords,'htmltext');
+
+    //分析处理附加表数据
+    $inadd_f = '';
+    $inadd_v = '';
+    if(!empty($dede_addonfields))
+    {
+        $addonfields = explode(';',$dede_addonfields);
+        $inadd_f = '';
+        $inadd_v = '';
+        if(is_array($addonfields))
+        {
+            foreach($addonfields as $v)
+            {
+                if($v=='')
+                {
+                    continue;
+                }
+                $vs = explode(',',$v);
+                if($vs[1]=='htmltext'||$vs[1]=='textdata') //HTML文本特殊处理
+                {
+                    ${$vs[0]} = AnalyseHtmlBody(${$vs[0]},$description,$litpic,$keywords,$vs[1]);
+                }else
+                {
+                    if(!isset(${$vs[0]}))
+                    {
+                        ${$vs[0]} = '';
+                    }
+                    ${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$id);
+                }
+                $inadd_f .= ",`{$vs[0]}` = '".${$vs[0]}."'";
+            }
+        }
+    }
+
+    //处理图片文档的自定义属性
+    if($litpic!='' && !preg_match("#p#", $flag))
+    {
+        $flag = ($flag=='' ? 'p' : $flag.',p');
+    }
+    if($redirecturl!='' && !preg_match("#j#", $flag))
+    {
+        $flag = ($flag=='' ? 'j' : $flag.',j');
+    }
+
+    //跳转网址的文档强制为动态
+    if(preg_match("#j#", $flag)) $ismake = -1;
+    //更新数据库的SQL语句
+    $query = "UPDATE #@__archives SET
+    typeid='$typeid',
+    typeid2='$typeid2',
+    sortrank='$sortrank',
+    flag='$flag',
+    click='$click',
+    ismake='$ismake',
+    arcrank='$arcrank',
+    money='$money',
+    title='$title',
+    color='$color',
+    writer='$writer',
+    source='$source',
+    litpic='$litpic',
+    pubdate='$pubdate',
+    voteid='$voteid',
+    notpost='$notpost',
+    description='$description',
+    keywords='$keywords',
+    shorttitle='$shorttitle',
+    filename='$filename',
+    dutyadmin='$adminid',
+    weight='$weight'
+    WHERE id='$id'; ";
+
+    if(!$dsql->ExecuteNoneQuery($query))
+    {
+        ShowMsg('更新数据库archives表时出错,请检查',-1);
+        exit();
+    }
+    
+    $cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+    $addtable = trim($cts['addtable']);
+    if($addtable!='')
+    {
+        $useip = GetIP();
+        $templet = empty($templet) ? '' : $templet;
+        $iquery = "UPDATE `$addtable` SET typeid='$typeid',body='$body'{$inadd_f},redirecturl='$redirecturl',templet='$templet',userip='$useip' WHERE aid='$id'";
+        if(!$dsql->ExecuteNoneQuery($iquery))
+        {
+            ShowMsg("更新附加表 `$addtable`  时出错,请检查原因!","javascript:;");
+            exit();
+        }
+    }
+
+    //生成HTML
+    UpIndexKey($id, $arcrank, $typeid, $sortrank, $tags);
+    if($cfg_remote_site=='Y' && $isremote=="1")
+    {    
+        if($serviterm!=""){
+            list($servurl, $servuser, $servpwd) = explode(',', $serviterm);
+            $config=array( 'hostname' => $servurl, 'username' => $servuser, 
+                                           'password' => $servpwd,'debug' => 'TRUE');
+        } else {
+            $config=array();
+        }
+        if(!$ftp->connect($config)) exit('Error:None FTP Connection!');
+    }
+    $artUrl = MakeArt($id,true,true,$isremote);
+    if($artUrl=='')
+    {
+        $artUrl = $cfg_phpurl."/view.php?aid=$id";
+    }
+    ClearMyAddon($id, $title);
+    
+    //返回成功信息
+    $msg = "
+      请选择你的后续操作:
+    <a href='article_add.php?cid=$typeid'><u>发布新文章</u></a>
+    &nbsp;&nbsp;
+    <a href='archives_do.php?aid=".$id."&dopost=editArchives'><u>查看更改</u></a>
+    &nbsp;&nbsp;
+    <a href='$artUrl' target='_blank'><u>查看文章</u></a>
+    &nbsp;&nbsp;
+    <a href='catalog_do.php?cid=$typeid&dopost=listArchives'><u>管理文章</u></a>
+    &nbsp;&nbsp;
+    $backurl
+    ";
+
+    $wintitle = "成功更改文章!";
+    $wecome_info = "文章管理::更改文章";
+    $win = new OxWindow();
+    $win->AddTitle("成功更改文章:");
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand","&nbsp;",false);
+    $win->Display();
+}

+ 104 - 0
admin/article_keywords_main.php

@@ -0,0 +1,104 @@
+<?php
+/**
+ * 文档关键词管理
+ *
+ * @version        $Id: article_keywords_main.php 1 14:12 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('sys_Keyword');
+require_once(DEDEINC."/datalistcp.class.php");
+setcookie("ENV_GOBACK_URL",$dedeNowurl,time()+3600,"/");
+if(empty($dopost)) $dopost = '';
+
+
+//保存批量更改
+if($dopost=='saveall')
+{
+    $ENV_GOBACK_URL = empty($_COOKIE['ENV_GOBACK_URL']) ? "article_keywords_main.php" : $_COOKIE['ENV_GOBACK_URL'];
+    if(!isset($aids))
+    {
+        ShowMsg("你没有选择要更改的内容!",$ENV_GOBACK_URL);
+        exit();
+    }
+    foreach($aids as $aid)
+    {
+        $rpurl = ${'rpurl_'.$aid};
+        $rpurlold = ${'rpurlold_'.$aid};
+        $keyword = ${'keyword_'.$aid};
+
+        //删除项目
+        if(!empty(${'isdel_'.$aid}))
+        {
+            $dsql->ExecuteNoneQuery("DELETE FROM `#@__keywords` WHERE aid='$aid'");
+            continue;
+        }
+
+        //禁用项目
+        $staold = ${'staold_'.$aid};
+        $sta = empty(${'isnouse_'.$aid}) ? 1 : 0;
+        if($staold!=$sta)
+        {
+            $query1 = "UPDATE `#@__keywords` SET sta='$sta',rpurl='$rpurl' WHERE aid='$aid' ";
+            $dsql->ExecuteNoneQuery($query1);
+            continue;
+        }
+
+        //更新链接网址
+        if($rpurl!=$rpurlold)
+        {
+            $query1 = "UPDATE `#@__keywords` SET rpurl='$rpurl' WHERE aid='$aid' ";
+            $dsql->ExecuteNoneQuery($query1);
+        }
+    }
+    ShowMsg("完成指定的更改!",$ENV_GOBACK_URL);
+    exit();
+}
+//增加关键字
+else if($dopost=='add')
+{
+    $ENV_GOBACK_URL = empty($_COOKIE['ENV_GOBACK_URL']) ? "-1" : $_COOKIE['ENV_GOBACK_URL'];
+    $keyword = trim($keyword);
+    $rank = preg_replace("#[^0-9]#", '', $rank);
+    if($keyword=='')
+    {
+        ShowMsg("关键字不能为空!",-1);
+        exit();
+    }
+    $row = $dsql->GetOne("SELECT * FROM `#@__keywords` WHERE keyword LIKE '$keyword'");
+    if(is_array($row))
+    {
+        ShowMsg("关键字已存在库中!","-1");
+        exit();
+    }
+    $inquery = "INSERT INTO `#@__keywords`(keyword,rank,sta,rpurl) VALUES ('$keyword','$rank','1','$rpurl');";
+    $dsql->ExecuteNoneQuery($inquery);
+    ShowMsg("成功增加一个关键字!",$ENV_GOBACK_URL);
+    exit();
+}
+if(empty($keyword))
+{
+    $keyword = '';
+    $addquery = '';
+}
+else
+{
+    $addquery = " WHERE keyword LIKE '%$keyword%' ";
+}
+
+$sql = "SELECT * FROM `#@__keywords` $addquery ORDER BY rank DESC";
+$dlist = new DataListCP();
+$dlist->pageSize = 20;
+$dlist->SetParameter("keyword",$keyword);
+$dlist->SetTemplate(DEDEADMIN."/templets/article_keywords_main.htm");
+$dlist->SetSource($sql);
+$dlist->Display();
+
+function GetSta($sta)
+{
+    if($sta==1) return '';
+    else return ' checked="1" ';
+}

+ 223 - 0
admin/article_keywords_make.php

@@ -0,0 +1,223 @@
+<?php
+/**
+ * 文档关键词生成
+ *
+ * @version        $Id: article_keywords_make.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+@ob_start();
+@set_time_limit(3600);
+require_once(dirname(__FILE__).'/config.php');
+CheckPurview('sys_Keyword');
+if(empty($dopost)) $dopost = '';
+
+//分析已存在的关键字(适用于默认的文章模型)
+if($dopost=='analyse')
+{
+    echo "正在读取关键字数据库...<br/>\r\n";
+    flush();
+    $ws = $wserr = $wsnew = "";
+    $dsql->SetQuery("SELECT * FROM `#@__keywords`");
+    $dsql->Execute();
+    while($row = $dsql->GetObject())
+    {
+        if($row->sta==1) $ws[$row->keyword] = 1;
+        else $wserr[$row->keyword] = 1;
+    }
+    echo "完成关键字数据库的载入!<br/>\r\n";
+    flush();
+    echo "读取档案数据库,并对禁用的关键字和生字进行处理...<br/>\r\n";
+    flush();
+    $dsql->SetQuery("SELECT id,keywords FROM `#@__archives`");
+    $dsql->Execute();
+    while($row = $dsql->GetObject())
+    {
+        $keywords = explode(',',trim($row->keywords));
+        $nerr = false;
+        $mykey = '';
+        if(is_array($keywords))
+        {
+            foreach($keywords as $v)
+            {
+                $v = trim($v);
+                if($v=='')
+                {
+                    continue;
+                }
+                if(isset($ws[$v]))
+                {
+                    $mykey .= $v." ";
+                }
+                else if(isset($wsnew[$v]))
+                {
+                    $mykey .= $v.' ';
+                    $wsnew[$v]++;
+                }
+                else if(isset($wserr[$v]))
+                {
+                    $nerr = true;
+                }
+                else
+                {
+                    $mykey .= $v." ";
+                    $wsnew[$v] = 1;
+                }
+            }
+        }
+    }
+    echo "完成档案数据库的处理!<br/>\r\n";
+    flush();
+    if(is_array($wsnew))
+    {
+        echo "对关键字进行排序...<br/>\r\n";
+        flush();
+        arsort($wsnew);
+        echo "把关键字保存到数据库...<br/>\r\n";
+        flush();
+        foreach($wsnew as $k=>$v)
+        {
+            if(strlen($k)>20)
+            {
+                continue;
+            }
+            $dsql->SetQuery("INSERT INTO `#@__keywords`(keyword,rank,sta,rpurl) VALUES('".addslashes($k)."','$v','1','')");
+            $dsql->Execute();
+        }
+        echo "完成关键字的导入!<br/>\r\n";
+        flush();
+        sleep(1);
+    }
+    else
+    {
+        echo "没发现任何新的关键字!<br/>\r\n";
+        flush();
+        sleep(1);
+    }
+    ShowMsg('完成所有操作,现在转到关键字列表页!','article_keywords_main.php');
+    exit();
+}
+//自动获取关键字(适用于默认的文章模型)
+else if($dopost=='fetch')
+{
+    require_once(DEDEINC."/splitword.class.php");
+    if(empty($startdd))
+    {
+        $startdd = 0;
+    }
+    if(empty($pagesize))
+    {
+        $pagesize = 20;
+    }
+    if(empty($totalnum))
+    {
+        $totalnum = 0;
+    }
+
+    //统计记录总数
+    if($totalnum==0)
+    {
+        $row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__archives` WHERE channel='1' ");
+        $totalnum = $row['dd'];
+    }
+
+    //获取记录,并分析关键字
+    if($totalnum > $startdd+$pagesize)
+    {
+        $limitSql = " LIMIT $startdd,$pagesize";
+    }
+    else if(($totalnum-$startdd)>0)
+    {
+        $limitSql = " LIMIT $startdd,".($totalnum - $startdd);
+    }
+    else
+    {
+        $limitSql = '';
+    }
+    $tjnum = $startdd;
+    if($limitSql!='')
+    {
+        $fquery = "SELECT arc.id,arc.title,arc.keywords,addon.body FROM `#@__archives` arc
+              LEFT JOIN `#@__addonarticle` addon ON addon.aid=arc.id WHERE arc.channel='1' $limitSql ";
+        $dsql->SetQuery($fquery);
+        $dsql->Execute();
+        $sp = new SplitWord($cfg_soft_lang , $cfg_soft_lang );
+        while($row=$dsql->GetObject())
+        {
+            if($row->keywords!='')
+            {
+                continue;
+            }
+            $tjnum++;
+            $id = $row->id;
+            $keywords = "";
+            
+            $sp->SetSource($row->title, $cfg_soft_lang , $cfg_soft_lang );
+            $sp->SetResultType(2);
+            $sp->StartAnalysis(TRUE);
+
+            $titleindexs = $sp->GetFinallyIndex();
+            
+            $sp->SetSource(Html2Text($row->body), $cfg_soft_lang , $cfg_soft_lang );
+            $sp->SetResultType(2);
+            $sp->StartAnalysis(TRUE);
+            $allindexs = $sp->GetFinallyIndex();
+            if(is_array($allindexs) && is_array($titleindexs))
+            {
+                foreach($titleindexs as $k => $v)
+                {
+                    if(strlen($keywords)>=30)
+                    {
+                        break;
+                    }
+                    else
+                    {
+                        if(strlen($k) <= 2) continue;
+                        $keywords .= $k.",";
+                    }
+                }
+                foreach($allindexs as $k => $v)
+                {
+                    if(strlen($keywords)>=30)
+                    {
+                        break;
+                    }
+                    else if(!in_array($k,$titleindexs))
+                    {
+                        if(strlen($k) <= 2) continue;
+                        $keywords .= $k.",";
+                    }
+                }
+            }
+            $keywords = addslashes($keywords);
+            if($keywords=='')
+            {
+                $keywords = ',';
+            }
+            $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET keywords='$keywords' WHERE id='$id'");
+        }
+        unset($sp);
+    }//end if limit
+
+    //返回提示信息
+    if($totalnum>0) $tjlen = ceil( ($tjnum/$totalnum) * 100 );
+    else $tjlen=100;
+
+    $dvlen = $tjlen * 2;
+    $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>";
+    $tjsta .= "<br/>完成处理文档总数的:$tjlen %,位置:{$startdd},继续执行任务...";
+
+    if($tjnum < $totalnum)
+    {
+        $nurl = "article_keywords_make.php?dopost=fetch&totalnum=$totalnum&startdd=".($startdd+$pagesize)."&pagesize=$pagesize";
+        ShowMsg($tjsta,$nurl,0,500);
+    }
+    else
+    {
+        ShowMsg("完成所有任务!","javascript:;");
+    }
+    exit();
+}
+include DedeInclude('templets/article_keywords_make.htm');

+ 35 - 0
admin/article_keywords_select.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * 文档关键词选择
+ *
+ * @version        $Id: article_keywords_select.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/datalistcp.class.php");
+setcookie("ENV_GOBACK_URL",$dedeNowurl,time()+3600,"/");
+
+if(empty($keywords)) $keywords = "";
+
+$sql = "SELECT * FROM #@__keywords ORDER BY rank DESC";
+$dlist = new DataListCP();
+$dlist->SetTemplate(DEDEADMIN."/templets/article_keywords_select.htm");
+$dlist->pageSize = 300;
+$dlist->SetParameter("f",$f);
+$dlist->SetSource($sql);
+$dlist->Display();
+
+function GetSta($sta)
+{
+    if($sta==1) return "正常";
+    else return "<font color='red'>禁用</font>";
+}
+
+function GetMan($sta)
+{
+    if($sta==1) return "<u>禁用</u>";
+    else return "<u>启用</u>";
+}

+ 53 - 0
admin/article_select_sw.php

@@ -0,0 +1,53 @@
+<?php
+/**
+ * @version        $Id: article_select_sw.php 1 8:26 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require(dirname(__FILE__)."/config.php");
+header("Pragma:no-cache");
+header("Cache-Control:no-cache");
+header("Expires:0");
+
+//来源列表
+if($t=='source')
+{
+    $m_file = DEDEDATA."/admin/source.txt";
+    $allsources = file($m_file);
+    echo "<div class='coolbg4'>[<a href=\"javascript:OpenMyWin('article_source_edit.php');ClearDivCt('mysource');\">设置</a>]&nbsp;";
+    echo "[<a href='#' onclick='javascript:HideObj(\"mysource\");ChangeFullDiv(\"hide\");'>关闭</a>]</div>\r\n<div class='wsselect'>\r\n";
+    foreach($allsources as $v)
+    {
+        $v = trim($v);
+        if($v!="")
+        {
+            echo "<a href='#' onclick='javascript:PutSource(\"$v\")'>$v</a> | \r\n";
+        }
+    }
+    echo "</div><div class='coolbg5'>&nbsp;</div>";
+}
+else
+{
+    //作者列表
+    $m_file = DEDEDATA."/admin/writer.txt";
+    echo "<div class='coolbg4'>[<a href=\"javascript:OpenMyWin('article_writer_edit.php');ClearDivCt('mywriter');\">设置</a>]&nbsp;";
+    echo "[<a href='#' onclick='javascript:HideObj(\"mywriter\");ChangeFullDiv(\"hide\");'>关闭</a>]</div>\r\n<div class='wsselect'>\r\n";
+    if(filesize($m_file)>0)
+    {
+        $fp = fopen($m_file,'r');
+        $str = fread($fp,filesize($m_file));
+        fclose($fp);
+        $strs = explode(',',$str);
+        foreach($strs as $str)
+        {
+            $str = trim($str);
+            if($str!="")
+            {
+                echo "<a href='#' onclick='javascript:PutWriter(\"$str\")'>$str</a> | ";
+            }
+        }
+    }
+    echo "</div><div class='coolbg5'>&nbsp;</div>\r\n";
+}

+ 44 - 0
admin/article_source_edit.php

@@ -0,0 +1,44 @@
+<?php
+/**
+ * 文章来源编辑
+ *
+ * @version        $Id: archives_add.php 1 14:30 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/oxwindow.class.php");
+CheckPurview('sys_Source');
+if(empty($dopost)) $dopost = '';
+if(empty($allsource)) $allsource = '';
+else $allsource = stripslashes($allsource);
+
+$m_file = DEDEDATA."/admin/source.txt";
+
+//保存
+if($dopost=='save')
+{
+    $fp = fopen($m_file,'w');
+    flock($fp,3);
+    fwrite($fp,$allsource);
+    fclose($fp);
+    echo "<script>alert('Save OK!');</script>";
+}
+//读出
+if(empty($allsource) && filesize($m_file)>0)
+{
+    $fp = fopen($m_file,'r');
+    $allsource = fread($fp,filesize($m_file));
+    fclose($fp);
+}
+$wintitle = "文章来源管理";
+$wecome_info = "文章来源管理";
+$win = new OxWindow();
+$win->Init('article_source_edit.php','js/blank.js','POST');
+$win->AddHidden('dopost','save');
+$win->AddTitle("每行保存一个来源:");
+$win->AddMsgItem("<textarea name='allsource' id='allsource' style='width:100%;height:300px'>$allsource</textarea>");
+$winform = $win->GetWindow('ok');
+$win->Display();

+ 49 - 0
admin/article_string_mix.php

@@ -0,0 +1,49 @@
+<?php
+/**
+ * 防采集混淆字符串管理
+ *
+ * @version        $Id: article_string_mix.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+require_once(DEDEINC.'/oxwindow.class.php');
+CheckPurview('sys_StringMix');
+if(empty($dopost)) $dopost = '';
+
+if(empty($allsource)) $allsource = '';
+else $allsource = stripslashes($allsource);
+
+$m_file = DEDEDATA."/downmix.data.php";
+
+//保存
+if($dopost=="save")
+{
+	csrf_check();
+    $fp = fopen($m_file,'w');
+    flock($fp,3);
+    fwrite($fp,$allsource);
+    fclose($fp);
+    echo "<script>alert('Save OK!');</script>";
+}
+
+//读出
+if(empty($allsource) && filesize($m_file)>0)
+{
+    $fp = fopen($m_file,'r');
+    $allsource = fread($fp,filesize($m_file));
+    fclose($fp);
+}
+make_hash();
+$wintitle = "防采集混淆字符串管理";
+$wecome_info = "防采集混淆字符串管理";
+$win = new OxWindow();
+$win->Init('article_string_mix.php','js/blank.js','POST');
+$win->AddHidden('dopost','save');
+$win->AddHidden('token',$_SESSION['token']);
+$win->AddTitle("如果你要启用字符串混淆来防采集,请在文档模板需要的字段加上 function='RndString(@me)' 属性,如:{dede:field name='body' function='RndString(@me)'/}。");
+$win->AddMsgItem("<textarea name='allsource' id='allsource' style='width:100%;height:300px'>$allsource</textarea>");
+$winform = $win->GetWindow('ok');
+$win->Display();

+ 128 - 0
admin/article_template_rand.php

@@ -0,0 +1,128 @@
+<?php
+/**
+ * 文档随机模板
+ *
+ * @version        $Id: article_template_rand.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+require_once(DEDEINC.'/oxwindow.class.php');
+CheckPurview('sys_StringMix');
+if(empty($dopost)) $dopost = '';
+$templates = empty($templates) ? '' : stripslashes($templates);
+$m_file = DEDEDATA.'/template.rand.php';
+
+//----------------------action
+$okmsg = '';
+//保存配置
+if($dopost=='save')
+{
+    csrf_check();
+    $fp = fopen($m_file,'w');
+    flock($fp,3);
+    fwrite($fp,$templates);
+    fclose($fp);
+    $okmsg = '成功保存配置信息 AT:('.MyDate('H:i:s', time()).')';
+}
+//对旧文档进行随机模板处理
+else if($dopost=='makeold')
+{
+    csrf_check();
+    set_time_limit(3600);
+    if(!file_exists($m_file))
+    {
+        AjaxHead();
+        echo "配置文件不存在!";
+        exit();
+    }
+    require_once($m_file);
+    if($cfg_tamplate_rand==0)
+    {
+        AjaxHead();
+        echo "系统没开启允许随机模板的选项!";
+        exit();
+    }
+    $totalTmp = count($cfg_tamplate_arr) - 1;
+    if( $totalTmp < 1 )
+    {
+        AjaxHead();
+        echo "随机模板的数量必须为2个或以上!";
+        exit();
+    }
+    for($i=0; $i < 10; $i++)
+    {
+        $temp = $cfg_tamplate_arr[mt_rand(0, $totalTmp)];
+        $dsql->ExecuteNoneQuery(" Update `#@__addonarticle` set templet='$temp' where RIGHT(aid, 1)='$i' ");
+    }
+    AjaxHead();
+    echo "全部随机操作成功!";
+    exit();
+}
+//清除全部的指定模板
+else if($dopost=='clearold')
+{
+    csrf_check();
+    $dsql->ExecuteNoneQuery(" Update `#@__addonarticle` set templet='' ");
+    $dsql->ExecuteNoneQuery(" OPTIMIZE TABLE `#@__addonarticle` ");
+    AjaxHead();
+    echo "全部清除操作成功!";
+    exit();
+}
+
+//-------------------------read
+//读出
+if(empty($templates) && filesize($m_file)>0)
+{
+    $fp = fopen($m_file,'r');
+    $templates = fread($fp,filesize($m_file));
+    fclose($fp);
+}
+$wintitle = "随机模板防采集设置";
+$wecome_info = "随机模板防采集设置";
+make_hash();
+$msg = "
+<link href='images/base.css' rel='stylesheet' type='text/css' />
+<script language='javascript' src='js/main.js'></script>
+<script language='javascript' src='../include/dedeajax2.js'></script>
+<script language='javascript'>
+function DoRand(jobname)
+{
+    ChangeFullDiv('show');
+    \$DE('loading').style.display = 'block';
+    var myajax = new DedeAjax(\$DE('tmpct'));
+    myajax.SendGet2('article_template_rand.php?dopost='+jobname+'&token={$_SESSION['token']}');
+    \$DE('loading').style.display = 'none';
+    ChangeFullDiv('hide');
+}
+</script>
+<div id='loading' style='z-index:3000;top:160;left:300;position:absolute;display:none;'>
+    <img src='images/loadinglit.gif' /> 请稍后,正在操作中...
+</div>
+<table width='98%' align='center'>
+<tr>
+    <td height='28'>
+    如果你想对旧的文章应用随机模板设置,请点击此对旧文章进行处理(必须设置好模板项)!
+    &nbsp; <a href='#' onclick='DoRand(\"makeold\")'>[<u>设置全部</u>]</a>
+    &nbsp; <a href='#' onclick='DoRand(\"clearold\")'>[<u>取消全部</u>]</a>
+    &nbsp; <span id='tmpct' style='color:red;font-weight:bold'>$okmsg</span>
+    </td>
+</tr>
+<tr>
+    <td bgcolor='#F9FCEF'><b>请按说明修改设置:</b></td>
+</tr>
+<tr>
+    <td><textarea name='templates' id='templates' style='width:100%;height:250px'>$templates</textarea></td>
+</tr>
+</table>";
+
+$win = new OxWindow();
+$win->Init('article_template_rand.php','js/blank.js','POST');
+$win->AddHidden('dopost','save');
+$win->AddHidden('token',$_SESSION['token']);
+$win->AddTitle("本设置仅适用于系统默认的文章模型,设置后发布文章时会自动按指定的模板随机获取一个,如果不想使用此功能,把它设置为空即可!");
+$win->AddMsgItem($msg);
+$winform = $win->GetWindow('ok');
+$win->Display();

+ 89 - 0
admin/article_test_same.php

@@ -0,0 +1,89 @@
+<?php
+/**
+ * 检测重复文档
+ *
+ * @version        $Id: article_test_same.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+@set_time_limit(0);
+CheckPurview('sys_ArcBatch');
+if(empty($dopost)) $dopost = '';
+if($dopost=='analyse')
+{
+    $arr = $dsql->getone("SELECT maintable FROM `#@__channeltype` WHERE id='$channelid' ");
+    if(is_array($arr)) {
+        $maintable = $arr['maintable'];
+    } else {
+        showmsg('频道id不正确,无法处理!','javascript:;');
+        exit();
+    }
+    $dsql->SetQuery("SELECT COUNT(title) AS dd,title FROM `$maintable` WHERE channel='$channelid' GROUP BY title ORDER BY dd DESC LIMIT 0, $pagesize");
+    $dsql->Execute();
+    $allarc = 0;
+    include DedeInclude('templets/article_result_same.htm');
+    exit();
+}
+//删除选中的内容(只保留一条)
+else if($dopost=='delsel')
+{
+    require_once(dirname(__FILE__)."/../include/typelink.class.php");
+    require_once(dirname(__FILE__)."/inc/inc_batchup.php");
+    
+    if(empty($titles))
+    {
+        header("Content-Type: text/html; charset={$cfg_ver_lang}");
+    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset={$cfg_ver_lang}\">\r\n";
+        echo "没有指定删除的文档!";
+        exit();
+    }
+    
+    $titless = split('`',$titles);
+
+    if($channelid < -1) {
+        $orderby = ($deltype=='delnew' ? " ORDER BY aid DESC " : " ORDER BY aid ASC ");
+    } else {
+        $orderby = ($deltype=='delnew' ? " ORDER BY id DESC " : " ORDER BY id ASC ");
+    }
+    
+    $totalarc = 0;
+    
+    foreach($titless as $title)
+    {
+         $title = trim($title);
+         $title = addslashes( $title=='' ? '' : urldecode($title) );
+         if($channelid < -1) {
+              $q1 = "SELECT aid as id,title FROM `$maintable` WHERE channel='$channelid' AND title='$title' $orderby ";
+         }
+         else {
+              $q1 = "SELECT id,title FROM `$maintable` WHERE channel='$channelid' AND title='$title' $orderby ";
+         }
+         $dsql->SetQuery($q1);
+         $dsql->Execute();
+         $rownum = $dsql->GetTotalRow();
+         if($rownum < 2) continue;
+         $i = 1;
+         while($row = $dsql->GetObject())
+         {
+               $i++;
+               $naid = $row->id;
+               $ntitle = $row->title;
+               if($i > $rownum) continue;
+               $totalarc++;
+               DelArc($naid, 'OFF');
+         }
+    }
+    $dsql->ExecuteNoneQuery(" OPTIMIZE TABLE `$maintable`; ");
+    ShowMsg("一共删除了[{$totalarc}]篇重复的文档!","javascript:;");
+    exit();
+}
+
+//向导页
+$channelinfos = array();
+$dsql->setquery("SELECT id,typename,maintable,addtable FROM `#@__channeltype` ");
+$dsql->execute();
+while($row = $dsql->getarray()) $channelinfos[] = $row;
+include DedeInclude('templets/article_test_same.htm');

+ 19 - 0
admin/article_test_title.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * 检测重复文档
+ *
+ * @version        $Id: article_test_same.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+AjaxHead();
+if(empty($t) || $cfg_check_title=='N') exit;
+
+$row = $dsql->GetOne("SELECT id FROM `#@__archives` WHERE title LIKE '$t' ");
+if(is_array($row))
+{
+    echo "提示:系统已经存在标题为 '<a href='../plus/view.php?aid={$row['id']}' style='color:red' target='_blank'><u>$t</u></a>' 的文档。[<a href='#' onclick='javascript:HideObj(\"mytitle\")'>关闭</a>]";
+}

+ 46 - 0
admin/article_writer_edit.php

@@ -0,0 +1,46 @@
+<?php
+/**
+ * 文章作者管理
+ *
+ * @version        $Id: article_writer_edit.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+require_once(DEDEINC.'/oxwindow.class.php');
+CheckPurview('sys_Writer');
+if(empty($dopost)) $dopost = '';
+
+if(empty($allwriter)) $allwriter = '';
+else $allwriter = stripslashes($allwriter);
+
+$m_file = DEDEDATA."/admin/writer.txt";
+
+//保存
+if($dopost=="save")
+{
+    $fp = fopen($m_file,'w');
+    flock($fp,3);
+    fwrite($fp,$allwriter);
+    fclose($fp);
+    echo "<script>alert('Save OK!');</script>";
+}
+
+//读出
+if(empty($allwriter) && filesize($m_file)>0)
+{
+    $fp = fopen($m_file,'r');
+    $allwriter = fread($fp,filesize($m_file));
+    fclose($fp);
+}
+$wintitle = "文章作者管理";
+$wecome_info = "文章作者管理";
+$win = new OxWindow();
+$win->Init('article_writer_edit.php','js/blank.js','POST');
+$win->AddHidden('dopost','save');
+$win->AddTitle("把作者姓名用半角逗号“,”分开:");
+$win->AddMsgItem("<textarea name='allwriter' id='allwriter' style='width:100%;height:300px'>$allwriter</textarea>");
+$winform = $win->GetWindow('ok');
+$win->Display();

+ 84 - 0
admin/baidunews.php

@@ -0,0 +1,84 @@
+<?php
+/**
+ * 百度新闻
+ *
+ * @version        $Id: baidunews.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+
+if(empty($do))
+{
+    include DEDEADMIN.'/templets/baidunews.htm';
+} else {
+    $baidunews = "<?xml version=\"1.0\" encoding=\"".$cfg_soft_lang."\" ?>\n";
+    $baidunews .= "<document>\n";
+    $baidunews .= "<webSite>$cfg_webname </webSite>\n";
+    $baidunews .= "<webMaster>$cfg_adminemail </webMaster>\n";
+    $baidunews .= "<updatePeri>$cfg_updateperi </updatePeri>\n";
+
+    $limit = $cfg_baidunews_limit;
+    if($limit > 100 || $limit < 1)
+    {
+        $limit = 100;
+    }
+
+    $query = "SELECT maintable.*, addtable.body, arctype.typename
+    FROM #@__archives maintable
+    LEFT JOIN #@__addonarticle addtable ON addtable.aid=maintable.id
+    LEFT JOIN #@__arctype arctype ON arctype.ID=maintable.typeid
+    WHERE maintable.channel=1 and maintable.arcrank!=-1 ORDER BY maintable.pubdate DESC LIMIT $limit
+    ";
+    $dsql->SetQuery($query);
+    $dsql->Execute();
+    while($row = $dsql->GetArray())
+    {
+        $title = dede_htmlspecialchars($row['title']);
+        $row1 = GetOneArchive($row['id']);
+        if(strpos($row1['arcurl'],'http://') === false)
+        {
+            $link = ($cfg_basehost=='' ? 'http://'.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$row1['arcurl'];
+        }else
+        {
+            $link = $row1['arcurl'];
+        }
+        $link = dede_htmlspecialchars($link);
+        $description = dede_htmlspecialchars(strip_tags($row['description']));
+        $text = dede_htmlspecialchars(strip_tags($row['body']));
+        $image = $row['litpic'] =='' ? '' :$row['litpic'];
+        if($image != '' && strpos($image, 'http://') === false)
+        {
+            $image = ($cfg_basehost=='' ? 'http://'.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$image;
+
+        }
+        //$headlineimg = '';
+        $keywords = dede_htmlspecialchars($row['keywords']);
+        $category = dede_htmlspecialchars($row['typename']);
+        $author = dede_htmlspecialchars($row['writer']);
+        $source = dede_htmlspecialchars($row['source']);
+        $pubdate = dede_htmlspecialchars(gmdate('Y-m-d H:i',$row['pubdate'] + $cfg_cli_time * 3600));
+
+        $baidunews .= "<item>\n";
+        $baidunews .= "<title>$title </title>\n";
+        $baidunews .= "<link>$link </link>\n";
+        $baidunews .= "<description>$description </description>\n";
+        $baidunews .= "<text>$text </text>\n";
+        $baidunews .= "<image>$image </image>\n";
+        //$baidunews .= "<headlineimages/>\n";
+        $baidunews .= "<keywords>$keywords </keywords>\n";
+        $baidunews .= "<category>$category </category>\n";
+        $baidunews .= "<author>$author </author>\n";
+        $baidunews .= "<source>$source </source>\n";
+        $baidunews .= "<pubDate>$pubdate </pubDate>\n";
+        $baidunews .= "</item>\n";
+    }
+    $baidunews .= "</document>\n";
+
+    $fp = fopen(dirname(__FILE__).'/'.$filename,'w');
+    fwrite($fp,$baidunews);
+    fclose($fp);
+    showmsg("<a href='{$filename}' target=\"_blank\">{$filename} make success</a>",'javascript:;');
+}

+ 68 - 0
admin/cards_make.php

@@ -0,0 +1,68 @@
+<?php
+/**
+ * 生成点卡
+ *
+ * @version        $Id: cards_make.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('member_Card');
+if(empty($dopost)) $dopost = '';
+if($dopost == '') include(DEDEADMIN."/templets/cards_make.htm");
+
+//生成点卡
+elseif($dopost == 'make')
+{
+    $row = $dsql->GetOne("SELECT * FROM #@__moneycard_record ORDER BY aid DESC");
+    !is_array($row) ? $startid=100000 : $startid=$row['aid']+100000;
+    $row = $dsql->GetOne("SELECT * FROM #@__moneycard_type WHERE tid='$cardtype'");
+    $money = $row['money'];
+    $num = $row['num'];
+    $mtime = time();
+    $utime = 0;
+    $ctid = $cardtype;
+    $startid++;
+    $endid = $startid + $mnum;
+
+    header("Content-Type: text/html; charset={$cfg_soft_lang}");
+
+    for(;$startid<$endid;$startid++)
+    {
+        $cardid = $snprefix.$startid.'-';
+        for($p=0;$p<$pwdgr;$p++)
+        {
+            for($i=0; $i < $pwdlen; $i++)
+            {
+                if($ctype==1)
+                {
+                    $c = mt_rand(49,57); $c = chr($c);
+                }
+                else
+                {
+                    $c = mt_rand(65,90);
+                    if($c==79)
+                    {
+                        $c = 'M';
+                    }
+                    else
+                    {
+                        $c = chr($c);
+                    }
+                }
+                $cardid .= $c;
+            }
+            if($p<$pwdgr-1)
+            {
+                $cardid .= '-';
+            }
+        }
+        $inquery = "INSERT INTO #@__moneycard_record(ctid,cardid,uid,isexp,mtime,utime,money,num)
+              VALUES('$ctid','$cardid','0','0','$mtime','$utime','$money','$num'); ";
+        $dsql->ExecuteNoneQuery($inquery);
+        echo "成功生成点卡:{$cardid}<br/>";
+    }
+    echo "成功生成 {$mnum} 个点卡!";
+}

+ 67 - 0
admin/cards_manage.php

@@ -0,0 +1,67 @@
+<?php
+/**
+ * 点卡管理
+ *
+ * @version        $Id: cards_manage.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC.'/datalistcp.class.php');
+$dopost=empty($dopost)? "" : $dopost;
+if($dopost=="delete"){
+    $ids = explode('`',$aids);
+    $dquery = "";
+    foreach($ids as $id){
+        if($dquery=="") $dquery .= "aid='$id' ";
+        else $dquery .= " OR aid='$id' ";
+    }
+    if($dquery!="") $dquery = " WHERE ".$dquery;
+    $dsql->ExecuteNoneQuery("DELETE FROM #@__moneycard_record $dquery");
+    ShowMsg("成功删除指定的记录!","cards_manage.php");
+    exit();    
+}else{
+    $addsql = '';
+    if(isset($isexp)) $addsql = " WHERE isexp='$isexp' ";
+    
+    $sql = "SELECT * FROM #@__moneycard_record $addsql ORDER BY aid DESC";
+    $dlist = new DataListCP();
+    $dlist->pageSize = 25; //设定每页显示记录数(默认25条)
+    if(isset($isexp)) $dlist->SetParameter("isexp",$isexp);
+
+    $dlist->dsql->SetQuery("SELECT * FROM #@__moneycard_type ");
+    $dlist->dsql->Execute('ts');
+    while($rw = $dlist->dsql->GetArray('ts'))
+    {
+        $TypeNames[$rw['tid']] = $rw['pname'];
+    }
+    $tplfile = DEDEADMIN."/templets/cards_manmage.htm";
+    
+    //这两句的顺序不能更换
+    $dlist->SetTemplate($tplfile);      //载入模板
+    $dlist->SetSource($sql);            //设定查询SQL
+    $dlist->Display();                  //显示
+}
+
+function GetMemberID($mid)
+{
+    global $dsql;
+    if($mid==0) return '0';
+    $row = $dsql->GetOne("SELECT userid FROM #@__member WHERE mid='$mid' ");
+    if(is_array($row)) return "<a href='member_view.php?mid={$mid}'>".$row['userid']."</a>";
+    else return '0';
+}
+
+function GetUseDate($time=0)
+{
+    if(!empty($time)) return GetDateMk($time);
+    else return '未使用';
+}
+function GetSta($sta)
+{
+    if($sta==1) return '已售出';
+    else if($sta==-1) return '已使用';
+    else return '未使用';
+}

+ 55 - 0
admin/cards_type.php

@@ -0,0 +1,55 @@
+<?php
+/**
+ * 点卡类型
+ *
+ * @version        $Id: cards_type.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+CheckPurview('member_Type');
+if(empty($dopost)) $dopost = "";
+
+//保存更改
+if($dopost=="save")
+{
+    $startID = 1;
+    $endID = $idend;
+    for(;$startID<=$endID;$startID++)
+    {
+        $query = '';
+        $tid = ${'ID_'.$startID};
+        $pname =   ${'pname_'.$startID};
+        $money =    ${'money_'.$startID};
+        $num =   ${'num_'.$startID};
+        if(isset(${'check_'.$startID}))
+        {
+            if($pname!='')
+            {
+                $query = "UPDATE #@__moneycard_type SET pname='$pname',money='$money',num='$num' WHERE tid='$tid'";
+                $dsql->ExecuteNoneQuery($query);
+                $query = "UPDATE #@__moneycard_record SET money='$money',num='$num' WHERE ctid='$tid' ; ";
+                $dsql->ExecuteNoneQuery($query);
+            }
+        }
+        else
+        {
+            $query = "DELETE FROM #@__moneycard_type WHERE tid='$tid' ";
+            $dsql->ExecuteNoneQuery($query);
+            $query = "DELETE FROM #@__moneycard_record WHERE ctid='$tid' AND isexp<>-1 ; ";
+            $dsql->ExecuteNoneQuery($query);
+        }
+    }
+
+    //增加新记录
+    if(isset($check_new) && $pname_new!='')
+    {
+        $query = "INSERT INTO #@__moneycard_type(num,pname,money) VALUES('{$num_new}','{$pname_new}','{$money_new}');";
+        $dsql->ExecuteNoneQuery($query);
+    }
+    header("Content-Type: text/html; charset={$cfg_soft_lang}");
+    echo "<script> alert('成功更新点卡产品分类表!'); </script>";
+}
+require_once(DEDEADMIN."/templets/cards_type.htm");

+ 284 - 0
admin/catalog_add.php

@@ -0,0 +1,284 @@
+<?php
+/**
+ * 栏目添加
+ *
+ * @version        $Id: catalog_add.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/typelink.class.php");
+
+if(empty($listtype)) $listtype='';
+if(empty($dopost)) $dopost = '';
+if(empty($upinyin)) $upinyin = 0;
+if(empty($channelid)) $channelid = 1;
+if(isset($channeltype)) $channelid = $channeltype;
+
+$id = empty($id) ? 0 :intval($id);
+$reid = empty($reid) ? 0 :intval($reid);
+$nid = 'article';
+
+if($id==0 && $reid==0)
+{
+    CheckPurview('t_New');
+}
+else
+{
+    $checkID = empty($id) ? $reid : $id;
+    CheckPurview('t_AccNew');
+    CheckCatalog($checkID, '你无权在本栏目下创建子类!');
+}
+
+/*栏目二开字段 by 小虎哥*/
+$dsql->GetTableFields('#@__arctype');
+$fieldArray = $dsql->GetArray();
+if (!in_array('typenameen', $fieldArray)) { // 英文栏目名称
+  $dsql->ExecuteNoneQuery("ALTER TABLE `#@__arctype` ADD `typenameen` char(100) NOT NULL default ''");
+}
+if (!in_array('typeimg', $fieldArray)) { // 栏目封面图
+  $dsql->ExecuteNoneQuery("ALTER TABLE `#@__arctype` ADD `typeimg` char(100) NOT NULL default ''");
+}
+/*--end*/
+
+if(empty($myrow)) $myrow = array();
+
+$dsql->SetQuery("SELECT id,typename,nid FROM `#@__channeltype` WHERE id<>-1 AND isshow=1 ORDER BY id");
+$dsql->Execute();
+while($row=$dsql->GetObject())
+{
+    $channelArray[$row->id]['typename'] = $row->typename;
+    $channelArray[$row->id]['nid'] = $row->nid;
+    if($row->id==$channelid)
+    {
+        $nid = $row->nid;
+    }
+}
+if($dopost=='quick')
+{
+    $tl = new TypeLink(0);
+    $typeOptions = $tl->GetOptionArray(0,0,$channelid);
+    include DedeInclude('templets/catalog_add_quick.htm');
+    exit();
+}
+/*---------------------
+function action_savequick(){ }
+---------------------*/
+else if($dopost=='savequick')
+{
+    if(!isset($savetype)) $savetype = '';
+    $isdefault = isset($isdefault)? $isdefault : 0;
+    $tempindex = "{style}/index_{$nid}.htm";
+    $templist = "{style}/list_{$nid}.htm";
+    $temparticle = "{style}/article_{$nid}.htm";
+    $queryTemplate = "INSERT INTO `#@__arctype`(reid,topid,sortrank,typename,typenameen,typedir,typeimg,isdefault,defaultname,issend,channeltype,
+    tempindex,templist,temparticle,modname,namerule,namerule2,ispart,corank,description,keywords,seotitle,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`)
+    VALUES('~reid~','~topid~','~rank~','~typename~','~typenameen~','~typedir~','~typeimg~','$isdefault','$defaultname','$issend','$channeltype',
+    '$tempindex','$templist','$temparticle','default','$namerule','$namerule2','0','0','','','~typename~','0','','','0','0','0','','')";
+    
+    if (empty($savetype))
+    {
+        foreach($_POST as $k=>$v)
+        {
+            if(preg_match("#^posttype#", $k))
+            {
+                $k = str_replace('posttype', '', $k);
+            }
+            else
+            {
+                continue;
+            }
+            $rank = ${'rank'.$k};
+            $toptypename = trim(${'toptype'.$k});
+            $sontype = trim(${'sontype'.$k});
+            $toptypedir = GetPinyin(stripslashes($toptypename));
+            $toptypedir = $referpath=='parent' ? $nextdir.'/'.$toptypedir : '/'.$toptypedir;
+            if(empty($toptypename))
+            {
+                continue;
+            }
+            $sql = str_replace('~reid~','0',$queryTemplate);
+            $sql = str_replace('~topid~','0',$sql);
+            $sql = str_replace('~rank~',$rank,$sql);
+            $sql = str_replace('~typename~',$toptypename,$sql);
+            $sql = str_replace('~typedir~',$toptypedir,$sql);
+            $dsql->ExecuteNoneQuery($sql);
+            $tid = $dsql->GetLastID();
+            if($tid>0 && $sontype!='')
+            {
+                $sontypes = explode(',',$sontype);
+                foreach($sontypes as $k=>$v)
+                {
+                    $v = trim($v);
+                    if($v=='')
+                    {
+                        continue;
+                    }
+                    $typedir = $toptypedir.'/'.GetPinyin(stripslashes($v));
+                    $sql = str_replace('~reid~',$tid,$queryTemplate);
+                    $sql = str_replace('~topid~',$tid,$sql);
+                    $sql = str_replace('~rank~',$k,$sql);
+                    $sql = str_replace('~typename~',$v,$sql);
+                    $sql = str_replace('~typedir~',$typedir,$sql);
+                    $dsql->ExecuteNoneQuery($sql);
+                }
+            }
+        }
+    } else {
+    
+
+        $row = $dsql->GetOne("SELECT `typedir` FROM `#@__arctype` WHERE `id`={$reid}");
+        foreach($_POST as $k=>$v)
+        {
+            if(preg_match("#^posttype#", $k))
+            {
+                $k = str_replace('posttype', '', $k);
+            }
+            else
+            {
+                continue;
+            }
+            $rank = ${'rank'.$k};
+            $toptypename = trim(${'reltype'.$k});
+            $toptypedir = GetPinyin(stripslashes($toptypename));
+            switch ($referpath) {
+                case 'parent':
+                    $toptypedir = $nextdir.'/'.$toptypedir;
+                    break;
+                case 'typepath':
+                    $toptypedir = isset($row['typedir'])? $row['typedir'].'/'.$toptypedir : '/'.$toptypedir;
+                    break; 
+                default:
+                    $toptypedir = '/'.$toptypedir;
+                    break;
+            }
+            
+            if(empty($toptypename))
+            {
+                continue;
+            }
+            $sql = str_replace('~reid~', $reid, $queryTemplate);
+            $sql = str_replace('~topid~', $reid, $sql);
+            $sql = str_replace('~rank~', $rank, $sql);
+            $sql = str_replace('~typename~', $toptypename, $sql);
+            $sql = str_replace('~typedir~', $toptypedir, $sql);
+            $dsql->ExecuteNoneQuery($sql);
+        }
+    }
+    UpDateCatCache();
+    ShowMsg('成功增加指定栏目!','catalog_main.php');
+    exit();
+}
+/*---------------------
+function action_save(){ }
+---------------------*/
+else if($dopost=='save')
+{
+    $smalltypes = '';
+    if(empty($smalltype)) $smalltype = '';
+    if(is_array($smalltype)) $smalltypes = join(',',$smalltype);
+    
+    if(!isset($sitepath)) $sitepath = '';
+    if($topid==0 && $reid>0) $topid = $reid;
+    if($ispart!=0) $cross = 0;
+    
+    $description = Html2Text($description,1);
+    $keywords = Html2Text($keywords,1);
+    
+    if($ispart != 2 )
+    {
+        //栏目的参照目录
+        if($referpath=='cmspath') $nextdir = '{cmspath}';
+        if($referpath=='basepath') $nextdir = '';
+        //用拼音命名
+        if($upinyin==1 || $typedir=='')
+        {
+            $typedir = GetPinyin(stripslashes($typename));
+        }
+        $typedir = $nextdir.'/'.$typedir;
+        $typedir = preg_replace("#\/{1,}#", "/", $typedir);
+    }
+
+    //开启多站点时的设置(仅针对顶级栏目)
+    if($reid==0 && $moresite==1)
+    {
+        $sitepath = $typedir;
+
+        //检测二级网址
+        if($siteurl!='')
+        {
+            $siteurl = preg_replace("#\/$#", "", $siteurl);
+            if(!preg_match("#http:\/\/#i", $siteurl))
+            {
+                ShowMsg("你绑定的二级域名无效,请用(http://host)的形式!","-1");
+                exit();
+            }
+            if(preg_match("#".$cfg_basehost."#i", $siteurl))
+            {
+                ShowMsg("你绑定的二级域名与当前站点是同一个域,不需要绑定!","-1");
+                exit();
+            }
+        }
+    }
+
+    //创建目录
+    if($ispart != 2)
+    {
+        $true_typedir = str_replace("{cmspath}", $cfg_cmspath, $typedir);
+        $true_typedir = preg_replace("#\/{1,}#", "/", $true_typedir);
+        if(!CreateDir($true_typedir))
+        {
+            ShowMsg("创建目录 {$true_typedir} 失败,请检查你的路径是否存在问题!","-1");
+            exit();
+        }
+    }
+    
+    $in_query = "INSERT INTO `#@__arctype`(reid,topid,sortrank,typename,typenameen,typedir,typeimg,isdefault,defaultname,issend,channeltype,
+    tempindex,templist,temparticle,modname,namerule,namerule2,
+    ispart,corank,description,keywords,seotitle,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`)
+    VALUES('$reid','$topid','$sortrank','$typename','$typenameen','$typedir','$typeimg','$isdefault','$defaultname','$issend','$channeltype',
+    '$tempindex','$templist','$temparticle','default','$namerule','$namerule2',
+    '$ispart','$corank','$description','$keywords','$seotitle','$moresite','$siteurl','$sitepath','$ishidden','$cross','$crossid','$content','$smalltypes')";
+
+    if(!$dsql->ExecuteNoneQuery($in_query))
+    {
+        ShowMsg("保存目录数据时失败,请检查你的输入资料是否存在问题!","-1");
+        exit();
+    }
+    UpDateCatCache();
+    if($reid>0)
+    {
+        PutCookie('lastCid',GetTopid($reid),3600*24,'/');
+    }
+    ShowMsg("成功创建一个分类!","catalog_main.php");
+    exit();
+
+}//End dopost==save
+
+//获取从父目录继承的默认参数
+if($dopost=='')
+{
+    $channelid = 1;
+    $issend = 1;
+    $corank = 0;
+    $reid = 0;
+    $topid = 0;
+    $typedir = '';
+    $moresite = 0;
+    if($id>0)
+    {
+        $myrow = $dsql->GetOne(" SELECT tp.*,ch.typename AS ctypename FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype WHERE tp.id=$id ");
+        $channelid = $myrow['channeltype'];
+        $issennd = $myrow['issend'];
+        $corank = $myrow['corank'];
+        $topid = $myrow['topid'];
+        $typedir = $myrow['typedir'];
+    }
+
+    //父栏目是否为二级站点
+    $moresite = empty($myrow['moresite']) ? 0 : $myrow['moresite'];
+}
+
+include DedeInclude('templets/catalog_add.htm');

+ 42 - 0
admin/catalog_del.php

@@ -0,0 +1,42 @@
+<?php
+/**
+ * 删除栏目
+ *
+ * @version        $Id: catalog_del.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+
+//检查权限许可
+CheckPurview('t_Del,t_AccDel');
+require_once(DEDEINC.'/typeunit.class.admin.php');
+require_once(DEDEINC.'/oxwindow.class.php');
+$id = trim(preg_replace("#[^0-9]#", '', $id));
+
+//检查栏目操作许可
+CheckCatalog($id,"你无权删除本栏目!");
+if(empty($dopost)) $dopost='';
+if($dopost=='ok')
+{
+    $ut = new TypeUnit();
+    $ut->DelType($id,$delfile);
+    UpDateCatCache();
+    ShowMsg("成功删除一个栏目!","catalog_main.php");
+    exit();
+}
+$dsql->SetQuery("SELECT typename,typedir FROM #@__arctype WHERE id=".$id);
+$row = $dsql->GetOne();
+$wintitle = "删除栏目确认";
+$wecome_info = "<a href='catalog_main.php'>栏目管理</a> &gt;&gt; 删除栏目确认";
+$win = new OxWindow();
+$win->Init('catalog_del.php','js/blank.js','POST');
+$win->AddHidden('id',$id);
+$win->AddHidden('dopost','ok');
+$win->AddTitle("你要确实要删除栏目: [{$row['typename']}] 吗?");
+$win->AddItem('栏目的文件保存目录:',$row['typedir']);
+$win->AddItem('是否删除文件:',"<input type='radio' name='delfile' class='np' value='no' checked='1' />否 &nbsp;<input type='radio' name='delfile' class='np' value='yes' />是");
+$winform = $win->GetWindow('ok');
+$win->Display();

+ 362 - 0
admin/catalog_do.php

@@ -0,0 +1,362 @@
+<?php
+/**
+ * 栏目操作
+ *
+ * @version        $Id: catalog_do.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+if(empty($dopost))
+{
+    ShowMsg("对不起,请指定栏目参数!","catalog_main.php");
+    exit();
+}
+$cid = empty($cid) ? 0 : intval($cid);
+$unittype = empty($unittype) ? 0 : intval($unittype);
+$channelid = empty($channelid) ? 0 : intval($channelid);
+
+/*--------------------------
+//增加文档
+function addArchives();
+---------------------------*/
+if($dopost=="addArchives")
+{
+    //默认文章调用发布表单
+    if(empty($cid) && empty($channelid))
+    {
+        header("location:article_add.php");
+        exit();
+    }
+    if(!empty($channelid))
+    {
+        //根据模型调用发布表单
+        $row = $dsql->GetOne("SELECT addcon FROM #@__channeltype WHERE id='$channelid'");
+    }
+    else
+    {
+        //根据栏目调用发布表单
+        $row = $dsql->GetOne("SELECT ch.addcon FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype WHERE tp.id='$cid' ");
+    }
+    $gurl = $row["addcon"];
+    if($gurl=="")
+    {
+        ShowMsg("对不起,你指的栏目可能有误!","catalog_main.php");
+        exit();
+    }
+
+    //跳转并传递参数
+    header("location:{$gurl}?channelid={$channelid}&cid={$cid}");
+    exit();
+}
+/*--------------------------
+//管理文档
+function listArchives();
+---------------------------*/
+else if($dopost=="listArchives")
+{
+    if(!empty($gurl))
+    {
+        if(empty($arcrank))
+        {
+            $arcrank = '';
+        }
+        $gurl = str_replace('..','',$gurl);
+        header("location:{$gurl}?arcrank={$arcrank}&cid={$cid}");
+        exit();
+    }
+    if($cid>0)
+    {
+        $row = $dsql->GetOne("SELECT #@__arctype.typename,#@__channeltype.typename AS channelname,#@__channeltype.id,#@__channeltype.mancon FROM #@__arctype LEFT JOIN #@__channeltype on #@__channeltype.id=#@__arctype.channeltype WHERE #@__arctype.id='$cid'");
+        $gurl = $row["mancon"];
+        $channelid = $row["id"];
+        $typename = $row["typename"];
+        $channelname = $row["channelname"];
+        if($gurl=="")
+        {
+            ShowMsg("对不起,你指的栏目可能有误!","catalog_main.php");
+            exit();
+        }
+    }
+    else if($channelid>0)
+    {
+        $row = $dsql->GetOne("SELECT typename,id,mancon FROM #@__channeltype WHERE id='$channelid'");
+        $gurl = $row["mancon"];
+        $channelid = $row["id"];
+        $typename = "";
+        $channelname = $row["typename"];
+    }
+    
+    if(empty($gurl)) $gurl = 'content_list.php';
+    header("location:{$gurl}?channelid={$channelid}&cid={$cid}");
+    exit();
+}
+/*--------------------------
+//浏览通用模板目录
+function viewTempletDir();
+---------------------------*/
+else if($dopost=="viewTemplet")
+{
+    header("location:tpl.php?path=/".$cfg_df_style);
+    exit();
+}
+
+/*--------------------------
+//留言簿管理
+function GoGuestBook();
+---------------------------*/
+else if($dopost=="guestbook")
+{
+    ShowMsg("正在跳转到留言本&gt;&gt;", "{$cfg_phpurl}/guestbook.php?gotopagerank=admin");
+    exit();
+}
+/*------------------------
+浏览单个页面的栏目
+function ViewSgPage()
+------------------------*/
+else if($dopost=="viewSgPage")
+{
+    require_once(DEDEINC."/arc.listview.class.php");
+    $lv = new ListView($cid);
+    $pageurl = $lv->MakeHtml();
+    ShowMsg("更新缓冲,请稍后...",$pageurl);
+    exit();
+}
+/*------------------------
+更改栏目排列顺序
+function upRank()
+------------------------*/
+else if($dopost=="upRank")
+{
+    //检查权限许可
+    CheckPurview('t_Edit,t_AccEdit');
+
+    //检查栏目操作许可
+    CheckCatalog($cid,"你无权更改本栏目!");
+    $row = $dsql->GetOne("SELECT reid,sortrank FROM #@__arctype WHERE id='$cid'");
+    $reid = $row['reid'];
+    $sortrank = $row['sortrank'];
+    $row = $dsql->GetOne("SELECT sortrank FROM #@__arctype WHERE sortrank<=$sortrank AND reid=$reid ORDER BY sortrank DESC ");
+    if(is_array($row))
+    {
+        $sortrank = $row['sortrank']-1;
+        $dsql->ExecuteNoneQuery("UPDATE #@__arctype SET sortrank='$sortrank' WHERE id='$cid'");
+    }
+    UpDateCatCache();
+    ShowMsg("操作成功,返回目录...","catalog_main.php");
+    exit();
+}
+else if($dopost=="upRankAll")
+{
+    //检查权限许可
+    CheckPurview('t_Edit');
+    $row = $dsql->GetOne("SELECT id FROM #@__arctype ORDER BY id DESC");
+    if(is_array($row))
+    {
+        $maxID = $row['id'];
+        for($i=1;$i<=$maxID;$i++)
+        {
+            if(isset(${'sortrank'.$i}))
+            {
+                $dsql->ExecuteNoneQuery("UPDATE #@__arctype SET sortrank='".(${'sortrank'.$i})."' WHERE id='{$i}';");
+            }
+        }
+    }
+    UpDateCatCache();
+    ShowMsg("操作成功,正在返回...","catalog_main.php");
+    exit();
+}
+/*--------------------------
+//更新栏目缓存
+function UpCatlogCache();
+---------------------------*/
+else if($dopost=="upcatcache")
+{
+    UpDateCatCache();
+    $sql = " TRUNCATE TABLE `#@__arctiny`";
+    $dsql->ExecuteNoneQuery($sql);
+    
+    //导入普通模型微数据
+    $sql = "INSERT INTO `#@__arctiny`(id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid)  
+            SELECT id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid FROM `#@__archives` ";
+    $dsql->ExecuteNoneQuery($sql);
+    
+    //导入单表模型微数据
+    $dsql->SetQuery("SELECT id,addtable FROM `#@__channeltype` WHERE id < -1 ");
+    $dsql->Execute();
+    $doarray = array();
+    while($row = $dsql->GetArray())
+    {
+        $tb = str_replace('#@__', $cfg_dbprefix, $row['addtable']);
+        if(empty($tb) || isset($doarray[$tb]) )
+        {
+            continue;
+        }
+        else
+        {
+            $sql = "INSERT INTO `#@__arctiny`(id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid)  
+                    SELECT aid, typeid, 0, arcrank, channel, senddate, 0, mid FROM `$tb` ";
+            $rs = $dsql->executenonequery($sql); 
+            $doarray[$tb]  = 1;
+        }
+    }
+    ShowMsg("操作成功,正在返回...","catalog_main.php");
+    exit();
+}
+/*---------------------
+获取JS文件
+function GetJs
+----------------------*/
+else if($dopost=="GetJs")
+{
+    header("location:makehtml_js.php");
+    exit();
+}
+/*-----------
+获得子类的内容
+function GetSunListsMenu();
+-----------*/
+else if($dopost=="GetSunListsMenu")
+{
+    $userChannel = $cuserLogin->getUserChannel();
+    require_once(DEDEINC."/typeunit.class.menu.php");
+    AjaxHead();
+    PutCookie('lastCidMenu',$cid,3600*24,"/");
+    $tu = new TypeUnit($userChannel);
+    $tu->LogicListAllSunType($cid," ");
+}
+/*-----------
+获得子类的内容
+function GetSunLists();
+-----------*/
+else if($dopost=="GetSunLists")
+{
+    require_once(DEDEINC."/typeunit.class.admin.php");
+    AjaxHead();
+    PutCookie('lastCid', $cid, 3600*24, "/");
+    $tu = new TypeUnit();
+    $tu->dsql = $dsql;
+    echo "    <table width='100%' border='0' cellspacing='0' cellpadding='0'>\r\n";
+    $tu->LogicListAllSunType($cid, " ");
+    echo "    </table>\r\n";
+    $tu->Close();
+}
+/*----------------
+合并栏目
+function unitCatalog() { }
+-----------------*/
+else if($dopost == 'unitCatalog')
+{
+    CheckPurview('t_Move');
+    require_once(DEDEINC.'/oxwindow.class.php');
+    require_once(DEDEINC.'/typelink.class.php');
+    require_once(DEDEINC.'/channelunit.func.php');
+    if(empty($nextjob))
+    {
+        $typeid = isset($typeid) ? intval($typeid) : 0;
+        $row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__arctype` WHERE reid='$typeid' ");
+        $tl = new TypeLink($typeid);
+        $typename = $tl->TypeInfos['typename'];
+        $reid = $tl->TypeInfos['reid'];
+        $channelid = $tl->TypeInfos['channeltype'];
+        if(!empty($row['dd']))
+        {
+            ShowMsg("栏目: $typename($typeid) 有子栏目,不能进行合并操作!", '-1');
+            exit();
+        }
+        $typeOptions = $tl->GetOptionArray(0, 0, $channelid);
+        $wintitle = '合并栏目';
+        $wecome_info = "<a href='catalog_main.php'>栏目管理</a> &gt;&gt; 合并栏目";
+        $win = new OxWindow();
+        $win->Init('catalog_do.php', 'js/blank.js', 'POST');
+        $win->AddHidden('dopost', 'unitCatalog');
+        $win->AddHidden('typeid', $typeid);
+        $win->AddHidden('channelid', $channelid);
+        $win->AddHidden('nextjob', 'unitok');
+        $win->AddTitle("合并目录时不会删除原来的栏目目录,合并后需手动更新目标栏目的文档HTML和列表HTML。");
+        $win->AddItem('你选择的栏目是:', "<font color='red'>$typename($typeid)</font>");
+        $win->AddItem('你希望合并到那个栏目?', "<select name='unittype'>\r\n{$typeOptions}\r\n</select>");
+        $win->AddItem('注意事项:', '栏目不能有下级子栏目,只允许子级到更高级或同级或不同父级的情况。');
+        $winform = $win->GetWindow('ok');
+        $win->Display();
+        exit();
+    }
+    else
+    {
+        if($typeid==$unittype)
+        {
+            ShowMsg("同一栏目无法合并,请后退重试!", '-1');
+            exit();
+        }
+        if(IsParent($unittype, $typeid))
+        {
+            ShowMsg('不能从父类合并到子类!', 'catalog_main.php');
+            exit();
+        }
+        $row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
+        $addtable = (empty($row['addtable']) ? '#@__addonarticle' : $row['addtable'] );
+        $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET typeid='$unittype' WHERE typeid='$typeid' ");
+        $dsql->ExecuteNoneQuery("UPDATE `#@__feedback` SET typeid='$unittype' WHERE typeid='$typeid' ");
+        $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET typeid='$unittype' WHERE typeid='$typeid' ");
+        $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET typeid2='$unittype' WHERE typeid2='$typeid' ");
+        $dsql->ExecuteNoneQuery("UPDATE `#@__addonspec` SET typeid='$unittype' WHERE typeid='$typeid' ");
+        $dsql->ExecuteNoneQuery("UPDATE `$addtable` SET typeid='$unittype' WHERE typeid='$typeid' ");
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctype` WHERE id='$typeid' ");
+        UpDateCatCache();
+        ShowMsg('成功合并指定栏目!', 'catalog_main.php');
+        exit();
+    }
+}
+/*----------------
+移动栏目
+function moveCatalog() { }
+-----------------*/
+else if($dopost == 'moveCatalog')
+{
+    CheckPurview('t_Move');
+    require_once(DEDEINC.'/oxwindow.class.php');
+    require_once(DEDEINC.'/typelink.class.php');
+    require_once(DEDEINC.'/channelunit.func.php');
+    if(empty($nextjob))
+    {
+        $tl = new TypeLink($typeid);
+        $typename = $tl->TypeInfos['typename'];
+        $reid = $tl->TypeInfos['reid'];
+        $channelid = $tl->TypeInfos['channeltype'];
+        $typeOptions = $tl->GetOptionArray(0,0,$channelid);
+        $wintitle = "移动栏目";
+        $wecome_info = "<a href='catalog_main.php'>栏目管理</a> &gt;&gt; 移动栏目";
+        $win = new OxWindow();
+        $win->Init('catalog_do.php', 'js/blank.js', 'POST');
+        $win->AddHidden('dopost', 'moveCatalog');
+        $win->AddHidden('typeid', $typeid);
+        $win->AddHidden('channelid', $channelid);
+        $win->AddHidden('nextjob', 'unitok');
+        $win->AddTitle("移动目录时不会删除原来已创建的列表,移动后需重新对栏目创建HTML。");
+        $win->AddItem('你选择的栏目是:',"$typename($typeid)");
+        $win->AddItem('你希望移动到那个栏目?',"<select name='movetype'>\r\n<option value='0'>移动为顶级栏目</option>\r\n$typeOptions\r\n</select>");
+        $win->AddItem('注意事项:','不允许从父级移动到子级目录,只允许子级到更高级或同级或不同父级的情况。');
+        $winform = $win->GetWindow('ok');
+        $win->Display();
+        exit();
+    }
+    else
+    {
+        if($typeid==$movetype)
+        {
+            ShowMsg('移对对象和目标位置相同!', 'catalog_main.php');
+            exit();
+        }
+        if(IsParent($movetype, $typeid))
+        {
+            ShowMsg('不能从父类移动到子类!', 'catalog_main.php');
+            exit();
+        }
+        $dsql->ExecuteNoneQuery(" UPDATE `#@__arctype` SET reid='$movetype' WHERE id='$typeid' ");
+        UpDateCatCache();
+        ShowMsg('成功移动目录!', 'catalog_main.php');
+        exit();
+    }
+}

+ 300 - 0
admin/catalog_edit.php

@@ -0,0 +1,300 @@
+<?php
+/**
+ * 栏目编辑
+ *
+ * @version        $Id: catalog_edit.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/typelink.class.php");
+if(empty($dopost)) $dopost = '';
+$id = isset($id) ? intval($id) : 0;
+
+//检查权限许可
+CheckPurview('t_Edit,t_AccEdit');
+
+//检查栏目操作许可
+CheckCatalog($id, '你无权更改本栏目!');
+
+/*栏目二开字段 by 小虎哥*/
+$dsql->GetTableFields('#@__arctype');
+$fieldArray = $dsql->GetArray();
+if (!in_array('typenameen', $fieldArray)) { // 英文栏目名称
+  $dsql->ExecuteNoneQuery("ALTER TABLE `#@__arctype` ADD `typenameen` char(100) NOT NULL default ''");
+}
+if (!in_array('typeimg', $fieldArray)) { // 栏目封面图
+  $dsql->ExecuteNoneQuery("ALTER TABLE `#@__arctype` ADD `typeimg` char(100) NOT NULL default ''");
+}
+/*--end*/
+
+/*-----------------------
+function action_save()
+----------------------*/
+if($dopost=="save")
+{
+    $description = Html2Text($description,1);
+    $keywords = Html2Text($keywords,1);
+    $uptopsql = $smalltypes = '';
+    if(isset($smalltype) && is_array($smalltype)) $smalltypes = join(',',$smalltype);
+    if($topid==0)
+    {
+        $sitepath = $typedir;
+        $uptopsql = " ,siteurl='$siteurl',sitepath='$sitepath',ishidden='$ishidden' ";
+    }
+    if($ispart!=0) $cross = 0;
+
+    $upquery = "UPDATE `#@__arctype` SET
+     issend='$issend',
+     sortrank='$sortrank',
+     typename='$typename',
+     typenameen='$typenameen',
+     typedir='$typedir',
+     typeimg='$typeimg',
+     isdefault='$isdefault',
+     defaultname='$defaultname',
+     issend='$issend',
+     ishidden='$ishidden',
+     channeltype='$channeltype',
+     tempindex='$tempindex',
+     templist='$templist',
+     temparticle='$temparticle',
+     namerule='$namerule',
+     namerule2='$namerule2',
+     ispart='$ispart',
+     corank='$corank',
+     description='$description',
+     keywords='$keywords',
+     seotitle='$seotitle',
+     moresite='$moresite',
+     `cross`='$cross',
+     `content`='$content',
+     `crossid`='$crossid',
+     `smalltypes`='$smalltypes'
+     $uptopsql
+    WHERE id='$id' ";
+
+    if(!$dsql->ExecuteNoneQuery($upquery))
+    {
+        ShowMsg("保存当前栏目更改时失败,请检查你的输入资料是否存在问题!","-1");
+        exit();
+    }
+
+    //如果选择子栏目可投稿,更新顶级栏目为可投稿
+    if($topid>0 && $issend==1)
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__arctype` SET issend='$issend' WHERE id='$topid'; ");
+    }
+    $slinks = " id IN (".GetSonIds($id).")";
+
+    //修改顶级栏目时强制修改下级的多站点支持属性
+    if($topid==0 && preg_match("#,#", $slinks))
+    {
+        $upquery = "UPDATE `#@__arctype` SET moresite='$moresite', siteurl='$siteurl',sitepath='$sitepath',ishidden='$ishidden' WHERE 1=1 AND $slinks";
+        $dsql->ExecuteNoneQuery($upquery);
+    }
+
+    //更改子栏目属性
+    if(!empty($upnext))
+    {
+        $upquery = "UPDATE `#@__arctype` SET
+       issend='$issend',
+       defaultname='$defaultname',
+       channeltype='$channeltype',
+       tempindex='$tempindex',
+       templist='$templist',
+       temparticle='$temparticle',
+       namerule='$namerule',
+       namerule2='$namerule2',
+       ishidden='$ishidden'
+     WHERE 1=1 AND $slinks";
+        if(!$dsql->ExecuteNoneQuery($upquery))
+        {
+            ShowMsg("更改当前栏目成功,但更改下级栏目属性时失败!","-1");
+            exit();
+        }
+    }
+    UpDateCatCache();
+    ShowMsg("成功更改一个分类!","catalog_main.php");
+    exit();
+}//End Save Action
+else if ($dopost=="savetime")
+{
+    $uptopsql = '';
+    $slinks = " id IN (".GetSonIds($id).")";
+    
+    //顶级栏目二级域名根目录处理
+    if($topid==0 && $moresite==1)
+    {
+        $sitepath = $typedir;
+        $uptopsql = " ,sitepath='$sitepath' ";
+        if(preg_match("#,#", $slinks))
+        {
+            $upquery = "UPDATE `#@__arctype` SET sitepath='$sitepath' WHERE $slinks";
+            $dsql->ExecuteNoneQuery($upquery);
+        }
+    }
+    //如果选择子栏目可投稿,更新顶级栏目为可投稿
+    if($topid > 0 && $issend==1)
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__arctype` SET issend='$issend' WHERE id='$topid'; ");
+    }
+    
+    $upquery = "UPDATE `#@__arctype` SET
+     issend='$issend',
+     sortrank='$sortrank',
+     typedir='$typedir',
+     typename='$typename',
+        isdefault='$isdefault',
+     defaultname='$defaultname',
+     ispart='$ispart',
+     corank='$corank' $uptopsql
+    WHERE id='$id' ";
+    
+    if(!$dsql->ExecuteNoneQuery($upquery))
+    {
+        ShowMsg("保存当前栏目更改时失败,请检查你的输入资料是否存在问题!","-1");
+        exit();
+    }
+    UpDateCatCache();
+    ShowMsg("成功更改一个分类!","catalog_main.php");
+    exit();
+}
+
+//读取栏目信息
+$dsql->SetQuery("SELECT tp.*,ch.typename as ctypename FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype WHERE tp.id=$id");
+$myrow = $dsql->GetOne();
+$topid = $myrow['topid'];
+if($topid>0)
+{
+    $toprow = $dsql->GetOne("SELECT moresite,siteurl,sitepath FROM `#@__arctype` WHERE id=$topid");
+    foreach($toprow as $k=>$v)
+    {
+        if(!preg_match("#[0-9]#", $k))
+        {
+            $myrow[$k] = $v;
+        }
+    }
+}
+$myrow['content']=empty($myrow['content'])? "&nbsp;" : $myrow['content'];
+
+//读取频道模型信息
+$channelid = $myrow['channeltype'];
+$dsql->SetQuery("SELECT id,typename,nid FROM `#@__channeltype` WHERE id<>-1 AND isshow=1 ORDER BY id");
+$dsql->Execute();
+while($row = $dsql->GetObject())
+{
+    $channelArray[$row->id]['typename'] = $row->typename;
+    $channelArray[$row->id]['nid'] = $row->nid;
+    if($row->id==$channelid)
+    {
+        $nid = $row->nid;
+    }
+}
+PutCookie('lastCid',GetTopid($id),3600*24,"/");
+if($dopost == 'time')
+{
+    ?>
+      <form name="form1" action="catalog_edit.php" method="post" onSubmit="return checkSubmit();">
+  <input type="hidden" name="dopost" value="savetime" />
+  <input type="hidden" name="id" value="<?php echo $id; ?>" />
+  <input type="hidden" name="topid" value="<?php echo $myrow['topid']; ?>" />
+  <input type="hidden" name="moresite" value="<?php echo $myrow['moresite']; ?>" />
+    <table width="100%" border="0" cellpadding="0" cellspacing="0">
+       <tr> 
+            <td class='bline' height="26" align="center" colspan="2">
+            <a href='catalog_edit.php?id=<?php echo $id; ?>'><u>当前是快捷编辑模式,如果您要修改更详细的参数,请使用高级模式&gt;&gt;</u></a>
+            </td>
+          </tr>
+         <tr> 
+            <td width="150" class='bline' height="26" align="center">是否支持投稿:</td>
+            <td class='bline'> <input type='radio' name='issend' value='0' class='np' <?php if($myrow['issend']=="0") echo " checked='1' ";?> />
+              不支持&nbsp; <input type='radio' name='issend' value='1' class='np' <?php if($myrow['issend']=="1") echo " checked='1' ";?> />
+              支持 </td>
+          </tr>
+          <!-- 在快速修改更改内容模型后,因为模板没改变,会导致错误,因此去除些选择框。 -->
+          <tr> 
+            <td class='bline' height="26" align="center"><font color='red'>内容模型:</font> </td>
+            <td class='bline'>
+            <?php    
+            foreach($channelArray as $k=>$arr)
+            {
+                if($k==$channelid) echo "{$arr['typename']} | {$arr['nid']}";
+            }
+            ?>
+            <a href='catalog_edit.php?id=<?php echo $id; ?>'><u>[修改]</u></a>
+            </td>
+          </tr>
+          <tr> 
+            <td class='bline' height="26" align="center"><font color='red'>栏目名称:</font></td>
+            <td class='bline'><input name="typename" type="text" id="typename" size="30" value="<?php echo $myrow['typename']?>" class="iptxt" /></td>
+          </tr>
+          <tr> 
+            <td class='bline' height="26" align="center"> 排列顺序: </td>
+            <td class='bline'> <input name="sortrank" size="6" type="text" value="<?php echo $myrow['sortrank']?>" class="iptxt" />
+              (由低 -&gt; 高) </td>
+          </tr>
+          <tr> 
+            <td class='bline' height="26" align="center">浏览权限:</td>
+            <td class='bline'> <select name="corank" id="corank" style="width:100">
+                <?php
+              $dsql->SetQuery("SELECT * FROM #@__arcrank WHERE rank >= 0");
+              $dsql->Execute();
+              while($row = $dsql->GetObject())
+              {
+                  if($myrow['corank']==$row->rank)
+                    echo "<option value='".$row->rank."' selected>".$row->membername."</option>\r\n";
+                        else
+                          echo "<option value='".$row->rank."'>".$row->membername."</option>\r\n";
+              }
+              ?>
+              </select>
+              (仅限制栏目里的文档浏览权限) </td>
+          </tr>
+          <tr>
+              <td class='bline' height="26" align="center">文件保存目录:</td>
+              <td class='bline'><input name="typedir" type="text" id="typedir" value="<?php echo $myrow['typedir']?>" style="width:300px"  class="iptxt" /></td>
+          </tr>
+          <tr> 
+            <td height="26" align="center" class='bline'>栏目列表选项:</td>
+            <td class='bline'> <input type='radio' name='isdefault' value='1' class='np'<?php if($myrow['isdefault']==1) echo " checked='1' ";?>/>
+              链接到默认页 
+              <input type='radio' name='isdefault' value='0' class='np'<?php if($myrow['isdefault']==0) echo " checked='1' ";?>/>
+              链接到列表第一页 
+              <input type='radio' name='isdefault' value='-1' class='np'<?php if($myrow['isdefault']==-1) echo " checked='1' ";?>/>
+              使用动态页 </td>
+          </tr>
+          <tr> 
+            <td class='bline' height="26" align="center">默认页的名称: </td>
+            <td class='bline'><input name="defaultname" type="text" value="<?php echo $myrow['defaultname']?>" class="iptxt" /></td>
+          </tr>
+          <tr> 
+            <td height="26" class='bline' align="center">栏目属性:</td>
+            <td class='bline'>
+                <input name="ispart" type="radio" id="radio" value="0" class='np'<?php if($myrow['ispart']==0) echo " checked='1' ";?>/>
+              最终列表栏目(允许在本栏目发布文档,并生成文档列表)<br>
+              <input name="ispart" type="radio" id="radio2" value="1" class='np'<?php if($myrow['ispart']==1) echo " checked='1' ";?>/>
+
+              频道封面(栏目本身不允许发布文档)<br>
+              <input name="ispart" type="radio" id="radio3" value="2" class='np'<?php if($myrow['ispart']==2) echo " checked='1' ";?>/>
+              外部连接(在"文件保存目录"处填写网址)              </td>
+          </tr>
+          <tr>              
+            <td align="center" colspan="2" height="54" bgcolor='#FAFEE0'>
+            <input name="imageField" type="image" src="images/button_ok.gif" width="60" height="22" border="0" class="np"/>
+            &nbsp;&nbsp;&nbsp;
+            <a title='关闭' onclick='CloseMsg()'><img src="images/button_back.gif" width="60" height="22" border="0"></a>
+            </td>
+          </tr>
+      </table>
+      </form>
+    <?php
+    exit();
+}
+else 
+{
+    include DedeInclude('templets/catalog_edit.htm');
+}
+?>

+ 14 - 0
admin/catalog_main.php

@@ -0,0 +1,14 @@
+<?php
+/**
+ * 栏目管理
+ *
+ * @version        $Id: catalog_main.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/typeunit.class.admin.php");
+$userChannel = $cuserLogin->getUserChannel();
+include DedeInclude('templets/catalog_main.htm');

+ 26 - 0
admin/catalog_menu.php

@@ -0,0 +1,26 @@
+<?php
+/**
+ * 栏目菜单
+ *
+ * @version        $Id: catalog_menu.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/typeunit.class.menu.php");
+$userChannel = $cuserLogin->getUserChannel();
+if(empty($opendir)) $opendir=-1;
+if($userChannel>0) $opendir=$userChannel;
+
+if($cuserLogin->adminStyle=='dedecms')
+{
+    include DedeInclude('templets/catalog_menu.htm');
+    exit();
+}
+else
+{
+    include DedeInclude('templets/catalog_menu2.htm');
+    exit();
+}

+ 188 - 0
admin/co_add.php

@@ -0,0 +1,188 @@
+<?php
+/**
+ * 采集规则添加
+ *
+ * @version        $Id: co_add.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('co_AddNote');
+if(empty($step)) $step = "";
+if(empty($exrule)) $exrule = "";
+
+//选择操作频道类型,载入表单
+/*----------------------
+function Init(){ }
+----------------------*/
+if(empty($step))
+{
+    require_once(DEDEADMIN."/templets/co_add_step0.htm");
+    exit();
+}
+else if($step==1)
+{
+    require_once(DEDEADMIN."/templets/co_add_step1.htm");
+    exit();
+}
+//保存索引规则
+/*----------------------
+function Save_List(){ }
+----------------------*/
+else if($step==2)
+{
+    //对完整规则进行测试
+    if($dopost=='test')
+    {
+        include(DEDEINC."/dedecollection.class.php");
+        $usemore = (!isset($usemore) ? 0 : 1);
+        $listconfig = "{dede:noteinfo notename=\\\"$notename\\\" channelid=\\\"$channelid\\\" macthtype=\\\"$macthtype\\\"
+refurl=\\\"$refurl\\\" sourcelang=\\\"$sourcelang\\\" cosort=\\\"$cosort\\\" isref=\\\"$isref\\\" exptime=\\\"$exptime\\\" usemore=\\\"$usemore\\\" /}
+
+{dede:listrule sourcetype=\\\"$sourcetype\\\" rssurl=\\\"$rssurl\\\" regxurl=\\\"$regxurl\\\"
+startid=\\\"$startid\\\" endid=\\\"$endid\\\" addv=\\\"$addv\\\" urlrule=\\\"$urlrule\\\"
+ musthas=\\\"$musthas\\\" nothas=\\\"$nothas\\\" listpic=\\\"$listpic\\\" usemore=\\\"$usemore\\\"}
+    {dede:addurls}$addurls{/dede:addurls}
+    {dede:batchrule}$batchrule{/dede:batchrule}
+    {dede:regxrule}$regxrule{/dede:regxrule}
+    {dede:areastart}$areastart{/dede:areastart}
+    {dede:areaend}$areaend{/dede:areaend}
+{/dede:listrule}\r\n";
+        $tmplistconfig = stripslashes($listconfig);
+        $notename = stripslashes($notename);
+        if($sourcetype=='rss' && $refurl='')
+        {
+            $refurl = $rssurl;
+        }
+        $refurl = stripslashes($refurl);
+        $errmsg = '';
+        $freq = empty($freq)? "" : $freq;
+        $extypeid = empty($freq)? "" : $extypeid;
+
+        //测试规则
+        if($sourcetype=='rss')
+        {
+            $links = GetRssLinks(stripslashes($rssurl));
+            $demopage = $rssurl;
+        }
+        else
+        {
+            $links = array();
+            $lists = GetUrlFromListRule($regxurl,stripslashes($addurls),$startid,$endid,$addv,$usemore,stripslashes($batchrule));
+            if(isset($lists[0][0]))
+            {
+                $demopage = $lists[0][0];
+                $dc = new DedeCollection();
+                $dc->LoadListConfig($tmplistconfig);
+                $listurl = '';
+                $links = $dc->Testlists($listurl);
+                $errmsg = $dc->errString;
+            }
+            else
+            {
+                $demopage = '没有匹配到适合的列表页!';
+            }
+        }
+        require_once(DEDEADMIN."/templets/co_add_step1_test.htm");
+        exit();
+    }
+
+    //从预览并提示进入下一步
+    else
+    {
+        $row = $dsql->GetOne("SELECT nid,channelid FROM `#@__co_note` WHERE isok=0 AND notename LIKE '$notename' ");
+        if(!is_array($row))
+        {
+            $uptime = time();
+            $listconfig = urldecode($listconfig);
+            $inquery = " INSERT INTO `#@__co_note`(`channelid`,`notename`,`sourcelang`,`uptime`,`cotime`,`pnum`,`isok`,`usemore`,`listconfig`,`itemconfig`)
+               VALUES ('$channelid','$notename','$sourcelang','$uptime','0','0','0','$usemore','$listconfig',''); ";
+            $rs = $dsql->ExecuteNoneQuery($inquery);
+            if(!$rs)
+            {
+                ShowMsg("保存信息时出现错误!".$dsql->GetError(),"-1");
+                exit();
+            }
+            $nid = $dsql->GetLastID();
+        }
+        else
+        {
+            $channelid=$row['channelid'];
+            $uptime = time();
+            if(empty($freq)) $freq = 1;
+            if(empty($extypeid)) $extypeid = 0;
+            if(empty($islisten)) $islisten = 0;
+            $usemore = (!isset($usemore) ? 0 : 1);
+            
+            $query = " UPDATE `#@__co_note` SET
+         `channelid`='$channelid',
+         `notename`='$notename',
+         `sourcelang`='$sourcelang',
+         `uptime`='$uptime',
+         `isok`='1',
+         `usemore`='$usemore',
+         `listconfig`='$listconfig' WHERE nid='$nid'; ";
+            $dsql->ExecuteNoneQuery($query);
+            $nid = $row['nid'];
+        }
+        if(!isset($previewurl)) $previewurl = '';
+        require_once(DEDEINC.'/dedetag.class.php');
+        require_once(DEDEADMIN."/templets/co_add_step2.htm");
+        exit();
+    }
+}
+
+//保存文章规则
+/*----------------------
+function Save_Art(){ }
+----------------------*/
+else if($step==5)
+{
+    /*
+    [previewurl] => ''
+    */
+    $itemconfig = "{dede:sppage sptype=\\'$sptype\\' sptype=\\'$sptype\\' srul=\\'$srul\\' erul=\\'$erul\\'}$sppage{/dede:sppage}\r\n";
+    $itemconfig .= "{dede:previewurl}$previewurl{/dede:previewurl}\r\n";
+    $itemconfig .= "{dede:keywordtrim}$keywordtrim{/dede:keywordtrim}\r\n";
+    $itemconfig .= "{dede:descriptiontrim}$descriptiontrim{/dede:descriptiontrim}\r\n";
+    $fs = explode(',','value,match,isunit,isdown,trim,function');
+    foreach($fields as $field)
+    {
+        foreach($fs as $f)
+        {
+            $GLOBALS[$f.'_'.$field] = (!isset($GLOBALS[$f.'_'.$field]) ? '' : $GLOBALS[$f.'_'.$field]);
+        }
+        $matchstr = $GLOBALS["match_".$field];
+        $trimstr = $GLOBALS["trim_".$field];
+        $trimstr = trim(str_replace('&nbsp;','#n#',$trimstr));
+        $matchstr = trim(str_replace('&nbsp;','#n#',$matchstr));
+        if($trimstr!='' && !preg_match("#{dede:trim#i", $trimstr))
+        {
+            $trimstr = "    {dede:trim}$trimstr{/dede:trim}\r\n";
+        }
+        $itemconfig .= "{dede:item field=\\'".$field."\\' value=\\'".$GLOBALS["value_".$field]."\\' isunit=\\'".$GLOBALS["isunit_".$field]."\\' isdown=\\'".$GLOBALS["isdown_".$field]."\\'}
+   {dede:match}".$matchstr."{/dede:match}
+   $trimstr
+   {dede:function}".$GLOBALS["function_".$field]."{/dede:function}
+{/dede:item}\r\n";
+    }
+    $dsql->ExecuteNoneQuery("UPDATE `#@__co_note` SET itemconfig='$itemconfig' WHERE nid='$nid' ");
+    //echo $dsql->GetError();
+    require_once(DEDEINC.'/dedecollection.class.php');
+    require_once(DEDEADMIN."/templets/co_add_step2_test.htm");
+    exit();
+}
+else if($step==6)
+{
+    $dsql->ExecuteNoneQuery("UPDATE `#@__co_note` SET isok='1' WHERE nid='$nid' ");
+    ShowMsg("成功设置一个规则!","co_main.php");
+    exit();
+}
+else if($step==7)
+{
+    $dsql->ExecuteNoneQuery("UPDATE `#@__co_note` SET isok='1' WHERE nid='$nid' ");
+    ShowMsg("成功设置一个规则,现在转向采集页面!","co_gather_start.php?nid=$nid");
+    exit();
+}

+ 287 - 0
admin/co_do.php

@@ -0,0 +1,287 @@
+<?php
+/**
+ * 采集操作
+ *
+ * @version        $Id: co_do.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/oxwindow.class.php");
+if(!isset($nid)) $nid=0;
+$ENV_GOBACK_URL = empty($_COOKIE["ENV_GOBACK_URL"]) ? "co_url.php" : $_COOKIE["ENV_GOBACK_URL"];
+
+//删除节点
+//删除节点将删除所有旧的网址索引
+/*
+function co_delete()
+*/
+if($dopost=="delete")
+{
+    CheckPurview('co_Del');
+    $nid = intval($nid);
+    $dsql->ExecuteNoneQuery("DELETE FROM `#@__co_htmls` WHERE nid='$nid'");
+    $dsql->ExecuteNoneQuery("DELETE FROM `#@__co_note` WHERE nid='$nid'");
+    $dsql->ExecuteNoneQuery("DELETE FROM `#@__co_urls` WHERE nid='$nid'");
+    ShowMsg("成功删除一个节点!","co_main.php");
+    exit();
+}
+
+//清空采集内容
+//清空采集内容时仍会保留旧的网址索引,在监控模式下始终采集新的内容
+/*
+function url_clear()
+*/
+else if($dopost=="clear")
+{
+    CheckPurview('co_Del');
+    if(!isset($ids)) $ids='';
+    if(empty($ids))
+    {
+        if(!empty($nid))
+        {
+            $nid = intval($nid);
+            $dsql->ExecuteNoneQuery("DELETE FROM `#@__co_htmls` WHERE nid='$nid'");
+        }
+        ShowMsg("成功清空一个节点采集的内容!","co_main.php");
+        exit();
+    }
+    else
+    {
+        if(!empty($clshash))
+        {
+            $dsql->SetQuery("SELECT nid,url FROM `#@__co_htmls` WHERE aid IN($ids) ");
+            $dsql->Execute();
+            while($arr = $dsql->GetArray())
+            {
+                $nhash = md5($arr['url']);
+                $nid = $row['nid'];
+                $dsql->ExecuteNoneQuery("DELETE FROM `#@__co_urls ` WHERE nid='$nid' AND hash='$nhash' ");
+            }
+        }
+        $dsql->ExecuteNoneQuery("DELETE FROM `#@__co_htmls` WHERE aid IN($ids) ");
+        ShowMsg("成功删除指定的网址内容!",$ENV_GOBACK_URL);
+        exit();
+    }
+}
+else if($dopost=="clearct")
+{
+    CheckPurview('co_Del');
+    if(!empty($ids))
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__co_htmls` SET isdown=0,result='' WHERE aid IN($ids) ");
+    }
+    ShowMsg("成功清除所有内容!",$ENV_GOBACK_URL);
+    exit();
+}
+/*
+function url_clearall()
+*/
+else if($dopost=="clearall")
+{
+    CheckPurview('co_Del');
+    $dsql->ExecuteNoneQuery("DELETE FROM `#@__co_htmls` ");
+    ShowMsg("成功清空所有采集的临时内容!","co_main.php");
+    exit();
+}
+//内容替换
+/*
+function co_replace() { }
+*/
+else if($dopost=="replace")
+{
+    //if()
+    //$nid $aid $regtype $fdstring $rpstring
+    $rpstring = trim($rpstring);
+    if($regtype=='string')
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__co_htmls` SET `result`=REPLACE(`result`,'$fdstring','$rpstring') WHERE nid='$nid' ");
+    }
+    else
+    {
+        //返回一条测试结果,并要求用户确认操作
+        if(empty($rpok))
+        {
+            $fdstring = stripslashes($fdstring);
+            $rpstring = stripslashes($rpstring);
+            $hiddenrpvalue = "<textarea name='fdstring' style='display:none'>{$fdstring}</textarea>\r\n<textarea name='rpstring' style='display:none'>{$rpstring}</textarea>\r\n";
+            $fdstring = str_replace("\\/","#ASZZ#",$fdstring);
+            $fdstring = str_replace('/',"\\/",$fdstring);
+            $fdstring = str_replace('#ASZZ#',"\\/",$fdstring);
+            $result = $rs = stripslashes($rs);
+            if($fdstring!='')
+            {
+                $result = trim(preg_replace("/$fdstring/isU",$rpstring,$rs));
+            }
+            $wintitle = "采集管理-内容替换";
+            $wecome_info = "<a href='co_main.php'>采集管理</a>::内容替换";
+            $win = new OxWindow();
+            $win->Init("co_do.php","js/blank.js","POST");
+            $win->AddHidden('dopost',$dopost);
+            $win->AddHidden('nid',$nid);
+            $win->AddHidden('regtype','regex');
+            $win->AddHidden('aid',$aid);
+            $win->AddHidden('rpok','ok');
+            $win->AddTitle("内容替换操作确认:如果下面结果正确,点击确认,系统将替换当前节点所有内容!{$hiddenrpvalue}");
+            $win->AddItem("原来的内容:","<textarea name='rs' style='width:90%;height:250px'>{$rs}</textarea>\r\n");
+            $win->AddItem("按规则替换后的内容:","<textarea name='okrs' style='width:90%;height:250px'>{$result}</textarea>\r\n");
+            $winform = $win->GetWindow("ok");
+            $win->Display();
+            exit();
+        }
+        else
+        {
+            if($fdstring!='')
+            {
+                $dsql->SetQuery("SELECT `aid`,`result` FROM `#@__co_htmls` WHERE nid='$nid' ");
+                $dsql->Execute();
+                while($row = $dsql->GetArray())
+                {
+                    $fdstring = stripslashes($fdstring);
+                    $rpstring = stripslashes($rpstring);
+                    $fdstring = str_replace("\\/","#ASZZ#",$fdstring);
+                    $fdstring = str_replace('/',"\\/",$fdstring);
+                    $fdstring = str_replace('#ASZZ#',"\\/",$fdstring);
+                    $result = trim(preg_replace("/$fdstring/isU",$rpstring,$row['result']));
+                    $result = addslashes($result);
+                    $dsql->ExecuteNoneQuery("UPDATE `#@__co_htmls` SET `result`='$result' WHERE aid='{$row['aid']}' ");
+                }
+            }
+        }
+    }
+    ShowMsg("成功替换当前节点所有数据!","co_view.php?aid=$aid");
+    exit();
+}
+//复制节点
+/*
+function co_copy()
+*/
+else if($dopost=="copy")
+{
+    CheckPurview('co_AddNote');
+    if(empty($mynotename))
+    {
+        $wintitle = "采集管理-复制节点";
+        $wecome_info = "<a href='co_main.php'>采集管理</a>::复制节点";
+        $win = new OxWindow();
+        $win->Init("co_do.php","js/blank.js","POST");
+        $win->AddHidden("dopost",$dopost);
+        $win->AddHidden("nid",$nid);
+        $win->AddTitle("请输入新节点名称:");
+        $win->AddItem("新节点名称:","<input type='text' name='mynotename' value='' size='30' />");
+        $winform = $win->GetWindow("ok");
+        $win->Display();
+        exit();
+    }
+    $row = $dsql->GetOne("SELECT * FROM `#@__co_note` WHERE nid='$nid'");
+    foreach($row as $k=>$v)
+    {
+        if(!isset($$k))
+        {
+            $$k = addslashes($v);
+        }
+    }
+    $usemore = (empty($usemore) ? '0' : $usemore);
+    $inQuery = " INSERT INTO `#@__co_note`(`channelid`,`notename`,`sourcelang`,`uptime`,`cotime`,`pnum`,`isok`,`listconfig`,`itemconfig`,`usemore`)
+               VALUES ('$channelid','$mynotename','$sourcelang','".time()."','0','0','0','$listconfig','$itemconfig','$usemore'); ";
+    $dsql->ExecuteNoneQuery($inQuery);
+    ShowMsg("成功复制一个节点!",$ENV_GOBACK_URL);
+    exit();
+}
+//测试Rss源是否正确
+/*-----------------------
+function co_testrss()
+-------------------------*/
+else if($dopost=="testrss")
+{
+    CheckPurview('co_AddNote');
+    $msg = '';
+    if($rssurl=='')
+    {
+        $msg = '你没有指定RSS地址!';
+    }
+    else
+    {
+        include(DEDEINC."/dedecollection.func.php");
+        $arr = GetRssLinks($rssurl);
+        $msg = "从 {$rssurl} 发现的网址:<br />";
+        $i=1;
+        if(is_array($arr))
+        {
+            foreach($arr as $ar)
+            {
+                $msg .= "<hr size='1' />\r\n";
+                $msg .= "link: {$ar['link']}<br />title: {$ar['title']}<br />image: {$ar['image']}\r\n";
+                $i++;
+            }
+        }
+    }
+    $wintitle = "采集管理-测试";
+    $wecome_info = "<a href='co_main.php'>采集管理</a>::RSS地址测试";
+    $win = new OxWindow();
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand");
+    $win->Display();
+    exit();
+}
+//测试批量网址是否正确
+/*-----------------------
+function co_testregx()
+-------------------------*/
+else if($dopost=="testregx")
+{
+    CheckPurview('co_AddNote');
+    $msg = '';
+    if($regxurl=='')
+    {
+        $msg = '你没有指定匹配的网址!';
+    }
+    else
+    {
+        include(DEDEINC."/dedecollection.func.php");
+        $msg = "匹配的网址:<br />";
+        $lists = GetUrlFromListRule($regxurl, '', $startid, $endid, $addv);
+        foreach($lists as $surl)
+        {
+            $msg .= $surl[0]."<br />\r\n";
+        }
+    }
+    $wintitle = "采集管理-测试匹配规则";
+    $wecome_info = "<a href='co_main.php'>采集管理</a>::测试匹配列表网址规则";
+    $win = new OxWindow();
+    $win->AddMsgItem($msg);
+    $winform = $win->GetWindow("hand");
+    $win->Display();
+    exit();
+}
+
+//采集未下载内容
+/*--------------------
+function co_all()
+---------------------*/
+else if($dopost=="coall")
+{
+    CheckPurview('co_PlayNote');
+    $mrow = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__co_htmls` ");
+    $totalnum = $mrow['dd'];
+    if($totalnum==0)
+    {
+        ShowMsg("没发现可下载的内容!","-1");
+        exit();
+    }
+    $wintitle = "采集管理-采集未下载内容";
+    $wecome_info = "<a href='co_main.php'>采集管理</a>::采集未下载内容";
+    $win = new OxWindow();
+    $win->Init("co_gather_start_action.php","js/blank.js","GET");
+    $win->AddHidden('startdd','0');
+    $win->AddHidden('pagesize','5');
+    $win->AddHidden('sptime','0');
+    $win->AddHidden('nid','0');
+    $win->AddHidden('totalnum',$totalnum);
+    $win->AddMsgItem("本操作会检测并下载‘<a href='co_url.php'><u>临时内容</u></a>’中所有未下载的内容,是否继续?");
+    $winform = $win->GetWindow("ok");
+    $win->Display();
+    exit();
+}

+ 172 - 0
admin/co_edit.php

@@ -0,0 +1,172 @@
+<?php
+/**
+ * 采集规则编辑
+ *
+ * @version        $Id: co_edit.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+CheckPurview('co_EditNote');
+require_once(DEDEINC.'/dedetag.class.php');
+$nid = (isset($nid) ? intval($nid) : '');
+if($nid=='')
+{
+    ShowMsg('参数无效!','-1');
+    exit();
+}
+if(empty($dopost)) $dopost = '';
+
+/*----------------------
+function _Save()
+----------------------*/
+if($dopost=='save' || $dopost=='saveandtest')
+{
+    $usemore = (!isset($usemore) ? 0 : 1);
+    $listconfig = "{dede:noteinfo notename=\\\"$notename\\\" channelid=\\\"$channelid\\\" macthtype=\\\"$macthtype\\\"
+    refurl=\\\"$refurl\\\" sourcelang=\\\"$sourcelang\\\" cosort=\\\"$cosort\\\"
+  isref=\\\"$isref\\\" exptime=\\\"$exptime\\\" usemore=\\\"$usemore\\\" /}
+{dede:listrule sourcetype=\\\"$sourcetype\\\" rssurl=\\\"$rssurl\\\" regxurl=\\\"$regxurl\\\"
+startid=\\\"$startid\\\" endid=\\\"$endid\\\" addv=\\\"$addv\\\" urlrule=\\\"$urlrule\\\" musthas=\\\"$musthas\\\"
+ nothas=\\\"$nothas\\\" listpic=\\\"$listpic\\\" usemore=\\\"$usemore\\\"}
+    {dede:addurls}$addurls{/dede:addurls}
+    {dede:batchrule}$batchrule{/dede:batchrule}
+    {dede:regxrule}$regxrule{/dede:regxrule}
+    {dede:areastart}$areastart{/dede:areastart}
+    {dede:areaend}$areaend{/dede:areaend}
+{/dede:listrule}\r\n";
+    $itemconfig = "{dede:sppage sptype=\\'$sptype\\' srul=\\'$srul\\' erul=\\'$erul\\'}$sppage{/dede:sppage}\r\n";
+    $itemconfig .= "{dede:previewurl}$previewurl{/dede:previewurl}\r\n";
+    $itemconfig .= "{dede:keywordtrim}$keywordtrim{/dede:keywordtrim}\r\n";
+    $itemconfig .= "{dede:descriptiontrim}$descriptiontrim{/dede:descriptiontrim}\r\n";
+    $fs = explode(',','value,match,isunit,isdown,trim,function');
+    foreach($fields as $field)
+    {
+        foreach($fs as $f)
+        {
+            $GLOBALS[$f.'_'.$field] = (!isset($GLOBALS[$f.'_'.$field]) ? '' : $GLOBALS[$f.'_'.$field]);
+        }
+        $matchstr = $GLOBALS["match_".$field];
+        $trimstr = $GLOBALS["trim_".$field];
+        $trimstr = trim(str_replace('&nbsp;', '#n#', $trimstr));
+        $matchstr = trim(str_replace('&nbsp;', '#n#', $matchstr));
+        if($trimstr!='' && !preg_match("#{dede:trim#isU", $trimstr))
+        {
+            $trimstr = "      {dede:trim}$trimstr{/dede:trim}\r\n";
+        }
+        $itemconfig .= "{dede:item field=\\'".$field."\\' value=\\'".$GLOBALS["value_".$field]."\\' isunit=\\'".$GLOBALS["isunit_".$field]."\\' isdown=\\'".$GLOBALS["isdown_".$field]."\\'}
+   {dede:match}".$matchstr."{/dede:match}
+   $trimstr
+   {dede:function}".$GLOBALS["function_".$field]."{/dede:function}
+{/dede:item}";
+    }
+    
+    $uptime = time();
+    if(empty($freq)) $freq = 1;
+    if(empty($extypeid)) $extypeid = 0;
+    if(empty($islisten)) $islisten = 0;
+
+    $query = " UPDATE `#@__co_note` SET
+    `channelid`='$channelid',
+    `notename`='$notename',
+    `sourcelang`='$sourcelang',
+    `uptime`='$uptime',
+    `isok`='1',
+    `usemore`='$usemore',
+    `listconfig`='$listconfig',
+    `itemconfig`='$itemconfig'
+     WHERE nid='$nid'; ";
+    $rs = $dsql->ExecuteNoneQuery($query);
+    echo $dsql->GetError();
+    if($donext=='save')
+    {
+        ShowMsg("成功保存配置!","co_main.php");
+    }
+    else
+    {
+        require_once(dirname(__FILE__)."/co_test_rule.php");
+    }
+    exit();
+}
+$arr = $dsql->GetOne("SELECT * FROM `#@__co_note` WHERE nid='$nid'");
+
+//如果内容规则未设置,转到设置内容规则的表单
+if(trim($arr['itemconfig'])=='')
+{
+    $channelid = $arr['channelid'];
+    $nid = $arr['nid'];
+    if(!isset($previewurl)) $previewurl = '';
+
+    require_once(DEDEINC.'/dedetag.class.php');
+    require_once(DEDEADMIN."/templets/co_add_step2.htm");
+    exit();
+}
+$usemore = $arr['usemore'];
+$notename = $arr['notename'];
+$notes = array();
+$dsql->FreeResult();
+$dtp = new DedeTagParse();
+$dtp2 = new DedeTagParse();
+$dtp->LoadString($arr['listconfig'].$arr['itemconfig']);
+$channelid = $arr['channelid'];
+$notes['keywordtrim'] = '';
+$notes['descriptiontrim'] = '';
+foreach($dtp->CTags as $tid => $ctag)
+{
+    if($ctag->GetName()=='item')
+    {
+        $f = $ctag->GetAtt('field');
+        $notes[$f]['item'] = $ctag;
+        $dtp2->LoadString($ctag->GetInnerText());
+        $notes[$f]['trim'] = '';
+        foreach($dtp2->CTags as $ctag2)
+        {
+            if($ctag2->GetName()=='trim')
+            {
+                $notes[$f]['trim'] .= "{dede:trim replace=\"".$ctag2->GetAtt('replace')."\"}".$ctag2->GetInnerText()."{/dede:trim}\r\n";
+            }
+            else if($ctag2->GetName()=='match')
+            {
+                $notes[$f]['match'] = $ctag2->GetInnerText()."\r\n";
+            }
+            else if($ctag2->GetName()=='function')
+            {
+                $notes[$f]['function'] = $ctag2->GetInnerText()."\r\n";
+            }
+        }
+    }
+    else if($ctag->GetName()=='keywordtrim')
+    {
+        $notes['keywordtrim'] = $ctag->GetInnerText();
+    }
+    else if($ctag->GetName()=='descriptiontrim')
+    {
+        $notes['descriptiontrim'] = $ctag->GetInnerText();
+    }
+    else if($ctag->GetName()=='noteinfo')
+    {
+        $noteinfo = $ctag;
+    }
+    else if($ctag->GetName()=='listrule')
+    {
+        $listrule = $ctag;
+        $dtp2->LoadString($ctag->GetInnerText());
+        $addurls = $dtp2->GetTagByName('addurls');
+        $regxrule = $dtp2->GetTagByName('regxrule');
+        $areastart = $dtp2->GetTagByName('areastart');
+        $areaend = $dtp2->GetTagByName('areaend');
+        $batchrule = $dtp2->GetTagByName('batchrule');
+    }
+    else if($ctag->GetName()=='sppage')
+    {
+        $sppage = $ctag;
+    }
+    else if($ctag->GetName()=='previewurl')
+    {
+        $previewurl = trim($ctag->GetInnerText());
+    }
+}
+if(!isset($previewurl)) $previewurl = '';
+require_once(DEDEADMIN.'/templets/co_edit.htm');

+ 40 - 0
admin/co_edit_text.php

@@ -0,0 +1,40 @@
+<?php
+/**
+ * 采集规则编辑-专家更改模式
+ *
+ * @version        $Id: co_edit_text.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require(dirname(__FILE__)."/config.php");
+CheckPurview('co_EditNote');
+if(empty($job)) $job='';
+
+if($job=='')
+{
+    require_once(DEDEINC."/oxwindow.class.php");
+    $wintitle = "更改采集规则";
+    $wecome_info = "<a href='co_main.php'><u>采集点管理</u></a>::更改采集规则 - 专家更改模式";
+    $win = new OxWindow();
+    $win->Init("co_edit_text.php", "js/blank.js", "POST");
+    $win->AddHidden("job", "yes");
+    $win->AddHidden("nid", $nid);
+    $row = $dsql->GetOne("SELECT * FROM `#@__co_note` WHERE nid='$nid' ");
+    $win->AddTitle("索引与基本信息配置:");
+    $win->AddMsgItem("<textarea name='listconfig' style='width:100%;height:200px'>{$row['listconfig']}</textarea>");
+    $win->AddTitle("字段配置:");
+    $win->AddMsgItem("<textarea name='itemconfig' style='width:100%;height:300px'>{$row['itemconfig']}</textarea>");
+    $winform = $win->GetWindow("ok");
+    $win->Display();
+    exit();
+}
+else
+{
+    CheckPurview('co_EditNote');
+    $query = "UPDATE `#@__co_note` SET listconfig='$listconfig',itemconfig='$itemconfig' WHERE nid='$nid' ";
+    $rs = $dsql->ExecuteNoneQuery($query);
+    ShowMsg("成功修改一个规则!","co_main.php");
+    exit();
+}

+ 306 - 0
admin/co_export.php

@@ -0,0 +1,306 @@
+<?php
+/**
+ * 导出采集规则
+ *
+ * @version        $Id: co_edit_text.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('co_Export');
+if(empty($dopost)) $dopost = '';
+
+if($dopost!='done')
+{
+    require_once(DEDEADMIN."/inc/inc_catalog_options.php");
+    $totalcc = $channelid = $usemore = 0;
+    if(!empty($nid))
+    {
+        $mrow = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__co_htmls` WHERE nid='$nid' AND isdown='1' ");
+        $totalcc = $mrow['dd'];
+        $rrow = $dsql->GetOne("SELECT channelid,usemore FROM `#@__co_note` WHERE nid='$nid' ");
+        $channelid = $rrow['channelid'];
+        $usemore = $rrow['usemore'];
+    }
+    else
+    {
+        $mrow = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__co_htmls` WHERE isdown='1' ");
+        $totalcc = $mrow['dd'];
+    }
+    include DedeInclude("templets/co_export.htm");
+    exit();
+}
+else
+{
+    require_once(DEDEINC.'/dedecollection.class.php');
+    $channelid = isset($channelid) && is_numeric($channelid) ? $channelid : 0;
+    $typeid = isset($typeid) && is_numeric($typeid) ? $typeid : 0;
+    $pageno = isset($pageno) && is_numeric($pageno) ? $pageno : 1;
+    $startid = isset($startid) && is_numeric($startid) ? $startid : 0;
+    $endid = isset($endid) && is_numeric($endid) ? $endid : 0;
+    
+    if(!isset($makehtml)) $makehtml = 0;
+    if(!isset($onlytitle)) $onlytitle = 0;
+    if(!isset($usetitle)) $usetitle = 0;
+    if(!isset($autotype)) $autotype = 0;
+
+    $co = new DedeCollection();
+    $co->LoadNote($nid);
+    $orderway = (($co->noteInfos['cosort']=='desc' || $co->noteInfos['cosort']=='asc') ? $co->noteInfos['cosort'] : 'desc');
+    if($channelid==0 && $typeid==0)
+    {
+        ShowMsg('请指定默认导出栏目或频道ID!','javascript:;');
+        exit();
+    }
+    if($channelid==0)
+    {
+        $row = $dsql->GetOne("SELECT ch.* FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype WHERE tp.id='$typeid'; ");
+    }
+    else
+    {
+        $row = $dsql->GetOne("SELECT * FROM `#@__channeltype` WHERE id='$channelid'; ");
+    }
+    if(!is_array($row))
+    {
+        echo "找不到频道内容模型信息,无法完成操作!";
+        exit();
+    }
+
+    //分析规则,并生成临时的SQL语句
+    $channelid = $row['id'];
+    $maintable = $row['maintable'];
+    $addtable = $row['addtable'];
+    if(empty($maintable)) $maintable = '#@__archives';
+    if(empty($addtable))
+    {
+        echo "找不主表配置信息,无法完成操作!";
+        exit();
+    }
+    $adminid = $cuserLogin->getUserID();
+
+    //微索引表
+    $indexSqlTemplate = "INSERT INTO `#@__arctiny`(`arcrank`,`typeid`,`channel`,`senddate`,`sortrank`) VALUES ('$arcrank','@typeid@' ,'$channelid','@senddate@', '@sortrank@'); ";
+
+    //基本信息主表
+    $mainSqlTemplate  = "INSERT INTO `$maintable`(id,typeid,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic,pubdate,senddate,mid,description,keywords)
+               VALUES ('@aid@','@typeid@','@sortrank@','@flag@','0','$channelid','$arcrank','0','0','@title@','','','@writer@','@source@','@litpic@','@pubdate@','@senddate@','$adminid','@description@','@keywords@'); ";
+
+    //生成附加表插入的SQL语句
+    $inadd_f = $inadd_v = '';
+    $dtp = new DedeTagParse();
+    $dtp->SetNameSpace('field','<','>');
+    $dtp->LoadString($row['fieldset']);
+    foreach($dtp->CTags as $ctag)
+    {
+        $tname = $ctag->GetTagName();
+        $inadd_f .= ",`$tname`";
+        $notsend = $ctag->GetAtt('notsend');
+        $fieldtype = $ctag->GetAtt('type');
+        if($notsend==1)
+        {
+            //对不同类型设置默认值
+            if($ctag->GetAtt('default')!='')
+            {
+                $dfvalue = $ctag->GetAtt('default');
+            }
+            else if($fieldtype=='int' || $fieldtype=='float' || $fieldtype=='number')
+            {
+                $dfvalue = '0';
+            }
+            else if($fieldtype=='dtime')
+            {
+                $dfvalue = time();
+            }
+            else
+            {
+                $dfvalue = '';
+            }
+            $inadd_v .= ",'$dfvalue'";
+        }
+        else
+        {
+            $inadd_v .= ",'@$tname@'";
+        }
+    }
+    $addSqlTemplate = "INSERT INTO `{$addtable}`(`aid`,`typeid`{$inadd_f}) Values('@aid@','@typeid@'{$inadd_v})";
+
+    //导出数据的SQL操作
+    $dtp = new DedeTagParse();
+    $totalpage = $totalcc / $pagesize;
+    $startdd = ($pageno-1) * $pagesize;
+    if(!empty($nid))
+    {
+        $dsql->SetQuery("SELECT * FROM `#@__co_htmls` WHERE nid='$nid' AND isdown='1' ORDER BY aid $orderway LIMIT $startdd,$pagesize");
+    }
+    else
+    {
+        $dsql->SetQuery("SELECT * FROM `#@__co_htmls` WHERE isdown='1' ORDER BY aid $orderway LIMIT $startdd,$pagesize");
+    }
+    $dsql->Execute();
+    while($row = $dsql->GetObject())
+    {
+        if(trim($row->result=='')) continue;
+
+        //$addSqlTemplate,$mainSqlTemplate,$indexSqlTemplate
+        $ntypeid = ($autotype==1 && $row->typeid != 0) ? $row->typeid : $typeid;
+        $indexSql = str_replace('@typeid@', $ntypeid, $indexSqlTemplate);
+        $mainSql = str_replace('@typeid@', $ntypeid, $mainSqlTemplate);
+        $addSql = str_replace('@typeid@', $ntypeid, $addSqlTemplate);
+        $dtp->LoadString($row->result);
+        $exid = $row->aid;
+        if(!is_array($dtp->CTags)) continue;
+
+        //获取时间和标题
+        $pubdate = $sortrank = time();
+        $title = $row->title;
+        $litpic = '';
+        foreach ($dtp->CTags as $ctag)
+        {
+            $itemName = $ctag->GetAtt('name');
+            if($itemName == 'title' && $usetitle==0)
+            {
+                $title = trim($ctag->GetInnerText());
+                if($title=='')
+                {
+                    $title = $row->title;
+                }
+            }
+            else if($itemName == 'pubdate')
+            {
+                $pubdate = trim($ctag->GetInnerText());
+                if(preg_match("#[^0-9]#", $pubdate))
+                {
+                    $pubdate = $sortrank = GetMkTime($pubdate);
+                }
+                else
+                {
+                    $pubdate = $sortrank = time();
+                }
+            }
+            else if($itemName == 'litpic')
+            {
+                $litpic = trim($ctag->GetInnerText());
+            }
+        }
+
+        //检测重复标题
+        $title = addslashes($title);
+        if($onlytitle)
+        {
+            $testrow = $dsql->GetOne("SELECT COUNT(ID) AS dd FROM `$maintable` WHERE title LIKE '$title'");
+            if($testrow['dd']>0)
+            {
+                echo "数据库已存在标题为: {$title} 的文档,程序阻止了此本条内容导入<br />\r\n";
+                continue;
+            }
+        }
+
+        //替换固定的项目
+        $senddate = time();
+        $flag = '';
+        if($litpic!='') $flag = 'p';
+
+        //随机推荐
+        if($randcc>0)
+        {
+            $rflag = mt_rand(1, $randcc);
+            if($rflag==$randcc)
+            {
+                $flag = ($flag=='' ? 'c' : $flag.',c');
+            }
+        }
+        $indexSql = str_replace('@senddate@', $senddate, $indexSql);
+        $indexSql = str_replace('@sortrank@', $sortrank, $indexSql);
+        $mainSql = str_replace('@flag@', $flag, $mainSql);
+        $mainSql = str_replace('@sortrank@', $sortrank, $mainSql);
+        $mainSql = str_replace('@pubdate@', $pubdate, $mainSql);
+        $mainSql = str_replace('@senddate@', $senddate, $mainSql);
+        $mainSql = str_replace('@title@', cn_substr($title, 60), $mainSql);
+        $addSql = str_replace('@sortrank@', $sortrank, $addSql);
+        $addSql = str_replace('@senddate@', $senddate, $addSql);
+
+        //替换模型里的其它字段
+        foreach($dtp->CTags as $ctag)
+        {
+            if($ctag->GetName()!='field')
+            {
+                continue;
+            }
+            $itemname = $ctag->GetAtt('name');
+            $itemvalue = addslashes(trim($ctag->GetInnerText()));
+            $mainSql = str_replace("@$itemname@", $itemvalue, $mainSql);
+            $addSql = str_replace("@$itemname@", $itemvalue, $addSql);
+        }
+
+        //插入数据库
+        $rs = $dsql->ExecuteNoneQuery($indexSql);
+        if($rs)
+        {
+            $aid = $dsql->GetLastID();
+            $mainSql = str_replace('@aid@', $aid, $mainSql);
+            $addSql = str_replace('@aid@', $aid, $addSql);
+            $mainSql = preg_replace("#@([a-z0-9]{1,})@#", '', $mainSql);
+            $addSql = preg_replace("#@([a-z0-9]{1,})@#", '', $addSql);
+            $rs = $dsql->ExecuteNoneQuery($mainSql);
+            if(!$rs)
+            {
+                echo "导入 '$title' 时错误:".$dsql->GetError()."<br />";
+                $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$aid' ");
+            }
+            else
+            {
+                $rs = $dsql->ExecuteNoneQuery($addSql);
+                if(!$rs)
+                {
+                    echo "导入 '$title' 时错误:".$dsql->GetError()."<br />";
+                    $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$aid' ");
+                    $dsql->ExecuteNoneQuery("DELETE FROM `$maintable` WHERE id='$aid' ");
+                }
+            }
+        }
+        $dsql->ExecuteNoneQuery("UPDATE `#@__co_htmls` SET isexport=1 WHERE aid='$exid' ");
+    }
+
+    //检测是否完成或后续操作
+    if($totalpage <= $pageno)
+    {
+        if($channelid>0 && $makehtml==1)
+        {
+            if( $autotype==0 && !empty($nid) )
+            {
+                $mhtml = "makehtml_archives_action.php?typeid=$typeid&startid=$startid&endid=$endid&pagesize=20";
+                ShowMsg("完成数据导入,准备生成文档HTML...",$mhtml);
+                exit();
+            }
+            else
+            {
+                ShowMsg("完成所有数据导入,请手工更新HTML!","javascript:;");
+                exit();
+            }
+        }
+        else
+        {
+            ShowMsg("完成所有数据导入!","javascript:;");
+            exit();
+        }
+    }
+    else
+    {
+        if($totalpage>0)
+        {
+            $rs = substr(($pageno / $totalpage * 100), 0, 2);
+        }
+        else
+        {
+            $rs = 100;
+        }
+        $pageno++;
+        $gourl = "co_export.php?dopost=done&nid=$nid&totalcc=$totalcc&channelid=$channelid&pageno=$pageno";
+        $gourl .= "&nid=$nid&typeid=$typeid&autotype=$autotype&arcrank=$arcrank&pagesize=$pagesize&randcc=$randcc";
+        $gourl .= "&startid=$startid&endid=$endid&onlytitle=$onlytitle&usetitle=$usetitle&makehtml=$makehtml";
+        ShowMsg("完成 {$rs}% 导入,继续执行操作...",$gourl,'',500);
+        exit();
+    }
+}

+ 36 - 0
admin/co_export_corule.php

@@ -0,0 +1,36 @@
+<?php
+/**
+ * 导出采集规则
+ * 统一转换为unicode编码然后再base64加密
+ *
+ * @version        $Id: co_export_corule.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require(dirname(__FILE__)."/config.php");
+CheckPurview('co_EditNote');
+require_once(DEDEINC."/oxwindow.class.php");
+$nid = preg_replace('/[^0-9]/','',$nid);
+$row = $dsql->GetOne("Select * From `#@__co_note` where nid='$nid'");
+$noteconfig = "{dede:listconfig}\r\n".$row['listconfig']."\r\n{/dede:listconfig}\r\n\r\n";
+$noteconfig .= "{dede:itemconfig}\r\n".$row['itemconfig']."\r\n{/dede:itemconfig}";
+if(empty($extype) || $extype=='base64')
+{
+    $noteconfig = "BASE64:".base64_encode($noteconfig).":END";
+    $exmsg =  " &nbsp; <a href='co_export_corule.php?nid={$nid}&extype=text'>【导出为普通格式】</a> ";
+}
+else
+{
+    $exmsg =  " &nbsp; <a href='co_export_corule.php?nid={$nid}&extype=base64'>【导出为Base64格式】</a> ";
+}
+$wintitle = "导出采集规则";
+$wecome_info = "<a href='co_main.php'><u>采集节点管理</u></a>::导出采集规则 $exmsg";
+$win = new OxWindow();
+$win->Init();
+$win->AddTitle("以下为规则 [{$row['notename']}] 的文本配置,你可以共享给你的朋友:");
+$winform = $win->GetWindow("hand","<textarea name='config' style='width:100%;height:450px;word-wrap: break-word;word-break:break-all;'>".$noteconfig."</textarea>");
+$win->Display();
+
+?>

+ 34 - 0
admin/co_gather_start.php

@@ -0,0 +1,34 @@
+<?php
+/**
+ * 采集指定节点
+ *
+ * @version        $Id: co_gather_start.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/dedecollection.class.php");
+if(!empty($nid))
+{
+    $ntitle = '采集指定节点:';
+    $nid = intval($nid);
+    $co = new DedeCollection();
+    $co->LoadNote($nid);
+    $row = $dsql->GetOne("SELECT COUNT(aid) AS dd FROM `#@__co_htmls` WHERE nid='$nid'; ");
+    if($row['dd']==0)
+    {
+        $unum = "没有记录或从来没有采集过这个节点!";
+    }
+    else
+    {
+        $unum = "共有 {$row['dd']} 个历史种子网址!<a href='javascript:SubmitNew();'>[<u>更新种子网址,并采集</u>]</a>";
+    }
+} else {
+    $nid = "";
+    $row['dd'] = "";
+    $ntitle = '监控式采集:';
+    $unum = "没指定采集节点,将使用检测新内容采集模式!";
+}
+include DedeInclude('templets/co_gather_start.htm');

+ 87 - 0
admin/co_gather_start_action.php

@@ -0,0 +1,87 @@
+<?php
+/**
+ * 开始采集指定节点操作
+ *
+ * @version        $Id: co_gather_start_action.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('co_PlayNote');
+require_once(DEDEINC.'/dedecollection.class.php');
+if($totalnum==0)
+{
+    ShowMsg('获取到的网址为零:可能是规则不对或没发现新内容!','javascript:;');
+    exit();
+}
+if(!isset($oldstart)) $oldstart = $startdd;
+if(empty($notckpic)) $notckpic = 0;
+
+if($totalnum > $startdd+$pagesize) $limitSql = " LIMIT $startdd,$pagesize ";
+else $limitSql = " LIMIT $startdd,".($totalnum - $startdd);
+
+if($totalnum - $startdd < 1)
+{
+    if(empty($nid))
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__co_note` SET cotime='".time()."'; ");
+    }
+    else
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__co_note` SET cotime='".time()."' WHERE nid='$nid'; ");
+    }
+    ShowMsg('完成当前下载任务!','javascript:;');
+    exit();
+}
+
+$co = new DedeCollection();
+if(!empty($nid)) $co->LoadNote($nid);
+
+//没指定采集ID时下载所有内容
+if(!empty($nid))
+{
+    $dsql->SetQuery("SELECT aid,nid,url,isdown,litpic FROM `#@__co_htmls` WHERE nid=$nid $limitSql ");
+}
+else
+{
+    $dsql->SetQuery("SELECT aid,nid,url,isdown,litpic FROM `#@__co_htmls` $limitSql ");
+}
+$dsql->Execute(99);
+$tjnum = $startdd;
+while($row = $dsql->GetObject(99))
+{
+    if($row->isdown==0)
+    {
+        if(empty($nid)) $co->LoadNote($row->nid);
+        $co->DownUrl($row->aid,$row->url,$row->litpic);
+    }
+    $tjnum++;
+    if($sptime>0) sleep($sptime);
+}
+if($totalnum-$oldstart!=0)
+{
+    $tjlen = ceil( (($tjnum-$oldstart)/($totalnum-$oldstart)) * 100 );
+    $dvlen = $tjlen * 2;
+    $tjsta = "<div style='width:200;height:15;border:1px solid #898989;text-align:left'><div style='width:$dvlen;height:15;background-color:#829D83'></div></div>";
+    $tjsta .= "<br/>完成当前任务的:$tjlen %,继续执行任务...";
+}
+if($tjnum < $totalnum)
+{
+    ShowMsg($tjsta, "co_gather_start_action.php?notckpic=$notckpic&sptime=$sptime&nid=$nid&oldstart=$oldstart&totalnum=$totalnum&startdd=".($startdd+$pagesize)."&pagesize=$pagesize","",0);
+    exit();
+}
+else
+{
+    if(empty($nid))
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__co_note` SET cotime='".time()."'; ");
+    }
+    else
+    {
+        $dsql->ExecuteNoneQuery("UPDATE `#@__co_note` SET cotime='".time()."' WHERE nid='$nid'; ");
+    }
+    ShowMsg("完成当前下载任务!","javascript:;");
+    exit();
+}

+ 101 - 0
admin/co_get_corule.php

@@ -0,0 +1,101 @@
+<?php
+/**
+ * 导入采集规则
+ *
+ * @version        $Id: co_get_corule.php 1 17:13 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require(dirname(__FILE__)."/config.php");
+CheckPurview('co_AddNote');
+if(empty($job))
+{
+    $job='';
+}
+if($job=='')
+{
+    require_once(DEDEINC."/../include/oxwindow.class.php");
+    $wintitle = "导入采集规则";
+    $wecome_info = "<a href='co_main.php'><u>采集点管理</u></a>::导入采集规则";
+    $win = new OxWindow();
+    $win->Init("co_get_corule.php","js/blank.js","POST");
+    $win->AddHidden("job","yes");
+    $win->AddTitle("请在下面输入你要导入的文本配置:(建议用base64编码[支持不编码的规则,但不兼容旧版规则])");
+    $win->AddMsgItem("<textarea name='notes' style='width:100%;height:300px'></textarea>");
+    $winform = $win->GetWindow("ok");
+    $win->Display();
+    exit();
+}
+else
+{
+    CheckPurview('co_AddNote');
+    require_once(DEDEINC."/dedetag.class.php");
+    $notes = trim($notes);
+
+    //对Base64格式的规则进行解码
+    if(ereg('^BASE64:',$notes))
+    {
+        if(!ereg(':END$',$notes))
+        {
+            ShowMsg('该规则不合法,Base64格式的采集规则为:BASE64:base64编码后的配置:END !','-1');
+            exit();
+        }
+        $notess = explode(':',$notes);
+        $notes = $notess[1];
+        $notes = base64_decode(ereg_replace("[\r\n\t ]",'',$notes)) OR die('配置字符串有错误!');
+    }
+    else
+    {
+        $notes = stripslashes($notes);
+    }
+    $dtp = new DedeTagParse();
+    $dtp->LoadString($notes);
+    if(!is_array($dtp->CTags))
+    {
+        ShowMsg('该规则不合法,无法导入!','-1');
+        exit();
+    }
+    $ctag1 = $dtp->GetTagByName('listconfig');
+    $ctag2 = $dtp->GetTagByName('itemconfig');
+    $listconfig = $ctag1->GetInnerText();
+    $itemconfig = addslashes($ctag2->GetInnerText());
+    $dtp->LoadString($listconfig);
+    $listconfig = addslashes($listconfig);
+    $noteinfo = $dtp->GetTagByName('noteinfo');
+    if(!is_object($noteinfo))
+    {
+        ShowMsg("该规则不合法,无法导入!","-1");
+        exit();
+    }
+    foreach($noteinfo->CAttribute->Items as $k=>$v)
+    {
+        $$k = addslashes($v);
+    }
+    $uptime = time();
+    if(empty($freq))
+    {
+        $freq = 1;
+    }
+    if(empty($extypeid))
+    {
+        $extypeid = 0;
+    }
+    if(empty($islisten))
+    {
+        $islisten = 0;
+    }
+    $inquery = " INSERT INTO `#@__co_note`(`channelid`,`notename`,`sourcelang`,`uptime`,`cotime`,`pnum`,`isok`,`usemore`,`listconfig`,`itemconfig`)
+               VALUES ('$channelid','$notename','$sourcelang','$uptime','0','0','0','$usemore','$listconfig','$itemconfig'); ";
+    $rs = $dsql->ExecuteNoneQuery($inquery);
+    if(!$rs)
+    {
+        ShowMsg("保存信息时出现错误!".$dsql->GetError(),"-1");
+        exit();
+    }
+    ShowMsg("成功导入一个规则!","co_main.php");
+    exit();
+}
+
+?>

+ 115 - 0
admin/co_getsource_url_action.php

@@ -0,0 +1,115 @@
+<?php
+/**
+ * 下载种子网址中未下载内容模式
+ *
+ * @version        $Id: co_get_corule.php 1 17:13 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('co_PlayNote');
+require_once(DEDEINC.'/dedecollection.class.php');
+
+if(empty($islisten)) $islisten = 0;
+if(empty($glstart)) $glstart = 0;
+if(empty($totalnum)) $totalnum = 0;
+if(empty($notckpic)) $notckpic = 0;
+
+$nid = (isset($nid) ? intval($nid) : 0);
+
+//下载种子网址中未下载内容模式
+/*-----------------------------
+function Download_not_down() { }
+------------------------------*/
+if($islisten==0)
+{
+    $mrow = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__co_htmls` WHERE nid='$nid' ");
+    $totalnum = $mrow['dd'];
+    $gurl = "co_gather_start_action.php?notckpic=$notckpic&islisten=$islisten&nid=$nid&startdd=$startdd&pagesize=$pagesize&sptime=$sptime";
+    if($totalnum <= 0)
+    {
+        ShowMsg("你指定的模式为:<font color='red'>[下载种子网址中未下载内容]</font>,<br />使用这个模式节点必须已经有种子网址,否则请使用其它模式!","javascript:;");
+        exit();
+    }
+    else
+    {
+        ShowMsg("检测节点正常,现转向网页采集...",$gurl."&totalnum=$totalnum");
+        exit();
+    }
+}
+
+//监控式采集(检测新内容)
+/*-----------------------------
+function Download_new() { }
+------------------------------*/
+else if($islisten==1)
+{
+    $gurl = "co_gather_start_action.php?notckpic=$notckpic&islisten=1&nid=$nid&startdd=$startdd&pagesize=$pagesize&sptime=$sptime";
+    $gurlList = "co_getsource_url_action.php?islisten=1&nid=0&pagesize=$pagesize&sptime=$sptime";
+    //针对专门节点
+    if(!empty($nid))
+    {
+        $co = new DedeCollection();
+        $co->LoadNote($nid);
+        $limitList = $co->GetSourceUrl(1,0,100);
+        $row = $co->dsql->GetOne("SELECT COUNT(aid) AS dd FROM `#@__co_htmls` WHERE nid='$nid' ");
+        $totalnum = $row['dd'];
+        if($totalnum==0)
+        {
+            ShowMsg("在这节点中没发现有新内容....","javascript:;");
+            exit();
+        }
+        else
+        {
+            ShowMsg("已获得所有种子网址,转向网页采集...",$gurl."&totalnum=$totalnum");
+            exit();
+        }
+    }
+    //针对所有节点
+    else
+    {
+        $curpos = (isset($curpos) ? intval($curpos) : 0);
+        $row = $dsql->GetOne("SELECT nid FROM `#@__co_note` ORDER BY nid ASC LIMIT $curpos,1");
+        $nnid = $row['nid'];
+        if(!is_array($row))
+        {
+            ShowMsg("完成所有节点检测....","co_gather_start_action.php?notckpic=0&sptime=0&nid=0&startdd=0&pagesize=5&totalnum=".$totalnum);
+            exit();
+        }
+        else
+        {
+            $co = new DedeCollection();
+            $co->LoadNote($nnid);
+            $limitList = $co->GetSourceUrl(1,0,100);
+            $curpos++;
+            ShowMsg("已检测节点( {$nnid} ),继续下一个节点...",$gurlList."&curpos=$curpos");
+            exit();
+        }
+    }
+}
+//重新下载所有内容模式
+/*-----------------------------
+function Download_all() { }
+------------------------------*/
+else
+{
+    $gurl = "co_gather_start_action.php?notckpic=$notckpic&islisten=$islisten&nid=$nid&startdd=$startdd&pagesize=$pagesize&sptime=$sptime";
+    $gurlList = "co_getsource_url_action.php?islisten=$islisten&nid=$nid&startdd=$startdd&pagesize=$pagesize&sptime=$sptime";
+    $co = new DedeCollection();
+    $co->LoadNote($nid);
+    $limitList = $co->GetSourceUrl($islisten, $glstart, $pagesize);
+    if($limitList==0)
+    {
+        $row = $co->dsql->GetOne("SELECT COUNT(aid) AS dd FROM `#@__co_htmls` WHERE nid='$nid'");
+        $totalnum = $row['dd'];
+        ShowMsg("已获得所有种子网址,转向网页采集...",$gurl."&totalnum=$totalnum");
+        exit();
+    }
+    if($limitList>0)
+    {
+        ShowMsg("采集列表剩余:{$limitList} 个页面,继续采集...",$gurlList."&glstart=".($glstart+$pagesize),0,100);
+        exit();
+    }
+}

+ 31 - 0
admin/co_main.php

@@ -0,0 +1,31 @@
+<?php
+/**
+ * 采集规则管理
+ *
+ * @version        $Id: co_main.php 1 17:13 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/datalistcp.class.php");
+setcookie("ENV_GOBACK_URL", $dedeNowurl, time()+3600, "/");
+$sql  = "SELECT co.nid,co.channelid,co.notename,co.sourcelang,co.uptime,co.cotime,co.pnum,ch.typename";
+$sql .= " FROM `#@__co_note` co LEFT JOIN `#@__channeltype` ch ON ch.id=co.channelid ORDER BY co.nid DESC";
+$dlist = new DataListCP();
+$dlist->SetTemplet(DEDEADMIN."/templets/co_main.htm");
+$dlist->SetSource($sql);
+$dlist->display();
+
+function GetDatePage($mktime)
+{
+    return $mktime=='0' ? '从未采集过' : MyDate('Y-m-d',$mktime);
+}
+
+function TjUrlNum($nid)
+{
+    global $dsql;
+    $row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__co_htmls` WHERE nid='$nid' ");
+    return $row['dd'];
+}

+ 17 - 0
admin/co_test_rule.php

@@ -0,0 +1,17 @@
+<?php
+/**
+ * 采集规则测试
+ *
+ * @version        $Id: co_test_rule.php 1 17:13 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/dedecollection.class.php");
+$nid = intval($nid);
+$co = new DedeCollection();
+$co->LoadNote($nid);
+include DedeInclude('templets/co_test_rule.htm');
+exit();

+ 62 - 0
admin/co_url.php

@@ -0,0 +1,62 @@
+<?php
+/**
+ * 采集地址
+ *
+ * @version        $Id: co_url.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/datalistcp.class.php");
+setcookie("ENV_GOBACK_URL",$dedeNowurl,time()+3600,"/");
+$where = "";
+
+if(!isset($nid)) $nid="";
+if(!empty($nid)) $where = " where cu.nid='$nid' ";
+if(empty($small)) $small = 0;
+
+if($nid!='')
+{
+    $exportbt = "
+    <input type='button' name='b0' value='导出内容' class='coolbg np'
+    style='width:80px' onClick=\"location.href='co_export.php?nid=$nid';\" />
+    <input type='button' name='b0' value='采集本节点' class='coolbg np'
+    style='width:80px' onClick=\"location.href='co_gather_start.php?nid=$nid';\" />
+    ";
+}
+else
+{
+    $exportbt = "";
+}
+
+$sql = "SELECT cu.aid,cu.nid,cu.isexport AS isex,cu.title,cu.url,cu.dtime,cu.isdown,cn.notename,tp.typename FROM `#@__co_htmls` cu
+LEFT JOIN `#@__co_note` cn ON cn.nid=cu.nid
+LEFT JOIN `#@__arctype` tp ON tp.id=cu.typeid
+$where ORDER BY cu.aid DESC";
+$dlist = new DataListCP();
+$dlist->SetParameter("nid", $nid);
+$dlist->SetParameter("small", $small);
+if($small==0)
+{
+    $dlist->SetTemplate(DEDEADMIN."/templets/co_url.htm");
+}
+else
+{
+    $dlist->SetTemplate(DEDEADMIN."/templets/co_url_2.htm");
+}
+$dlist->SetSource($sql);
+$dlist->display();
+
+function IsDownLoad($isd)
+{
+    if($isd=="0") return "未下载";
+    else return "已下载";
+}
+
+function IsExData($isex)
+{
+    if($isex==0) return "未导出";
+    else return "已导出";
+}

+ 59 - 0
admin/co_view.php

@@ -0,0 +1,59 @@
+<?php
+/**
+ * @version        $Id: co_url.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+require_once(DEDEINC."/dedecollection.class.php");
+$backurl = isset($_COOKIE['ENV_GOBACK_URL']) ? $_COOKIE['ENV_GOBACK_URL'] : "co_url.php";
+if(empty($action)) $action='';
+if($aid=='')
+{
+    ShowMsg('参数无效!','-1');
+    exit();
+}
+
+//保存更改
+if($action=="save")
+{
+    $result = '';
+    for($i=0;$i < $endid;$i++)
+    {
+        $result .= "{dede:field name=\\'".${"noteid_$i"}."\\'}".${"value_$i"}."{/dede:field}\r\n";
+    }
+    $dsql->ExecuteNoneQuery("UPDATE `#@__co_htmls` SET result='$result' WHERE aid='$aid'; ");
+    ShowMsg("成功保存一条记录!",$backurl);
+    exit();
+}
+$dsql->SetSql("SELECT * FROM `#@__co_htmls` WHERE aid='$aid'");
+$dsql->Execute();
+$row = $dsql->GetObject();
+$isdown = $row->isdown;
+$nid = $row->nid;
+$url = $row->url;
+$dtime = $row->dtime;
+$body = $row->result;
+$litpic = $row->litpic;
+$fields = array();
+if($isdown == 0)
+{
+    $co = new DedeCollection();
+    $co->LoadNote($nid);
+    $co->DownUrl($aid, $url, $litpic);
+    $co->dsql->SetSql("SELECT * FROM `#@__co_htmls` WHERE aid='$aid'");
+    $co->dsql->Execute();
+    $row = $co->dsql->GetObject();
+    $isdown = $row->isdown;
+    $nid = $row->nid;
+    $url = $row->url;
+    $dtime = $row->dtime;
+    $body = $row->result;
+    $litpic = $row->litpic;
+}
+$dtp = new DedeTagParse();
+$dtp->SetNameSpace("dede", "{", "}");
+$dtp->LoadString($body);
+include DedeInclude('templets/co_view.htm');

+ 324 - 0
admin/config.php

@@ -0,0 +1,324 @@
+<?php
+/**
+ * 管理目录配置文件
+ *
+ * @version        $Id: config.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+define('DEDEADMIN', str_replace("\\", '/', dirname(__FILE__) ) );
+require_once(DEDEADMIN.'/../include/common.inc.php');
+require_once(DEDEINC.'/userlogin.class.php');
+header('Cache-Control:private');
+$dsql->safeCheck = FALSE;
+$dsql->SetLongLink();
+$cfg_admin_skin = 1; // 后台管理风格
+
+if(file_exists(DEDEDATA.'/admin/skin.txt'))
+{
+	$skin = file_get_contents(DEDEDATA.'/admin/skin.txt');
+	$cfg_admin_skin = !in_array($skin, array(1,2,3,4))? 1 : $skin;
+}
+$_csrf_name = '_csrf_name_'.substr(md5(md5($cfg_cookie_encode)),0,8);
+$_csrf_hash =  GetCookie($_csrf_name);
+if ( empty($_csrf_hash) )
+{
+    $_csrf_hash = md5(uniqid(mt_rand(), TRUE));
+    if (strtoupper($_SERVER['REQUEST_METHOD']) !== 'POST')
+    {
+        PutCookie($_csrf_name, $_csrf_hash, 7200, '/');
+    }
+}
+
+$_csrf =  array(
+    'name'  =>'_dede'.$_csrf_name,
+    'hash'  => $_csrf_hash,
+);
+
+//获得当前脚本名称,如果你的系统被禁用了$_SERVER变量,请自行更改这个选项
+$dedeNowurl = $s_scriptName = '';
+$isUrlOpen = @ini_get('allow_url_fopen');
+$dedeNowurl = GetCurUrl();
+$dedeNowurls = explode('?', $dedeNowurl);
+$s_scriptName = $dedeNowurls[0];
+$cfg_remote_site = empty($cfg_remote_site)? 'N' : $cfg_remote_site;
+
+//检验用户登录状态
+$cuserLogin = new userLogin();
+
+if($cuserLogin->getUserID()==-1)
+{
+    if ( preg_match("#PHP (.*) Development Server#",$_SERVER['SERVER_SOFTWARE']) )
+    {
+        $dirname = dirname($_SERVER['SCRIPT_NAME']);
+        header("location:{$dirname}/login.php?gotopage=".urlencode($dedeNowurl));
+    } else {
+        header("location:login.php?gotopage=".urlencode($dedeNowurl));
+    }
+    exit();
+}
+
+function csrf_check()
+{
+    global $token;
+
+    if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){
+        echo '<a href="http://bbs.dedecms.com/907721.html">DedeCMS:CSRF Token Check Failed!</a>';
+        exit;
+    }
+}
+
+function XSSClean($val)
+{
+
+    if (is_array($val))
+    {
+        while (list($key) = each($val))
+        {
+            if(in_array($key,array('tags','body','dede_fields','dede_addonfields','dopost','introduce'))) continue;
+            $val[$key] = XSSClean($val[$key]);
+        }
+        return $val;
+    }
+    return RemoveXss($val);
+}
+
+if($cfg_dede_log=='Y')
+{
+    $s_nologfile = '_main|_list';
+    $s_needlogfile = 'sys_|file_';
+    $s_method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '';
+    $s_query = isset($dedeNowurls[1]) ? $dedeNowurls[1] : '';
+    $s_scriptNames = explode('/', $s_scriptName);
+    $s_scriptNames = $s_scriptNames[count($s_scriptNames)-1];
+    $s_userip = GetIP();
+    if( $s_method=='POST' || (!preg_match("#".$s_nologfile."#i", $s_scriptNames) && $s_query!='') || preg_match("#".$s_needlogfile."#i",$s_scriptNames) )
+    {
+        $inquery = "INSERT INTO `#@__log`(adminid,filename,method,query,cip,dtime)
+             VALUES ('".$cuserLogin->getUserID()."','{$s_scriptNames}','{$s_method}','".addslashes($s_query)."','{$s_userip}','".time()."');";
+        $dsql->ExecuteNoneQuery($inquery);
+    }
+}
+
+//启用远程站点则创建FTP类
+if($cfg_remote_site=='Y')
+{
+    require_once(DEDEINC.'/ftp.class.php');
+    if(file_exists(DEDEDATA."/cache/inc_remote_config.php"))
+    {
+        require_once DEDEDATA."/cache/inc_remote_config.php";
+    }
+    if(empty($remoteuploads)) $remoteuploads = 0;
+    if(empty($remoteupUrl)) $remoteupUrl = '';
+    $config = array(
+      'hostname' => $GLOBALS['cfg_ftp_host'],
+      'username' => $GLOBALS['cfg_ftp_user'],
+      'password' => $GLOBALS['cfg_ftp_pwd'],
+      'debug' => 'TRUE'
+    );
+    $ftp = new FTP($config); 
+
+    //初始化FTP配置
+    if($remoteuploads==1){
+        $ftpconfig = array(
+            'hostname'=>$rmhost, 
+            'port'=>$rmport,
+            'username'=>$rmname,
+            'password'=>$rmpwd
+        );
+    }
+}
+
+//管理缓存、管理员频道缓存
+$cache1 = DEDEDATA.'/cache/inc_catalog_base.inc';
+if(!file_exists($cache1)) UpDateCatCache();
+$cacheFile = DEDEDATA.'/cache/admincat_'.$cuserLogin->userID.'.inc';
+if(file_exists($cacheFile)) require_once($cacheFile);
+
+//更新服务器
+require_once (dirname(__FILE__).'/inc/config_update.php');
+
+if(strlen($cfg_cookie_encode)<=10)
+{
+    $chars='abcdefghigklmnopqrstuvwxwyABCDEFGHIGKLMNOPQRSTUVWXWY0123456789';
+    $hash='';
+    $length = rand(28,32);
+    $max = strlen($chars) - 1;
+    for($i = 0; $i < $length; $i++) {
+        $hash .= $chars[mt_rand(0, $max)];
+    }
+	$dsql->ExecuteNoneQuery("UPDATE `#@__sysconfig` SET `value`='{$hash}' WHERE varname='cfg_cookie_encode' ");
+	$configfile = DEDEDATA.'/config.cache.inc.php';
+    if(!is_writeable($configfile))
+    {
+        echo "配置文件'{$configfile}'不支持写入,无法修改系统配置参数!";
+        exit();
+    }
+    $fp = fopen($configfile,'w');
+    flock($fp,3);
+    fwrite($fp,"<"."?php\r\n");
+    $dsql->SetQuery("SELECT `varname`,`type`,`value`,`groupid` FROM `#@__sysconfig` ORDER BY aid ASC ");
+    $dsql->Execute();
+    while($row = $dsql->GetArray())
+    {
+        if($row['type']=='number')
+        {
+            if($row['value']=='') $row['value'] = 0;
+            fwrite($fp,"\${$row['varname']} = ".$row['value'].";\r\n");
+        }
+        else
+        {
+            fwrite($fp,"\${$row['varname']} = '".str_replace("'",'',$row['value'])."';\r\n");
+        }
+    }
+    fwrite($fp,"?".">");
+    fclose($fp);
+}
+
+/**
+ *  更新栏目缓存
+ *
+ * @access    public
+ * @return    void
+ */
+function UpDateCatCache()
+{
+    global $dsql, $cfg_multi_site, $cache1, $cacheFile, $cuserLogin;
+    $cache2 = DEDEDATA.'/cache/channelsonlist.inc';
+    $cache3 = DEDEDATA.'/cache/channeltoplist.inc';
+    $dsql->SetQuery("SELECT id,reid,channeltype,issend,typename FROM `#@__arctype`");
+    $dsql->Execute();
+    $fp1 = fopen($cache1,'w');
+    $phph = '?';
+    $fp1Header = "<{$phph}php\r\nglobal \$cfg_Cs;\r\n\$cfg_Cs=array();\r\n";
+    fwrite($fp1,$fp1Header);
+    while($row=$dsql->GetObject())
+    {
+        // 将typename缓存起来
+        $row->typename = base64_encode($row->typename);
+        fwrite($fp1,"\$cfg_Cs[{$row->id}]=array({$row->reid},{$row->channeltype},{$row->issend},'{$row->typename}');\r\n");
+    }
+    fwrite($fp1, "{$phph}>");
+    fclose($fp1);
+    $cuserLogin->ReWriteAdminChannel();
+    @unlink($cache2);
+    @unlink($cache3);
+}
+
+// 清空选项缓存
+function ClearOptCache()
+{
+    $tplCache = DEDEDATA.'/tplcache/';
+    $fileArray = glob($tplCache."inc_option_*.inc");
+    if (count($fileArray) > 1)
+    {
+        foreach ($fileArray as $key => $value)
+        {
+            if (file_exists($value)) unlink($value);
+            else continue;
+        }
+        return TRUE;
+    }
+    return FALSE;
+}
+
+/**
+ *  更新会员模型缓存
+ *
+ * @access    public
+ * @return    void
+ */
+function UpDateMemberModCache()
+{
+    global $dsql;
+    $cachefile = DEDEDATA.'/cache/member_model.inc';
+
+    $dsql->SetQuery("SELECT * FROM `#@__member_model` WHERE state='1'");
+    $dsql->Execute();
+    $fp1 = fopen($cachefile,'w');
+    $phph = '?';
+    $fp1Header = "<{$phph}php\r\nglobal \$_MemberMod;\r\n\$_MemberMod=array();\r\n";
+    fwrite($fp1,$fp1Header);
+    while($row=$dsql->GetObject())
+    {
+        fwrite($fp1,"\$_MemberMod[{$row->id}]=array('{$row->name}','{$row->table}');\r\n");
+    }
+    fwrite($fp1,"{$phph}>");
+    fclose($fp1);
+}
+
+/**
+ *  引入模板文件
+ *
+ * @access    public
+ * @param     string  $filename  文件名称
+ * @param     bool  $isabs  是否为管理目录
+ * @return    string
+ */
+function DedeInclude($filename, $isabs=FALSE)
+{
+    return $isabs ? $filename : DEDEADMIN.'/'.$filename;
+}
+
+/**
+ *  获取当前用户的ftp站点
+ *
+ * @access    public
+ * @param     string  $current  当前站点
+ * @param     string  $formname  表单名称
+ * @return    string
+ */
+function GetFtp($current='', $formname='')
+{
+    global $dsql;
+    $formname = empty($formname)? 'serviterm' : $formname;
+    $cuserLogin = new userLogin();
+    $row=$dsql->GetOne("SELECT servinfo FROM `#@__multiserv_config`");
+    $row['servinfo']=trim($row['servinfo']);
+    if(!empty($row['servinfo'])){
+        $servinfos = explode("\n", $row['servinfo']);
+        $select="";
+        echo '<select name="'.$formname.'" size="1" id="serviterm">';
+        $i=0;
+        foreach($servinfos as $servinfo){
+            $servinfo = trim($servinfo);
+            list($servname,$servurl,$servport,$servuser,$servpwd,$userlist) = explode('|',$servinfo);
+            $servname = trim($servname);
+            $servurl = trim($servurl);
+            $servport = trim($servport);
+            $servuser = trim($servuser);
+            $servpwd = trim($servpwd);
+            $userlist = trim($userlist);   
+            $checked = ($current == $i)? '  selected="selected"' : '';
+            if(strstr($userlist,$cuserLogin->getUserName()))
+            {
+                $select.="<option value='".$servurl.",".$servuser.",".$servpwd."'{$checked}>".$servname."</option>";  
+            }
+            $i++;
+        }
+        echo  $select."</select>";
+    }
+}
+helper('cache');
+/**
+ *  根据用户mid获取用户名称
+ *
+ * @access    public
+ * @param     int  $mid   用户ID
+ * @return    string
+ */
+if(!function_exists('GetMemberName')){
+	function GetMemberName($mid=0)
+	{
+		global $dsql;
+		$rs = GetCache('memberlogin', $mid);
+		if( empty($rs) )
+		{
+			$rs = $dsql->GetOne("SELECT * FROM `#@__member` WHERE mid='{$mid}' ");
+			SetCache('memberlogin', $mid, $rs, 1800);
+		}
+		return $rs['uname'];
+	}
+}

+ 31 - 0
admin/content_att.php

@@ -0,0 +1,31 @@
+<?php
+/**
+ * 内容属性
+ *
+ * @version        $Id: content_att.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('sys_Att');
+if(empty($dopost)) $dopost = '';
+
+//保存更改
+if($dopost=="save")
+{
+    $startID = 1;
+    $endID = $idend;
+    for(; $startID<=$endID; $startID++)
+    {
+        $att = ${'att_'.$startID};
+        $attname = ${'attname_'.$startID};
+        $sortid = ${'sortid_'.$startID};
+        $query = "UPDATE `#@__arcatt` SET `attname`='$attname',`sortid`='$sortid' WHERE att='$att' ";
+        $dsql->ExecuteNoneQuery($query);
+    }
+    echo "<script> alert('成功更新自定文档义属性表!'); </script>";
+}
+
+include DedeInclude('templets/content_att.htm');

+ 13 - 0
admin/content_batch_up.php

@@ -0,0 +1,13 @@
+<?php
+/**
+ * 内容处理函数
+ *
+ * @version        $Id: content_batch_up.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+require_once(DEDEINC.'/typelink.class.php');
+include DedeInclude('templets/content_batch_up.htm');

+ 215 - 0
admin/content_batchup_action.php

@@ -0,0 +1,215 @@
+<?php
+/**
+ * 内容处理函数
+ *
+ * @version        $Id: content_batch_up.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('sys_ArcBatch');
+require_once(DEDEINC."/typelink.class.php");
+require_once(DEDEADMIN."/inc/inc_batchup.php");
+@set_time_limit(0);
+
+//typeid,startid,endid,seltime,starttime,endtime,action,newtypeid
+//批量操作
+//check del move makehtml
+//获取ID条件
+if(empty($startid)) $startid = 0;
+if(empty($endid)) $endid = 0;
+if(empty($seltime)) $seltime = 0;
+if(empty($typeid)) $typeid = 0;
+if(empty($userid)) $userid = '';
+
+//生成HTML操作由其它页面处理
+if($action=="makehtml")
+{
+    $jumpurl  = "makehtml_archives_action.php?endid=$endid&startid=$startid";
+    $jumpurl .= "&typeid=$typeid&pagesize=20&seltime=$seltime";
+    $jumpurl .= "&stime=".urlencode($starttime)."&etime=".urlencode($endtime);
+    header("Location: $jumpurl");
+    exit();
+}
+
+$gwhere = " WHERE 1 ";
+if($startid >0 ) $gwhere .= " AND id>= $startid ";
+if($endid > $startid) $gwhere .= " AND id<= $endid ";
+$idsql = '';
+
+if($typeid!=0)
+{
+    $ids = GetSonIds($typeid);
+    $gwhere .= " AND typeid IN($ids) ";
+}
+if($seltime==1)
+{
+    $t1 = GetMkTime($starttime);
+    $t2 = GetMkTime($endtime);
+    $gwhere .= " AND (senddate >= $t1 AND senddate <= $t2) ";
+}
+if(!empty($userid))
+{
+	$row = $dsql->GetOne("SELECT `mid` FROM #@__member WHERE `userid` LIKE '$userid'");
+	if(is_array($row))
+	{
+		$gwhere .= " AND mid = {$row['mid']} ";
+	}
+}
+//特殊操作
+if(!empty($heightdone)) $action=$heightdone;
+
+//指量审核
+if($action=='check')
+{
+    if(empty($startid) || empty($endid) || $endid < $startid)
+    {
+        ShowMsg('该操作必须指定起始ID!','javascript:;');
+        exit();
+    }
+    $jumpurl  = "makehtml_archives_action.php?endid=$endid&startid=$startid";
+    $jumpurl .= "&typeid=$typeid&pagesize=20&seltime=$seltime";
+    $jumpurl .= "&stime=".urlencode($starttime)."&etime=".urlencode($endtime);
+    $dsql->SetQuery("SELECT id,arcrank FROM `#@__arctiny` $gwhere");
+    $dsql->Execute('c');
+    while($row = $dsql->GetObject('c'))
+    {
+        if($row->arcrank==-1)
+        {
+            $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET arcrank=0 WHERE id='{$row->id}'");
+            $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET arcrank=0 WHERE id='{$row->id}'");
+        }
+    }
+    ShowMsg("完成数据库的审核处理,准备更新HTML...",$jumpurl);
+    exit();
+}
+//批量删除
+else if($action=='del')
+{
+    if(empty($startid) || empty($endid) || $endid < $startid)
+    {
+        ShowMsg('该操作必须指定起始ID!','javascript:;');
+        exit();
+    }
+    $dsql->SetQuery("SELECT id FROM `#@__archives` $gwhere");
+    $dsql->Execute('x');
+    $tdd = 0;
+    while($row = $dsql->GetObject('x'))
+    {
+        if(DelArc($row->id)) $tdd++;
+    }
+    ShowMsg("成功删除 $tdd 条记录!","javascript:;");
+    exit();
+}
+//删除空标题文档
+else if($action=='delnulltitle')
+{
+    $dsql->SetQuery("SELECT id FROM `#@__archives` WHERE trim(title)='' ");
+    $dsql->Execute('x');
+    $tdd = 0;
+    while($row = $dsql->GetObject('x'))
+    {
+        if(DelArc($row->id)) $tdd++;
+    }
+    ShowMsg("成功删除 $tdd 条记录!","javascript:;");
+    exit();
+}
+//删除空内容文章
+else if($action=='delnullbody')
+{
+    $dsql->SetQuery("SELECT aid FROM `#@__addonarticle` WHERE LENGTH(body) < 10 ");
+    $dsql->Execute('x');
+    $tdd = 0;
+    while($row = $dsql->GetObject('x'))
+    {
+        if(DelArc($row->aid)) $tdd++;
+    }
+    ShowMsg("成功删除 $tdd 条记录!","javascript:;");
+    exit();
+}
+//修正缩略图错误
+else if($action=='modddpic')
+{
+    $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET litpic='' WHERE trim(litpic)='litpic' ");
+    ShowMsg("成功修正缩略图错误!","javascript:;");
+    exit();
+}
+//批量移动
+else if($action=='move')
+{
+    if(empty($typeid))
+    {
+        ShowMsg('该操作必须指定栏目!','javascript:;');
+        exit();
+    }
+    $typeold = $dsql->GetOne("SELECT * FROM #@__arctype WHERE id='$typeid'; ");
+    $typenew = $dsql->GetOne("SELECT * FROM #@__arctype WHERE id='$newtypeid'; ");
+    if(!is_array($typenew))
+    {
+        ShowMsg("无法检测移动到的新栏目的信息,不能完成操作!", "javascript:;");
+        exit();
+    }
+    if($typenew['ispart']!=0)
+    {
+        ShowMsg("你不能把数据移动到非最终列表的栏目!", "javascript:;");
+        exit();
+    }
+    if($typenew['channeltype']!=$typeold['channeltype'])
+    {
+        ShowMsg("不能把数据移动到内容类型不同的栏目!","javascript:;");
+        exit();
+    }
+    $gwhere .= " And channel='".$typenew['channeltype']."' And title like '%$keyword%'";
+
+    $ch = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id={$typenew['channeltype']} ");
+    $addtable = $ch['addtable'];
+
+    $dsql->SetQuery("SELECT id FROM `#@__archives` $gwhere");
+    $dsql->Execute('m');
+    $tdd = 0;
+    while($row = $dsql->GetObject('m'))
+    {
+        $rs = $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET typeid='$newtypeid' WHERE id='{$row->id}'");
+        $rs = $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET typeid='$newtypeid' WHERE id='{$row->id}'");
+        if($addtable!='')
+        {
+            $dsql->ExecuteNoneQuery("UPDATE `$addtable` SET typeid='$newtypeid' WHERE aid='{$row->id}' ");
+        }
+        if($rs) $tdd++;
+        //DelArc($row->id,true); //2011.07.06根据论坛反馈,修正使用批量文档维护后文档被移动到回收站(by:织梦的鱼)
+    }
+
+    if($tdd>0)
+    {
+        $jumpurl  = "makehtml_archives_action.php?endid=$endid&startid=$startid";
+        $jumpurl .= "&typeid=$newtypeid&pagesize=20&seltime=$seltime";
+        $jumpurl .= "&stime=".urlencode($starttime)."&etime=".urlencode($endtime);
+        ShowMsg("成功移动 $tdd 条记录,准备重新生成HTML...",$jumpurl);
+    }
+    else
+    {
+        ShowMsg("完成操作,没移动任何数据...","javascript:;");
+    }
+}
+//删除空标题内容
+else if($action=='delnulltitle')
+{
+    $dsql->SetQuery("SELECT id FROM #@__archives WHERE trim(title)='' ");
+    $dsql->Execute('x');
+    $tdd = 0;
+    while($row = $dsql->GetObject('x'))
+    {
+        if(DelArc($row->id)) $tdd++;
+    }
+    ShowMsg("成功删除 $tdd 条记录!","javascript:;");
+    exit();
+}
+//修正缩略图错误
+else if($action=='modddpic')
+{
+    $dsql->ExecuteNoneQuery("UPDATE #@__archives SET litpic='' WHERE trim(litpic)='litpic' ");
+    ShowMsg("成功修正缩略图错误!","javascript:;");
+    exit();
+}

+ 12 - 0
admin/content_i_list.php

@@ -0,0 +1,12 @@
+<?php
+/**
+ * 内容列表
+ *
+ * @version        $Id: content_i_list.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+$s_tmplets = "templets/content_i_list.htm";
+include(dirname(__FILE__)."/content_list.php");

+ 241 - 0
admin/content_list.php

@@ -0,0 +1,241 @@
+<?php
+/**
+ * 内容列表
+ * content_s_list.php、content_i_list.php、content_select_list.php
+ * 均使用本文件作为实际处理代码,只是使用的模板不同,如有相关变动,只需改本文件及相关模板即可
+ *
+ * @version        $Id: content_list.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__).'/config.php');
+require_once(DEDEINC.'/typelink.class.php');
+require_once(DEDEINC.'/datalistcp.class.php');
+require_once(DEDEADMIN.'/inc/inc_list_functions.php');
+
+$cid = isset($cid) ? intval($cid) : 0;
+$channelid = isset($channelid) ? intval($channelid) : 0;
+$mid = isset($mid) ? intval($mid) : 0;
+
+if(!isset($keyword)) $keyword = '';
+if(!isset($flag)) $flag = '';
+if(!isset($arcrank)) $arcrank = '';
+if(!isset($dopost)) $dopost = '';
+
+//检查权限许可,总权限
+CheckPurview('a_List,a_AccList,a_MyList');
+
+//栏目浏览许可
+$userCatalogSql = '';
+if(TestPurview('a_List'))
+{
+    ;
+}
+else if(TestPurview('a_AccList'))
+{
+    if($cid==0 && $cfg_admin_channel == 'array')
+    {
+        $admin_catalog = join(',', $admin_catalogs);
+        $userCatalogSql = " arc.typeid IN($admin_catalog) ";
+    }
+    else
+    {
+        CheckCatalog($cid, '你无权浏览非指定栏目的内容!');
+    }
+    if(TestPurview('a_MyList')) $mid =  $cuserLogin->getUserID();
+
+}
+
+$adminid = $cuserLogin->getUserID();
+$maintable = '#@__archives';
+setcookie('ENV_GOBACK_URL', $dedeNowurl, time()+3600, '/');
+$tl = new TypeLink($cid);
+
+//----------------------------------------
+//在不指定排序条件和关键字的情况下直接统计微表
+//----------------------------------------
+if(empty($totalresult) && empty($keyword) && empty($orderby) && empty($flag))
+{
+    $tinyQuerys = array();
+
+    if(!empty($userCatalogSql))
+    {
+        $tinyQuerys[] = str_replace('arc.', '', $userCatalogSql);
+    }
+
+    if(!empty($channelid) && empty($cid))
+    {
+        $tinyQuerys[] = " channel = '$channelid' ";
+    }
+    else
+    {
+        $tinyQuerys[] = " channel>0 ";
+    }
+
+    if(!empty($arcrank))
+    {
+        $tinyQuerys[] = " arcrank='$arcrank' ";
+    }
+    else
+    {
+        $tinyQuerys[] = " arcrank > -2 ";
+    }
+
+    if(!empty($mid))
+    {
+        $tinyQuerys[] = " mid='$mid' ";
+    }
+
+    if(!empty($cid))
+    {
+        $tinyQuerys[] = " typeid in(".GetSonIds($cid).") ";
+    }
+
+    if(count($tinyQuerys)>0)
+    {
+        $tinyQuery = "WHERE ".join(' AND ',$tinyQuerys);
+    }
+    // 缓存处理
+    $sql = "SELECT COUNT(*) AS dd FROM `#@__arctiny` $tinyQuery ";
+    $cachekey = md5($sql);
+    $arr = GetCache('listcache', $cachekey);
+    if (empty($arr))
+    {
+        $arr = $dsql->GetOne($sql);
+        SetCache('listcache', $cachekey, $arr);
+    }
+    $totalresult = $arr['dd'];
+}
+
+if($cid==0)
+{
+    if($channelid==0)
+    {
+        $positionname = '所有栏目&gt;';
+    }
+    else
+    {
+        $row = $tl->dsql->GetOne("SELECT id,typename,maintable FROM `#@__channeltype` WHERE id='$channelid'");
+        $positionname = $row['typename']." &gt; ";
+        $maintable = $row['maintable'];
+        $channelid = $row['id'];
+    }
+}
+else
+{
+    $positionname = str_replace($cfg_list_symbol," &gt; ",$tl->GetPositionName())." &gt; ";
+}
+
+//当选择的是单表模型栏目时,直接跳转到单表模型管理区
+if(empty($channelid)
+  && isset($tl->TypeInfos['channeltype']))
+{
+    $channelid = $tl->TypeInfos['channeltype'];
+}
+if($channelid < -1 )
+{
+    header("location:content_sg_list.php?cid=$cid&channelid=$channelid&keyword=$keyword");
+    exit();
+}
+
+
+// 栏目大于800则需要缓存数据
+$optHash = md5($cid.$admin_catalogs.$channelid);
+$optCache = DEDEDATA."/tplcache/inc_option_$optHash.inc";
+
+$typeCount = 0;
+if (file_exists($cache1)) require_once($cache1);
+else $cfg_Cs = array();
+$typeCount = count($cfg_Cs);
+if ( $typeCount > 800)
+{
+    if (file_exists($optCache))
+    {
+        $optionarr = file_get_contents($optCache);
+    } else {
+        $optionarr = $tl->GetOptionArray($cid, $admin_catalogs, $channelid);
+        file_put_contents($optCache, $optionarr);
+    }
+} else {
+    $optionarr = $tl->GetOptionArray($cid, $admin_catalogs, $channelid);
+}
+
+$whereSql = empty($channelid) ? " WHERE arc.channel > 0  AND arc.arcrank > -2 " : " WHERE arc.channel = '$channelid' AND arc.arcrank > -2 ";
+
+$flagsArr = '';
+$dsql->Execute('f', 'SELECT * FROM `#@__arcatt` ORDER BY sortid ASC');
+while($frow = $dsql->GetArray('f'))
+{
+    $flagsArr .= ($frow['att']==$flag ? "<option value='{$frow['att']}' selected>{$frow['attname']}</option>\r\n" : "<option value='{$frow['att']}'>{$frow['attname']}</option>\r\n");
+}
+
+
+if(!empty($userCatalogSql))
+{
+    $whereSql .= " AND ".$userCatalogSql;
+}
+if(!empty($mid))
+{
+    $whereSql .= " AND arc.mid = '$mid' ";
+}
+if($keyword != '')
+{
+    $whereSql .= " AND ( CONCAT(arc.title,arc.writer) LIKE '%$keyword%') ";
+}
+if($flag != '')
+{
+    $whereSql .= " AND FIND_IN_SET('$flag', arc.flag) ";
+}
+if($cid != 0)
+{
+    $whereSql .= ' AND arc.typeid IN ('.GetSonIds($cid).')';
+}
+if($arcrank != '')
+{
+    $whereSql .= " AND arc.arcrank = '$arcrank' ";
+    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='catalog_do.php?cid=".$cid."&dopost=listArchives&gurl=content_list.php';\" value='所有文档' />";
+}
+else
+{
+    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='catalog_do.php?cid=".$cid."&dopost=listArchives&arcrank=-1&gurl=content_list.php';\" value='稿件审核' />";
+}
+
+$orderby = empty($orderby) ? 'id' : preg_replace("#[^a-z0-9]#", "", $orderby);
+$orderbyField = 'arc.'.$orderby;
+
+$query = "SELECT arc.id,arc.typeid,arc.senddate,arc.flag,arc.ismake,
+arc.channel,arc.arcrank,arc.click,arc.title,arc.color,arc.litpic,arc.pubdate,arc.mid
+FROM `$maintable` arc
+$whereSql
+ORDER BY $orderbyField DESC";
+
+if(empty($f) || !preg_match("#form#", $f)) $f = 'form1.arcid1';
+
+//初始化
+$dlist = new DataListCP();
+$dlist->pageSize = 30;
+
+//GET参数
+$dlist->SetParameter('dopost', 'listArchives');
+$dlist->SetParameter('keyword', $keyword);
+if(!empty($mid)) $dlist->SetParameter('mid', $mid);
+$dlist->SetParameter('cid', $cid);
+$dlist->SetParameter('flag', $flag);
+$dlist->SetParameter('orderby', $orderby);
+$dlist->SetParameter('arcrank', $arcrank);
+$dlist->SetParameter('channelid', $channelid);
+$dlist->SetParameter('f', $f);
+
+//模板
+if(empty($s_tmplets)) $s_tmplets = 'templets/content_list.htm';
+$dlist->SetTemplate(DEDEADMIN.'/'.$s_tmplets);
+
+//查询
+$dlist->SetSource($query);
+
+//显示
+$dlist->Display();
+// echo $dlist->queryTime;
+$dlist->Close();

+ 15 - 0
admin/content_s_list.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * 专题列表
+ *
+ * @version        $Id: content_s_list.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('spec_List');
+$s_tmplets = "templets/content_s_list.htm";
+$channelid = -1;
+include(dirname(__FILE__)."/content_list.php");

+ 12 - 0
admin/content_select_list.php

@@ -0,0 +1,12 @@
+<?php
+/**
+ * 选择文章
+ *
+ * @version        $Id: content_select_list.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+$s_tmplets = "templets/content_select_list.htm";
+include(dirname(__FILE__)."/content_list.php");

+ 101 - 0
admin/content_sg_list.php

@@ -0,0 +1,101 @@
+<?php
+/**
+ * 单表模型列表
+ *
+ * @version        $Id: content_sg_list.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+$cid = isset($cid) ? intval($cid) : 0;
+$channelid = isset($channelid) ? intval($channelid) : 0;
+$mid = isset($mid) ? intval($mid) : 0;
+if(!isset($keyword)) $keyword = '';
+if(!isset($arcrank)) $arcrank = '';
+
+if(empty($cid) && empty($channelid))
+{
+    ShowMsg("该页面必须指定栏目ID或内容模型ID才能浏览!","javascript:;");
+    exit();
+}
+
+//检查权限许可,总权限
+CheckPurview('a_List,a_AccList,a_MyList');
+
+//栏目浏览许可
+if(TestPurview('a_List'))
+{
+
+}
+else if(TestPurview('a_AccList'))
+{
+    if($cid==0)
+    {
+        $ucid = $cid = $cuserLogin->getUserChannel();
+    }
+    else
+    {
+        CheckCatalog($cid,"你无权浏览非指定栏目的内容!");
+    }
+}
+
+$adminid = $cuserLogin->getUserID();
+$maintable = '#@__archives';
+require_once(DEDEINC."/typelink.class.php");
+require_once(DEDEINC."/datalistcp.class.php");
+require_once(DEDEADMIN."/inc/inc_list_functions.php");
+setcookie("ENV_GOBACK_URL",$dedeNowurl,time()+3600,"/");
+$tl = new TypeLink($cid);
+$listtable = trim($tl->TypeInfos['addtable']);
+if( !empty($channelid) && !empty($ucid) && $tl->TypeInfos['channeltype'] != $channelid)
+{
+  ShowMsg('你没权限访问此页!','javascript:;');
+  exit();
+}
+
+if($cid==0)
+{
+    $row = $tl->dsql->GetOne("SELECT typename,addtable FROM `#@__channeltype` WHERE id='$channelid'");
+    $positionname = $row['typename']." &gt; ";
+    $listtable = $row['addtable'];
+}
+else
+{
+    $positionname = str_replace($cfg_list_symbol, " &gt; ", $tl->GetPositionName())." &gt; ";
+}
+
+$optionarr = $tl->GetOptionArray($cid, $admin_catalogs, $channelid);
+$whereSql = $channelid==0 ? " WHERE arc.channel < -1 " : " WHERE arc.channel = '$channelid' ";
+
+if(!empty($mid)) $whereSql .= " AND arc.mid = '$mid' ";
+if($keyword!='') $whereSql .= " AND (arc.title like '%$keyword%') ";
+if($cid!=0) $whereSql .= " AND arc.typeid in (".GetSonIds($cid).")";
+
+if($arcrank!='')
+{
+    $whereSql .= " AND arc.arcrank = '$arcrank' ";
+    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='content_sg_list.php?cid={$cid}&channelid={$channelid}&dopost=listArchives';\" value='所有文档' />";
+}
+else
+{
+    $CheckUserSend = "<input type='button' class='coolbg np' onClick=\"location='content_sg_list.php?cid={$cid}&channelid={$channelid}&dopost=listArchives&arcrank=-1';\" value='稿件审核' />";
+}
+
+$query = "SELECT arc.aid,arc.aid as id,arc.typeid,arc.arcrank,arc.flag,arc.senddate,arc.channel,arc.title,arc.mid,arc.click,tp.typename,ch.typename as channelname
+FROM `$listtable` arc
+LEFT JOIN `#@__arctype` tp ON tp.id=arc.typeid
+LEFT JOIN `#@__channeltype` ch ON ch.id=arc.channel
+$whereSql
+ORDER BY arc.aid DESC";
+$dlist = new DataListCP();
+$dlist->pageSize = 20;
+$dlist->SetParameter("dopost", "listArchives");
+$dlist->SetParameter("keyword", $keyword);
+$dlist->SetParameter("cid", $cid);
+$dlist->SetParameter("channelid", $channelid);
+$dlist->SetTemplate(DEDEADMIN."/templets/content_sg_list.htm");
+$dlist->SetSource($query);
+$dlist->Display();
+$dlist->Close();

+ 60 - 0
admin/content_tj.php

@@ -0,0 +1,60 @@
+<?php
+/**
+ * 内容统计
+ *
+ * @version        $Id: content_tj.php 1 14:31 2010年7月12日Z tianya $
+ * @package        DedeCMS.Administrator
+ * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
+ * @license        http://help.dedecms.com/usersguide/license.html
+ * @link           http://www.dedecms.com
+ */
+require_once(dirname(__FILE__)."/config.php");
+CheckPurview('sys_ArcTj');
+$row1 = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__arctiny` ");
+$row2 = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__feedback` ");
+$row3 = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__member` ");
+
+/**
+ *  获取文档
+ *
+ * @param     object  $dsql
+ * @param     string  $ordertype  排序类型
+ * @return    string
+ */
+function GetArchives($dsql, $ordertype)
+{
+    $starttime = time() - (24*3600*30);
+    if($ordertype=='monthFeedback' ||$ordertype=='monthHot')
+    {
+        $swhere = " where senddate>$starttime ";
+    }
+    else
+    {
+        $swhere = "";
+    }
+    if(preg_match("#feedback#", $ordertype))
+    {
+        $ordersql = " ORDER BY scores DESC ";
+    }
+    else
+    {
+        $ordersql = " ORDER BY click DESC ";
+    }
+    $query = "SELECT id,title,click,scores FROM #@__archives $swhere $ordersql LIMIT 0,20 ";
+    $dsql->SetQuery($query);
+    $dsql->Execute('ga');
+    while($row = $dsql->GetObject('ga'))
+    {
+        if(preg_match("#feedback#i", $ordertype))
+        {
+            $moreinfo = "[<a target='_blank' href='".$GLOBALS['cfg_phpurl']."/feedback.php?aid={$row->id}'><u>评论:{$row->scores}</u></a>]";
+        }
+        else
+        {
+            $moreinfo = "[点击:{$row->click}]";
+        }
+        echo "·<a href='archives_do.php?aid={$row->id}&dopost=viewArchives' target='_blank'>";
+        echo cn_substr($row->title, 30)."</a>{$moreinfo}<br/>\r\n";
+    }
+}
+include DedeInclude('templets/content_tj.htm');

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
admin/css/base.css


+ 53 - 0
admin/css/boxy.css

@@ -0,0 +1,53 @@
+.boxy-wrapper { position: absolute; }
+.boxy-wrapper.fixed { position: fixed; }
+
+  /* Modal */
+  
+  .boxy-modal-blackout { position: absolute; background-color: black; left: 0; top: 0; }
+  
+  /* Border */
+
+  .boxy-wrapper { empty-cells: show; }
+	.boxy-wrapper .top-left,
+	.boxy-wrapper .top-right,
+	.boxy-wrapper .bottom-right,
+	.boxy-wrapper .bottom-left { width: 10px; height: 10px; padding: 0 }
+	
+	.boxy-wrapper .top-left { background: url('../images/boxy-nw.png'); }
+	.boxy-wrapper .top-right { background: url('../images/boxy-ne.png'); }
+	.boxy-wrapper .bottom-right { background: url('../images/boxy-se.png'); }
+	.boxy-wrapper .bottom-left { background: url('../images/boxy-sw.png'); }
+	
+	/* IE6+7 hacks for the border. IE7 should support this natively but fails in conjuction with modal blackout bg. */
+	/* NB: these must be absolute paths or URLs to your images */
+	.boxy-wrapper .top-left { #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-nw.png'); }
+	.boxy-wrapper .top-right { #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-ne.png'); }
+	.boxy-wrapper .bottom-right { #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-se.png'); }
+	.boxy-wrapper .bottom-left { #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-sw.png'); }
+	
+	.boxy-wrapper .top,
+	.boxy-wrapper .bottom { height: 10px; background-color: #693; opacity: 0.6; filter: alpha(opacity=60); padding: 0 }
+	
+	.boxy-wrapper .left,
+	.boxy-wrapper .right { width: 10px; background-color: #693; opacity: 0.6; filter: alpha(opacity=60); padding: 0 }
+	
+	/* Title bar */
+	
+	.boxy-wrapper .title-bar {
+	padding: 6px;
+	position: relative;
+	background: #693;
+}
+	  .boxy-wrapper .title-bar.dragging { cursor: move; }
+	    .boxy-wrapper .title-bar h2 { font-size: 12px; color: white; line-height: 1; margin: 0; padding: 0; font-weight: normal; }
+	    .boxy-wrapper .title-bar .close { color: white; position: absolute; top: 6px; right: 6px; font-size: 90%; line-height: 1; }
+		
+	/* Content Region */
+	
+	.boxy-inner { background-color: white; padding: 0 }
+	.boxy-content { padding: 15px; }
+	
+	/* Question Boxes */
+
+    .boxy-wrapper .question { width: 350px; min-height: 80px; }
+    .boxy-wrapper .answers { text-align: right; }

+ 341 - 0
admin/css/codemirror.css

@@ -0,0 +1,341 @@
+/* BASICS */
+
+.CodeMirror {
+  /* Set height, width, borders, and global font properties here */
+  font-family: monospace;
+  height: 300px;
+  color: black;
+}
+
+/* PADDING */
+
+.CodeMirror-lines {
+  padding: 4px 0; /* Vertical padding around content */
+}
+.CodeMirror pre {
+  padding: 0 4px; /* Horizontal padding of content */
+}
+
+.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+  background-color: white; /* The little square between H and V scrollbars */
+}
+
+/* GUTTER */
+
+.CodeMirror-gutters {
+  border-right: 1px solid #ddd;
+  background-color: #f7f7f7;
+  white-space: nowrap;
+}
+.CodeMirror-linenumbers {}
+.CodeMirror-linenumber {
+  padding: 0 3px 0 5px;
+  min-width: 20px;
+  text-align: right;
+  color: #999;
+  white-space: nowrap;
+}
+
+.CodeMirror-guttermarker { color: black; }
+.CodeMirror-guttermarker-subtle { color: #999; }
+
+/* CURSOR */
+
+.CodeMirror-cursor {
+  border-left: 1px solid black;
+  border-right: none;
+  width: 0;
+}
+/* Shown when moving in bi-directional text */
+.CodeMirror div.CodeMirror-secondarycursor {
+  border-left: 1px solid silver;
+}
+.cm-fat-cursor .CodeMirror-cursor {
+  width: auto;
+  border: 0 !important;
+  background: #7e7;
+}
+.cm-fat-cursor div.CodeMirror-cursors {
+  z-index: 1;
+}
+
+.cm-animate-fat-cursor {
+  width: auto;
+  border: 0;
+  -webkit-animation: blink 1.06s steps(1) infinite;
+  -moz-animation: blink 1.06s steps(1) infinite;
+  animation: blink 1.06s steps(1) infinite;
+  background-color: #7e7;
+}
+@-moz-keyframes blink {
+  0% {}
+  50% { background-color: transparent; }
+  100% {}
+}
+@-webkit-keyframes blink {
+  0% {}
+  50% { background-color: transparent; }
+  100% {}
+}
+@keyframes blink {
+  0% {}
+  50% { background-color: transparent; }
+  100% {}
+}
+
+/* Can style cursor different in overwrite (non-insert) mode */
+.CodeMirror-overwrite .CodeMirror-cursor {}
+
+.cm-tab { display: inline-block; text-decoration: inherit; }
+
+.CodeMirror-rulers {
+  position: absolute;
+  left: 0; right: 0; top: -50px; bottom: -20px;
+  overflow: hidden;
+}
+.CodeMirror-ruler {
+  border-left: 1px solid #ccc;
+  top: 0; bottom: 0;
+  position: absolute;
+}
+
+/* DEFAULT THEME */
+
+.cm-s-default .cm-header {color: blue;}
+.cm-s-default .cm-quote {color: #090;}
+.cm-negative {color: #d44;}
+.cm-positive {color: #292;}
+.cm-header, .cm-strong {font-weight: bold;}
+.cm-em {font-style: italic;}
+.cm-link {text-decoration: underline;}
+.cm-strikethrough {text-decoration: line-through;}
+
+.cm-s-default .cm-keyword {color: #708;}
+.cm-s-default .cm-atom {color: #219;}
+.cm-s-default .cm-number {color: #164;}
+.cm-s-default .cm-def {color: #00f;}
+.cm-s-default .cm-variable,
+.cm-s-default .cm-punctuation,
+.cm-s-default .cm-property,
+.cm-s-default .cm-operator {}
+.cm-s-default .cm-variable-2 {color: #05a;}
+.cm-s-default .cm-variable-3 {color: #085;}
+.cm-s-default .cm-comment {color: #a50;}
+.cm-s-default .cm-string {color: #a11;}
+.cm-s-default .cm-string-2 {color: #f50;}
+.cm-s-default .cm-meta {color: #555;}
+.cm-s-default .cm-qualifier {color: #555;}
+.cm-s-default .cm-builtin {color: #30a;}
+.cm-s-default .cm-bracket {color: #997;}
+.cm-s-default .cm-tag {color: #170;}
+.cm-s-default .cm-attribute {color: #00c;}
+.cm-s-default .cm-hr {color: #999;}
+.cm-s-default .cm-link {color: #00c;}
+
+.cm-s-default .cm-error {color: #f00;}
+.cm-invalidchar {color: #f00;}
+
+.CodeMirror-composing { border-bottom: 2px solid; }
+
+/* Default styles for common addons */
+
+div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
+div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
+.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
+.CodeMirror-activeline-background {background: #e8f2ff;}
+
+/* STOP */
+
+/* The rest of this file contains styles related to the mechanics of
+   the editor. You probably shouldn't touch them. */
+
+.CodeMirror {
+  position: relative;
+  overflow: hidden;
+  background: white;
+}
+
+.CodeMirror-scroll {
+  overflow: scroll !important; /* Things will break if this is overridden */
+  /* 30px is the magic margin used to hide the element's real scrollbars */
+  /* See overflow: hidden in .CodeMirror */
+  margin-bottom: -30px; margin-right: -30px;
+  padding-bottom: 30px;
+  height: 100%;
+  outline: none; /* Prevent dragging from highlighting the element */
+  position: relative;
+}
+.CodeMirror-sizer {
+  position: relative;
+  border-right: 30px solid transparent;
+}
+
+/* The fake, visible scrollbars. Used to force redraw during scrolling
+   before actual scrolling happens, thus preventing shaking and
+   flickering artifacts. */
+.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
+  position: absolute;
+  z-index: 6;
+  display: none;
+}
+.CodeMirror-vscrollbar {
+  right: 0; top: 0;
+  overflow-x: hidden;
+  overflow-y: scroll;
+}
+.CodeMirror-hscrollbar {
+  bottom: 0; left: 0;
+  overflow-y: hidden;
+  overflow-x: scroll;
+}
+.CodeMirror-scrollbar-filler {
+  right: 0; bottom: 0;
+}
+.CodeMirror-gutter-filler {
+  left: 0; bottom: 0;
+}
+
+.CodeMirror-gutters {
+  position: absolute; left: 0; top: 0;
+  min-height: 100%;
+  z-index: 3;
+}
+.CodeMirror-gutter {
+  white-space: normal;
+  height: 100%;
+  display: inline-block;
+  vertical-align: top;
+  margin-bottom: -30px;
+}
+.CodeMirror-gutter-wrapper {
+  position: absolute;
+  z-index: 4;
+  background: none !important;
+  border: none !important;
+}
+.CodeMirror-gutter-background {
+  position: absolute;
+  top: 0; bottom: 0;
+  z-index: 4;
+}
+.CodeMirror-gutter-elt {
+  position: absolute;
+  cursor: default;
+  z-index: 4;
+}
+.CodeMirror-gutter-wrapper {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+}
+
+.CodeMirror-lines {
+  cursor: text;
+  min-height: 1px; /* prevents collapsing before first draw */
+}
+.CodeMirror pre {
+  /* Reset some styles that the rest of the page might have set */
+  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
+  border-width: 0;
+  background: transparent;
+  font-family: inherit;
+  font-size: inherit;
+  margin: 0;
+  white-space: pre;
+  word-wrap: normal;
+  line-height: inherit;
+  color: inherit;
+  z-index: 2;
+  position: relative;
+  overflow: visible;
+  -webkit-tap-highlight-color: transparent;
+  -webkit-font-variant-ligatures: contextual;
+  font-variant-ligatures: contextual;
+}
+.CodeMirror-wrap pre {
+  word-wrap: break-word;
+  white-space: pre-wrap;
+  word-break: normal;
+}
+
+.CodeMirror-linebackground {
+  position: absolute;
+  left: 0; right: 0; top: 0; bottom: 0;
+  z-index: 0;
+}
+
+.CodeMirror-linewidget {
+  position: relative;
+  z-index: 2;
+  overflow: auto;
+}
+
+.CodeMirror-widget {}
+
+.CodeMirror-code {
+  outline: none;
+}
+
+/* Force content-box sizing for the elements where we expect it */
+.CodeMirror-scroll,
+.CodeMirror-sizer,
+.CodeMirror-gutter,
+.CodeMirror-gutters,
+.CodeMirror-linenumber {
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+.CodeMirror-measure {
+  position: absolute;
+  width: 100%;
+  height: 0;
+  overflow: hidden;
+  visibility: hidden;
+}
+
+.CodeMirror-cursor {
+  position: absolute;
+  pointer-events: none;
+}
+.CodeMirror-measure pre { position: static; }
+
+div.CodeMirror-cursors {
+  visibility: hidden;
+  position: relative;
+  z-index: 3;
+}
+div.CodeMirror-dragcursors {
+  visibility: visible;
+}
+
+.CodeMirror-focused div.CodeMirror-cursors {
+  visibility: visible;
+}
+
+.CodeMirror-selected { background: #d9d9d9; }
+.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
+.CodeMirror-crosshair { cursor: crosshair; }
+.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }
+.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }
+
+.cm-searching {
+  background: #ffa;
+  background: rgba(255, 255, 0, .4);
+}
+
+/* Used to force a border model for a node */
+.cm-force-border { padding-right: .1px; }
+
+@media print {
+  /* Hide the cursor when printing */
+  .CodeMirror div.CodeMirror-cursors {
+    visibility: hidden;
+  }
+}
+
+/* See issue #2901 */
+.cm-tab-wrap-hack:after { content: ''; }
+
+/* Help users use markselection to safely style text background */
+span.CodeMirror-selectedtext { background: none; }

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác