⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 admin_class.asp

📁 淘客网上商店网站程序 淘客网上商店网站程序 淘客网上商店网站程序
💻 ASP
📖 第 1 页 / 共 5 页
字号:
	end if
	if NextID>0 then
		Cl.Execute "Update Cl_Class set PrevID=" & PrevID & " where ChannelID="&ChannelID&" and ClassID=" & NextID
	end If
	Cl.Load_ClassList
	Cl.SaveAdminLog
	response.redirect FileName
end sub

sub ClearClass()
	dim strClassID,rs,trs,SuccessMsg,ClassID
	ClassID=Trim(Request("ClassID"))
	if ClassID="" then Cl.ShowErr("<br /><li>参数不足!</li>")
	ClassID=CLng(ClassID)
	strClassID=cstr(ClassID)
	set rs=Cl.Execute("select ClassID,Child,ParentPath,arrChildID from Cl_Class where ChannelID="&ChannelID&" and ClassID=" & ClassID)
	if rs.bof and rs.eof then
		rs.close:set rs=Nothing
		Cl.ShowErr("<br /><li>栏目不存在,或者已经被删除</li>")
	end if
	if rs(1)>0 then strClassID=rs(3)
	rs.close:set rs=Nothing
	Select Case Clng(Cl.Channel.selectSingleNode("@moduleid").text)
	Case 1
	Cl.Execute("Update Cl_Article set Deleted="&TrueType&" where ClassID in (" & strClassID & ")")
	Case 2
	Cl.Execute("Update Cl_Soft set Deleted="&TrueType&" where ClassID in (" & strClassID & ")")
	Case 3
	Cl.Execute("Update Cl_Photo set Deleted="&TrueType&" where ClassID in (" & strClassID & ")")
	Case 4
	Cl.Execute("Update Cl_Movie set Deleted="&TrueType&" where ClassID in (" & strClassID & ")")
	Case 5
	Cl.Execute("Update Cl_Product set Deleted="&TrueType&" where ClassID in (" & strClassID & ")")
	Case 6
	Cl.Execute("Update Cl_Supply set Deleted="&TrueType&" where ClassID in (" & strClassID & ")")
	End Select
	Cl.SaveAdminLog
	'Cl.Execute("delete from Cl_Article where ClassID in (" & strClassID & ")")	
	SuccessMsg="此栏目(包括子栏目)的所有内容已经被移到回收站中!"
	Call Cl.ShowSuc(SuccessMsg)
end sub

