admin_area.asp 131 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081
  1. <!--#include file="Inc/common.asp"-->
  2. <!--#include file="Inc/MD5.asp"-->
  3. <!--#include file="Inc/Function.asp"-->
  4. <!--#include file="Admin_Common.asp"-->
  5. <!--#include file="CheckComeUrl.asp"-->
  6. <%
  7. Dim uid, rsRole, isAdmin
  8. uid = trim(request("uid"))
  9. if trim(Lcase(AdminName)) = "admin" then
  10. isAdmin = true
  11. else
  12. isAdmin = false
  13. end if
  14. ParentID = trim(request("ParentID"))
  15. if ParentID = "" then
  16. ParentID = 0
  17. else
  18. ParentID = CLng(ParentID)
  19. end if
  20. %>
  21. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  22. <html xmlns="http://www.w3.org/1999/xhtml">
  23. <head>
  24. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  25. <title><%=systemPageTitle%></title>
  26. <link href="bs2010.css" rel="stylesheet" type="text/css" />
  27. <script type="text/javascript" src="js/share.js"></script>
  28. <script type="text/javascript" src="js/prototype.js"></script>
  29. <script language="javascript">
  30. function GetData()
  31. {
  32. url="alarm.asp";//调用页面
  33. var xmlhttp=null;
  34. if(window.XMLHttpRequest)
  35. {
  36. xmlhttp=new XMLHttpRequest();
  37. }
  38. if(!xmlhttp&&window.ActiveXObject)
  39. {
  40. try
  41. {
  42. xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.5.0")
  43. }
  44. catch(e)
  45. {
  46. try
  47. {
  48. xmlhttp=new ActiveXObject("Msxml2.XMLHTTP.4.0")
  49. }
  50. catch(e){
  51. try
  52. {
  53. new ActiveXObject("Msxml2.XMLHTTP")
  54. }
  55. catch(e)
  56. {
  57. try{
  58. new ActiveXObject("Microsoft.XMLHTTP")
  59. }catch(e)
  60. {
  61. }
  62. }
  63. }
  64. }
  65. }
  66. if(!xmlhttp){alert("XMLHTTP不可用,请升级安装。");location="support/msxml.msi"}
  67. xmlhttp.open("GET",url,false);
  68. xmlhttp.send();
  69. var str = xmlhttp.responseText;
  70. document.getElementById("loadcontent").innerHTML=str;
  71. setTimeout("GetData()",<%=refreshRate%>);
  72. }
  73. </script>
  74. </head>
  75. <body onLoad="javascript:GetData();">
  76. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  77. <tr>
  78. <td class="mainbg"><table width="760" border="0" cellspacing="0" cellpadding="0">
  79. <tr>
  80. <td valign="top">
  81. <div id="loadcontent">
  82. <p></p>
  83. 数据载入中……</div>
  84. <p>
  85. <%
  86. Dim arrInvalidDir
  87. Dim pNum, pNum2, OpenTyClass, iOrderID, StructureType, HtmlDir
  88. Dim ClassLink
  89. arrInvalidDir = "HTML,JS,Special,List,Images,UploadFiles,UploadSoft,UploadSoftPic,UploadThumbs,UploadPhotos,UploadFlash,UploadVideo,UploadMusic"
  90. %>
  91. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  92. <tr>
  93. <td width="20" height="40"><span class="deviceName"><img src="images/arr1.gif" width="14" height="18" /></span></td>
  94. <td><span class="deviceName">菜单管理</span></td>
  95. </tr>
  96. </table>
  97. <table width='100%' border='0' align='center' cellpadding='2' cellspacing='1' class='border'>
  98. <tr class='tdbg'>
  99. <td width='70' height='30'><strong>管理导航:</strong></td>
  100. <td height='30'><a href='Admin_area.asp?ChannelID=<%=ChannelID%>'><%=ChannelShortName%>菜单管理首页</a>&nbsp;|&nbsp;<a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=Add'>添加<%=ChannelShortName%>菜单</a>&nbsp;|&nbsp;<a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=Order'>一级菜单排序</a>&nbsp;|&nbsp;<a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=OrderN'>N级菜单排序</a>&nbsp;|&nbsp;<a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=Unite'><%=ChannelShortName%>菜单合并</a>&nbsp;|&nbsp;<a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=Patch'>修复菜单结构</a> </td>
  101. </tr></table>
  102. <%
  103. Select Case Action
  104. Case "Add"
  105. Call AddClass
  106. Case "SaveAdd"
  107. Call SaveAdd
  108. Case "Modify"
  109. Call Modify
  110. Case "SaveModify"
  111. Call SaveModify
  112. Case "Move"
  113. Call MoveClass
  114. Case "SaveMove"
  115. Call SaveMove
  116. Case "Del"
  117. Call DeleteClass
  118. Case "Clear"
  119. Call ClearClass
  120. Case "UpOrder"
  121. Call UpOrder
  122. Case "DownOrder"
  123. Call DownOrder
  124. Case "Order"
  125. Call order
  126. Case "UpOrderN"
  127. Call UpOrderN
  128. Case "DownOrderN"
  129. Call DownOrderN
  130. Case "OrderN"
  131. Call OrderN
  132. Case "Reset"
  133. Call Reset
  134. Case "SaveReset"
  135. Call SaveReset
  136. Case "Unite"
  137. Call Unite
  138. Case "SaveUnite"
  139. Call SaveUnite
  140. Case "Batch"
  141. Call ShowBatch
  142. Case "DoBatch"
  143. Call DoBatch
  144. Case "Patch"
  145. Call Patch
  146. Case "DoPatch"
  147. Call DoPatch
  148. Case "ResetChildClass"
  149. Call ResetChildClass
  150. Case "CreateJS"
  151. Call WriteSuccessMsg("已经成功生成菜单JS文件。", ComeUrl)
  152. Case Else
  153. Call main
  154. End Select
  155. If FoundErr = True Then
  156. Call WriteErrMsg(ErrMsg, ComeUrl)
  157. End If
  158. Sub main()
  159. Dim arrShowLine(20), i
  160. For i = 0 To UBound(arrShowLine)
  161. arrShowLine(i) = False
  162. Next
  163. Dim sqlClass, rsClass, iDepth, ClassDir, ClassItemDir
  164. sqlClass = "select * from t_area where ChannelID=" & ChannelID & " order by RootID,OrderID"
  165. Set rsClass = Conn.Execute(sqlClass)
  166. %>
  167. <br>
  168. <table width='100%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor="#CCCCCC" class='border'>
  169. <tr class='title' height='22'>
  170. <td width='30' align='center' class="deviceTdTitle"><strong>ID</strong></td>
  171. <td align='center' class="deviceTdTitle"><strong>菜单名称及目录</strong></td>
  172. <td width='380' align='center' class="deviceTdTitle"><strong>操作选项</strong></td>
  173. </tr>
  174. <%
  175. If rsClass.BOF And rsClass.EOF Then
  176. Response.Write "<tr><td colspan='10' height='50' align='center'>没有任何菜单</td></tr>"
  177. Else
  178. Do While Not rsClass.EOF
  179. %>
  180. <tr class='deviceTd'>
  181. <td width='30' align='center'><%=rsClass("t_classid")%></td>
  182. <td><%
  183. iDepth = rsClass("Depth")
  184. If rsClass("NextID") > 0 Then
  185. arrShowLine(iDepth) = True
  186. Else
  187. arrShowLine(iDepth) = False
  188. End If
  189. If iDepth > 0 Then
  190. For i = 1 To iDepth
  191. If i = iDepth Then
  192. If rsClass("NextID") > 0 Then
  193. Response.Write "<img src='../images/tree_line1.gif' width='17' height='16' valign='abvmiddle'>"
  194. Else
  195. Response.Write "<img src='../images/tree_line2.gif' width='17' height='16' valign='abvmiddle'>"
  196. End If
  197. Else
  198. If arrShowLine(i) = True Then
  199. Response.Write "<img src='../images/tree_line3.gif' width='17' height='16' valign='abvmiddle'>"
  200. Else
  201. Response.Write "<img src='../images/tree_line4.gif' width='17' height='16' valign='abvmiddle'>"
  202. End If
  203. End If
  204. Next
  205. End If
  206. If rsClass("Child") > 0 Then
  207. Response.Write "<img src='../images/tree_folder4.gif' width='15' height='15' valign='abvmiddle'>"
  208. Else
  209. Response.Write "<img src='../images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'>"
  210. End If
  211. If rsClass("Depth") = 0 Then
  212. Response.Write "<b>"
  213. End If
  214. Response.Write "<a href='Admin_area.asp?Action=Modify&ChannelID=" & ChannelID & "&ClassID=" & rsClass("t_classid") & "' title='" & rsClass("Tips") & "'>" & rsClass("ClassName") & "</a>"
  215. If rsClass("Child") > 0 Then
  216. Response.Write "(" & rsClass("Child") & ")"
  217. End If
  218. 'Response.Write "&nbsp;&nbsp;" & rsClass("t_classid") & "," & rsClass("PrevID") & "," & rsClass("NextID") & "," & rsClass("ParentID") & "," & rsClass("RootID")
  219. %> </td><td align='center' width='380'>&nbsp;
  220. <%
  221. If rsClass("ClassType") = 1 Then
  222. Response.Write "<a href='Admin_area.asp?ChannelID=" & ChannelID & "&Action=Add&ParentID=" & rsClass("t_classid") & "'>添加子菜单</a>&nbsp;|&nbsp;"
  223. Else
  224. Response.Write "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;"
  225. End If
  226. %>
  227. <a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=Modify&ClassID=<%=rsClass("t_classid")%>'>修改设置</a>&nbsp;|&nbsp;<a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=Move&ClassID=<%=rsClass("t_classid")%>'>移动菜单</a>&nbsp;|&nbsp;
  228. <a href='Admin_area.asp?ChannelID=<%=ChannelID%>&Action=Del&ClassID=<%=rsClass("t_classid")%>' onClick='return ConfirmDel2();'>删除</a></td></tr>
  229. <%
  230. rsClass.MoveNext
  231. Loop
  232. End If
  233. rsClass.Close
  234. Set rsClass = Nothing
  235. %>
  236. </table>
  237. <table width='100%'><tr><form name='form1' action='Admin_area.asp' method='post'><td align='center'>
  238. <input name='Action' type='hidden' id='Action' value='CreateJS'><input name='ChannelID' type='hidden' id='ChannelID' value='" & ChannelID & "'>
  239. </td></form></tr></table>
  240. <script language='JavaScript' type='text/JavaScript'>
  241. function ConfirmDel1(){
  242. alert('此菜单下还有子菜单,必须先删除下属子菜单后才能删除此菜单!');
  243. return false;}
  244. function ConfirmDel2(){
  245. if(confirm('删除菜单操作将删除此菜单中的所有子菜单并且不能恢复!确定要删除此菜单吗?'))
  246. return true;
  247. else
  248. return false;}
  249. function ConfirmDel3(){
  250. if(confirm('清空菜单将把菜单(包括子菜单)的所有菜单放入回收站中!确定要清空此菜单吗?'))
  251. return true;
  252. else
  253. return false;}
  254. </script>
  255. <br>
  256. <%
  257. End Sub
  258. Sub AddClass()
  259. %>
  260. <br><table width='100%'><tr><td align='left'>您现在的位置:<a href='Admin_area.asp?ChannelID=<%=ChannelID%>'>菜单管理</a>&nbsp;&gt;&gt;&nbsp;添加菜单</td></tr></table>
  261. <form name='form1' method='post' action='Admin_area.asp' onsubmit='return check()'>
  262. <table width='100%' border='0' align='center' cellpadding='5' cellspacing='1' class='border'><tr class='tdbg'><td height='100' valign='top'>
  263. <table width='95%' align='center' cellpadding='2' cellspacing='1' bgcolor='#CCCCCC'>
  264. <tr class='deviceTd'>
  265. <td width='300' class='tdbg5'><strong>所属菜单:</strong></td>
  266. <td>
  267. <select name='ParentID'><option value='0'>无(做为一级菜单)</option><%=GetClass_Option(1, ParentID)%></select>
  268. <font color="blue">请选择上级菜单</font></td>
  269. </tr>
  270. <tr class='deviceTd'>
  271. <td width='300' class='tdbg5'><strong>菜单名称:</strong></td>
  272. <td><input name='ClassName' type='text' size='20' maxlength='80'> <font color=red>*</font></td>
  273. </tr>
  274. <tr class='deviceTd' style=" display:none">
  275. <td width='300' class='tdbg5'><strong>菜单类型:</strong><br><font color=red>请慎重选择,菜单一旦添加后就不能再更改菜单类型。</font></td>
  276. <td><input name='ClassType' type='radio' value='1' checked><font color=blue><b>内部菜单</b></font>&nbsp;&nbsp;内部菜单具有详细的参数设置。可以添加子菜单和文章。<br><input name='ClassType' type='radio' value='2'><font color=blue><b>外部菜单</b></font>&nbsp;&nbsp;外部菜单指链接到本系统以外的地址中。当此菜单准备链接到网站中的其他系统时,请使用这种方式。不能在外部菜单中添加文章,也不能添加子菜单。<br>&nbsp;&nbsp;&nbsp;&nbsp;外部菜单的链接地址:<input name='LinkUrl' type='text' id='LinkUrl' value='' size='40' maxlength='200'> </td>
  277. </tr>
  278. <tr class='deviceTd'>
  279. <td width='300' class='tdbg5'><strong>自定义页面:</strong><br>
  280. 请填写正确的页面地址,如不需要链接页面请留空,最后一级菜单不需要自定义页面</td>
  281. <td><input name='ClassPicUrl' type='text' id='ClassPicUrl' size='60' maxlength='255'></td>
  282. </tr>
  283. <tr class='deviceTd' style=" display:none">
  284. <td width='300' class='tdbg5'><strong>菜单提示:</strong><br>鼠标移至菜单名称上时将显示设定的提示文字(不支持HTML)</td>
  285. <td><textarea name='Tips' cols='60' rows='2' id='Tips'></textarea></td>
  286. </tr>
  287. <tr class='deviceTd' style=" display:none">
  288. <td width='300' class='tdbg5'><strong>菜单说明:</strong><br>用于在菜单页详细介绍菜单信息,支持HTML</td>
  289. <td><textarea name='Readme' cols='60' rows='3' id='Readme'></textarea></td>
  290. </tr>
  291. <tr class='deviceTd' style=" display:none">
  292. <td width='300' class='tdbg5'><strong>打开方式:</strong></td>
  293. <td><input name='OpenType' type='radio' value='0' checked>在原窗口打开&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name='OpenType' type='radio' value='1'>在新窗口打开</td>
  294. </tr>
  295. <tr class='deviceTd' style=" display:none">
  296. <td width='300' class='tdbg5'><strong>有子菜单时是否可以在此菜单添加<%=ChannelShortName%>:</strong></td>
  297. <td><input name='EnableAdd' type='radio' value='True'>是&nbsp;&nbsp;&nbsp;&nbsp; <input name='EnableAdd' type='radio' value='False' checked>否</td>
  298. </tr>
  299. </table>
  300. </td></tr></table>
  301. <table width='100%' border='0' align='center'>
  302. <tr class='tdbg'>
  303. <td height='40' colspan='2' align='center'>
  304. <input name='Action' type='hidden' id='Action' value='SaveAdd'>
  305. <input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  306. <input name='Add' type='submit' value=' 添 加 ' style='cursor:hand;'>&nbsp;&nbsp;<input name='Cancel' type='button' id='Cancel' value=' 取 消 ' onClick="window.location.href='Admin_area.asp?ChannelID=<%=ChannelID%>'" style='cursor:hand;'> </td>
  307. </tr>
  308. </table>
  309. </form>
  310. <%
  311. Call WriteJS
  312. End Sub
  313. Sub WriteJS()
  314. %>
  315. <script language='JavaScript' type='text/JavaScript'>
  316. function check(){
  317. if (document.form1.ClassName.value==''){
  318. alert('菜单名称不能为空!');
  319. document.form1.ClassName.focus();
  320. return false;}
  321. if(document.form1.ClassType[1].checked==true){
  322. if(document.form1.LinkUrl.value==''){
  323. alert('菜单链接地址不能为空!');
  324. document.form1.LinkUrl.focus();
  325. return false;}
  326. }
  327. }
  328. </script>
  329. <%
  330. End Sub
  331. Sub Modify()
  332. Dim t_classid, sql, rsClass, i
  333. ClassID = Trim(Request("ClassID"))
  334. If ClassID = "" Then
  335. FoundErr = True
  336. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  337. Exit Sub
  338. Else
  339. ClassID = CLng(classid)
  340. End If
  341. sql = "select * from t_area where t_classid=" & ClassID
  342. Set rsClass = Server.CreateObject("Adodb.recordset")
  343. rsClass.Open sql, Conn, 1, 1
  344. If rsClass.BOF And rsClass.EOF Then
  345. FoundErr = True
  346. ErrMsg = ErrMsg & "<li>找不到指定的菜单!</li>"
  347. rsClass.Close
  348. Set rsClass = Nothing
  349. Exit Sub
  350. End If
  351. %>
  352. <br><table width='100%'><tr><td align='left'>您现在的位置:<a href='Admin_area.asp?ChannelID=<%=ChannelID%>'>菜单管理</a>&nbsp;&gt;&gt;&nbsp;修改菜单设置:<font color='red'><%=rsClass("ClassName")%></td></tr></table>
  353. <form name='form1' method='post' action='Admin_area.asp' onsubmit='return check()'>
  354. <table width='100%' border='0' align='center' cellpadding='5' cellspacing='1' class='border'><tr class='tdbg'><td height='100' valign='top'>
  355. <table width='95%' align='center' cellpadding='2' cellspacing='1' bgcolor='#CCCCCC'>
  356. <tbody id='Tabs' style='display:'>
  357. <tr class='deviceTd'>
  358. <td width='300' class='tdbg5'><strong>所属菜单:</strong><br>如果你想改变所属菜单,请<a href='Admin_area.asp?Action=Move&ChannelID=<%=ChannelID%>&ClassID=<%=ClassID%>'>点此移动菜单</a></td>
  359. <td><%=GetPath(rsClass("ParentID"), rsClass("ParentPath"))%></td>
  360. </tr>
  361. <tr class='deviceTd'>
  362. <td width='300' class='tdbg5'><strong>菜单名称:</strong></td>
  363. <td><input name='ClassName' type='text' value='<%=rsClass("ClassName")%>' size='20' maxlength='80'> <font color=red>*</font></td>
  364. </tr>
  365. <tr class='tdbg' style=" display:none">
  366. <td width='300' class='tdbg5'><strong>菜单类型:</strong><br><font color=red>请慎重选择,菜单一旦添加后就不能再更改菜单类型。</font></td>
  367. <td>
  368. <input name='ClassType' type='radio' value='1'
  369. <%
  370. If rsClass("ClassType") = 1 Then
  371. Response.Write " checked"
  372. Else
  373. Response.Write " disabled"
  374. End If
  375. %>>
  376. <font color=blue><b>内部菜单</b></font>&nbsp;&nbsp;内部菜单具有详细的参数设置。可以添加子菜单和文章。 <br><br>
  377. <input name='ClassType' type='radio' value='2'
  378. <%
  379. If rsClass("ClassType") = 2 Then
  380. Response.Write " checked"
  381. Else
  382. Response.Write " disabled"
  383. End If
  384. %>>
  385. <font color=blue><b>外部菜单</b></font>&nbsp;&nbsp;外部菜单指链接到本系统以外的地址中。当此菜单准备链接到网站中的其他系统时,请使用这种方式。不能在外部菜单中添加文章,也不能添加子菜单。<br>
  386. &nbsp;&nbsp;&nbsp;&nbsp;外部菜单的链接地址:<input name='LinkUrl' type='text' id='LinkUrl' value='<%=rsClass("LinkUrl")%>' size='40' maxlength='200'<%If rsClass("ClassType") = 1 Then Response.Write " disabled"%>> </td>
  387. </tr>
  388. <tr class='deviceTd'>
  389. <td width='300' class='tdbg5'><strong>自定义页面:</strong><br />
  390. 请填写正确的页面地址,如不需要链接页面请留空,最后一级菜单不需要自定义页面</td>
  391. <td><input name='ClassPicUrl' type='text' id='ClassPicUrl' value='<%=rsClass("ClassPicUrl")%>' size='60' maxlength='255'></td>
  392. </tr>
  393. <tr class='tdbg' style=" display:none">
  394. <td width='300' class='tdbg5'><strong>菜单提示:</strong><br>鼠标移至菜单名称上时将显示设定的提示文字(不支持HTML)</td>
  395. <td><textarea name='Tips' cols='60' rows='2' id='Tips'><%=rsClass("Tips")%></textarea></td>
  396. </tr>
  397. <tr class='tdbg' style=" display:none">
  398. <td width='300' class='tdbg5'><strong>菜单说明:</strong><br>用于在菜单页详细介绍菜单信息,支持HTML</td>
  399. <td><textarea name='Readme' cols='60' rows='3' id='Readme'><%=rsClass("ReadMe")%></textarea></td>
  400. </tr>
  401. <tr class='tdbg' style=" display:none">
  402. <td width='300' class='tdbg5'><strong>打开方式:</strong></td>
  403. <td><input name='OpenType' type='radio' <%=RadioValue(rsClass("OpenType"), 0)%>>在原窗口打开&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name='OpenType' type='radio' <%=RadioValue(rsClass("OpenType"), 1)%>>在新窗口打开</td>
  404. </tr>
  405. <tr class='tdbg' style=" display:none">
  406. <td width='300' class='tdbg5'><strong>有子菜单时是否可以在此菜单添加<%=ChannelShortName%>:</strong></td>
  407. <td><input name='EnableAdd' type='radio' Value='true' <%if rsClass("EnableAdd")=1 then response.write "checked"%>>是&nbsp;&nbsp;&nbsp;&nbsp; <input name='EnableAdd' type='radio' Value='false' <%if rsClass("EnableAdd")=0 then response.write "checked"%>>否</td>
  408. </tr>
  409. </table>
  410. </td></tr></table>
  411. <table width='100%' border='0' align='center'>
  412. <tr class='tdbg'>
  413. <td height='40' colspan='2' align='center'>
  414. <input name='Action' type='hidden' id='Action' value='SaveModify'>
  415. <input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  416. <input name='ClassID' type='hidden' id='ClassID' value='<%=rsClass("t_classid")%>'>
  417. <input name='Modify' type='submit' value=' 保存修改结果 ' style='cursor:hand;'>&nbsp;&nbsp;<input name='Cancel' type='button' id='Cancel' value=' 取 消 ' onClick="window.location.href='Admin_area.asp?ChannelID=<%=ChannelID%>'" style='cursor:hand;'> </td>
  418. </tr>
  419. </table>
  420. </form>
  421. <%
  422. Call WriteJS
  423. rsClass.Close
  424. Set rsClass = Nothing
  425. End Sub
  426. Sub MoveClass()
  427. Dim tChannelID
  428. Dim ClassID, sql, rsClass, i
  429. tChannelID = Trim(Request("tChannelID"))
  430. ClassID = Trim(Request("ClassID"))
  431. If tChannelID = "" Then
  432. tChannelID = ChannelID
  433. Else
  434. tChannelID = CLng(tChannelID)
  435. End If
  436. If ClassID = "" Then
  437. FoundErr = True
  438. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  439. Exit Sub
  440. Else
  441. ClassID = CLng(ClassID)
  442. End If
  443. sql = "select * from t_area where t_classid=" & ClassID
  444. Set rsClass = Server.CreateObject("Adodb.recordset")
  445. rsClass.Open sql, Conn, 1, 3
  446. If rsClass.BOF And rsClass.EOF Then
  447. FoundErr = True
  448. ErrMsg = ErrMsg & "<li>找不到指定的菜单!</li>"
  449. Else
  450. %>
  451. <form name='myform' method='post' action='Admin_area.asp'>
  452. <table width='100%' border='0' align='center' cellpadding='2' cellspacing='1' bgcolor="#CCCCCC" class='border'>
  453. <tr class='title'>
  454. <td height='22' colspan='3' align='center' class="deviceTdTitle"><strong>移动<%=ChannelShortName%>菜单</strong></td>
  455. </tr>
  456. <tr class='deviceTd'>
  457. <td align='left' valign='top' width='260'><strong>当前菜单:</strong><br><select name='ClassID2' size='2' style='height:330px;width:260px;' disabled><%=GetClass_Option(ChannelID, ClassID)%></select></td>
  458. <td align='center' width='70'><strong>移动到&gt;&gt;&gt;</strong></td>
  459. <td align='left'>
  460. <strong>目标频道:</strong><%=ChannelName%></select><br>
  461. <strong>目标菜单:</strong><font color=red>(不能指定为当前菜单的下属子菜单或外部菜单)</font><br><select name='ParentID' size='2' style='height:300px;width:260px;'><option value='0'>无(做为一级菜单)</option><%=GetClass_Option(tChannelID, rsClass("ParentID"))%></select></td>
  462. </tr>
  463. <tr class='deviceTd'>
  464. <td height='40' colspan='3' align='center'>
  465. <input name='Action' type='hidden' id='Action' value='Move'>
  466. <input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  467. <input name='tChannelID' type='hidden' id='tChannelID' value='<%=tChannelID%>'>
  468. <input name='ClassID' type='hidden' id='ClassID' value='<%=ClassID%>'>
  469. <input name='Submit' type='submit' value=' 保存移动结果 ' style='cursor:hand;' onClick="document.myform.Action.value='SaveMove';">&nbsp;&nbsp;
  470. <input name='Cancel' type='button' value=' 取 消 ' style='cursor:hand;' onClick="window.location.href='Admin_area.asp?ChannelID=<%=ChannelID%>'"> </td>
  471. </tr>
  472. </table>
  473. </form>
  474. <%
  475. End If
  476. rsClass.Close
  477. Set rsClass = Nothing
  478. End Sub
  479. Sub order()
  480. Dim sqlClass, rsClass, i, iCount, j
  481. sqlClass = "select * from t_area where ChannelID=" & ChannelID & " and ParentID=0 order by RootID"
  482. Set rsClass = Server.CreateObject("adodb.recordset")
  483. rsClass.Open sqlClass, Conn, 1, 1
  484. iCount = rsClass.RecordCount
  485. %>
  486. <br>
  487. <table width='100%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor="#CCCCCC" class='border'>
  488. <tr class='title'>
  489. <td height='22' colspan='5' align='center' class="deviceTdTitle"><strong>一 级 栏 目 排 序</strong></td>
  490. </tr>
  491. <%
  492. j = 1
  493. Do While Not rsClass.EOF
  494. %>
  495. <tr class='deviceTd'>
  496. <td width='200'><%=rsClass("ClassName")%></td>
  497. <%If j > 1 Then%>
  498. <form action='Admin_area.asp?Action=UpOrder' method='post'><td width='150'>
  499. <select name=MoveNum size=1><option value=0>向上移动</option>
  500. <%For i = 1 To j - 1%>
  501. <option value=<%=i%>><%=i%></option>
  502. <%Next%>
  503. </select>
  504. <input type=hidden name=ClassID value=<%=rsClass("t_classid")%>><input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  505. <input type=hidden name=cRootID value=<%=rsClass("RootID")%>>&nbsp;<input type=submit name=Submit value=修改>
  506. </td></form>
  507. <%Else%>
  508. <td width='150'>&nbsp;</td>
  509. <%
  510. End If
  511. If iCount > j Then
  512. %>
  513. <form action='Admin_area.asp?Action=DownOrder' method='post'><td width='150'>
  514. <select name=MoveNum size=1><option value=0>向下移动</option>
  515. <%For i = 1 To iCount - j%>
  516. <option value=<%=i%>><%=i%></option>
  517. <%Next%>
  518. </select>
  519. <input type=hidden name=ClassID value=<%=rsClass("t_classid")%>><input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  520. <input type=hidden name=cRootID value=<%=rsClass("RootID")%>>&nbsp;<input type=submit name=Submit value=修改>
  521. </td></form>
  522. <%Else%>
  523. <td width='150'>&nbsp;</td>
  524. <%End If%>
  525. <td>&nbsp;</td>
  526. </tr>
  527. <%
  528. j = j + 1
  529. rsClass.MoveNext
  530. Loop
  531. %>
  532. </table>
  533. <%
  534. rsClass.Close
  535. Set rsClass = Nothing
  536. End Sub
  537. Sub OrderN()
  538. Dim sqlClass, rsClass, i, iCount, trs, UpMoveNum, DownMoveNum
  539. sqlClass = "select * from t_area where ChannelID=" & ChannelID & " order by RootID,OrderID"
  540. Set rsClass = Server.CreateObject("adodb.recordset")
  541. rsClass.Open sqlClass, Conn, 1, 1
  542. Response.Write "<br>"
  543. Response.Write "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='1' class='border' bgcolor='#cccccc'>"
  544. Response.Write " <tr>"
  545. Response.Write " <td height='22' colspan='4' align='center' class='deviceTdTitle'><strong>N 级 栏 目 排 序</strong></td>"
  546. Response.Write " </tr>"
  547. Do While Not rsClass.EOF
  548. Response.Write " <tr class='deviceTd'>"
  549. Response.Write " <td width='300'>"
  550. For i = 1 To rsClass("Depth")
  551. Response.Write "&nbsp;&nbsp;&nbsp;"
  552. Next
  553. If rsClass("Child") > 0 Then
  554. Response.Write "<img src='../images/tree_folder4.gif' width='15' height='15' valign='abvmiddle'>"
  555. Else
  556. Response.Write "<img src='../images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'>"
  557. End If
  558. If rsClass("ParentID") = 0 Then
  559. Response.Write "<b>"
  560. End If
  561. Response.Write rsClass("ClassName")
  562. If rsClass("Child") > 0 Then
  563. Response.Write "(" & rsClass("Child") & ")"
  564. End If
  565. Response.Write "</td>"
  566. If rsClass("ParentID") > 0 Then '如果不是一级菜单,则算出相同深度的菜单数目,得到该菜单在相同深度的菜单中所处位置(之上或者之下的菜单数)
  567. '所能提升最大幅度应为For i=1 to 该版之上的版面数
  568. Set trs = Conn.Execute("select count(t_classid) from t_area where ParentID=" & rsClass("ParentID") & " and OrderID<" & rsClass("OrderID") & "")
  569. UpMoveNum = trs(0)
  570. If IsNull(UpMoveNum) Then UpMoveNum = 0
  571. UpMoveNum = CLng(UpMoveNum)
  572. If UpMoveNum > 0 Then
  573. Response.Write "<form action='Admin_area.asp?Action=UpOrderN' method='post'><td width='150'>"
  574. Response.Write "<select name=MoveNum size=1><option value=0>向上移动</option>"
  575. For i = 1 To UpMoveNum
  576. Response.Write "<option value=" & i & ">" & i & "</option>"
  577. Next
  578. Response.Write "</select><input name='ChannelID' type='hidden' id='ChannelID' value='" & ChannelID & "'>"
  579. Response.Write "<input type=hidden name=ClassID value=" & rsClass("t_classid") & ">&nbsp;<input type=submit name=Submit value=修改>"
  580. Response.Write "</td></form>"
  581. Else
  582. Response.Write "<td width='150'>&nbsp;</td>"
  583. End If
  584. trs.Close
  585. '所能降低最大幅度应为For i=1 to 该版之下的版面数
  586. Set trs = Conn.Execute("select count(t_classid) from t_area where ParentID=" & rsClass("ParentID") & " and orderID>" & rsClass("orderID") & "")
  587. DownMoveNum = trs(0)
  588. If IsNull(DownMoveNum) Then DownMoveNum = 0
  589. DownMoveNum = CLng(DownMoveNum)
  590. If DownMoveNum > 0 Then
  591. Response.Write "<form action='Admin_area.asp?Action=DownOrderN' method='post'><td width='150'>"
  592. Response.Write "<select name=MoveNum size=1><option value=0>向下移动</option>"
  593. For i = 1 To DownMoveNum
  594. Response.Write "<option value=" & i & ">" & i & "</option>"
  595. Next
  596. Response.Write "</select><input name='ChannelID' type='hidden' id='ChannelID' value='" & ChannelID & "'>"
  597. Response.Write "<input type=hidden name=ClassID value=" & rsClass("t_classid") & ">&nbsp;<input type=submit name=Submit value=修改>"
  598. Response.Write "</td></form>"
  599. Else
  600. Response.Write "<td width='150'>&nbsp;</td>"
  601. End If
  602. trs.Close
  603. Else
  604. Response.Write "<td colspan=2>&nbsp;</td>"
  605. End If
  606. Response.Write " <td>&nbsp;</td>"
  607. Response.Write " </tr>"
  608. UpMoveNum = 0
  609. DownMoveNum = 0
  610. rsClass.MoveNext
  611. Loop
  612. Response.Write "</table>"
  613. rsClass.Close
  614. Set rsClass = Nothing
  615. End Sub
  616. Sub Reset()
  617. %>
  618. <br>
  619. <table width='100%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor="#CCCCCC" class='border'>
  620. <tr class='title'>
  621. <td height='22' colspan='3' align='center' class="deviceTdTitle"><strong>复位所有<%=ChannelShortName%>菜单</strong></td>
  622. </tr>
  623. <tr class='deviceTd'>
  624. <td align='center'>
  625. <form name='form1' method='post' action='Admin_area.asp?Action=SaveReset'>
  626. <table width='80%' border='0' cellspacing='0' cellpadding='0'>
  627. <tr>
  628. <td height='150'><font color='#FF0000'><strong>注意:</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;如果选择复位所有菜单,则所有菜单都将作为一级菜单,这时您需要重新对各个菜单进行归属的基本设置。不要轻易使用该功能,仅在做出了错误的设置而无法复原菜单之间的关系和排序的时候使用。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;如果复位时存在着同名菜单,则系统会自动将目录名进行重命名。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;复位成功后,请记得一定要重新生成所有HTML的内容。 </td>
  629. </tr>
  630. </table>
  631. <input type='submit' name='Submit' value='复位所有菜单'> &nbsp; <input name='Cancel' type='button' id='Cancel' value=' 取 消 ' onClick="window.location.href='Admin_area.asp?ChannelID=<%=ChannelID%>'" style='cursor:hand;'>
  632. <input name='ChannelID' type='hidden' id='ChannelID' value='" & ChannelID & "'>
  633. </form></td>
  634. </tr>
  635. </table>
  636. <%
  637. End Sub
  638. Sub Unite()
  639. %>
  640. <br>
  641. <table width='100%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor="#CCCCCC" class='border'>
  642. <tr class='title'>
  643. <td height='22' colspan='3' align='center' class="deviceTdTitle"><strong><%=ChannelShortName%>菜单合并</strong></td>
  644. </tr>
  645. <tr class='deviceTd'>
  646. <td height='100'><form name='myform' method='post' action='Admin_area.asp' onSubmit='return ConfirmUnite();'>
  647. &nbsp;&nbsp;将菜单 <select name='ClassID' id='ClassID'><%=GetClass_Option(ChannelID, 0)%></select> &nbsp;&nbsp;合并到 <select name='TargetClassID' id='TargetClassID'><%=GetClass_Option(ChannelID, 0)%></select><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  648. <input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  649. <input name='Action' type='hidden' id='Action' value='SaveUnite'>
  650. <input type='submit' name='Submit' value=' 合并菜单 ' style='cursor:hand;'>
  651. &nbsp;&nbsp;<input name='Cancel' type='button' id='Cancel' value=' 取 消 ' onClick="window.location.href='Admin_area.asp?ChannelID=<%=ChannelID%>'" style='cursor:hand;'>
  652. </form> </td>
  653. </tr>
  654. <tr class='deviceTd'>
  655. <td height='60'><strong>注意事项:</strong><br>
  656. &nbsp;&nbsp;&nbsp;&nbsp;所有操作不可逆,请慎重操作!!!<br>
  657. &nbsp;&nbsp;&nbsp;&nbsp;不能在同一个菜单内进行操作,不能将一个菜单合并到其下属菜单中。目标菜单中不能含有子菜单。<br>
  658. &nbsp;&nbsp;&nbsp;&nbsp;合并后您所指定的菜单(或者包括其下属菜单)将被删除,所有<%=ChannelShortName%>将转移到目标菜单中。</td>
  659. </tr>
  660. </table>
  661. <script language='JavaScript' type='text/JavaScript'>
  662. function ConfirmUnite(){
  663. if (document.myform.ClassID.value==document.myform.TargetClassID.value){
  664. alert('请不要在相同菜单内进行操作!');
  665. document.myform.TargetClassID.focus();
  666. return false;}
  667. if (document.myform.TargetClassID.value==''){
  668. alert('目标菜单不能指定为含有子菜单的菜单!');
  669. document.myform.TargetClassID.focus();
  670. return false;}
  671. }
  672. </script>
  673. <%
  674. End Sub
  675. Sub ShowBatch()
  676. %>
  677. <form name='form1' method='post' action='Admin_area.asp'>
  678. <table width='100%' border='0' align='center' cellpadding='2' cellspacing='1' bgcolor="#CCCCCC" class='border'>
  679. <tr class='title'>
  680. <td height='22' colspan='3' align='center' class="deviceTdTitle"><strong>批量设置<%=ChannelShortName%>菜单属性</strong></td>
  681. </tr>
  682. <tr class='deviceTd'>
  683. <td width='200' valign='top'><font color='red'>提示:</font>可以按住“Shift”<br>或“Ctrl”键进行多个菜单的选择<br>
  684. <select name='ClassID' size='2' multiple style='height:380px;width:200px;'><%=GetClass_Option(ChannelID, 0)%></select><br><div align='center'>
  685. <input type='button' name='Submit' value=' 选定所有菜单 ' onclick='SelectAll()'><br>
  686. <input type='button' name='Submit' value='取消选定所有菜单' onclick='UnSelectAll()'></div></td>
  687. <td valign='top'><br>
  688. <table width='100%' border='0' align='center' cellpadding='5' cellspacing='1' class='border'><tr class='tdbg'><td height='100' valign='top'>
  689. <table width='99%' align='center' cellpadding='2' cellspacing='1' bgcolor='#FFFFFF'>
  690. <tr class='tdbg'>
  691. <td width='30' align='center'><input type='checkbox' name='ModifyOpenType' value='Yes'></td>
  692. <td width='300' class='tdbg5'><strong>打开方式:</strong></td>
  693. <td><input type='radio' name='OpenType' value='0' checked>在原窗口打开&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name='OpenType' type='radio' value='1'>在新窗口打开</td>
  694. </tr>
  695. <tr class='tdbg'>
  696. <td width='30' align='center'><input type='checkbox' name='ModifyEnableAdd' value='Yes'></td>
  697. <td width='300' class='tdbg5'><strong>有子菜单时是否可以在此菜单添加<%=ChannelShortName%>:</strong></td>
  698. <td><input name='EnableAdd' type='radio' value='True'>是&nbsp;&nbsp;&nbsp;&nbsp; <input type='radio' name='EnableAdd' value='False' checked>否</td>
  699. </tr>
  700. </table>
  701. </td></tr></table>
  702. <br><b>说明:</b><br>1、若要批量修改某个属性的值,请先选中其左侧的复选框,然后再设定属性值。<br>2、这里显示的属性值都是系统默认值,与所选菜单的已有属性无关<br>
  703. <p align='center'><input name='Action' type='hidden' id='Action' value='DoBatch'><input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  704. <input name='Submit' type='submit' value=' 执行批处理 ' style='cursor:hand;'>&nbsp;<input name='Cancel' type='button' id='Cancel' value=' 取 消 ' onClick="window.location.href='Admin_area.asp?ChannelID=<%=ChannelID%>'" style='cursor:hand;'></p> </td></tr></table>
  705. </form>
  706. <script language='javascript'>
  707. function SelectAll(){
  708. for(var i=0;i<document.form1.ClassID.length;i++){
  709. document.form1.ClassID.options[i].selected=true;}
  710. }
  711. function UnSelectAll(){
  712. for(var i=0;i<document.form1.ClassID.length;i++){
  713. document.form1.ClassID.options[i].selected=false;}
  714. }
  715. </script>
  716. <%
  717. Call WriteJS
  718. End Sub
  719. Sub Patch()
  720. %>
  721. <br>
  722. <table width='100%' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor="#CCCCCC" class='border'>
  723. <tr class='title'>
  724. <td height='22' colspan='3' align='center' class="deviceTdTitle"><strong>修复菜单结构</strong></td>
  725. </tr>
  726. <tr class='deviceTd'>
  727. <td align='center'>
  728. <form name='form1' method='post' action='Admin_area.asp?Action=DoPatch'>
  729. <table width='80%' border='0' cellspacing='0' cellpadding='0'>
  730. <tr>
  731. <td height='150'><br>当菜单出现排序错误或串位的情况时,使用此功能可以修复。本操作相当安全,不会给系统带来任何负面影响。<br><br>修复过程中请勿刷新页面! </td>
  732. </tr>
  733. </table>
  734. <input type='submit' name='Submit' value='开始修复'> &nbsp; <input name='Cancel' type='button' id='Cancel' value=' 取 消 ' onClick="window.location.href='Admin_area.asp?ChannelID=<%=ChannelID %>'" style='cursor:hand;'>
  735. <input name='ChannelID' type='hidden' id='ChannelID' value='<%=ChannelID%>'>
  736. </form></td>
  737. </tr>
  738. </table>
  739. <%
  740. End Sub
  741. Sub DoPatch()
  742. Dim rsClass, sql, PrevID, trs
  743. Set rsClass = Server.CreateObject("ADODB.Recordset")
  744. sql = "Select t_classid,RootID,OrderID,Depth,ParentID,ParentPath,Child,arrChildID,PrevID,NextID,ClassType,ParentDir,ClassDir,ClassPurview,ItemCount from t_area where ChannelID=" & ChannelID & " and ParentID=0 order by RootID"
  745. rsClass.Open sql, Conn, 1, 3
  746. If rsClass.BOF And rsClass.EOF Then
  747. rsClass.Close
  748. Set rsClass = Nothing
  749. Exit Sub
  750. End If
  751. PrevID = 0
  752. Do While Not rsClass.EOF
  753. rsClass("OrderID") = 0
  754. rsClass("Depth") = 0
  755. rsClass("ParentPath") = "0"
  756. rsClass("PrevID") = PrevID
  757. rsClass("NextID") = 0
  758. rsClass("arrChildID") = CStr(rsClass("t_classid"))
  759. If rsClass("ClassType") = 1 Then
  760. rsClass("ParentDir") = "/"
  761. End If
  762. If PrevID <> rsClass("t_classid") And PrevID > 0 Then
  763. Conn.Execute ("update t_area set NextID=" & rsClass("t_classid") & " where t_classid=" & PrevID & "")
  764. End If
  765. PrevID = rsClass("t_classid")
  766. rsClass.Update
  767. iOrderID = 1
  768. Call UpdateClass(rsClass("t_classid"), 1, "0", "/" & rsClass("ClassDir") & "/", rsClass("ClassPurview"))
  769. rsClass.MoveNext
  770. Loop
  771. rsClass.Close
  772. Set rsClass = Nothing
  773. Call WriteSuccessMsg("修复菜单结构成功!", ComeUrl)
  774. End Sub
  775. Sub UpdateClass(iParentID, iDepth, sParentPath, sParentDir, ClassPurview)
  776. Dim rsClass, sql, PrevID, ParentPath, trs, rsChild
  777. ParentPath = sParentPath & "," & iParentID
  778. sql = "Select t_classid,RootID,OrderID,Depth,ParentID,ParentPath,Child,arrChildID,PrevID,NextID,ClassType,ParentDir,ClassDir,ClassPurview,ItemCount from t_area where ChannelID=" & ChannelID & " and ParentID=" & iParentID & " order by OrderID"
  779. Set rsClass = Server.CreateObject("ADODB.Recordset")
  780. rsClass.Open sql, Conn, 1, 3
  781. If rsClass.BOF And rsClass.EOF Then
  782. Conn.Execute ("update t_area set Child=0 where t_classid=" & iParentID & "")
  783. Else
  784. Conn.Execute ("update t_area set Child=" & rsClass.RecordCount & " where t_classid=" & iParentID & "")
  785. PrevID = 0
  786. Do While Not rsClass.EOF
  787. Set rsChild = Server.CreateObject("adodb.recordset")
  788. rsChild.Open "select arrChildID from t_area where t_classid in (" & ParentPath & ")", Conn, 1, 3
  789. Do While Not rsChild.EOF
  790. rsChild(0) = rsChild(0) & "," & rsClass("t_classid")
  791. rsChild.Update
  792. rsChild.MoveNext
  793. Loop
  794. rsChild.Close
  795. Set rsChild = Nothing
  796. rsClass("OrderID") = iOrderID
  797. rsClass("Depth") = iDepth
  798. rsClass("ParentPath") = ParentPath
  799. rsClass("PrevID") = PrevID
  800. rsClass("NextID") = 0
  801. rsClass("arrChildID") = CStr(rsClass("t_classid"))
  802. If rsClass("ClassType") = 1 Then
  803. rsClass("ParentDir") = sParentDir
  804. End If
  805. If PrevID <> rsClass("t_classid") And PrevID > 0 Then
  806. Conn.Execute ("update t_area set NextID=" & rsClass("t_classid") & " where t_classid=" & PrevID & "")
  807. End If
  808. PrevID = rsClass("t_classid")
  809. rsClass.Update
  810. iOrderID = iOrderID + 1
  811. Call UpdateClass(rsClass("t_classid"), iDepth + 1, ParentPath, sParentDir & rsClass("ClassDir") & "/", rsClass("ClassPurview"))
  812. rsClass.MoveNext
  813. Loop
  814. End If
  815. rsClass.Close
  816. Set rsClass = Nothing
  817. End Sub
  818. Sub CheckClassDepth()
  819. Dim strSql
  820. strSql = "Select Depth from t_area Where ClassId=" & ParentID & ""
  821. End Sub
  822. Sub SaveAdd()
  823. Dim ClassID, ClassName, ClassType, LinkUrl, ClassDir, ClassPicUrl, Tips, ReadMe, Meta_Keywords, Meta_Description
  824. Dim ClassPurview, arrGroupID_Browse, arrGroupID_View, arrGroupID_Input, EnableComment, CheckComment
  825. Dim PresentExp, DefaultItemPoint, DefaultItemChargeType, DefaultItemPitchTime, DefaultItemReadTimes, DefaultItemDividePercent
  826. Dim OpenType, ShowOnTop, ShowOnIndex, IsElite, EnableAdd, EnableProtect, SkinID, TemplateID
  827. Dim MaxPerPage, DefaultItemSkin, DefaultItemTemplate, ItemListOrderType, ItemOpenType
  828. Dim sql, rs, trs, rsClass
  829. Dim RootID, ParentDepth, ParentPath, ParentStr, ParentName, MaxClassID, MaxRootID, arrChildID, ParentDir, PrevOrderID
  830. Dim PrevID, NextID, Child, strClassDir
  831. Dim ReleaseClassPoint, CommandClassPoint '在菜单下发布信息要扣除的会员点数和设置菜单推荐要扣除的会员点数
  832. ClassName = Trim(Request("ClassName"))
  833. ClassType = CLng(Trim(Request("ClassType")))
  834. LinkUrl = Trim(Request("LinkUrl"))
  835. ClassPicUrl = Trim(Request("ClassPicUrl"))
  836. Tips = Trim(Request("Tips"))
  837. ReadMe = Trim(Request("Readme"))
  838. OpenType = CLng(Trim(Request("OpenType")))
  839. EnableAdd = CBool(Trim(Request("EnableAdd")))
  840. If ClassName = "" Then
  841. FoundErr = True
  842. ErrMsg = ErrMsg & "<li>菜单名称不能为空!</li>"
  843. Else
  844. ClassName = ReplaceBadChar(ClassName)
  845. End If
  846. If ClassType > 1 Then
  847. If LinkUrl = "" Then
  848. FoundErr = True
  849. ErrMsg = ErrMsg & "<li>链接地址不能为空!</li>"
  850. End If
  851. End If
  852. If FoundErr = True Then
  853. Exit Sub
  854. End If
  855. Set trs = Conn.Execute("Select * from t_area Where ChannelID=" & ChannelID & " and ParentID=" & ParentID & " AND ClassName='" & ClassName & "'")
  856. If Not (trs.BOF And trs.EOF) Then
  857. FoundErr = True
  858. If ParentID = 0 Then
  859. ErrMsg = ErrMsg & "<li>已经存在一级菜单:" & ClassName & "</li>"
  860. Else
  861. ErrMsg = ErrMsg & "<li>“" & ParentName & "”中已经存在子菜单“" & ClassName & "”!</li>"
  862. End If
  863. End If
  864. trs.Close
  865. Set trs = Nothing
  866. If FoundErr = True Then
  867. Exit Sub
  868. End If
  869. Set rs = Conn.Execute("select Max(t_classid) from t_area")
  870. MaxClassID = rs(0)
  871. If IsNull(MaxClassID) Then
  872. MaxClassID = 0
  873. End If
  874. rs.Close
  875. Set rs = Nothing
  876. ClassID = MaxClassID + 1
  877. Set rs = Conn.Execute("select max(rootid) from t_area where ChannelID=" & ChannelID & "")
  878. MaxRootID = rs(0)
  879. If IsNull(MaxRootID) Then
  880. MaxRootID = 0
  881. End If
  882. rs.Close
  883. Set rs = Nothing
  884. RootID = MaxRootID + 1
  885. If ParentID > 0 Then
  886. Set rs = Conn.Execute("select * from t_area where t_classid=" & ParentID & "")
  887. If rs.BOF And rs.EOF Then
  888. FoundErr = True
  889. ErrMsg = ErrMsg & "<li>所属菜单已经被删除!</li>"
  890. rs.Close
  891. Set rs = Nothing
  892. Exit Sub
  893. End If
  894. If rs("ClassType") = 2 Then
  895. FoundErr = True
  896. ErrMsg = ErrMsg & "<li>不能指定外部菜单为所属菜单!</li>"
  897. rs.Close
  898. Set rs = Nothing
  899. Exit Sub
  900. End If
  901. RootID = rs("RootID")
  902. ParentName = rs("ClassName")
  903. ParentDepth = rs("Depth")
  904. ParentPath = rs("ParentPath") & "," & rs("t_classid") '得到此菜单的父级菜单路径
  905. Child = rs("Child")
  906. arrChildID = rs("arrChildID") & "," & ClassID
  907. ParentDir = rs("ParentDir") & rs("ClassDir") & "/"
  908. '更新本菜单的所有上级菜单的子菜单ID数组
  909. Set trs = Conn.Execute("Select t_classid,arrChildID from t_area where t_classid in (" & ParentPath & ")")
  910. Do While Not trs.EOF
  911. Conn.Execute ("update t_area set arrChildID='" & trs(1) & "," & ClassID & "' where t_classid=" & trs(0))
  912. trs.MoveNext
  913. Loop
  914. trs.Close
  915. If Child > 0 Then
  916. Dim rsPrevOrderID
  917. '得到父菜单的所有子菜单中最后一个菜单的OrderID
  918. Set rsPrevOrderID = Conn.Execute("select Max(OrderID) from t_area where t_classid in ( " & arrChildID & ")")
  919. PrevOrderID = rsPrevOrderID(0)
  920. Set rsPrevOrderID = Nothing
  921. '得到本菜单的上一个菜单ID
  922. Set trs = Conn.Execute("select t_ClassID from t_area where ChannelID=" & ChannelID & " and ParentID=" & ParentID & " order by OrderID desc limit 1")
  923. PrevID = trs(0)
  924. trs.Close
  925. Else
  926. PrevOrderID = rs("OrderID")
  927. PrevID = 0
  928. End If
  929. rs.Close
  930. Set rs = Nothing
  931. Else
  932. If MaxRootID > 0 Then
  933. Set trs = Conn.Execute("Select t_classid from t_area where ChannelID=" & ChannelID & " and RootID=" & MaxRootID & " and Depth=0")
  934. PrevID = trs(0)
  935. trs.Close
  936. Else
  937. PrevID = 0
  938. End If
  939. PrevOrderID = 0
  940. ParentPath = "0"
  941. If ClassType = 1 Then
  942. ParentDir = "/"
  943. Else
  944. ParentDir = ""
  945. End If
  946. End If
  947. sql = "Select * from t_area where ChannelID=" & ChannelID & " order by t_classid desc limit 1"
  948. Set rsClass = Server.CreateObject("adodb.recordset")
  949. rsClass.Open sql, Conn, 1, 3
  950. rsClass.addnew
  951. rsClass("ChannelID") = ChannelID
  952. rsClass("t_classid") = ClassID
  953. rsClass("RootID") = RootID
  954. rsClass("ParentID") = ParentID
  955. If ParentID > 0 Then
  956. rsClass("Depth") = ParentDepth + 1
  957. Else
  958. rsClass("Depth") = 0
  959. End If
  960. rsClass("ParentPath") = ParentPath
  961. rsClass("OrderID") = PrevOrderID
  962. rsClass("Child") = 0
  963. rsClass("PrevID") = PrevID
  964. rsClass("NextID") = 0
  965. rsClass("arrChildID") = ClassID
  966. rsClass("ItemCount") = 0
  967. rsClass("ClassName") = ClassName
  968. rsClass("ClassType") = ClassType
  969. If ClassType > 1 Then
  970. rsClass("LinkUrl") = LinkUrl
  971. Else
  972. rsClass("LinkUrl") = ""
  973. End If
  974. rsClass("ClassPicUrl") = ClassPicUrl
  975. rsClass("Tips") = Tips
  976. rsClass("Readme") = ReadMe
  977. rsClass("OpenType") = OpenType
  978. rsClass("EnableAdd") = EnableAdd
  979. rsClass.Update
  980. rsClass.Close
  981. Set rsClass = Nothing
  982. '更新与本菜单同一父菜单的上一个菜单的“NextID”字段值
  983. If PrevID > 0 Then
  984. Conn.Execute ("update t_area set NextID=" & ClassID & " where t_classid=" & PrevID)
  985. End If
  986. If ParentID > 0 Then
  987. '更新其父类的子菜单数
  988. Conn.Execute ("update t_area set child=child+1 where t_classid=" & ParentID)
  989. '更新该菜单排序以及大于本需要和同在本分类下的菜单排序序号
  990. Conn.Execute ("update t_area set OrderID=OrderID+1 where ChannelID=" & ChannelID & " and RootID=" & RootID & " and OrderID>" & PrevOrderID)
  991. Conn.Execute ("update t_area set OrderID=" & PrevOrderID & "+1 where t_classid=" & ClassID)
  992. End If
  993. Call CloseConn
  994. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID
  995. End Sub
  996. Sub SaveModify()
  997. Dim ClassID, ClassName, ClassType, LinkUrl, ClassPicUrl, Tips, ReadMe, Meta_Keywords, Meta_Description
  998. Dim ClassPurview, arrGroupID_Browse, arrGroupID_View, arrGroupID_Input, EnableComment, CheckComment
  999. Dim PresentExp, DefaultItemPoint, DefaultItemChargeType, DefaultItemPitchTime, DefaultItemReadTimes, DefaultItemDividePercent
  1000. Dim OpenType, ShowOnTop, ShowOnIndex, IsElite, EnableAdd, EnableProtect, SkinID, TemplateID
  1001. Dim MaxPerPage, DefaultItemSkin, DefaultItemTemplate, ItemListOrderType, ItemOpenType
  1002. Dim sql, rsClass, i, trs
  1003. Dim ReleaseClassPoint, CommandClassPoint '在菜单下发布信息要扣除的会员点数和设置菜单推荐要扣除的会员点数
  1004. ClassID = Trim(Request("ClassID"))
  1005. If ClassID = "" Then
  1006. FoundErr = True
  1007. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  1008. Else
  1009. ClassID = CLng(classid)
  1010. End If
  1011. ClassName = Trim(Request("ClassName"))
  1012. ClassType = CLng(Trim(Request("ClassType")))
  1013. LinkUrl = Trim(Request("LinkUrl"))
  1014. ClassPicUrl = Trim(Request("ClassPicUrl"))
  1015. Tips = Trim(Request("Tips"))
  1016. ReadMe = Trim(Request("Readme"))
  1017. OpenType = CLng(Trim(Request("OpenType")))
  1018. EnableAdd = CBool(Trim(Request("EnableAdd")))
  1019. If ClassName = "" Then
  1020. FoundErr = True
  1021. ErrMsg = ErrMsg & "<li>菜单名称不能为空!</li>"
  1022. Else
  1023. ClassName = ReplaceBadChar(ClassName)
  1024. End If
  1025. If ClassType > 1 Then
  1026. If LinkUrl = "" Then
  1027. FoundErr = True
  1028. ErrMsg = ErrMsg & "<li>链接地址不能为空!</li>"
  1029. End If
  1030. End If
  1031. If FoundErr = True Then
  1032. Exit Sub
  1033. End If
  1034. sql = "select * from t_area where t_classid=" & ClassID
  1035. Set rsClass = Server.CreateObject("Adodb.recordset")
  1036. rsClass.Open sql, Conn, 1, 3
  1037. If rsClass.BOF And rsClass.EOF Then
  1038. FoundErr = True
  1039. ErrMsg = ErrMsg & "<li>找不到指定的菜单!</li>"
  1040. rsClass.Close
  1041. Set rsClass = Nothing
  1042. Exit Sub
  1043. End If
  1044. rsClass("ClassName") = ClassName
  1045. rsClass("ClassType") = ClassType
  1046. rsClass("LinkUrl") = LinkUrl
  1047. rsClass("ClassPicUrl") = ClassPicUrl
  1048. rsClass("Tips") = Tips
  1049. rsClass("Readme") = ReadMe
  1050. rsClass("OpenType") = OpenType
  1051. rsClass("EnableAdd") = EnableAdd
  1052. rsClass.Update
  1053. rsClass.Close
  1054. Set rsClass = Nothing
  1055. If FoundErr = True Then Exit Sub
  1056. Call CloseConn
  1057. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID
  1058. End Sub
  1059. Sub DeleteClass()
  1060. Dim sql, rsClass, trs, PrevID, NextID, ClassID, arrChildID, RootID, OrderID, strMsg, strListPath
  1061. ClassID = Trim(Request("ClassID"))
  1062. If ClassID = "" Then
  1063. FoundErr = True
  1064. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  1065. Exit Sub
  1066. Else
  1067. ClassID = CLng(classid)
  1068. End If
  1069. sql = "Select t_classid,RootID,Depth,ParentID,arrChildID,Child,PrevID,NextID,OrderID,ClassType,ParentDir,ParentPath,ClassDir from t_area where t_classid=" & ClassID
  1070. Set rsClass = Conn.Execute(sql)
  1071. If rsClass.BOF And rsClass.EOF Then
  1072. FoundErr = True
  1073. ErrMsg = ErrMsg & "<li>菜单不存在,或者已经被删除</li>"
  1074. rsClass.Close
  1075. Set rsClass = Nothing
  1076. Exit Sub
  1077. End If
  1078. PrevID = rsClass("PrevID")
  1079. NextID = rsClass("NextID")
  1080. arrChildID = rsClass("arrChildID")
  1081. RootID = rsClass("RootID")
  1082. OrderID = rsClass("OrderID")
  1083. If rsClass("Depth") > 0 Then
  1084. Conn.Execute ("update t_area set child=child-1 where t_classid=" & rsClass("ParentID"))
  1085. '更新此菜单的原来所有上级菜单的子菜单ID数组
  1086. Set trs = Conn.Execute("Select t_classid,arrChildID from t_area where t_classid in (" & rsClass("ParentPath") & ")")
  1087. Do While Not trs.EOF
  1088. Conn.Execute ("update t_area set arrChildID='" & RemoveClassID(trs(1), arrChildID) & "' where t_classid=" & trs(0))
  1089. trs.MoveNext
  1090. Loop
  1091. trs.Close
  1092. '更新与此菜单同根且排序在其之下的菜单
  1093. Conn.Execute ("update t_area set OrderID=OrderID-" & UBound(Split(arrChildID, ",")) + 1 & " where ChannelID=" & ChannelID & " and RootID=" & RootID & " and OrderID>" & OrderID)
  1094. End If
  1095. '修改上一菜单的NextID和下一菜单的PrevID
  1096. If PrevID > 0 Then
  1097. Conn.Execute "update t_area set NextID=" & NextID & " where t_classid=" & PrevID
  1098. End If
  1099. If NextID > 0 Then
  1100. Conn.Execute "update t_area set PrevID=" & PrevID & " where t_classid=" & NextID
  1101. End If
  1102. rsClass.Close
  1103. Set rsClass = Nothing
  1104. '删除本菜单(包括子菜单)
  1105. Conn.Execute ("delete from t_area where ChannelID=" & ChannelID & " and t_ClassID in (" & arrChildID & ")")
  1106. If FoundErr <> True Then
  1107. Call CloseConn
  1108. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID
  1109. End If
  1110. End Sub
  1111. Sub DelClassDir(DirName)
  1112. On Error Resume Next
  1113. If ObjInstalled_FSO = False Or Trim(DirName) = "" Then Exit Sub
  1114. If fso.FolderExists(Server.MapPath(DirName)) Then
  1115. fso.DeleteFolder Server.MapPath(DirName)
  1116. If Err Then
  1117. Err.Clear
  1118. FoundErr = True
  1119. ErrMsg = ErrMsg & "<li>菜单目录无法自动删除!可能此目录中的文件正在使用中!请稍后使用FTP手动删除此目录。</li>"
  1120. End If
  1121. End If
  1122. End Sub
  1123. Sub ClearClass()
  1124. Dim rsClass, SuccessMsg, ClassID
  1125. ClassID = Trim(Request("ClassID"))
  1126. If ClassID = "" Then
  1127. FoundErr = True
  1128. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  1129. Exit Sub
  1130. Else
  1131. ClassID = CLng(classid)
  1132. End If
  1133. Set rsClass = Conn.Execute("select arrChildID,ParentDir,ClassDir,ClassType from t_area where t_classid=" & ClassID)
  1134. If rsClass.BOF And rsClass.EOF Then
  1135. FoundErr = True
  1136. ErrMsg = ErrMsg & "<li>菜单不存在,或者已经被删除</li>"
  1137. Else
  1138. Conn.Execute ("update " & SheetName & " set Deleted=" & True & " where t_classid in (" & rsClass(0) & ")")
  1139. SuccessMsg = "此菜单(包括子菜单)的所有" & ChannelShortName & "已经被移到回收站中!"
  1140. If rsClass(3) = 1 And UseCreateHTML > 0 Then
  1141. Select Case StructureType
  1142. Case 0, 1, 2
  1143. Call ClearDir(HtmlDir & rsClass(1) & rsClass(2))
  1144. Case 3, 4, 5
  1145. Call ClearDir(HtmlDir & "/" & rsClass(2))
  1146. Case Else
  1147. Call DelInfo(rsClass(0))
  1148. End Select
  1149. End If
  1150. End If
  1151. rsClass.Close
  1152. Set rsClass = Nothing
  1153. If FoundErr = True Then Exit Sub
  1154. Call UpdateChannelData(ChannelID)
  1155. Call ClearSiteCache(0)
  1156. If UseCreateHTML > 0 Then
  1157. SuccessMsg = SuccessMsg & "<br>本菜单(包括子菜单)下的所有HTML文件已经被删除!你需要重新生成相关文件。"
  1158. Call WriteSuccessMsg(SuccessMsg, ComeUrl)
  1159. Else
  1160. Call CloseConn
  1161. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID
  1162. End If
  1163. End Sub
  1164. Sub ClearDir(DirName)
  1165. On Error Resume Next
  1166. Dim tmpDir, theFolder, theSubFolder
  1167. tmpDir = Server.MapPath(DirName)
  1168. If Not fso.FolderExists(tmpDir) Then
  1169. Exit Sub
  1170. End If
  1171. fso.DeleteFile tmpDir & "/*.*"
  1172. Set theFolder = fso.GetFolder(tmpDir)
  1173. For Each theSubFolder In theFolder.SubFolders
  1174. fso.DeleteFile tmpDir & "/" & theSubFolder.name & "/*.*"
  1175. Next
  1176. End Sub
  1177. Sub SaveMove()
  1178. Dim tChannelID, ClassID, sql, rsClass, i, rsPrevOrderID
  1179. Dim rParentID
  1180. Dim trs, rs, strMsg
  1181. Dim ParentID, RootID, Depth, Child, ParentPath, ParentName, iParentPath, PrevOrderID, PrevID, NextID, ClassCount
  1182. Dim ClassName, ClassType, ParentDir, tParentDir, cParentDir, arrChildID, ClassDir, CurrentDir, TargetDir
  1183. tChannelID = Trim(Request("tChannelID"))
  1184. ClassID = Trim(Request("ClassID"))
  1185. If ClassID = "" Then
  1186. FoundErr = True
  1187. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  1188. Exit Sub
  1189. Else
  1190. ClassID = CLng(classid)
  1191. End If
  1192. sql = "select * from t_area where t_classid=" & ClassID
  1193. Set rsClass = Server.CreateObject("Adodb.recordset")
  1194. rsClass.Open sql, Conn, 1, 3
  1195. If rsClass.BOF And rsClass.EOF Then
  1196. FoundErr = True
  1197. ErrMsg = ErrMsg & "<li>找不到指定的菜单!</li>"
  1198. Else
  1199. Depth = rsClass("Depth")
  1200. Child = rsClass("Child")
  1201. RootID = rsClass("RootID")
  1202. ParentID = rsClass("ParentID")
  1203. ParentPath = rsClass("ParentPath")
  1204. PrevID = rsClass("PrevID")
  1205. NextID = rsClass("NextID")
  1206. ClassName = rsClass("ClassName")
  1207. arrChildID = rsClass("arrChildID")
  1208. ParentDir = rsClass("ParentDir")
  1209. ClassDir = rsClass("ClassDir")
  1210. ClassType = rsClass("ClassType")
  1211. End If
  1212. rsClass.Close
  1213. Set rsClass = Nothing
  1214. rParentID = CLng(Trim(Request("ParentID")))
  1215. If tChannelID = ChannelID Then
  1216. If rParentID = ClassID Then
  1217. FoundErr = True
  1218. ErrMsg = ErrMsg & "<li>所属菜单不能为自己!</li>"
  1219. Else
  1220. If rParentID = ParentID Then
  1221. FoundErr = True
  1222. ErrMsg = ErrMsg & "<li>目标菜单与当前父菜单相同,无需移动!</li>"
  1223. End If
  1224. End If
  1225. End If
  1226. If FoundErr = True Then Exit Sub
  1227. If rParentID > 0 Then
  1228. Set trs = Conn.Execute("Select t_classid from t_area where ChannelID=" & tChannelID & " and ClassType=1 and t_ClassID=" & rParentID)
  1229. If trs.BOF And trs.EOF Then
  1230. FoundErr = True
  1231. ErrMsg = ErrMsg & "<li>不能指定外部菜单为所属菜单</li>"
  1232. End If
  1233. trs.Close
  1234. Set trs = Nothing
  1235. If FoundInArr(arrChildID, rParentID, ",") = True Then
  1236. FoundErr = True
  1237. ErrMsg = ErrMsg & "<li>不能指定该菜单的下属菜单作为所属菜单</li>"
  1238. End If
  1239. End If
  1240. '检查目标菜单的子菜单中是否已经存在与此菜单名称相同的菜单
  1241. Set trs = Conn.Execute("Select t_classid,ClassDir from t_area where ChannelID=" & tChannelID & " and ParentID=" & rParentID & " and ClassName='" & ClassName & "'")
  1242. If Not (trs.BOF And trs.EOF) Then
  1243. FoundErr = True
  1244. ErrMsg = ErrMsg & "<li>目标菜单的子菜单中已经存在与此菜单名称相同的菜单。"
  1245. End If
  1246. Set trs = Nothing
  1247. If StructureType <= 1 Then
  1248. '检查目标菜单的子菜单中是否已经存在与此菜单目录相同的菜单
  1249. If ClassType = 1 Then
  1250. Set trs = Conn.Execute("Select t_classid,ParentDir from t_area where ChannelID=" & tChannelID & " and ParentID=" & rParentID & " and ClassDir='" & ClassDir & "'")
  1251. If Not (trs.BOF And trs.EOF) Then
  1252. FoundErr = True
  1253. ErrMsg = ErrMsg & "<li>目标菜单的子菜单中已经存在与此菜单目录相同的菜单。"
  1254. End If
  1255. Set trs = Nothing
  1256. End If
  1257. End If
  1258. If FoundErr = True Then
  1259. Exit Sub
  1260. End If
  1261. ClassCount = UBound(Split(arrChildID, ",")) + 1 '得到要移动的菜单数
  1262. CurrentDir = HtmlDir & ParentDir & ClassDir '得到当前目录
  1263. '需要更新其原来所属菜单信息,包括深度、父级ID、菜单数、排序等数据
  1264. '需要更新当前所属菜单信息
  1265. Dim mrs, MaxRootID
  1266. Set mrs = Conn.Execute("select max(rootid) from t_area where ChannelID=" & tChannelID & "")
  1267. MaxRootID = mrs(0)
  1268. Set mrs = Nothing
  1269. If IsNull(MaxRootID) Then
  1270. MaxRootID = 0
  1271. End If
  1272. '更新原来同一父菜单的上一个菜单的NextID和下一个菜单的PrevID
  1273. If PrevID > 0 Then
  1274. Conn.Execute "update t_area set NextID=" & NextID & " where t_classid=" & PrevID
  1275. End If
  1276. If NextID > 0 Then
  1277. Conn.Execute "update t_area set PrevID=" & PrevID & " where t_classid=" & NextID
  1278. End If
  1279. If ParentID = 0 And rParentID = 0 Then '如果原来是一级分类跨频道移到另一频道一级分类
  1280. '得到上一个一级分类菜单
  1281. sql = "Select t_classid,NextID from t_area where ChannelID=" & tChannelID & " and RootID=" & MaxRootID & " and Depth=0"
  1282. Set rs = Server.CreateObject("Adodb.recordset")
  1283. rs.Open sql, Conn, 1, 3
  1284. If rs.BOF And rs.EOF Then
  1285. PrevID = 0
  1286. Else
  1287. PrevID = rs(0) '得到新的PrevID
  1288. rs(1) = ClassID '更新上一个一级分类菜单的NextID的值
  1289. rs.Update
  1290. End If
  1291. rs.Close
  1292. Set rs = Nothing
  1293. MaxRootID = MaxRootID + 1
  1294. '更新当前菜单数据
  1295. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",rootid=" & MaxRootID & ",PrevID=" & PrevID & ",NextID=0 where t_classid=" & ClassID)
  1296. '如果有下属菜单,则更新其下属菜单数据。下属菜单的排序不需考虑,只需更新下属菜单深度和一级排序ID(rootid)数据
  1297. If Child > 0 Then
  1298. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",rootid=" & MaxRootID & " where t_classid in (" & arrChildID & ")")
  1299. End If
  1300. ElseIf ParentID > 0 And rParentID = 0 Then '如果原来不是一级分类改成一级分类
  1301. '更新其原来所属菜单的菜单数,排序相当于剪枝而不需考虑
  1302. Conn.Execute ("update t_area set child=child-1 where t_classid=" & ParentID)
  1303. '更新此菜单的原来所有上级菜单的子菜单ID数组
  1304. Set trs = Conn.Execute("Select t_classid,arrChildID from t_area where t_classid in (" & ParentPath & ")")
  1305. Do While Not trs.EOF
  1306. Conn.Execute ("update t_area set arrChildID='" & RemoveClassID(trs(1), arrChildID) & "' where t_classid=" & trs(0))
  1307. trs.MoveNext
  1308. Loop
  1309. trs.Close
  1310. '得到上一个一级分类菜单
  1311. sql = "Select t_classid,NextID from t_area where ChannelID=" & tChannelID & " and RootID=" & MaxRootID & " and Depth=0"
  1312. Set rs = Server.CreateObject("Adodb.recordset")
  1313. rs.Open sql, Conn, 1, 3
  1314. If rs.BOF And rs.EOF Then
  1315. PrevID = 0
  1316. Else
  1317. PrevID = rs(0) '得到新的PrevID
  1318. rs(1) = ClassID '更新上一个一级分类菜单的NextID的值
  1319. rs.Update
  1320. End If
  1321. rs.Close
  1322. Set rs = Nothing
  1323. MaxRootID = MaxRootID + 1
  1324. tParentDir = "/"
  1325. '更新当前菜单数据
  1326. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",depth=0,OrderID=0,rootid=" & MaxRootID & ",parentid=0,ParentPath='0',PrevID=" & PrevID & ",NextID=0,ParentDir='" & tParentDir & "' where t_classid=" & ClassID)
  1327. '如果有下属菜单,则更新其下属菜单数据。下属菜单的排序不需考虑,只需更新下属菜单深度和一级排序ID(rootid)数据
  1328. If Child > 0 Then
  1329. ParentPath = ParentPath & ","
  1330. arrChildID = RemoveClassID(arrChildID, ClassID) '从子菜单数组中去掉当前菜单的ID
  1331. Set rs = Conn.Execute("select * from t_area where t_classid in (" & arrChildID & ")")
  1332. Do While Not rs.EOF
  1333. iParentPath = Replace(rs("ParentPath"), ParentPath, "")
  1334. cParentDir = tParentDir & Right(rs("ParentDir"), Len(rs("ParentDir")) - Len(ParentDir))
  1335. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",depth=depth-" & Depth & ",rootid=" & MaxRootID & ",ParentPath='0," & iParentPath & "',ParentDir='" & cParentDir & "' where t_classid=" & rs("t_ClassID"))
  1336. rs.MoveNext
  1337. Loop
  1338. rs.Close
  1339. Set rs = Nothing
  1340. End If
  1341. ElseIf ParentID > 0 And rParentID > 0 Then '如果是将一个分菜单移动到其他分菜单下
  1342. '更新其原父类的子菜单数
  1343. Conn.Execute ("update t_area set child=child-1 where t_classid=" & ParentID)
  1344. '更新此菜单的原来所有上级菜单的子菜单ID数组
  1345. Set trs = Conn.Execute("Select t_classid,arrChildID from t_area where t_classid in (" & ParentPath & ")")
  1346. Do While Not trs.EOF
  1347. Conn.Execute ("update t_area set arrChildID='" & RemoveClassID(trs(1), arrChildID) & "' where t_classid=" & trs(0))
  1348. trs.MoveNext
  1349. Loop
  1350. trs.Close
  1351. '获得目标菜单的相关信息
  1352. Set trs = Conn.Execute("select * from t_area where t_classid=" & rParentID)
  1353. tParentDir = trs("ParentDir") & trs("ClassDir") & "/"
  1354. If trs("Child") > 0 Then
  1355. '得到在目标菜单中与本菜单同级的最后一个菜单的ClassID,并更新其NextID的指向
  1356. Set rs = Conn.Execute("Select t_classid from t_area where ParentID=" & trs("t_ClassID") & " order by OrderID desc")
  1357. PrevID = rs(0) '得到新的PrevID
  1358. Conn.Execute ("update t_area set NextID=" & ClassID & " where t_classid=" & rs(0) & "")
  1359. Set rs = Nothing
  1360. '得到目标菜单的子菜单的最大OrderID
  1361. Set rsPrevOrderID = Conn.Execute("select Max(OrderID) from t_area where t_classid in (" & trs("arrChildID") & ")")
  1362. PrevOrderID = rsPrevOrderID(0)
  1363. Set rsPrevOrderID = Nothing
  1364. Else
  1365. PrevID = 0
  1366. PrevOrderID = trs("OrderID")
  1367. End If
  1368. '更新目标菜单的子菜单数
  1369. Conn.Execute ("update t_area set child=child+1 where t_classid=" & rParentID)
  1370. '更新目标菜单及目标菜单的所有上级菜单的子菜单ID数组
  1371. Set rs = Conn.Execute("Select t_classid,arrChildID from t_area where t_classid in (" & trs("ParentPath") & "," & trs("t_ClassID") & ")")
  1372. Do While Not rs.EOF
  1373. Conn.Execute ("update t_area set arrChildID='" & rs(1) & "," & arrChildID & "' where t_classid=" & rs(0))
  1374. rs.MoveNext
  1375. Loop
  1376. rs.Close
  1377. '在获得移动过来的菜单数后更新排序在指定菜单之后的菜单排序数据
  1378. Conn.Execute ("update t_area set OrderID=OrderID+" & ClassCount & "+1 where ChannelID=" & tChannelID & " and rootid=" & trs("rootid") & " and OrderID>" & PrevOrderID)
  1379. '更新当前菜单数据
  1380. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",depth=" & trs("depth") & "+1,OrderID=" & PrevOrderID & "+1,rootid=" & trs("rootid") & ",ParentID=" & rParentID & ",ParentPath='" & trs("ParentPath") & "," & trs("t_ClassID") & "',PrevID=" & PrevID & ",NextID=0,ParentDir='" & tParentDir & "' where t_classid=" & ClassID)
  1381. '如果当前菜单有子菜单则更新子菜单数据,深度为原来的相对深度加上当前所属菜单的深度
  1382. If Child > 0 Then
  1383. i = 1
  1384. arrChildID = RemoveClassID(arrChildID, ClassID) '从子菜单数组中去掉当前菜单的ID
  1385. ParentPath = ParentPath & ","
  1386. Set rs = Conn.Execute("select * from t_area where t_classid in (" & arrChildID & ") order by OrderID")
  1387. Do While Not rs.EOF
  1388. i = i + 1
  1389. iParentPath = trs("ParentPath") & "," & trs("t_ClassID") & "," & Replace(rs("ParentPath"), ParentPath, "")
  1390. cParentDir = tParentDir & Right(rs("ParentDir"), Len(rs("ParentDir")) - Len(ParentDir))
  1391. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",depth=depth-" & Depth & "+" & trs("depth") & "+1,OrderID=" & PrevOrderID & "+" & i & ",rootid=" & trs("rootid") & ",ParentPath='" & iParentPath & "',ParentDir='" & cParentDir & "' where t_classid=" & rs("t_ClassID"))
  1392. rs.MoveNext
  1393. Loop
  1394. rs.Close
  1395. End If
  1396. Set rs = Nothing
  1397. trs.Close
  1398. Set trs = Nothing
  1399. Else '如果原来是一级菜单改成其他菜单的下属菜单
  1400. '获得目标菜单的相关信息
  1401. Set trs = Conn.Execute("select * from t_area where t_classid=" & rParentID)
  1402. tParentDir = trs("ParentDir") & trs("ClassDir") & "/"
  1403. If trs("Child") > 0 Then
  1404. '得到在目标菜单中与本菜单同级的最后一个菜单的ClassID,并更新其NextID的指向
  1405. Set rs = Conn.Execute("Select t_classid from t_area where ParentID=" & trs("t_ClassID") & " order by OrderID desc")
  1406. PrevID = rs(0) '得到新的PrevID
  1407. Conn.Execute ("update t_area set NextID=" & ClassID & " where t_classid=" & rs(0) & "")
  1408. Set rs = Nothing
  1409. '得到目标菜单的子菜单的最大OrderID
  1410. Set rsPrevOrderID = Conn.Execute("select Max(OrderID) from t_area where t_classid in (" & trs("arrChildID") & ")")
  1411. PrevOrderID = rsPrevOrderID(0)
  1412. Set rsPrevOrderID = Nothing
  1413. Else
  1414. PrevID = 0
  1415. PrevOrderID = trs("OrderID")
  1416. End If
  1417. '更新目标菜单的子菜单数
  1418. Conn.Execute ("update t_area set child=child+1 where t_classid=" & rParentID)
  1419. '更新目标菜单及目标菜单的所有上级菜单的子菜单ID数组
  1420. Set rs = Conn.Execute("Select t_classid,arrChildID from t_area where t_classid in (" & trs("ParentPath") & "," & trs("t_ClassID") & ")")
  1421. Do While Not rs.EOF
  1422. Conn.Execute ("update t_area set arrChildID='" & rs(1) & "," & arrChildID & "' where t_classid=" & rs(0))
  1423. rs.MoveNext
  1424. Loop
  1425. rs.Close
  1426. '在获得移动过来的菜单数后更新排序在指定菜单之后的菜单排序数据
  1427. Conn.Execute ("update t_area set OrderID=OrderID+" & ClassCount & "+1 where ChannelID=" & tChannelID & " and rootid=" & trs("rootid") & " and OrderID>" & PrevOrderID)
  1428. '更新当前菜单数据
  1429. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",depth=depth+" & trs("depth") & "+1,OrderID=" & PrevOrderID + 1 & ",rootid=" & trs("rootid") & ",ParentPath='" & trs("ParentPath") & "," & trs("t_ClassID") & "',parentid=" & rParentID & ", PrevID=" & PrevID & ",NextID=0,ParentDir='" & tParentDir & "' where t_classid=" & ClassID & "")
  1430. '如果当前菜单有子菜单则更新子菜单数据,深度为原来的相对深度加上当前所属菜单的深度
  1431. Set rs = Conn.Execute("select * from t_area where ChannelID=" & ChannelID & " and rootid=" & RootID & " and ParentID>0 order by OrderID")
  1432. i = 1
  1433. Do While Not rs.EOF
  1434. i = i + 1
  1435. iParentPath = trs("ParentPath") & "," & trs("t_ClassID") & "," & Replace(rs("ParentPath"), "0,", "")
  1436. cParentDir = tParentDir & Right(rs("ParentDir"), Len(rs("ParentDir")) - Len(ParentDir))
  1437. Conn.Execute ("update t_area set ChannelID=" & tChannelID & ",depth=depth+" & trs("depth") & "+1,OrderID=" & PrevOrderID & "+" & i & ",rootid=" & trs("rootid") & ",ParentPath='" & iParentPath & "',ParentDir='" & cParentDir & "' where t_classid=" & rs("t_ClassID"))
  1438. rs.MoveNext
  1439. Loop
  1440. rs.Close
  1441. Set rs = Nothing
  1442. trs.Close
  1443. Set trs = Nothing
  1444. End If
  1445. Call CloseConn
  1446. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID
  1447. End Sub
  1448. Sub MoveUpFilesToOtherChannel(tChannelID, tClassID)
  1449. Dim rsBatchMove, sqlBatchMove, ArticlePath
  1450. Dim rsChannel, tChannelDir, tUploadDir
  1451. Set rsChannel = Conn.Execute("select ChannelDir,UploadDir from Channel where ChannelID=" & tChannelID & "")
  1452. If rsChannel.BOF And rsChannel.EOF Then
  1453. FoundErr = True
  1454. ErrMsg = ErrMsg & "<li>找不到目标频道!</li>"
  1455. Else
  1456. tChannelDir = rsChannel("ChannelDir")
  1457. tUploadDir = rsChannel("UploadDir")
  1458. End If
  1459. Set rsChannel = Nothing
  1460. If FoundErr = True Then Exit Sub
  1461. Select Case ModuleType
  1462. Case 1
  1463. sqlBatchMove = "select UploadFiles from Article where t_classid in (" & tClassID & ")"
  1464. Case 2
  1465. sqlBatchMove = "select SoftPicUrl,DownloadUrl from Soft where t_classid in (" & tClassID & ")"
  1466. Case 3
  1467. sqlBatchMove = "select PhotoThumb,PhotoUrl from Photo where t_classid in (" & tClassID & ")"
  1468. End Select
  1469. Set rsBatchMove = Conn.Execute(sqlBatchMove)
  1470. Do While Not rsBatchMove.EOF
  1471. Select Case ModuleType
  1472. Case 1
  1473. Call MoveUpFiles(rsBatchMove("UploadFiles") & "", tChannelDir & "/" & tUploadDir) '移动上传文件
  1474. Case 2
  1475. Call MoveUpPic(rsBatchMove("SoftPicUrl"), tChannelDir)
  1476. Call MoveSoftUpFiles(rsBatchMove("DownloadUrl"), tChannelDir & "/" & tUploadDir) '移动上传文件
  1477. Case 3
  1478. Call MovePhotoUpFiles("缩略图|" & rsBatchMove("PhotoThumb") & "$$$" & rsBatchMove("PhotoUrl"), tChannelDir & "/" & tUploadDir) '移动上传文件
  1479. End Select
  1480. rsBatchMove.MoveNext
  1481. Loop
  1482. rsBatchMove.Close
  1483. Set rsBatchMove = Nothing
  1484. End Sub
  1485. Sub MoveUpFiles(strFiles, strTargetDir)
  1486. On Error Resume Next
  1487. Dim strTrueFile, arrFiles, strTrueDir, i
  1488. If IsNull(strFiles) Or strFiles = "" Or strTargetDir = "" Then Exit Sub
  1489. If Not fso.FolderExists(Server.MapPath(InstallDir & strTargetDir)) Then fso.CreateFolder Server.MapPath(InstallDir & strTargetDir)
  1490. arrFiles = Split(strFiles, "|")
  1491. For i = 0 To UBound(arrFiles)
  1492. strTrueDir = Server.MapPath(InstallDir & strTargetDir & "/" & Left(arrFiles(i), InStr(arrFiles(i), "/")))
  1493. If Not fso.FolderExists(strTrueDir) Then fso.CreateFolder strTrueDir
  1494. strTrueFile = Server.MapPath(InstallDir & ChannelDir & "/" & UploadDir & "/" & arrFiles(i))
  1495. If fso.FileExists(strTrueFile) Then
  1496. fso.MoveFile strTrueFile, Server.MapPath(InstallDir & strTargetDir & "/" & arrFiles(i))
  1497. End If
  1498. Next
  1499. End Sub
  1500. Sub MoveSoftUpFiles(strFiles, strTargetDir)
  1501. On Error Resume Next
  1502. Dim arrSoftUrls, strTrueFile, arrUrls, strTrueDir, iTemp
  1503. If strFiles = "" Or strTargetDir = "" Then Exit Sub
  1504. If Not fso.FolderExists(Server.MapPath(InstallDir & strTargetDir)) Then fso.CreateFolder Server.MapPath(InstallDir & strTargetDir)
  1505. arrSoftUrls = Split(strFiles, "$$$")
  1506. For iTemp = 0 To UBound(arrSoftUrls)
  1507. arrUrls = Split(arrSoftUrls(iTemp), "|")
  1508. If UBound(arrUrls) = 1 Then
  1509. If Left(arrUrls(1), 1) <> "/" And InStr(arrUrls(1), "://") <= 0 Then
  1510. strTrueDir = Server.MapPath(InstallDir & strTargetDir & "/" & Left(arrUrls(1), InStr(arrUrls(1), "/")))
  1511. If Not fso.FolderExists(strTrueDir) Then fso.CreateFolder strTrueDir
  1512. strTrueFile = Server.MapPath(InstallDir & ChannelDir & "/" & UploadDir & "/" & arrUrls(1))
  1513. If fso.FileExists(strTrueFile) Then
  1514. fso.MoveFile strTrueFile, Server.MapPath(InstallDir & strTargetDir & "/" & arrUrls(1))
  1515. End If
  1516. End If
  1517. End If
  1518. Next
  1519. End Sub
  1520. Sub MoveUpPic(strFile, strTargetDir)
  1521. On Error Resume Next
  1522. Dim strTrueFile, strTrueDir
  1523. If strFile = "" Or strTargetDir = "" Then Exit Sub
  1524. If Not fso.FolderExists(Server.MapPath(InstallDir & strTargetDir)) Then fso.CreateFolder Server.MapPath(InstallDir & strTargetDir)
  1525. If Left(strFile, 1) <> "/" And InStr(strFile, "://") <= 0 Then
  1526. strTrueDir = Server.MapPath(InstallDir & strTargetDir & "/" & Left(strFile, InStrRev(strFile, "/")))
  1527. If Not fso.FolderExists(strTrueDir) Then fso.CreateFolder strTrueDir
  1528. strTrueFile = Server.MapPath(InstallDir & ChannelDir & "/" & strFile)
  1529. If fso.FileExists(strTrueFile) Then
  1530. fso.MoveFile strTrueFile, Server.MapPath(InstallDir & strTargetDir & "/" & strFile)
  1531. End If
  1532. End If
  1533. End Sub
  1534. Sub MovePhotoUpFiles(strFiles, strTargetDir)
  1535. On Error Resume Next
  1536. Dim arrPhotoUrls, strTrueFile, arrUrls, strTrueDir, iTemp
  1537. If strFiles = "" Or strTargetDir = "" Then Exit Sub
  1538. If Not fso.FolderExists(Server.MapPath(InstallDir & strTargetDir)) Then fso.CreateFolder Server.MapPath(InstallDir & strTargetDir)
  1539. arrPhotoUrls = Split(strFiles, "$$$")
  1540. For iTemp = 0 To UBound(arrPhotoUrls)
  1541. arrUrls = Split(arrPhotoUrls(iTemp), "|")
  1542. If UBound(arrUrls) = 1 Then
  1543. If Left(arrUrls(1), 1) <> "/" And InStr(arrUrls(1), "://") <= 0 Then
  1544. strTrueDir = Server.MapPath(InstallDir & strTargetDir & "/" & Left(arrUrls(1), InStr(arrUrls(1), "/")))
  1545. If Not fso.FolderExists(strTrueDir) Then fso.CreateFolder strTrueDir
  1546. strTrueFile = Server.MapPath(InstallDir & ChannelDir & "/" & UploadDir & "/" & arrUrls(1))
  1547. If fso.FileExists(strTrueFile) Then
  1548. fso.MoveFile strTrueFile, Server.MapPath(InstallDir & strTargetDir & "/" & arrUrls(1))
  1549. End If
  1550. End If
  1551. End If
  1552. Next
  1553. End Sub
  1554. Sub UpOrder()
  1555. Dim ClassID, sqlOrder, rsOrder, MoveNum, cRootID, i, rs, PrevID, NextID
  1556. ClassID = Trim(Request("ClassID"))
  1557. cRootID = Trim(Request("cRootID"))
  1558. MoveNum = Trim(Request("MoveNum"))
  1559. If ClassID = "" Then
  1560. FoundErr = True
  1561. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  1562. Else
  1563. ClassID = CLng(classid)
  1564. End If
  1565. If cRootID = "" Then
  1566. FoundErr = True
  1567. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1568. Else
  1569. cRootID = CLng(cRootID)
  1570. End If
  1571. If MoveNum = "" Then
  1572. FoundErr = True
  1573. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1574. Else
  1575. MoveNum = CLng(MoveNum)
  1576. If MoveNum = 0 Then
  1577. FoundErr = True
  1578. ErrMsg = ErrMsg & "<li>请选择要提升的数字!</li>"
  1579. End If
  1580. End If
  1581. If FoundErr = True Then
  1582. Exit Sub
  1583. End If
  1584. Dim mrs, MaxRootID, tRootID, tClassID, tOrderID, tPrevID
  1585. '得到本菜单的PrevID,NextID
  1586. Set rs = Conn.Execute("select PrevID,NextID from t_area where t_classid=" & ClassID)
  1587. PrevID = rs(0)
  1588. NextID = rs(1)
  1589. rs.Close
  1590. Set rs = Nothing
  1591. '先修改上一菜单的NextID和下一菜单的PrevID
  1592. If PrevID > 0 Then
  1593. Conn.Execute "update t_area set NextID=" & NextID & " where t_classid=" & PrevID
  1594. End If
  1595. If NextID > 0 Then
  1596. Conn.Execute "update t_area set PrevID=" & PrevID & " where t_classid=" & NextID
  1597. End If
  1598. '得到本频道最大RootID值
  1599. Set mrs = Conn.Execute("select max(rootid) from t_area where ChannelID=" & ChannelID & "")
  1600. MaxRootID = mrs(0) + 1
  1601. '先将当前菜单移至最后,包括子菜单
  1602. Conn.Execute ("update t_area set RootID=" & MaxRootID & " where ChannelID=" & ChannelID & " and RootID=" & cRootID)
  1603. '然后将位于当前菜单以上的菜单的RootID依次加一,范围为要提升的数字
  1604. sqlOrder = "select * from t_area where ChannelID=" & ChannelID & " and ParentID=0 and RootID<" & cRootID & " order by RootID desc"
  1605. Set rsOrder = Server.CreateObject("adodb.recordset")
  1606. rsOrder.Open sqlOrder, Conn, 1, 3
  1607. If rsOrder.BOF And rsOrder.EOF Then
  1608. Exit Sub '如果当前菜单已经在最上面,则无需移动
  1609. End If
  1610. i = 1
  1611. Do While Not rsOrder.EOF
  1612. tRootID = rsOrder("RootID") '得到要提升位置的RootID,包括子菜单
  1613. Conn.Execute ("update t_area set RootID=RootID+1 where ChannelID=" & ChannelID & " and RootID=" & tRootID)
  1614. i = i + 1
  1615. If i > MoveNum Then
  1616. tClassID = rsOrder("t_ClassID")
  1617. tPrevID = rsOrder("PrevID")
  1618. Exit Do
  1619. End If
  1620. rsOrder.MoveNext
  1621. Loop
  1622. rsOrder.Close
  1623. Set rsOrder = Nothing
  1624. '更新移动后本菜单的的PrevID和NextID,以及上一菜单的NextID和下一菜单的PrevID
  1625. Conn.Execute ("update t_area set PrevID=" & tPrevID & " where t_classid=" & ClassID)
  1626. Conn.Execute ("update t_area set NextID=" & tClassID & " where t_classid=" & ClassID)
  1627. Conn.Execute ("update t_area set PrevID=" & ClassID & " where t_classid=" & tClassID)
  1628. If tPrevID > 0 Then
  1629. Conn.Execute ("update t_area set NextID=" & ClassID & " where t_classid=" & tPrevID)
  1630. End If
  1631. '然后再将当前菜单从最后移到相应位置,包括子菜单
  1632. Conn.Execute ("update t_area set RootID=" & tRootID & " where ChannelID=" & ChannelID & " and RootID=" & MaxRootID)
  1633. Call CloseConn
  1634. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID & "&Action=Order"
  1635. End Sub
  1636. Sub DownOrder()
  1637. Dim ClassID, sqlOrder, rsOrder, MoveNum, cRootID, i, rs, PrevID, NextID
  1638. ClassID = Trim(Request("ClassID"))
  1639. cRootID = Trim(Request("cRootID"))
  1640. MoveNum = Trim(Request("MoveNum"))
  1641. If ClassID = "" Then
  1642. FoundErr = True
  1643. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  1644. Else
  1645. ClassID = CLng(classid)
  1646. End If
  1647. If cRootID = "" Then
  1648. FoundErr = True
  1649. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1650. Else
  1651. cRootID = CLng(cRootID)
  1652. End If
  1653. If MoveNum = "" Then
  1654. FoundErr = True
  1655. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1656. Else
  1657. MoveNum = CLng(MoveNum)
  1658. If MoveNum = 0 Then
  1659. FoundErr = True
  1660. ErrMsg = ErrMsg & "<li>请选择要提升的数字!</li>"
  1661. End If
  1662. End If
  1663. If FoundErr = True Then
  1664. Exit Sub
  1665. End If
  1666. Dim mrs, MaxRootID, tRootID, tClassID, tOrderID, tNextID
  1667. '得到本菜单的PrevID,NextID
  1668. Set rs = Conn.Execute("select PrevID,NextID from t_area where t_classid=" & ClassID)
  1669. PrevID = rs(0)
  1670. NextID = rs(1)
  1671. rs.Close
  1672. Set rs = Nothing
  1673. '先修改上一菜单的NextID和下一菜单的PrevID
  1674. If PrevID > 0 Then
  1675. Conn.Execute "update t_area set NextID=" & NextID & " where t_classid=" & PrevID
  1676. End If
  1677. If NextID > 0 Then
  1678. Conn.Execute "update t_area set PrevID=" & PrevID & " where t_classid=" & NextID
  1679. End If
  1680. '得到本频道最大RootID值
  1681. Set mrs = Conn.Execute("select max(rootid) from t_area where ChannelID=" & ChannelID & "")
  1682. MaxRootID = mrs(0) + 1
  1683. '先将当前菜单移至最后,包括子菜单
  1684. Conn.Execute ("update t_area set RootID=" & MaxRootID & " where ChannelID=" & ChannelID & " and RootID=" & cRootID)
  1685. '然后将位于当前菜单以下的菜单的RootID依次减一,范围为要下降的数字
  1686. sqlOrder = "select * from t_area where ChannelID=" & ChannelID & " and ParentID=0 and RootID>" & cRootID & " order by RootID"
  1687. Set rsOrder = Server.CreateObject("adodb.recordset")
  1688. rsOrder.Open sqlOrder, Conn, 1, 3
  1689. If rsOrder.BOF And rsOrder.EOF Then
  1690. Exit Sub '如果当前菜单已经在最下面,则无需移动
  1691. End If
  1692. i = 1
  1693. Do While Not rsOrder.EOF
  1694. tRootID = rsOrder("RootID") '得到要提升位置的RootID,包括子菜单
  1695. Conn.Execute ("update t_area set RootID=RootID-1 where ChannelID=" & ChannelID & " and RootID=" & tRootID)
  1696. i = i + 1
  1697. If i > MoveNum Then
  1698. tClassID = rsOrder("t_ClassID")
  1699. tNextID = rsOrder("NextID")
  1700. Exit Do
  1701. End If
  1702. rsOrder.MoveNext
  1703. Loop
  1704. rsOrder.Close
  1705. Set rsOrder = Nothing
  1706. '更新移动后本菜单的的PrevID和NextID,以及上一菜单的NextID和下一菜单的PrevID
  1707. Conn.Execute ("update t_area set PrevID=" & tClassID & " where t_classid=" & ClassID)
  1708. Conn.Execute ("update t_area set NextID=" & tNextID & " where t_classid=" & ClassID)
  1709. Conn.Execute ("update t_area set NextID=" & ClassID & " where t_classid=" & tClassID)
  1710. If tNextID > 0 Then
  1711. Conn.Execute ("update t_area set PrevID=" & ClassID & " where t_classid=" & tNextID)
  1712. End If
  1713. '然后再将当前菜单从最后移到相应位置,包括子菜单
  1714. Conn.Execute ("update t_area set RootID=" & tRootID & " where ChannelID=" & ChannelID & " and RootID=" & MaxRootID)
  1715. Call CloseConn
  1716. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID & "&Action=Order"
  1717. End Sub
  1718. Sub UpOrderN()
  1719. Dim sqlOrder, rsOrder, MoveNum, ClassID, i
  1720. Dim ParentID, OrderID, ParentPath, Child, PrevID, NextID
  1721. ClassID = Trim(Request("ClassID"))
  1722. MoveNum = Trim(Request("MoveNum"))
  1723. If ClassID = "" Then
  1724. FoundErr = True
  1725. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1726. Else
  1727. ClassID = CLng(classid)
  1728. End If
  1729. If MoveNum = "" Then
  1730. FoundErr = True
  1731. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1732. Else
  1733. MoveNum = CLng(MoveNum)
  1734. If MoveNum = 0 Then
  1735. FoundErr = True
  1736. ErrMsg = ErrMsg & "<li>请选择要提升的数字!</li>"
  1737. End If
  1738. End If
  1739. If FoundErr = True Then
  1740. Exit Sub
  1741. End If
  1742. Dim sql, rs, trs, AddOrderNum, tClassID, tOrderID, tPrevID
  1743. '要移动的菜单信息
  1744. Set rs = Conn.Execute("select ParentID,OrderID,ParentPath,Child,PrevID,NextID from t_area where t_classid=" & ClassID)
  1745. ParentID = rs(0)
  1746. OrderID = rs(1)
  1747. ParentPath = rs(2) & "," & ClassID
  1748. Child = rs(3)
  1749. PrevID = rs(4)
  1750. NextID = rs(5)
  1751. rs.Close
  1752. Set rs = Nothing
  1753. '获得要移动的菜单的所有子菜单数,然后加1(菜单本身),得到排序增加数(即其上菜单的OrderID增加数AddOrderNum)
  1754. If Child > 0 Then
  1755. Set rs = Conn.Execute("select count(*) from t_area where ParentPath like '%" & ParentPath & "%'")
  1756. AddOrderNum = CLng(rs(0)) + 1
  1757. rs.Close
  1758. Set rs = Nothing
  1759. Else
  1760. AddOrderNum = 1
  1761. End If
  1762. '先修改上一菜单的NextID和下一菜单的PrevID
  1763. If PrevID > 0 Then
  1764. Conn.Execute "update t_area set NextID=" & NextID & " where t_classid=" & PrevID
  1765. End If
  1766. If NextID > 0 Then
  1767. Conn.Execute "update t_area set PrevID=" & PrevID & " where t_classid=" & NextID
  1768. End If
  1769. '和该菜单同级且排序在其之上的菜单------更新其排序,范围为要提升的数字AddOrderNum
  1770. sql = "Select t_classid,OrderID,Child,ParentPath,PrevID,NextID from t_area where ParentID=" & ParentID & " and OrderID<" & OrderID & " order by OrderID desc"
  1771. Set rs = Server.CreateObject("adodb.recordset")
  1772. rs.Open sql, Conn, 1, 3
  1773. i = 0
  1774. Do While Not rs.EOF
  1775. tOrderID = rs(1)
  1776. Conn.Execute ("update t_area set OrderID=OrderID+" & AddOrderNum & " where t_classid=" & rs(0))
  1777. If rs(2) > 0 Then
  1778. Set trs = Conn.Execute("Select t_classid,OrderID from t_area where ParentPath like '%" & rs(3) & "," & rs(0) & "%' order by OrderID")
  1779. If Not (trs.BOF And trs.EOF) Then
  1780. Do While Not trs.EOF
  1781. Conn.Execute ("update t_area set OrderID=OrderID+" & AddOrderNum & " where t_classid=" & trs(0))
  1782. trs.MoveNext
  1783. Loop
  1784. End If
  1785. trs.Close
  1786. Set trs = Nothing
  1787. End If
  1788. i = i + 1
  1789. If i >= MoveNum Then
  1790. '获得最后一个提升序号的同级菜单信息
  1791. tClassID = rs(0)
  1792. tPrevID = rs(4)
  1793. Exit Do
  1794. End If
  1795. rs.MoveNext
  1796. Loop
  1797. rs.Close
  1798. Set rs = Nothing
  1799. '更新移动后本菜单的的PrevID和NextID,以及上一菜单的NextID和下一菜单的PrevID
  1800. Conn.Execute ("update t_area set PrevID=" & tPrevID & " where t_classid=" & ClassID)
  1801. Conn.Execute ("update t_area set NextID=" & tClassID & " where t_classid=" & ClassID)
  1802. Conn.Execute ("update t_area set PrevID=" & ClassID & " where t_classid=" & tClassID)
  1803. If tPrevID > 0 Then
  1804. Conn.Execute ("update t_area set NextID=" & ClassID & " where t_classid=" & tPrevID)
  1805. End If
  1806. '更新所要排序的菜单的序号
  1807. Conn.Execute ("update t_area set OrderID=" & tOrderID & " where t_classid=" & ClassID)
  1808. '如果有下属菜单,则更新其下属菜单排序
  1809. If Child > 0 Then
  1810. i = 1
  1811. Set rs = Conn.Execute("Select t_classid from t_area where ParentPath like '%" & ParentPath & "%' order by OrderID")
  1812. Do While Not rs.EOF
  1813. Conn.Execute ("update t_area set OrderID=" & tOrderID + i & " where t_classid=" & rs(0))
  1814. i = i + 1
  1815. rs.MoveNext
  1816. Loop
  1817. rs.Close
  1818. Set rs = Nothing
  1819. End If
  1820. Call CloseConn
  1821. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID & "&Action=OrderN"
  1822. End Sub
  1823. Sub DownOrderN()
  1824. Dim sqlOrder, rsOrder, MoveNum, ClassID, i
  1825. Dim ParentID, OrderID, ParentPath, Child, PrevID, NextID
  1826. ClassID = Trim(Request("ClassID"))
  1827. MoveNum = Trim(Request("MoveNum"))
  1828. If ClassID = "" Then
  1829. FoundErr = True
  1830. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1831. Exit Sub
  1832. Else
  1833. ClassID = CLng(classid)
  1834. End If
  1835. If MoveNum = "" Then
  1836. FoundErr = True
  1837. ErrMsg = ErrMsg & "<li>错误参数!</li>"
  1838. Exit Sub
  1839. Else
  1840. MoveNum = CLng(MoveNum)
  1841. If MoveNum = 0 Then
  1842. FoundErr = True
  1843. ErrMsg = ErrMsg & "<li>请选择要下降的数字!</li>"
  1844. Exit Sub
  1845. End If
  1846. End If
  1847. Dim sql, rs, trs, ii, tClassID, tNextID
  1848. '要移动的菜单信息
  1849. Set rs = Conn.Execute("select ParentID,OrderID,ParentPath,child,PrevID,NextID from t_area where t_classid=" & ClassID)
  1850. ParentID = rs(0)
  1851. OrderID = rs(1)
  1852. ParentPath = rs(2) & "," & ClassID
  1853. Child = rs(3)
  1854. PrevID = rs(4)
  1855. NextID = rs(5)
  1856. rs.Close
  1857. Set rs = Nothing
  1858. '先修改上一菜单的NextID和下一菜单的PrevID
  1859. If PrevID > 0 Then
  1860. Conn.Execute "update t_area set NextID=" & NextID & " where t_classid=" & PrevID
  1861. End If
  1862. If NextID > 0 Then
  1863. Conn.Execute "update t_area set PrevID=" & PrevID & " where t_classid=" & NextID
  1864. End If
  1865. '和该菜单同级且排序在其之下的菜单------更新其排序,范围为要下降的数字
  1866. sql = "Select t_classid,OrderID,child,ParentPath,PrevID,NextID from t_area where ParentID=" & ParentID & " and OrderID>" & OrderID & " order by OrderID"
  1867. Set rs = Server.CreateObject("adodb.recordset")
  1868. rs.Open sql, Conn, 1, 3
  1869. i = 0 '同级菜单
  1870. ii = 0 '同级菜单和子菜单
  1871. Do While Not rs.EOF
  1872. Conn.Execute ("update t_area set OrderID=" & OrderID + ii & " where t_classid=" & rs(0))
  1873. If rs(2) > 0 Then
  1874. Set trs = Conn.Execute("Select t_classid,OrderID from t_area where ParentPath like '%" & rs(3) & "," & rs(0) & "%' order by OrderID")
  1875. If Not (trs.BOF And trs.EOF) Then
  1876. Do While Not trs.EOF
  1877. ii = ii + 1
  1878. Conn.Execute ("update t_area set OrderID=" & OrderID + ii & " where t_classid=" & trs(0))
  1879. trs.MoveNext
  1880. Loop
  1881. End If
  1882. trs.Close
  1883. Set trs = Nothing
  1884. End If
  1885. ii = ii + 1
  1886. i = i + 1
  1887. If i >= MoveNum Then
  1888. '获得移动后本菜单的上一菜单的信息
  1889. tClassID = rs(0)
  1890. tNextID = rs(5)
  1891. Exit Do
  1892. End If
  1893. rs.MoveNext
  1894. Loop
  1895. rs.Close
  1896. Set rs = Nothing
  1897. '更新移动后本菜单的的PrevID和NextID,以及上一菜单的NextID和下一菜单的PrevID
  1898. Conn.Execute ("update t_area set PrevID=" & tClassID & " where t_classid=" & ClassID)
  1899. Conn.Execute ("update t_area set NextID=" & tNextID & " where t_classid=" & ClassID)
  1900. Conn.Execute ("update t_area set NextID=" & ClassID & " where t_classid=" & tClassID)
  1901. If tNextID > 0 Then
  1902. Conn.Execute ("update t_area set PrevID=" & ClassID & " where t_classid=" & tNextID)
  1903. End If
  1904. '更新所要排序的菜单的序号
  1905. Conn.Execute ("update t_area set OrderID=" & OrderID + ii & " where t_classid=" & ClassID)
  1906. '如果有下属菜单,则更新其下属菜单排序
  1907. If Child > 0 Then
  1908. i = 1
  1909. Set rs = Conn.Execute("Select t_classid from t_area where ParentPath like '%" & ParentPath & "%' order by OrderID")
  1910. Do While Not rs.EOF
  1911. Conn.Execute ("update t_area set OrderID=" & OrderID + ii + i & " where t_classid=" & rs(0))
  1912. i = i + 1
  1913. rs.MoveNext
  1914. Loop
  1915. rs.Close
  1916. Set rs = Nothing
  1917. End If
  1918. Call CloseConn
  1919. Response.Redirect "Admin_area.asp?ChannelID=" & ChannelID & "&Action=OrderN"
  1920. End Sub
  1921. Sub SaveReset()
  1922. Dim i, sql, rsClass, SuccessMsg, iCount, PrevID, NextID, ClassDir, trs
  1923. sql = "Select t_classid,ParentID,ClassType,ParentDir,ClassDir from t_area where ChannelID=" & ChannelID & " order by RootID,OrderID"
  1924. Set rsClass = Server.CreateObject("adodb.recordset")
  1925. rsClass.Open sql, Conn, 1, 1
  1926. iCount = rsClass.RecordCount
  1927. i = 1
  1928. PrevID = 0
  1929. Do While Not rsClass.EOF
  1930. rsClass.MoveNext
  1931. If rsClass.EOF Then
  1932. NextID = 0
  1933. Else
  1934. NextID = rsClass(0)
  1935. End If
  1936. rsClass.moveprevious
  1937. Set trs = Conn.Execute("select Count(t_classid) from t_area where ChannelID=" & ChannelID & " and ParentID=0 and t_ClassID<>" & rsClass(0) & " and ClassDir='" & rsClass(4) & "'")
  1938. If trs(0) > 1 Then
  1939. ClassDir = rsClass(4) & rsClass(0)
  1940. Else
  1941. ClassDir = rsClass(4)
  1942. End If
  1943. Set trs = Nothing
  1944. Conn.Execute ("update t_area set RootID=" & i & ",OrderID=0,ParentID=0,Child=0,ParentPath='0',Depth=0,PrevID=" & PrevID & ",NextID=" & NextID & ",arrChildID='" & rsClass(0) & "',ParentDir='/',ClassDir='" & ClassDir & "' where t_classid=" & rsClass(0))
  1945. PrevID = rsClass(0)
  1946. i = i + 1
  1947. rsClass.MoveNext
  1948. Loop
  1949. rsClass.Close
  1950. Set rsClass = Nothing
  1951. If FoundErr = True Then
  1952. Call WriteErrMsg(ErrMsg, ComeUrl)
  1953. Else
  1954. SuccessMsg = "复位成功!请返回<a href='Admin_area.asp'>菜单管理首页</a>做菜单的归属设置。"
  1955. Call WriteSuccessMsg(SuccessMsg, ComeUrl)
  1956. End If
  1957. End Sub
  1958. Sub ResetChildClass()
  1959. Dim ClassID, RootID, ParentPath, ParentDir, ClassDir
  1960. Dim sql, rsClass, SuccessMsg, iCount, PrevID, NextID, i, trs
  1961. ClassID = Trim(Request("ClassID"))
  1962. If ClassID = "" Then
  1963. FoundErr = True
  1964. ErrMsg = ErrMsg & "<li>参数不足!</li>"
  1965. Exit Sub
  1966. Else
  1967. ClassID = CLng(classid)
  1968. End If
  1969. Set rsClass = Conn.Execute("Select t_classid,RootID,ClassDir from t_area where ChannelID=" & ChannelID & " and ParentID=0 and t_ClassID=" & ClassID)
  1970. If rsClass.BOF And rsClass.EOF Then
  1971. FoundErr = True
  1972. ErrMsg = ErrMsg & "<li>找不到指定的菜单!</li>"
  1973. Else
  1974. RootID = rsClass(1)
  1975. ParentPath = "0," & rsClass(0)
  1976. ParentDir = "/" & rsClass(2) & "/"
  1977. End If
  1978. Set rsClass = Nothing
  1979. If FoundErr = True Then Exit Sub
  1980. sql = "Select t_classid,ParentID,ClassType,ParentDir,ClassDir from t_area where ChannelID=" & ChannelID & " and RootID=" & RootID & " and ParentID>0 order by OrderID"
  1981. Set rsClass = Server.CreateObject("adodb.recordset")
  1982. rsClass.Open sql, Conn, 1, 1
  1983. iCount = rsClass.RecordCount
  1984. i = 1
  1985. PrevID = 0
  1986. Do While Not rsClass.EOF
  1987. rsClass.MoveNext
  1988. If rsClass.EOF Then
  1989. NextID = 0
  1990. Else
  1991. NextID = rsClass(0)
  1992. End If
  1993. rsClass.moveprevious
  1994. Set trs = Conn.Execute("select Count(t_classid) from t_area where ChannelID=" & ChannelID & " and ParentID=" & ClassID & " and t_ClassID<>" & rsClass(0) & " and ClassDir='" & rsClass(4) & "'")
  1995. If trs(0) > 1 Then
  1996. ClassDir = rsClass(4) & rsClass(0)
  1997. Else
  1998. ClassDir = rsClass(4)
  1999. End If
  2000. Set trs = Nothing
  2001. Conn.Execute ("update t_area set OrderID=" & i & ",ParentID=" & ClassID & ",Child=0,ParentPath='" & ParentPath & "',Depth=1,PrevID=" & PrevID & ",NextID=" & NextID & ",arrChildID='" & rsClass(0) & "',ParentDir='" & ParentDir & "',ClassDir='" & ClassDir & "' where t_classid=" & rsClass(0))
  2002. PrevID = rsClass(0)
  2003. i = i + 1
  2004. rsClass.MoveNext
  2005. Loop
  2006. rsClass.Close
  2007. Set rsClass = Nothing
  2008. Conn.Execute ("update t_area set Child=" & i - 1 & " where t_classid=" & ClassID)
  2009. SuccessMsg = "复位成功!请返回<a href='Admin_area.asp'>菜单管理首页</a>做菜单的归属设置。"
  2010. Call WriteSuccessMsg(SuccessMsg, ComeUrl)
  2011. End Sub
  2012. Sub SaveUnite()
  2013. Dim ClassID, TargetClassID, ParentID, ParentPath, Depth, Child, PrevID, NextID, arrChildID
  2014. Dim rsClass, trs, i, SuccessMsg
  2015. ClassID = Trim(Request("ClassID"))
  2016. TargetClassID = Trim(Request("TargetClassID"))
  2017. If ClassID = "" Then
  2018. FoundErr = True
  2019. ErrMsg = ErrMsg & "<li>请指定要合并的菜单!</li>"
  2020. Else
  2021. ClassID = CLng(classid)
  2022. End If
  2023. If TargetClassID = "" Then
  2024. FoundErr = True
  2025. ErrMsg = ErrMsg & "<li>请指定目标菜单!</li>"
  2026. Else
  2027. TargetClassID = CLng(TargetClassID)
  2028. End If
  2029. If ClassID = TargetClassID Then
  2030. FoundErr = True
  2031. ErrMsg = ErrMsg & "<li>请不要在相同菜单内进行操作</li>"
  2032. End If
  2033. If FoundErr = True Then
  2034. Exit Sub
  2035. End If
  2036. '判断目标菜单是否为外部菜单及是否有子菜单
  2037. Set rsClass = Conn.Execute("Select t_classid,Child,ClassType from t_area where t_classid=" & TargetClassID)
  2038. If rsClass.BOF And rsClass.EOF Then
  2039. FoundErr = True
  2040. ErrMsg = ErrMsg & "<li>目标菜单不存在,可能已经被删除!</li>"
  2041. Else
  2042. If rsClass(1) > 0 Then
  2043. FoundErr = True
  2044. ErrMsg = ErrMsg & "<li>目标菜单中含有子菜单,不能合并!</li>"
  2045. End If
  2046. If rsClass(2) = 2 Then
  2047. FoundErr = True
  2048. ErrMsg = ErrMsg & "<li>目标菜单是外部菜单,不能合并!</li>"
  2049. End If
  2050. End If
  2051. Set rsClass = Nothing
  2052. If FoundErr = True Then
  2053. Exit Sub
  2054. End If
  2055. '得到当前菜单信息
  2056. Set rsClass = Conn.Execute("Select t_classid,ParentID,ParentPath,Depth,PrevID,NextID,arrChildID,ParentDir,ClassDir,ClassType from t_area where t_classid=" & ClassID)
  2057. If rsClass.BOF And rsClass.EOF Then
  2058. FoundErr = True
  2059. ErrMsg = ErrMsg & "<li>找不到指定的菜单,可能已经被删除!</li>"
  2060. rsClass.Close
  2061. Set rsClass = Nothing
  2062. Exit Sub
  2063. End If
  2064. ParentID = rsClass(1)
  2065. ParentPath = rsClass(2)
  2066. Depth = rsClass(3)
  2067. PrevID = rsClass(4)
  2068. NextID = rsClass(5)
  2069. arrChildID = rsClass(6)
  2070. '判断是否是合并到其下属菜单中
  2071. Set trs = Conn.Execute("Select t_classid from t_area where t_classid=" & TargetClassID & " and t_ClassID in (" & arrChildID & ")")
  2072. If Not (trs.BOF And trs.EOF) Then
  2073. FoundErr = True
  2074. ErrMsg = ErrMsg & "<li>不能将一个菜单合并到其下属子菜单中</li>"
  2075. End If
  2076. Set trs = Nothing
  2077. If FoundErr = True Then
  2078. Set rsClass = Nothing
  2079. Exit Sub
  2080. End If
  2081. Set rsClass = Nothing
  2082. Conn.Execute ("update t_dev_property set areaid = '" & TargetClassID & "' where areaid in (" & arrChildID & ")")
  2083. '先修改上一菜单的NextID和下一菜单的PrevID
  2084. If PrevID > 0 Then
  2085. Conn.Execute "update t_area set NextID=" & NextID & " where t_classid=" & PrevID
  2086. End If
  2087. If NextID > 0 Then
  2088. Conn.Execute "update t_area set PrevID=" & PrevID & " where t_classid=" & NextID
  2089. End If
  2090. '删除被合并菜单及其下属菜单
  2091. Conn.Execute ("delete from t_area where ChannelID=" & ChannelID & " and t_ClassID in (" & arrChildID & ")")
  2092. '更新其原来所属菜单的子菜单数,排序相当于剪枝而不需考虑
  2093. If ParentID > 0 Then
  2094. Conn.Execute ("update t_area set Child=Child-1 where t_classid=" & ParentID)
  2095. '更新此菜单的原来所有上级菜单的子菜单ID数组
  2096. Set trs = Conn.Execute("Select t_classid,arrChildID from t_area where t_classid in (" & ParentPath & ")")
  2097. Do While Not trs.EOF
  2098. Conn.Execute ("update t_area set arrChildID='" & RemoveClassID(trs(1), arrChildID) & "' where t_classid=" & trs(0))
  2099. trs.MoveNext
  2100. Loop
  2101. trs.Close
  2102. Set trs = Nothing
  2103. End If
  2104. SuccessMsg = "菜单合并成功!已经将被合并菜单及其下属子菜单的所有数据转入目标菜单中。<br><br>同时删除了被合并的菜单及其子菜单。"
  2105. Call WriteSuccessMsg(SuccessMsg, ComeUrl)
  2106. End Sub
  2107. Sub DoBatch()
  2108. Dim ClassID, ClassPurview, arrGroupID_Browse, arrGroupID_View, arrGroupID_Input, EnableComment, CheckComment
  2109. Dim PresentExp, DefaultItemPoint, DefaultItemChargeType, DefaultItemPitchTime, DefaultItemReadTimes, DefaultItemDividePercent
  2110. Dim OpenType, ShowOnTop, ShowOnIndex, IsElite, EnableAdd, EnableProtect, SkinID, TemplateID
  2111. Dim MaxPerPage, DefaultItemSkin, DefaultItemTemplate, ItemListOrderType, ItemOpenType
  2112. Dim sql, rsClass, i
  2113. Dim CommandClassPoint, ReleaseClassPoint
  2114. ClassID = Trim(Request("ClassID"))
  2115. OpenType = CLng(Trim(Request("OpenType")))
  2116. EnableAdd = CBool(Trim(Request("EnableAdd")))
  2117. If IsValidID(t_classid) = False Then
  2118. FoundErr = True
  2119. ErrMsg = ErrMsg & "<li>请先选定要批量修改设置的菜单!</li>"
  2120. Else
  2121. ClassID = ReplaceBadChar(t_classid)
  2122. End If
  2123. If FoundErr = True Then
  2124. Exit Sub
  2125. End If
  2126. sql = "select * from t_area where ChannelID=" & ChannelID & " and t_ClassID in (" & ClassID & ")"
  2127. Set rsClass = Server.CreateObject("Adodb.recordset")
  2128. rsClass.Open sql, Conn, 1, 3
  2129. Do While Not rsClass.EOF
  2130. If Trim(Request("ModifyOpenType")) = "Yes" Then rsClass("OpenType") = OpenType
  2131. If Trim(Request("ModifyEnableAdd")) = "Yes" Then rsClass("EnableAdd") = EnableAdd
  2132. rsClass.Update
  2133. rsClass.MoveNext
  2134. Loop
  2135. rsClass.Close
  2136. Set rsClass = Nothing
  2137. Dim msg
  2138. msg = "批量设置菜单属性成功!"
  2139. Call WriteSuccessMsg(msg, ComeUrl)
  2140. End Sub
  2141. Function RemoveClassID(ByVal arrClassID_Parent, ByVal arrClassID_Child)
  2142. Dim arrClassID, arrClassID2, arrClassID3, i, j, bFound
  2143. If IsNull(arrClassID_Parent) Then
  2144. RemoveClassID = ""
  2145. Exit Function
  2146. End If
  2147. If IsNull(arrClassID_Parent) Then
  2148. RemoveClassID = arrClassID_Parent
  2149. Exit Function
  2150. End If
  2151. If Trim(arrClassID_Parent) = Trim(arrClassID_Child) Then
  2152. RemoveClassID = ""
  2153. Exit Function
  2154. End If
  2155. arrClassID = Split(arrClassID_Parent, ",")
  2156. arrClassID3 = ""
  2157. If InStr(arrClassID_Child, ",") > 0 Then
  2158. arrClassID2 = Split(arrClassID_Child, ",")
  2159. For i = 0 To UBound(arrClassID)
  2160. bFound = False
  2161. For j = 0 To UBound(arrClassID2)
  2162. If CLng(arrClassID(i)) = CLng(arrClassID2(j)) Then
  2163. bFound = True
  2164. Exit For
  2165. End If
  2166. Next
  2167. If bFound = False Then
  2168. If arrClassID3 = "" Then
  2169. arrClassID3 = arrClassID(i)
  2170. Else
  2171. arrClassID3 = arrClassID3 & "," & arrClassID(i)
  2172. End If
  2173. End If
  2174. Next
  2175. Else
  2176. For i = 0 To UBound(arrClassID)
  2177. If CLng(arrClassID(i)) <> CLng(arrClassID_Child) Then
  2178. If arrClassID3 = "" Then
  2179. arrClassID3 = arrClassID(i)
  2180. Else
  2181. arrClassID3 = arrClassID3 & "," & arrClassID(i)
  2182. End If
  2183. End If
  2184. Next
  2185. End If
  2186. RemoveClassID = arrClassID3
  2187. End Function
  2188. Sub CreateJS_Class()
  2189. If ObjInstalled_FSO = False Then
  2190. Exit Sub
  2191. End If
  2192. Dim hf, strTopMenu, strClassTree, strNavigation, strOption, strForm, TopMenuType
  2193. Select Case TopMenuType
  2194. Case 0, 1
  2195. strTopMenu = GetRootClass_Menu()
  2196. Case 2
  2197. strTopMenu = "var h,w,l,t;" & vbCrLf
  2198. strTopMenu = strTopMenu & "var topMar = 1;" & vbCrLf
  2199. strTopMenu = strTopMenu & "var leftMar = -2;" & vbCrLf
  2200. strTopMenu = strTopMenu & "var space = 1;" & vbCrLf
  2201. strTopMenu = strTopMenu & "var isvisible;" & vbCrLf
  2202. strTopMenu = strTopMenu & "var MENU_SHADOW_COLOR='#999999';" & vbCrLf
  2203. strTopMenu = strTopMenu & "var global = window.document" & vbCrLf
  2204. strTopMenu = strTopMenu & "global.fo_currentMenu = null" & vbCrLf
  2205. strTopMenu = strTopMenu & "global.fo_shadows = new Array" & vbCrLf
  2206. strTopMenu = strTopMenu & GetJS_ClassMenu() & vbCrLf
  2207. strTopMenu = strTopMenu & "document.write(" & Chr(34) & GetRootClass(1) & Chr(34) & ");"
  2208. Case 3
  2209. strTopMenu = "document.write(" & Chr(34) & GetRootClass(2) & Chr(34) & ");"
  2210. End Select
  2211. If Not fso.FolderExists(Server.MapPath(InstallDir & ChannelDir & "/js")) Then
  2212. fso.CreateFolder Server.MapPath(InstallDir & ChannelDir & "/js")
  2213. End If
  2214. Call WriteToFile(InstallDir & ChannelDir & "/js/ShowClass_Menu.js", strTopMenu)
  2215. strClassTree = GetClass_Tree()
  2216. Call WriteToFile(InstallDir & ChannelDir & "/js/ShowClass_Tree.js", "document.write(""" & strClassTree & """);")
  2217. Select Case ClassGuideType
  2218. Case 1
  2219. strNavigation = "document.write(""" & GetClass_Navigation(1, 0, 2) & """);"
  2220. Case 2
  2221. strNavigation = "document.write(""" & GetClass_Navigation(1, 0, 3) & """);"
  2222. Case 3
  2223. strNavigation = "document.write(""" & GetClass_Navigation(1, 0, 4) & """);"
  2224. Case 4
  2225. strNavigation = "document.write(""" & GetClass_Navigation(1, 0, 5) & """);"
  2226. Case 5
  2227. strNavigation = "document.write(""" & GetClass_Navigation(1, 0, 6) & """);"
  2228. Case 6
  2229. strNavigation = "document.write(""" & GetClass_Navigation(1, 0, 7) & """);"
  2230. Case 7
  2231. strNavigation = "document.write(""" & GetClass_Navigation(1, 0, 8) & """);"
  2232. Case 8
  2233. strNavigation = "document.write(""" & GetClass_Navigation(2, 1, 2) & """);"
  2234. Case 9
  2235. strNavigation = "document.write(""" & GetClass_Navigation(2, 1, 3) & """);"
  2236. Case 10
  2237. strNavigation = "document.write(""" & GetClass_Navigation(2, 1, 4) & """);"
  2238. Case 11
  2239. strNavigation = "document.write(""" & GetClass_Navigation(2, 1, 5) & """);"
  2240. Case 12
  2241. strNavigation = "document.write(""" & GetClass_Navigation(2, 1, 6) & """);"
  2242. Case 13
  2243. strNavigation = "document.write(""" & GetClass_Navigation(2, 1, 7) & """);"
  2244. Case 14
  2245. strNavigation = "document.write(""" & GetClass_Navigation(2, 1, 8) & """);"
  2246. Case 15
  2247. strNavigation = "document.write(""" & GetClass_Navigation(2, 2, 2) & """);"
  2248. Case 16
  2249. strNavigation = "document.write(""" & GetClass_Navigation(2, 2, 3) & """);"
  2250. Case 17
  2251. strNavigation = "document.write(""" & GetClass_Navigation(2, 2, 4) & """);"
  2252. Case 18
  2253. strNavigation = "document.write(""" & GetClass_Navigation(2, 2, 5) & """);"
  2254. Case 19
  2255. strNavigation = "document.write(""" & GetClass_Navigation(2, 2, 6) & """);"
  2256. End Select
  2257. Call WriteToFile(InstallDir & ChannelDir & "/js/ShowClass_Navigation.js", strNavigation)
  2258. strOption = GetClass_Option(ChannelID, 0)
  2259. Call WriteToFile(InstallDir & ChannelDir & "/js/ShowClass_Option.js", "document.write(""" & strOption & """);")
  2260. strForm = ShowSearchForm(2, 0)
  2261. Call WriteToFile(InstallDir & ChannelDir & "/js/ShowSearchForm.js", "document.write(""" & strForm & """);")
  2262. End Sub
  2263. Function GetClass_Option(iChannelID, CurrentID)
  2264. Dim rsClass, sqlClass, strTemp, tmpDepth, i
  2265. Dim arrShowLine(20)
  2266. For i = 0 To UBound(arrShowLine)
  2267. arrShowLine(i) = False
  2268. Next
  2269. sqlClass = "Select t_classid,ClassName,ClassType,Depth,NextID from t_area where ChannelID=" & iChannelID & " order by RootID,OrderID"
  2270. Set rsClass = Conn.Execute(sqlClass)
  2271. If rsClass.BOF And rsClass.EOF Then
  2272. strTemp = "<option value=''>请先添加菜单</option>"
  2273. Else
  2274. strTemp = ""
  2275. Do While Not rsClass.EOF
  2276. tmpDepth = rsClass(3)
  2277. If rsClass(4) > 0 Then
  2278. arrShowLine(tmpDepth) = True
  2279. Else
  2280. arrShowLine(tmpDepth) = False
  2281. End If
  2282. strTemp = strTemp & "<option value='" & rsClass(0) & "'"
  2283. If CurrentID > 0 And rsClass(0) = CurrentID Then
  2284. strTemp = strTemp & " selected"
  2285. End If
  2286. strTemp = strTemp & ">"
  2287. If tmpDepth > 0 Then
  2288. For i = 1 To tmpDepth
  2289. strTemp = strTemp & "&nbsp;&nbsp;"
  2290. If i = tmpDepth Then
  2291. If rsClass(4) > 0 Then
  2292. strTemp = strTemp & "├&nbsp;"
  2293. Else
  2294. strTemp = strTemp & "└&nbsp;"
  2295. End If
  2296. Else
  2297. If arrShowLine(i) = True Then
  2298. strTemp = strTemp & "│"
  2299. Else
  2300. strTemp = strTemp & "&nbsp;"
  2301. End If
  2302. End If
  2303. Next
  2304. End If
  2305. strTemp = strTemp & rsClass(1)
  2306. If rsClass(2) = 2 Then
  2307. strTemp = strTemp & "(外)"
  2308. End If
  2309. strTemp = strTemp & "</option>"
  2310. rsClass.MoveNext
  2311. Loop
  2312. End If
  2313. rsClass.Close
  2314. Set rsClass = Nothing
  2315. GetClass_Option = strTemp
  2316. End Function
  2317. Function GetOrderTyOption(OrderType)
  2318. Dim strOrderType
  2319. strOrderType = strOrderType & "<option value='1'"
  2320. If OrderType = 1 Then strOrderType = strOrderType & " selected"
  2321. strOrderType = strOrderType & ">" & ChannelShortName & "ID(降序)</option>"
  2322. strOrderType = strOrderType & "<option value='2'"
  2323. If OrderType = 2 Then strOrderType = strOrderType & " selected"
  2324. strOrderType = strOrderType & ">" & ChannelShortName & "ID(升序)</option>"
  2325. strOrderType = strOrderType & "<option value='3'"
  2326. If OrderType = 3 Then strOrderType = strOrderType & " selected"
  2327. strOrderType = strOrderType & ">更新时间(降序)</option>"
  2328. strOrderType = strOrderType & "<option value='4'"
  2329. If OrderType = 4 Then strOrderType = strOrderType & " selected"
  2330. strOrderType = strOrderType & ">更新时间(升序)</option>"
  2331. strOrderType = strOrderType & "<option value='5'"
  2332. If OrderType = 5 Then strOrderType = strOrderType & " selected"
  2333. strOrderType = strOrderType & ">点击次数(降序)</option>"
  2334. strOrderType = strOrderType & "<option value='6'"
  2335. If OrderType = 6 Then strOrderType = strOrderType & " selected"
  2336. strOrderType = strOrderType & ">点击次数(升序)</option>"
  2337. GetOrderTyOption = strOrderType
  2338. End Function
  2339. Function GetOpenTyOption(OpenType)
  2340. Dim strOpenType
  2341. strOpenType = "<option value='0'"
  2342. If OpenType = 0 Then
  2343. strOpenType = strOpenType & " selected"
  2344. End If
  2345. strOpenType = strOpenType & ">" & "在原窗口打开</option><option value='1'"
  2346. If OpenType = 1 Then
  2347. strOpenType = strOpenType & " selected"
  2348. End If
  2349. strOpenType = strOpenType & ">" & "在新窗口打开</option>"
  2350. GetOpenTyOption = strOpenType
  2351. End Function
  2352. Function GetPath(ParentID, ParentPath)
  2353. Dim strPath, i
  2354. If ParentID <= 0 Then
  2355. GetPath = "无(作为一级菜单)"
  2356. Exit Function
  2357. End If
  2358. Dim rsParent, sqlParent
  2359. sqlParent = "Select * from t_area where t_classid in (" & ParentPath & ") order by Depth"
  2360. Set rsParent = Conn.Execute(sqlParent)
  2361. Do While Not rsParent.EOF
  2362. For i = 1 To rsParent("Depth")
  2363. strPath = strPath & "&nbsp;&nbsp;&nbsp;"
  2364. Next
  2365. If rsParent("Depth") > 0 Then
  2366. strPath = strPath & "└&nbsp;"
  2367. End If
  2368. strPath = strPath & rsParent("ClassName") & "<br>"
  2369. rsParent.MoveNext
  2370. Loop
  2371. rsParent.Close
  2372. Set rsParent = Nothing
  2373. GetPath = strPath
  2374. End Function
  2375. '=================================================
  2376. '函数名:GetRootClass_Menu
  2377. '作 用:得到菜单无级下拉菜单效果的HTML代码
  2378. '参 数:无
  2379. '返回值:菜单无级下拉菜单效果的HTML代码
  2380. '=================================================
  2381. Function GetRootClass_Menu()
  2382. Dim Class_MenuTitle, strJS, strClassUrl, XmlText
  2383. ClassLink = XmlText("BaseText", "ClassLink", "|")
  2384. pNum = 1
  2385. pNum2 = 0
  2386. strJS = "stm_bm(['uueoehr',400,'','" & strInstallDir & "images/blank.gif',0,'','',0,0,0,0,0,1,0,0]);" & vbCrLf
  2387. strJS = strJS & "stm_bp('p0',[0,4,0,0,2,2,0,0,100,'',-2,'',-2,90,0,0,'#000000','transparent','',3,0,0,'#000000']);" & vbCrLf
  2388. strJS = strJS & "stm_ai('p0i0',[0,'" & ClassLink & "','','',-1,-1,0,'','_self','','','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',1,'','',3,3,0,0,'#fffff7','#000000','#000000','#000000','9pt 宋体','9pt 宋体',0,0]);" & vbCrLf
  2389. If UseCreateHTML > 0 Then
  2390. strClassUrl = ChannelUrl & "/Index" & FileExt_Index
  2391. Else
  2392. strClassUrl = ChannelUrl & "/Index.asp"
  2393. End If
  2394. strJS = strJS & "stm_aix('p0i1','p0i0',[0,'" & ChannelName & "首页','','',-1,-1,0,'" & strClassUrl & "','_self','" & strClassUrl & "','','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',1,'','',3,3,0,0,'#fffff7','#ff0000','#000000','#cc0000','9pt 宋体','9pt 宋体']);" & vbCrLf
  2395. strJS = strJS & "stm_aix('p0i2','p0i0',[0,'" & ClassLink & "','','',-1,-1,0,'','_self','','','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',1,'','',3,3,0,0,'#fffff7','#000000','#000000','#000000','9pt 宋体','9pt 宋体',0,0]);" & vbCrLf
  2396. Dim sqlRoot, rsRoot, j
  2397. sqlRoot = "select * from t_area where ChannelID=" & ChannelID & " and Depth=0 and ShowOnTop=" & True & " order by RootID"
  2398. Set rsRoot = Conn.Execute(sqlRoot)
  2399. If Not (rsRoot.BOF And rsRoot.EOF) Then
  2400. j = 3
  2401. Do While Not rsRoot.EOF
  2402. If rsRoot("OpenType") = 0 Then
  2403. OpenTyClass = "_self"
  2404. Else
  2405. OpenTyClass = "_blank"
  2406. End If
  2407. If Trim(rsRoot("Tips")) <> "" Then
  2408. Class_MenuTitle = Replace(Replace(Replace(Replace(rsRoot("Tips"), "'", ""), """", ""), Chr(10), ""), Chr(13), "")
  2409. Else
  2410. Class_MenuTitle = ""
  2411. End If
  2412. If rsRoot("ClassType") = 1 Then
  2413. strClassUrl = GetClassUrl(rsRoot("ParentDir"), rsRoot("ClassDir"), rsRoot("ClassID"), rsRoot("ClassPurview"))
  2414. strJS = strJS & "stm_aix('p0i" & j & "','p0i0',[0,'" & rsRoot("ClassName") & "','','',-1,-1,0,'" & strClassUrl & "','" & OpenTyClass & "','" & strClassUrl & "','" & Class_MenuTitle & "','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',1,'','',3,3,0,0,'#fffff7','#ff0000','#000000','#cc0000','9pt 宋体','9pt 宋体']);" & vbCrLf
  2415. If rsRoot("Child") > 0 Then
  2416. strJS = strJS & GetClassMenu(rsRoot("ClassID"), 0)
  2417. End If
  2418. Else
  2419. strJS = strJS & "stm_aix('p0i" & j & "','p0i0',[0,'" & rsRoot("ClassName") & "','','',-1,-1,0,'" & rsRoot("LinkUrl") & "','" & OpenTyClass & "','" & rsRoot("LinkUrl") & "','" & Class_MenuTitle & "','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',1,'','',3,3,0,0,'#fffff7','#ff0000','#000000','#cc0000','9pt 宋体','9pt 宋体']);" & vbCrLf
  2420. End If
  2421. strJS = strJS & "stm_aix('p0i2','p0i0',[0,'" & ClassLink & "','','',-1,-1,0,'','_self','','','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',1,'','',3,3,0,0,'#fffff7','#000000','#000000','#000000','9pt 宋体','9pt 宋体',0,0]);" & vbCrLf
  2422. j = j + 1
  2423. rsRoot.MoveNext
  2424. If MaxPerLine > 0 Then
  2425. If (j - 2) Mod MaxPerLine = 0 And Not rsRoot.EOF Then
  2426. strJS = strJS & "stm_em();" & vbCrLf
  2427. strJS = strJS & "stm_bm(['uueoehr',400,'','" & strInstallDir & "images/blank.gif',0,'','',0,0,0,0,0,1,0,0]);" & vbCrLf
  2428. strJS = strJS & "stm_bp('p0',[0,4,0,0,2,2,0,0,100,'',-2,'',-2,90,0,0,'#000000','transparent','',3,0,0,'#000000']);" & vbCrLf
  2429. strJS = strJS & "stm_ai('p0i0',[0,'" & ClassLink & "','','',-1,-1,0,'','_self','','','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',1,'','',3,3,0,0,'#fffff7','#000000','#000000','#000000','9pt 宋体','9pt 宋体',0,0]);" & vbCrLf
  2430. End If
  2431. End If
  2432. Loop
  2433. End If
  2434. rsRoot.Close
  2435. Set rsRoot = Nothing
  2436. strJS = strJS & "stm_em();" & vbCrLf
  2437. GetRootClass_Menu = strJS
  2438. End Function
  2439. Function GetClassMenu(ID, ShowType)
  2440. Dim sqlClass, rsClass, Sub_MenuTitle, k, strJS, strClassUrl
  2441. strJS = ""
  2442. If pNum = 1 Then
  2443. strJS = strJS & "stm_bp('p" & pNum & "',[1,4,0,0,2,3,6,7,100,'progid:DXImageTransform.Microsoft.Fade(overlap=.5,enabled=0,Duration=0.43)',-2,'',-2,67,2,3,'#999999','#ffffff','',3,1,1,'#aca899']);" & vbCrLf
  2444. Else
  2445. If ShowType = 0 Then
  2446. strJS = strJS & "stm_bpx('p" & pNum & "','p" & pNum2 & "',[1,4,0,0,2,3,6]);" & vbCrLf
  2447. Else
  2448. strJS = strJS & "stm_bpx('p" & pNum & "','p" & pNum2 & "',[1,2,-2,-3,2,3,0]);" & vbCrLf
  2449. End If
  2450. End If
  2451. k = 0
  2452. sqlClass = "select * from t_area where ChannelID=" & ChannelID & " and ParentID=" & ID & " order by OrderID asc"
  2453. Set rsClass = Conn.Execute(sqlClass)
  2454. 'set rsClass=conn.execute("GetChildClass_Article_Menu " & ID)
  2455. Do While Not rsClass.EOF
  2456. If rsClass("OpenType") = 0 Then
  2457. OpenTyClass = "_self"
  2458. Else
  2459. OpenTyClass = "_blank"
  2460. End If
  2461. If Trim(rsClass("Tips")) <> "" Then
  2462. Sub_MenuTitle = Replace(Replace(Replace(Replace(rsClass("Tips"), "'", ""), """", ""), Chr(10), ""), Chr(13), "")
  2463. Else
  2464. Sub_MenuTitle = ""
  2465. End If
  2466. If rsClass("ClassType") = 1 Then
  2467. strClassUrl = GetClassUrl(rsClass("ParentDir"), rsClass("ClassDir"), rsClass("t_classid"), rsClass("ClassPurview"))
  2468. If rsClass("Child") > 0 Then
  2469. strJS = strJS & "stm_aix('p" & pNum & "i" & k & "','p" & pNum2 & "i0',[0,'" & rsClass("ClassName") & "','','',-1,-1,0,'" & strClassUrl & "','" & OpenTyClass & "','" & strClassUrl & "','" & Sub_MenuTitle & "','','',6,0,0,'" & strInstallDir & "images/arrow_r.gif','" & strInstallDir & "images/arrow_w.gif',7,7,0,0,1,'#ffffff',0,'#cccccc',0,'','',3,3,0,0,'#fffff7','#000000','#000000','#ffffff','9pt 宋体']);" & vbCrLf
  2470. pNum = pNum + 1
  2471. pNum2 = pNum2 + 1
  2472. strJS = strJS & GetClassMenu(rsClass("t_classid"), 1)
  2473. Else
  2474. strJS = strJS & "stm_aix('p" & pNum & "i" & k & "','p" & pNum2 & "i0',[0,'" & rsClass("ClassName") & "','','',-1,-1,0,'" & strClassUrl & "','" & OpenTyClass & "','" & strClassUrl & "','" & Sub_MenuTitle & "','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',0,'','',3,3,0,0,'#fffff7','#ff0000','#000000','#cc0000','9pt 宋体']);" & vbCrLf
  2475. End If
  2476. Else
  2477. strJS = strJS & "stm_aix('p" & pNum & "i" & k & "','p" & pNum2 & "i0',[0,'" & rsClass("ClassName") & "','','',-1,-1,0,'" & rsClass("LinkUrl") & "','" & OpenTyClass & "','" & rsClass("LinkUrl") & "','" & Sub_MenuTitle & "','','',0,0,0,'','',0,0,0,0,1,'#f1f2ee',1,'#cccccc',0,'','',3,3,0,0,'#fffff7','#ff0000','#000000','#cc0000','9pt 宋体']);" & vbCrLf
  2478. End If
  2479. k = k + 1
  2480. rsClass.MoveNext
  2481. Loop
  2482. rsClass.Close
  2483. Set rsClass = Nothing
  2484. strJS = strJS & "stm_ep();" & vbCrLf
  2485. GetClassMenu = strJS
  2486. End Function
  2487. Function GetJS_ClassMenu()
  2488. Dim sqlMenu, rsMenu, strMenu, PrevRootID, tmpDepth, i, strClassUrl
  2489. sqlMenu = "select * from t_area where ChannelID=" & ChannelID & " and Depth=1 order by RootID,OrderID"
  2490. Set rsMenu = Conn.Execute(sqlMenu)
  2491. If rsMenu.BOF And rsMenu.EOF Then
  2492. strMenu = "var menu0='没有任何子菜单';"
  2493. Else
  2494. strMenu = "var menu" & rsMenu("RootID") & "=" & Chr(34)
  2495. If rsMenu("ClassType") = 2 Then
  2496. strClassUrl = rsMenu("LinkUrl")
  2497. Else
  2498. strClassUrl = GetClassUrl(rsMenu("ParentDir"), rsMenu("ClassDir"), rsMenu("ClassID"), rsMenu("ClassPurview"))
  2499. End If
  2500. strMenu = strMenu & "&nbsp;<a style=font-size:9pt;line-height:14pt; href='" & strClassUrl & "'>" & rsMenu("ClassName") & "</a><br>"
  2501. PrevRootID = rsMenu("RootID")
  2502. rsMenu.MoveNext
  2503. Do While Not rsMenu.EOF
  2504. If rsMenu("RootID") <> PrevRootID Then
  2505. strMenu = strMenu & Chr(34) & ";" & vbCrLf & "var menu" & rsMenu("RootID") & "=" & Chr(34)
  2506. End If
  2507. If rsMenu("ClassType") = 2 Then
  2508. strClassUrl = rsMenu("LinkUrl")
  2509. Else
  2510. strClassUrl = GetClassUrl(rsMenu("ParentDir"), rsMenu("ClassDir"), rsMenu("ClassID"), rsMenu("ClassPurview"))
  2511. End If
  2512. strMenu = strMenu & "&nbsp;<a style=font-size:9pt;line-height:14pt; href='" & strClassUrl & "'>" & rsMenu("ClassName") & "</a><br>"
  2513. PrevRootID = rsMenu("RootID")
  2514. rsMenu.MoveNext
  2515. Loop
  2516. strMenu = strMenu & Chr(34) & ";" & vbCrLf
  2517. End If
  2518. rsMenu.Close
  2519. Set rsMenu = Nothing
  2520. GetJS_ClassMenu = strMenu
  2521. End Function
  2522. '=================================================
  2523. '函数名:GetRootClass
  2524. '作 用:显示一级菜单(无特殊效果)
  2525. '参 数:ShowType ----显示方式,1为普通下拉菜单式,2为纯文字式,无菜单效果
  2526. '=================================================
  2527. Function GetRootClass(ShowType)
  2528. Dim sqlRoot, rsRoot, strRoot, strClassUrl, iCount
  2529. ClassLink = XmlText("BaseText", "ClassLink", "|")
  2530. sqlRoot = "select * from t_area where ChannelID=" & ChannelID & " and ParentID=0 and ShowOnTop=" & True & " order by RootID"
  2531. Set rsRoot = Conn.Execute(sqlRoot)
  2532. If rsRoot.BOF And rsRoot.EOF Then
  2533. strRoot = "还没有任何菜单,请首先添加菜单。"
  2534. Else
  2535. If UseCreateHTML > 0 Then
  2536. strRoot = strRoot & "" & ClassLink & "<a href='" & ChannelUrl & "/Index" & FileExt_Index & "'>&nbsp;" & ChannelName & "首页&nbsp;</a>" & ClassLink & ""
  2537. Else
  2538. strRoot = strRoot & "" & ClassLink & "<a href='" & ChannelUrl & "/Index.asp'>&nbsp;" & ChannelName & "首页&nbsp;</a>" & ClassLink & ""
  2539. End If
  2540. Do While Not rsRoot.EOF
  2541. If rsRoot("ClassType") = 2 Then
  2542. strRoot = strRoot & "<a href='" & rsRoot("LinkUrl") & "' target='_blank'>&nbsp;" & rsRoot("ClassName") & "&nbsp;</a>" & ClassLink & ""
  2543. Else
  2544. strClassUrl = GetClassUrl(rsRoot("ParentDir"), rsRoot("ClassDir"), rsRoot("ClassID"), rsRoot("ClassPurview"))
  2545. strRoot = strRoot & "<a href='" & strClassUrl & "'"
  2546. If rsRoot("Child") > 0 And ShowType = 1 Then
  2547. strRoot = strRoot & " onMouseOver='ShowMenu(menu" & rsRoot("RootID") & ",100)'"
  2548. End If
  2549. strRoot = strRoot & ">&nbsp;" & rsRoot("ClassName") & "&nbsp;</a>" & ClassLink & ""
  2550. End If
  2551. rsRoot.MoveNext
  2552. iCount = iCount + 1
  2553. If iCount Mod MaxPerLine = 0 And Not rsRoot.EOF Then
  2554. strRoot = strRoot & "<br>" & ClassLink & ""
  2555. End If
  2556. Loop
  2557. End If
  2558. rsRoot.Close
  2559. Set rsRoot = Nothing
  2560. GetRootClass = strRoot
  2561. End Function
  2562. '=================================================
  2563. '函数名:GetClass_Tree
  2564. '作 用:得到所有菜单的树形目录效果的HTML代码
  2565. '参 数:无
  2566. '返回值:菜单的树形目录效果的HTML代码
  2567. '=================================================
  2568. Function GetClass_Tree()
  2569. Dim arrShowLine(20), Class_MenuTitle, i, strClassUrl
  2570. For i = 0 To UBound(arrShowLine)
  2571. arrShowLine(i) = False
  2572. Next
  2573. Dim rsClass, sqlClass, tmpDepth, strClassTree
  2574. sqlClass = "Select t_classid,ClassName,Depth,ParentID,NextID,LinkUrl,Child,Readme,ClassType,ParentDir,ClassDir,OpenType,ClassPurview from t_area where ChannelID=" & ChannelID & " order by RootID,OrderID"
  2575. Set rsClass = Conn.Execute(sqlClass)
  2576. If rsClass.BOF And rsClass.EOF Then
  2577. strClassTree = "没有任何菜单"
  2578. Else
  2579. strClassTree = ""
  2580. Do While Not rsClass.EOF
  2581. tmpDepth = rsClass(2)
  2582. If rsClass(4) > 0 Then
  2583. arrShowLine(tmpDepth) = True
  2584. Else
  2585. arrShowLine(tmpDepth) = False
  2586. End If
  2587. If Trim(rsClass(7)) <> "" Then
  2588. Class_MenuTitle = Replace(Replace(Replace(Replace(rsClass(7), "'", ""), """", ""), Chr(10), ""), Chr(13), "")
  2589. Else
  2590. Class_MenuTitle = ""
  2591. End If
  2592. If tmpDepth > 0 Then
  2593. For i = 1 To tmpDepth
  2594. If i = tmpDepth Then
  2595. If rsClass(4) > 0 Then
  2596. strClassTree = strClassTree & "<img src='../images/tree_line1.gif' width='17' height='16' valign='abvmiddle'>"
  2597. Else
  2598. strClassTree = strClassTree & "<img src='../images/tree_line2.gif' width='17' height='16' valign='abvmiddle'>"
  2599. End If
  2600. Else
  2601. If arrShowLine(i) = True Then
  2602. strClassTree = strClassTree & "<img src='../images/tree_line3.gif' width='17' height='16' valign='abvmiddle'>"
  2603. Else
  2604. strClassTree = strClassTree & "<img src='../images/tree_line4.gif' width='17' height='16' valign='abvmiddle'>"
  2605. End If
  2606. End If
  2607. Next
  2608. End If
  2609. If rsClass(6) > 0 Then
  2610. strClassTree = strClassTree & "<img src='../Images/tree_folder4.gif' width='15' height='15' valign='abvmiddle'>"
  2611. Else
  2612. strClassTree = strClassTree & "<img src='../Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'>"
  2613. End If
  2614. If rsClass("ClassType") = 2 Then
  2615. strClassUrl = rsClass("LinkUrl")
  2616. Else
  2617. strClassUrl = GetClassUrl(rsClass("ParentDir"), rsClass("ClassDir"), rsClass("t_classid"), rsClass("ClassPurview"))
  2618. End If
  2619. strClassTree = strClassTree & "<a href='" & strClassUrl & "' title='" & Class_MenuTitle & "'"
  2620. If rsClass(11) = 0 Then
  2621. strClassTree = strClassTree & " target='_top'"
  2622. Else
  2623. strClassTree = strClassTree & " target='_blank'"
  2624. End If
  2625. If rsClass(2) = 0 Then
  2626. strClassTree = strClassTree & "><b>" & rsClass(1) & "</b>"
  2627. Else
  2628. strClassTree = strClassTree & ">" & rsClass(1)
  2629. End If
  2630. If rsClass(8) = 2 Then
  2631. strClassTree = strClassTree & "(外)"
  2632. End If
  2633. strClassTree = strClassTree & "</a>"
  2634. If rsClass(6) > 0 Then
  2635. strClassTree = strClassTree & "(" & rsClass(6) & ")"
  2636. End If
  2637. strClassTree = strClassTree & "<br>"
  2638. rsClass.MoveNext
  2639. Loop
  2640. End If
  2641. rsClass.Close
  2642. Set rsClass = Nothing
  2643. GetClass_Tree = strClassTree
  2644. End Function
  2645. '==================================================
  2646. '函数名:ShowSearchForm
  2647. '作 用:显示搜索表单
  2648. '参 数:ShowType ----显示方式。1为简洁模式,2为标准模式,3为高级模式
  2649. ' CurrentID ----当前菜单ID
  2650. '返回值:搜索表单的HTML代码
  2651. '==================================================
  2652. Function ShowSearchForm(ShowType, CurrentID)
  2653. Dim strForm
  2654. If ShowType <> 1 And ShowType <> 2 And ShowType <> 3 Then
  2655. ShowType = 1
  2656. End If
  2657. strForm = "<table border='0' cellpadding='0' cellspacing='0'>"
  2658. strForm = strForm & "<form method='Get' name='SearchForm' action='" & ChannelUrl & "/Search.asp'>"
  2659. strForm = strForm & "<tr><td height='28' align='center'>"
  2660. If ShowType = 1 Then
  2661. Select Case ModuleType
  2662. Case 1
  2663. strForm = strForm & "<input type='hidden' name='field' value='Title'>"
  2664. Case 2
  2665. strForm = strForm & "<input type='hidden' name='field' value='SoftName'>"
  2666. Case 3
  2667. strForm = strForm & "<input type='hidden' name='field' value='PhotoName'>"
  2668. Case 5
  2669. strForm = strForm & "<input type='hidden' name='field' value='ProductName'>"
  2670. End Select
  2671. strForm = strForm & "<input type='text' name='keyword' size='15' value='关键字' maxlength='50' onFocus='this.select();'>&nbsp;"
  2672. strForm = strForm & "<input type='submit' name='Submit' value='搜索'>"
  2673. ElseIf ShowType = 2 Then
  2674. strForm = strForm & "<select name='Field' size='1'>"
  2675. Select Case ModuleType
  2676. Case 1
  2677. strForm = strForm & "<option value='Title' selected>" & ChannelShortName & "标题</option>"
  2678. Case 2
  2679. strForm = strForm & "<option value='SoftName' selected>" & ChannelShortName & "名称</option>"
  2680. Case 3
  2681. strForm = strForm & "<option value='PhotoName' selected>" & ChannelShortName & "名称</option>"
  2682. Case 5
  2683. strForm = strForm & "<option value='ProductName' selected>" & ChannelShortName & "名称</option>"
  2684. End Select
  2685. If SearchContent = True Then
  2686. Select Case ModuleType
  2687. Case 1
  2688. strForm = strForm & "<option value='Content'>" & ChannelShortName & "内容</option>"
  2689. Case 2
  2690. strForm = strForm & "<option value='SoftIntro'>" & ChannelShortName & "简介</option>"
  2691. Case 3
  2692. strForm = strForm & "<option value='PhotoIntro'>" & ChannelShortName & "简介</option>"
  2693. Case 5
  2694. strForm = strForm & "<option value='ProductIntro'>" & ChannelShortName & "简介</option>"
  2695. End Select
  2696. End If
  2697. If ModuleType = 1 Or ModuleType = 2 Or ModuleType = 3 Then
  2698. strForm = strForm & "<option value='Author'>" & ChannelShortName & "作者</option>"
  2699. strForm = strForm & "<option value='Inputer'>录 入 者</option>"
  2700. ElseIf ModuleType = 5 Then
  2701. strForm = strForm & "<option value='ProducerName'>厂商</option>"
  2702. strForm = strForm & "<option value='TrademarkName'>品牌/商标</option>"
  2703. End If
  2704. strForm = strForm & "<option value='Keywords'>关键字</option>"
  2705. strForm = strForm & "</select>&nbsp;"
  2706. strForm = strForm & "<select name='ClassID'><option value=''>所有菜单</option>" & GetClass_Option(ChannelID, 0) & "</select>&nbsp;"
  2707. strForm = strForm & "<input type='text' name='keyword' size='20' value='关键字' maxlength='50' onFocus='this.select();'>&nbsp;"
  2708. strForm = strForm & "<input type='submit' name='Submit' value=' 搜索 '>"
  2709. ElseIf ShowType = 3 Then
  2710. End If
  2711. strForm = strForm & "</td></tr></form></table>"
  2712. ShowSearchForm = strForm
  2713. End Function
  2714. Sub DelInfo(arrClassID)
  2715. 'On Error Resume Next
  2716. Dim sqlDel, rsDel
  2717. Dim InfoPath, FileExt
  2718. If IsValidID(arrClassID) = False Then Exit Sub
  2719. Select Case ModuleType
  2720. Case 1
  2721. sqlDel = "select ArticleID as InfoID,UpdateTime,Inputer,Deleted,PaginationType from Article"
  2722. Case 2
  2723. sqlDel = "select SoftID as InfoID,UpdateTime,Inputer,Deleted from Soft"
  2724. Case 3
  2725. sqlDel = "select PhotoID as InfoID,UpdateTime,Inputer,Deleted from Photo"
  2726. Case 5
  2727. sqlDel = "select ProductID as InfoID,UpdateTime,Inputer,Deleted from Product"
  2728. End Select
  2729. If InStr(arrClassID, ",") > 0 Then
  2730. sqlDel = sqlDel & " where t_classid in (" & arrClassID & ")"
  2731. Else
  2732. sqlDel = sqlDel & " where t_classid=" & arrClassID & ""
  2733. End If
  2734. Set rsDel = Server.CreateObject("ADODB.Recordset")
  2735. rsDel.Open sqlDel, Conn, 1, 3
  2736. Do While Not rsDel.EOF
  2737. InfoPath = HtmlDir & GetItemPath(StructureType, "", "", rsDel("UpdateTime")) & GetItemFileName(FileNameType, ChannelDir, rsDel("UpdateTime"), rsDel("InfoID"))
  2738. If fso.FileExists(Server.MapPath(InfoPath & FileExt_Item)) Then
  2739. fso.DeleteFile Server.MapPath(InfoPath & FileExt_Item)
  2740. End If
  2741. If ModuleType = 1 Then
  2742. If rsDel("PaginationType") > 0 Then
  2743. DelSerialFiles (Server.MapPath(InfoPath) & "_*" & FileExt_Item)
  2744. End If
  2745. End If
  2746. rsDel("Deleted") = True
  2747. rsDel.Update
  2748. rsDel.MoveNext
  2749. Loop
  2750. rsDel.Close
  2751. Set rsDel = Nothing
  2752. End Sub
  2753. Function GetClassUrl(sParentDir, sClassDir, iClassID, iClassPurview)
  2754. Dim strClassUrl
  2755. If (UseCreateHTML = 1 Or UseCreateHTML = 3) And iClassPurview < 2 Then
  2756. strClassUrl = ChannelUrl & GetListPath(StructureType, ListFileType, sParentDir, sClassDir) & GetListFileName(ListFileType, iClassID, 1, 1) & FileExt_List
  2757. Else
  2758. strClassUrl = ChannelUrl & "/ShowClass.asp?ClassID=" & iClassID
  2759. End If
  2760. GetClassUrl = strClassUrl
  2761. End Function
  2762. Function UpdateClassPurview(arrClassID)
  2763. Dim rsClass, sqlClass, rsPurview, iClassPurview
  2764. sqlClass = "select ClassPurview,ParentID,ParentPath,Child,arrChildID from t_area where t_classid in (" & arrClassID & ")"
  2765. Set rsClass = Server.CreateObject("Adodb.recordset")
  2766. rsClass.Open sqlClass, Conn, 1, 3
  2767. Do While Not rsClass.EOF
  2768. iClassPurview = rsClass("ClassPurview")
  2769. If iClassPurview < 2 And rsClass("ParentID") > 0 Then
  2770. Set rsPurview = Conn.Execute("select max(ClassPurview) from t_area where t_classid in (" & rsClass("ParentPath") & ")")
  2771. If rsPurview(0) > iClassPurview Then iClassPurview = rsPurview(0)
  2772. rsPurview.Close
  2773. Set rsPurview = Nothing
  2774. If iClassPurview > rsClass("ClassPurview") Then
  2775. rsClass("ClassPurview") = iClassPurview
  2776. rsClass.Update
  2777. End If
  2778. End If
  2779. If iClassPurview > 0 And rsClass("Child") > 0 Then
  2780. Conn.Execute ("update t_area set ClassPurview=" & iClassPurview & " where t_classid in (" & rsClass("arrChildID") & ") and ClassPurview<" & iClassPurview & "")
  2781. End If
  2782. rsClass.MoveNext
  2783. Loop
  2784. rsClass.Close
  2785. Set rsClass = Nothing
  2786. End Function
  2787. Function GetChannel_Option(iModuleType, iChannelID)
  2788. Dim rsGetAdmin, rsChannel
  2789. Dim strChannel
  2790. Set rsGetAdmin = Conn.Execute("select * from Admin where AdminName='" & AdminName & "'")
  2791. Set rsChannel = Conn.Execute("select ChannelID,ChannelName,ChannelDir from Channel where ModuleType=" & iModuleType & " and Disabled=" & False & " and ChannelType<=1 order by OrderID")
  2792. Do While Not rsChannel.EOF
  2793. If AdminPurview = 1 Or rsGetAdmin("AdminPurview_" & rsChannel("ChannelDir")) = 1 Then
  2794. If rsChannel(0) = iChannelID Then
  2795. strChannel = strChannel & "<option value='" & rsChannel(0) & "' selected>" & rsChannel(1) & "</option>"
  2796. Else
  2797. strChannel = strChannel & "<option value='" & rsChannel(0) & "'>" & rsChannel(1) & "</option>"
  2798. End If
  2799. End If
  2800. rsChannel.MoveNext
  2801. Loop
  2802. rsChannel.Close
  2803. Set rsChannel = Nothing
  2804. rsGetAdmin.Close
  2805. Set rsGetAdmin = Nothing
  2806. GetChannel_Option = strChannel
  2807. End Function
  2808. %>
  2809. </p>
  2810. <p>&nbsp; </p> </td>
  2811. </tr>
  2812. </table></td>
  2813. </tr>
  2814. <tr>
  2815. <td>&nbsp;</td>
  2816. </tr>
  2817. </table>
  2818. </body>
  2819. </html>
  2820. <%
  2821. Call CloseConn
  2822. %>