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

📄 admin_linkclass.asp

📁 正版创力4.1SQL商业版!!!ASP版。
💻 ASP
📖 第 1 页 / 共 5 页
字号:
	if PrevID>0 then
		Cl.Execute("Update Cl_LinkClass set NextID=" & ClassID & " where ClassID=" & PrevID)
	end if
	
	if ParentID>0 then
		'更新其父类的子栏目数
		Cl.Execute("Update Cl_LinkClass set child=child+1 where ClassID="&ParentID)
		'更新其父类以上栏目的“arrChildID”
		Dim rsParentID
		Set rsParentID=server.CreateObject("Adodb.recordset")
		rsParentID.open "Select ClassID,arrChildID From Cl_LinkClass where ClassID in ("&ParentPath&")",conn,1,3
		do While not rsParentID.Eof
			rsParentID("arrChildID")=""&rsParentID(1)&","&ClassID&""
			rsParentID.UpDate
			rsParentID.movenext
		Loop
		rsParentID.Close:Set rsParentID=Nothing
		'更新该栏目排序以及大于本需要和同在本分类下的栏目排序序号
		Cl.Execute("Update Cl_LinkClass set OrderID=OrderID+1 where rootid=" & rootid & " and OrderID>" & PrevOrderID)
		Cl.Execute("Update Cl_LinkClass set OrderID=" & PrevOrderID & "+1 where ClassID=" & ClassID)
	end if
	Cl.SaveAdminLog
	Call Cl.ShowSuc("恭喜你,栏目添加成功!返回 <a href='"&FileName&"'>栏目管理首页</a> 。")
end sub

sub SaveModify()
	dim ClassName,ClassDir,Readme,IsElite,ShowOnTop
	dim trs,rs
	dim ClassID,rsClass,i,sChind
	ClassID=Trim(request("ClassID"))
	ClassName=Trim(request("ClassName"))
	ClassDir=Cl.ReplaceBadChar(Trim(request("ClassDir")))
	IsElite=Trim(request("IsElite"))
	ShowOnTop=Trim(request("ShowOnTop"))
	Readme=Trim(request("Readme"))
	if ClassID="" then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>参数不足!</li>"
	else
		ClassID=CLng(ClassID)
	end if
	if ClassName="" then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>栏目名称不能为空!</li>"
	end if
	ClassDir="Class" & ClassID
	if FoundErr=True then
		exit sub
	end if
	
	sql="select * From Cl_LinkClass where ClassID=" & ClassID
	set rsClass=server.CreateObject ("Adodb.recordset")
	rsClass.open sql,Conn,1,3
	if rsClass.bof and rsClass.eof then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>找不到指定的栏目!</li>"
		rsClass.close:set rsClass=Nothing
		exit sub
	end if
	sChind=rsClass("Child")


	if FoundErr=True then
		exit sub
	end if

	if IsElite="Yes" then
		IsElite=True
	else
		IsElite=False
	end if
	if ShowOnTop="Yes" then
		ShowOnTop=True
	else
		ShowOnTop=False
	end if
	if Readme<>"" or Not IsNull(Readme) then Readme=Replace(Readme,VbCrlf,"")
   	rsClass("ClassName")=ClassName
	rsClass("ClassDir")=ClassDir
	rsClass("Readme")=Readme
	rsClass("IsElite")=IsElite
	rsClass("ShowOnTop")=ShowOnTop
	rsClass.update
	rsClass.close:set rsClass=Nothing
	if sChind>0 then
		UpDateClassData
	end if
	Cl.SaveAdminLog
	Call Cl.ShowSuc("恭喜你,栏目修改成功!返回 <a href='"&FileName&"'>栏目管理首页</a> 。")
end sub

sub DeleteClass()
	dim PrevID,NextID,ParentPath,ClassID
	ClassID=Trim(Request("ClassID"))
	if ClassID="" then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>参数不足!</li>"
		exit sub
	else
		ClassID=CLng(ClassID)
	end if
	
	sql="select ClassID,RootID,Depth,ParentID,ParentPath,Child,PrevID,NextID From Cl_LinkClass where ClassID="&ClassID
	set rs=server.CreateObject ("Adodb.recordset")
	rs.open sql,Conn,1,3
	if rs.bof and rs.eof then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>栏目不存在,或者已经被删除</li>"
	else
		if rs("Child")>0 then
			FoundErr=True
			ErrMsg=ErrMsg & "<br /><li>该栏目含有子栏目,请删除其子栏目后再进行删除本栏目的操作</li>"
		end if
	end if
	if FoundErr=True then
		rs.close:set rs=Nothing
		exit sub
	end if
	PrevID=rs("PrevID")
	NextID=rs("NextID")
	ParentPath=rs("ParentPath")
	if rs("Depth")>0 then
		Cl.Execute("Update Cl_LinkClass set child=child-1 where ClassID=" & rs("ParentID"))
	end if
	rs.delete
	rs.update
	rs.close:set rs=Nothing

	'更新其父类以上栏目的“arrChildID”
	Dim rsParentID
	Set rsParentID=server.CreateObject("Adodb.recordset")
	rsParentID.open "Select ClassID,arrChildID From Cl_LinkClass where ClassID in ("&ParentPath&")",conn,1,3
	do While not rsParentID.Eof
		rsParentID("arrChildID")=""&Replace(rsParentID(1),","&ClassID&"","")&""
		rsParentID.UpDate
		rsParentID.movenext
	Loop
	rsParentID.Close:Set rsParentID=Nothing
	'删除本栏目的所有内容
	Cl.Execute("delete from Cl_LinkSite where ClassID=" & ClassID)
	'修改上一栏目的NextID和下一栏目的PrevID
	if PrevID>0 then
		Cl.Execute "Update Cl_LinkClass set NextID=" & NextID & " where ClassID=" & PrevID
	end if
	if NextID>0 then
		Cl.Execute "Update Cl_LinkClass set PrevID=" & PrevID & " where ClassID=" & NextID
	end if
	Cl.SaveAdminLog
	response.redirect FileName
end sub

sub ClearClass()
	dim strClassID,rs,trs,SuccessMsg,ClassID
	ClassID=Trim(Request("ClassID"))
	if ClassID="" then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>参数不足!</li>"
		exit sub
	else
		ClassID=CLng(ClassID)
	end if
	strClassID=cstr(ClassID)
	set rs=Cl.Execute("select ClassID,Child,ParentPath,arrChildID from Cl_LinkClass where ClassID=" & ClassID)
	if rs.bof and rs.eof then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>栏目不存在,或者已经被删除</li>"
		exit sub
	end if
	if rs(1)>0 then
		strClassID=rs(3)
	end if
	rs.close:set rs=Nothing
	Cl.Execute("Delete from Cl_LinkSite where ClassID in (" & strClassID & ")")
	Cl.SaveAdminLog
	Call Cl.ShowSuc("此栏目(包括子栏目)的所有内容已经被移到回收站中!")
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=Trim(request("ClassID"))
	if ClassID="" then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>参数不足!</li>"
		exit sub
	else
		ClassID=CLng(ClassID)
	end if
	
	sql="select * From Cl_LinkClass where ClassID=" & ClassID
	set rsClass=server.CreateObject ("Adodb.recordset")
	rsClass.open sql,Conn,1,3
	if rsClass.bof and rsClass.eof then
		FoundErr=True
		ErrMsg=ErrMsg & "<br /><li>找不到指定的栏目!</li>"
		rsClass.close
		set rsClass=Nothing
		exit sub
	end if

	rParentID=Trim(request("ParentID"))
	if rParentID="" then
		rParentID=0
	else
		rParentID=CLng(rParentID)
	end if
	
	if rsClass("ParentID")<>rParentID then   '更改了所属栏目,则要做一系列检查
		if rParentID=rsClass("ClassID") then
			FoundErr=True
			ErrMsg=ErrMsg & "<br /><li>所属栏目不能为自己!</li>"
		end if
		'判断所指定的栏目是否为外部栏目或本栏目的下属栏目
		'if rsClass("ParentID")=0 then
			if rParentID>0 then
				set trs=Cl.Execute("select rootid From Cl_LinkClass where ClassID="&rParentID)
				if trs.bof and trs.eof then
					FoundErr=True
					ErrMsg=ErrMsg & "<br /><li>找不到指定的所属栏目</li>"
				else
					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_LinkClass where 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
		
	end if

	if FoundErr=True then
		rsClass.close
		set rsClass=Nothing
		exit sub
	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_LinkClass")
  MaxRootID=mrs(0)
  set mrs=Nothing
  if isnull(MaxRootID) then
	MaxRootID=0
  end if
  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_LinkClass set NextID=" & NextID & " where ClassID=" & PrevID
	end if
	if NextID>0 then
		Cl.Execute "Update Cl_LinkClass set PrevID=" & PrevID & " where ClassID=" & NextID
	end if
	
	if iParentID>0 and rParentID=0 then  	'如果原来不是一级分类改成一级分类
		'得到上一个一级分类栏目
		sql="select ClassID,NextID from Cl_LinkClass where RootID=" & MaxRootID & " and Depth=0"
		set rs=server.CreateObject("Adodb.recordset")
		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_LinkClass set depth=0,OrderID=0,rootid="&maxrootid&",parentid=0,ParentPath='0',arrChildID='"&ClassID&"',PrevID=" & PrevID & ",NextID=0 where ClassID="&ClassID)

		'如果有下属栏目,则更新其下属栏目数据。下属栏目的排序不需考虑,只需更新下属栏目深度和一级排序ID(rootid)数据
		if child>0 then
			i=0
			set rs=Cl.Execute("select * From Cl_LinkClass where ParentPath like '%"&ParentPath & "," & ClassID&"%'")
			do while not rs.eof
				i=i+1
				mParentPath=replace(rs("ParentPath"),ParentPath,"")
				Cl.Execute("Update Cl_LinkClass set depth=depth-"&depth&",rootid="&maxrootid&",ParentPath='"&mParentPath&"' where ClassID="&rs("ClassID"))
				rs.movenext
			loop
			set rs=Nothing
		end if
		'更新其原来所属栏目的栏目数,排序相当于剪枝而不需考虑
		Cl.Execute("Update Cl_LinkClass set child=child-1 where ClassID="&iParentID)
		
	elseif iParentID>0 and rParentID>0 then    '如果是将一个分栏目移动到其他分栏目下
		'得到当前栏目的下属子栏目数
		ParentPath=ParentPath & ","
		set rs=Cl.Execute("select count(*) From Cl_LinkClass where ParentPath like '%"&ParentPath & ClassID&"%'")
		ClassCount=rs(0)
		if isnull(ClassCount) then
			ClassCount=1
		end if
		rs.close
		set rs=Nothing
		'获得目标栏目的相关信息		
		set trs=Cl.Execute("select * From Cl_LinkClass where ClassID="&rParentID)
		if trs("Child")>0 then		
			'得到与本栏目同级的最后一个栏目的OrderID
			set rsPrevOrderID=Cl.Execute("select Max(OrderID) From Cl_LinkClass where ParentID=" & trs("ClassID"))
			PrevOrderID=rsPrevOrderID(0)
			'得到与本栏目同级的最后一个栏目的ClassID
			sql="select ClassID,NextID from Cl_LinkClass where ParentID=" & trs("ClassID") & " and OrderID=" & PrevOrderID
			set rs=server.createobject("adodb.recordset")
			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_LinkClass where 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_LinkClass set OrderID=OrderID+" & ClassCount & "+1 where rootid=" & trs("rootid") & " and OrderID>" & PrevOrderID)
		
		'更新当前栏目数据
		Cl.Execute("Update Cl_LinkClass set depth="&trs("depth")&"+1,OrderID="&PrevOrderID&"+1,rootid="&trs("rootid")&",ParentID="&rParentID&",ParentPath='" & trs("ParentPath") & "," & trs("ClassID") & "',PrevID=" & PrevID & ",NextID=0 where ClassID="&ClassID)
		
		'如果有子栏目则更新子栏目数据,深度为原来的相对深度加上当前所属栏目的深度
		set rs=Cl.Execute("select * From Cl_LinkClass where ParentPath like '%"&ParentPath&ClassID&"%' order by OrderID")
		i=1
		do while not rs.eof

⌨️ 快捷键说明

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