sub SaveMove()
	dim ClassID,rsClass,i
	dim rParentID
	dim trs,rs
	dim ParentID,RootID,Depth,Child,ParentPath,ParentName,iParentID,iParentPath,PrevOrderID,PrevID,NextID,arrChildID,marrChildID
	ClassID=Cl.GetClng(Trim(request("ClassID")))
	if ClassID=0 then Cl.ShowErr("<br /><li>参数不足!</li>")
	sql="select * From Cl_Class where ChannelID="&ChannelID&" and ClassID=" & ClassID
	set rsClass=server.CreateObject ("Adodb.recordset")
	OpenConn : rsClass.open sql,Conn,1,3
	if rsClass.bof and rsClass.eof then
		rsClass.close:set rsClass=Nothing
		Cl.ShowErr("<br /><li>找不到指定的栏目!</li>")
	end if
	rParentID=Cl.GetClng(request("ParentID"))
	if rsClass("ParentID")<>rParentID then '更改了所属栏目,则要做一系列检查
		if rParentID=rsClass("ClassID") Then
			rsClass.close : set rsClass=Nothing
			Cl.ShowErr("<br /><li>所属栏目不能为自己!</li>")
		end if
		'判断所指定的栏目是否为外部栏目或本栏目的下属栏目
		'if rsClass("ParentID")=0 then
			if rParentID>0 then
				set trs=Cl.Execute("select RootID,IsOuter From Cl_Class where ChannelID="&ChannelID&" and ClassID="&rParentID)
				if trs.bof and trs.eof then
					FoundErr=True
					ErrMsg=ErrMsg & "<br /><li>找不到指定的所属栏目</li>"
				else
					if rsClass("IsOuter")=0 and trs(1)=1 then
						FoundErr=True
						ErrMsg=ErrMsg & "<br /><li>此栏目为内部栏目,所以不能指定该栏目的所属栏目为外部栏目</li>"
					end if
					if rsClass("RootID")=trs(0) then
						FoundErr=True
						ErrMsg=ErrMsg & "<br /><li>不能指定该栏目的下属栏目作为所属栏目</li>"
					end if
				end if
				trs.close : set trs=Nothing
			end if
		'else
			'set trs=Cl.Execute("select ClassID From Cl_Class where ChannelID="&ChannelID&" and ParentPath like '"&rsClass("ParentPath")&"," & rsClass("ClassID") & "%' and ClassID="&rParentID)
			'if not (trs.eof and trs.bof) then
				'FoundErr=True
				'ErrMsg=ErrMsg & "<br /><li>您不能指定该栏目的下属栏目作为所属栏目</li>"
			'end if
			'trs.close
			'set trs=Nothing
		'end if
		if FoundErr=True then
			rsClass.close : set rsClass=Nothing : Cl.ShowErr(ErrMsg)
		end if
	end if
	if rsClass("ParentID")=0 then
		ParentID	= rsClass("ClassID")
		iParentID	= 0
	else
		ParentID	= rsClass("ParentID")
		iParentID	= rsClass("ParentID")
	end if
	Depth		= rsClass("Depth")
	Child		= rsClass("Child")
	RootID		= rsClass("RootID")
	ParentPath	= rsClass("ParentPath")
	arrChildID	= rsClass("arrChildID")
	PrevID		= rsClass("PrevID")
	NextID		= rsClass("NextID")
	rsClass.close : set rsClass=Nothing
	'假如更改了所属栏目
	'需要更新其原来所属栏目信息,包括深度、父级ID、栏目数、排序、继承版主等数据
	'需要更新当前所属栏目信息
	'继承版主数据需要另写函数进行更新--取消,在前台可用ClassID in ParentPath来获得
	Dim mrs,MaxRootID
	Set mrs=Cl.Execute("select max(RootID) From Cl_Class where ChannelID="&ChannelID&"")
	MaxRootID=mrs(0)
	mrs.Close : set mrs=Nothing
	if IsNull(MaxRootID) then MaxRootID=0
	dim k,nParentPath,mParentPath
	dim ParentSql,ClassCount
	dim rsPrevOrderID
	if Clng(ParentID)<>rParentID and not (iParentID=0 and rParentID=0) then  '假如更改了所属栏目
		'更新原来同一父栏目的上一个栏目的NextID和下一个栏目的PrevID
		if PrevID>0 then
			Cl.Execute "Update Cl_Class set NextID=" & NextID & " where ChannelID="&ChannelID&" and ClassID=" & PrevID
		end if
		if NextID>0 then
			Cl.Execute "Update Cl_Class set PrevID=" & PrevID & " where ChannelID="&ChannelID&" and ClassID=" & NextID
		end if
		if iParentID>0 and rParentID=0 then  	'如果原来不是一级分类改成一级分类
			'得到上一个一级分类栏目
			sql="select ClassID,NextID from Cl_Class where ChannelID="&ChannelID&" and RootID=" & MaxRootID & " and Depth=0"
			set rs=server.CreateObject("Adodb.recordset")
			OpenConn : rs.open sql,Conn,1,3
			PrevID	= rs(0)      '得到新的PrevID
			rs(1)	= ClassID     '更新上一个一级分类栏目的NextID的值
			rs.update
			rs.close : set rs=Nothing
			MaxRootID=MaxRootID+1
			'更新当前栏目数据
			Cl.Execute("Update Cl_Class set depth=0,OrderID=0,RootID="&maxRootID&",ParentID=0,ParentPath='0',arrChildID='"&ClassID&"',PrevID=" & PrevID & ",NextID=0 where ChannelID="&ChannelID&" and ClassID="&ClassID)
			'如果有下属栏目,则更新其下属栏目数据。下属栏目的排序不需考虑,只需更新下属栏目深度和一级排序ID(RootID)数据
			if Child>0 then
				i=0
				set rs=Cl.Execute("select * From Cl_Class where ChannelID="&ChannelID&" and ParentPath like '%"&ParentPath & "," & ClassID&"%'")
				do while not rs.eof
					i=i+1
					mParentPath=replace(rs("ParentPath"),ParentPath,"")
					Cl.Execute("Update Cl_Class set depth=depth-"&depth&",RootID="&maxRootID&",ParentPath='"&mParentPath&"' where ChannelID="&ChannelID&" and ClassID="&rs("ClassID"))
					rs.movenext
				loop
				set rs=Nothing
			end if
			'更新其原来所属栏目的栏目数,排序相当于剪枝而不需考虑
			Cl.Execute("Update Cl_Class set Child=Child-1 where ChannelID="&ChannelID&" and ClassID="&iParentID)
		elseif iParentID>0 and rParentID>0 then    '如果是将一个分栏目移动到其他分栏目下
			'得到当前栏目的下属子栏目数
			ParentPath=ParentPath & ","
			set rs=Cl.Execute("select count(*) From Cl_Class where ChannelID="&ChannelID&" and ParentPath like '%"&ParentPath & ClassID&"%'")
			ClassCount=rs(0)
			if IsNull(ClassCount) then ClassCount=1
			rs.close : set rs=Nothing
			'获得目标栏目的相关信息		
			set trs=Cl.Execute("select * From Cl_Class where ChannelID="&ChannelID&" and ClassID="&rParentID)
			if trs("Child")>0 then		
				'得到与本栏目同级的最后一个栏目的OrderID
				set rsPrevOrderID=Cl.Execute("select Max(OrderID) From Cl_Class where ChannelID="&ChannelID&" and ParentID=" & trs("ClassID"))
				PrevOrderID=rsPrevOrderID(0)
				'得到与本栏目同级的最后一个栏目的ClassID
				sql="select ClassID,NextID from Cl_Class where ChannelID="&ChannelID&" and ParentID=" & trs("ClassID") & " and OrderID=" & PrevOrderID
				set rs=server.createobject("adodb.recordset")
				OpenConn : rs.open sql,Conn,1,3
				PrevID=rs(0)    '得到新的PrevID
				rs(1)=ClassID     '更新上一个栏目的NextID的值
				rs.update
				rs.close : set rs=Nothing
				
				'得到同一父栏目但比本栏目级数大的子栏目的最大OrderID,如果比前一个值大,则改用这个值。
				set rsPrevOrderID=Cl.Execute("select Max(OrderID) From Cl_Class where ChannelID="&ChannelID&" and ParentPath like '" & trs("ParentPath") & "," & trs("ClassID") & ",%'")
				if (not(rsPrevOrderID.bof and rsPrevOrderID.eof)) then
					if not IsNull(rsPrevOrderID(0)) then
						if rsPrevOrderID(0)>PrevOrderID then
							PrevOrderID=rsPrevOrderID(0)
						end if
					end if
				end if
			else
				PrevID=0
				PrevOrderID=trs("OrderID")
			end if
			
			'在获得移动过来的栏目数后更新排序在指定栏目之后的栏目排序数据
			Cl.Execute("Update Cl_Class set OrderID=OrderID+" & ClassCount & "+1 where ChannelID="&ChannelID&" and RootID=" & trs("RootID") & " and OrderID>" & PrevOrderID)
			
			'更新当前栏目数据
			Cl.Execute("Update Cl_Class set depth="&trs("depth")&"+1,OrderID="&PrevOrderID&"+1,RootID="&trs("RootID")&",ParentID="&rParentID&",ParentPath='" & trs("ParentPath") & "," & trs("ClassID") & "',PrevID=" & PrevID & ",NextID=0 where ChannelID="&ChannelID&" and ClassID="&ClassID)
			
			'如果有子栏目则更新子栏目数据,深度为原来的相对深度加上当前所属栏目的深度
			set rs=Cl.Execute("select * From Cl_Class where ChannelID="&ChannelID&" and ParentPath like '%"&ParentPath&ClassID&"%' order by OrderID")
			i=1
			do while not rs.eof
				i=i+1
				iParentPath=trs("ParentPath") & "," & trs("ClassID") & "," & replace(rs("ParentPath"),ParentPath,"")
				Cl.Execute("Update Cl_Class set depth=depth-"&depth&"+"&trs("depth")&"+1,OrderID="&PrevOrderID&"+"&i&",RootID="&trs("RootID")&",ParentPath='"&iParentPath&"' where ChannelID="&ChannelID&" and ClassID="&rs("ClassID"))
				rs.movenext
			loop
			rs.close : set rs=Nothing
			trs.close : set trs=Nothing
			
			'更新所指向的上级栏目的子栏目数
			Cl.Execute("Update Cl_Class set Child=Child+1 where ChannelID="&ChannelID&" and ClassID="&rParentID)
			
			'更新其原父类的子栏目数			
			Cl.Execute("Update Cl_Class set Child=Child-1 where ChannelID="&ChannelID&" and ClassID="&iParentID)
		else'如果原来是一级栏目改成其他栏目的下属栏目
			'得到移动的栏目总数
			set rs=Cl.Execute("select count(*) From Cl_Class where ChannelID="&ChannelID&" and RootID="&RootID)
			ClassCount=rs(0)
			rs.close : set rs=Nothing
			
			'获得目标栏目的相关信息		
			set trs=Cl.Execute("select * From Cl_Class where ChannelID="&ChannelID&" and ClassID="&rParentID)
			if trs("Child")>0 then		
				'得到与本栏目同级的最后一个栏目的OrderID
				set rsPrevOrderID=Cl.Execute("select Max(OrderID) From Cl_Class where ChannelID="&ChannelID&" and ParentID=" & trs("ClassID"))
				PrevOrderID=rsPrevOrderID(0)
				sql="select ClassID,NextID from Cl_Class where ChannelID="&ChannelID&" and ParentID=" & trs("ClassID") & " and OrderID=" & PrevOrderID
				set rs=server.createobject("adodb.recordset")
				OpenConn : rs.open sql,Conn,1,3
				PrevID	= rs(0) : rs(1)	= ClassID
				rs.update : set rs=Nothing
				'得到同一父栏目但比本栏目级数大的子栏目的最大OrderID,如果比前一个值大,则改用这个值
				set rsPrevOrderID=Cl.Execute("select Max(OrderID) From Cl_Class where ChannelID="&ChannelID&" and ParentPath like '" & trs("ParentPath") & "," & trs("ClassID") & ",%'")
				if (not(rsPrevOrderID.bof and rsPrevOrderID.eof)) then
					if not IsNull(rsPrevOrderID(0))  then
						if rsPrevOrderID(0)>PrevOrderID then
							PrevOrderID=rsPrevOrderID(0)
						end if
					end if
				end if
			else
				PrevID=0
				PrevOrderID=trs("OrderID")
			end if

			'在获得移动过来的栏目数后更新排序在指定栏目之后的栏目排序数据
			Cl.Execute("Update Cl_Class set OrderID=OrderID+" & ClassCount &"+1 where ChannelID="&ChannelID&" and RootID=" & trs("RootID") & " and OrderID>" & PrevOrderID)
			
			Cl.Execute("Update Cl_Class set PrevID=" & PrevID & ",NextID=0 where ChannelID="&ChannelID&" and ClassID=" & ClassID)
			set rs=Cl.Execute("select * From Cl_Class where ChannelID="&ChannelID&" and RootID="&RootID&" order by OrderID")
			i=0
			do while not rs.eof
				i=i+1
				if rs("ParentID")=0 then
					ParentPath=trs("ParentPath") & "," & trs("ClassID")
					Cl.Execute("Update Cl_Class set depth=depth+"&trs("depth")&"+1,OrderID="&PrevOrderID&"+"&i&",RootID="&trs("RootID")&",ParentPath='"&ParentPath&"',ParentID="&rParentID&" where ChannelID="&ChannelID&" and ClassID="&rs("ClassID"))
				else
					ParentPath=trs("ParentPath") & "," & trs("ClassID") & "," & replace(rs("ParentPath"),"0,","")
					Cl.Execute("Update Cl_Class set depth=depth+"&trs("depth")&"+1,OrderID="&PrevOrderID&"+"&i&",RootID="&trs("RootID")&",ParentPath='"&ParentPath&"' where ChannelID="&ChannelID&" and ClassID="&rs("ClassID"))
				end if
				rs.movenext
			loop
			rs.close : set rs=Nothing
			trs.close : set trs=Nothing
			'更新所指向的上级栏目栏目数		
			Cl.Execute("Update Cl_Class set Child=Child+1 where ChannelID="&ChannelID&" and ClassID="&rParentID)
		end if
		UpDateClassData '更新所有栏目数据
	end if
	Cl.SaveAdminLog
	Cl.Load_ClassList
	Response.Redirect FileName
end sub

sub UpOrder()
	dim ClassID,sqlOrder,rsOrder,MoveNum,cRootID,tRootID,PrevID,NextID
	ClassID=Cl.GetClng(request("ClassID"))
	cRootID=Cl.GetClng(request("cRootID"))
	MoveNum=Cl.GetClng(request("MoveNum"))
	if ClassID=0 or cRootID=0 or MoveNum=0 then
		Cl.ShowErr("<br /><li>参数不足!</li>")
	end if
	'得到本栏目的PrevID,NextID
	set rs=Cl.Execute("select PrevID,NextID from Cl_Class where ChannelID="&ChannelID&" and ClassID=" & ClassID)
	PrevID = rs(0) : NextID = rs(1)
	rs.close : set rs=Nothing
	'先修改上一栏目的NextID和下一栏目的PrevID
	if PrevID>0 then
		Cl.Execute "Update Cl_Class set NextID=" & NextID & " where ChannelID="&ChannelID&" and ClassID=" & PrevID
	end if
	if NextID>0 then
		Cl.Execute "Update Cl_Class set PrevID=" & PrevID & " where ChannelID="&ChannelID&" and ClassID=" &

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -