📄 board.asp
字号:
ParentStr=ParentID
Else
ParentStr=ParentStr & "," & ParentID
End If
YxBBs.execute("Insert into [YX_Board](BoardID,BoardName,Introduce,BoardAdmin,BoardImg,BoardSetting,BoardLock,BoardType,RootID,Depth,ParentID,ParentStr,Orders,Child)Values("&NewBoardID&",'"&BoardName&"','"&Introduce&"','"&BoardAdmin&"','"&BoardImg&"','0,gif|jpg|swf|zip|rar|bmp,30,30720,10,0,0,0,0,0,0',"&BoardLock&","&BoardType&","&RootID&","&Depth+1&","&ParentID&",'"&ParentStr&"',"&Orders+1&",0)")
If BoardAdmin <> "" Then Call addmaster(BoardAdmin,"none",0)
If ParentID<>0 then
If Depth>0 then
'当上级分类深度大于0的时候要更新其父类(或父类的父类)的版面数和相关排序
For i=1 to Depth
'更新其父类版面数
YxBBs.Execute("update [YX_Board] set Child=Child+1 where BoardID="&parentID)
'得到其父类的父类的版面ID
Set rs=YxBBs.Execute("select ParentID from [YX_Board] where BoardID="&parentID)
If not (rs.eof and rs.bof) then
ParentID=rs(0)
End if
Rs.Close
'当循环次数大于1并且运行到最后一次循环的时候直接进行更新
If i=depth then
YxBBs.Execute("update [YX_Board] set Child=Child+1 where BoardID="&parentID)
End if
next
'更新该版面排序以及大于本需要和同在本分类下的版面排序序号
YxBBs.Execute("update [YX_Board] set Orders=orders+1 where RootID="&RootID&" And orders>"&orders)
YxBBs.Execute("update [YX_Board] set Orders="&Orders&"+1 where BoardID="&NewBoardID&"")
Else
'当上级分类深度为0的时候只要更新上级分类版面数
YxBBs.Execute("update [YX_Board] set child=child+1 where Boardid="&ParentID)
Set rs=YxBBs.Execute("select max(Orders) from [YX_Board]")
YxBBs.Execute("update [YX_Board] set Orders="&rs(0)&"+1 where BoardID="&NewBoardID )
Rs.Close
End if
End if
Call Suc("","成功的添加了论坛 <b>"&BoardName&"</b> !","Board.Asp")
updateBoardCache
End Sub
Sub EditBoard
Dim BoardName,BoardLock,BoardType,Introduce,BoardImg,ParentID,BoardAdmin,BoardGrade
Set Rs=YxBBs.execute("Select ParentID,BoardName,BoardAdmin,BoardGrade,BoardLock,BoardType,Introduce,BoardImg From[YX_Board] Where BoardID="&YxBBs.BoardID&"")
If Rs.eof Then
Call GoBack("","该版面不存在,可能已经删除了")
Exit Sub
Else
ParentID=Rs(0)
BoardName=Rs(1)
BoardAdmin=Rs(2)
BoardGrade=Rs(3)
BoardLock=Rs(4)
BoardType=Rs(5)
Introduce=Rs(6)
BoardImg=Rs(7)
End IF
Rs.Close%><form method=POST style="margin:0" action="?Action=SaveEditBoard">
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#CCCCCC">
<td height="25" colspan="2" >编辑论坛</td>
</tr>
<tr bgcolor="#DEDEDE"><td width="35%" height="40"><b>论坛名称:</b><br>
论坛版面的名称</td><td height="65%"><input name="BoardID" value="<%=YxBBs.BoardID%>" type="hidden"><input name="boardname" type=text value="<%=BoardName%>" size=30></td></tr>
<tr bgcolor="#DEDEDE"><td height="40"><b>标志图片:</b><br>
论坛版面Logo地址,可以不填</td><td><input type=text name="BoardImg" value="<%=BoardImg%>" size=30></td></tr>
<tr bgcolor="#DEDEDE"><td height="40"><b>论坛介绍:</b><br>
论坛版面描述</td><td><textarea rows="3" name="Introduce"><%=Introduce%></textarea></td></tr>
<tr bgcolor="#DEDEDE"><td height="40"><b>论坛版主:</b><br>
添加多版主请用@@分隔,如:Name@@Name</td><td><input type=text name="BoardAdmin" size=30 value="<%=BoardAdmin%>"><input type="hidden" name="OldBoardAdmin" size=30 value="<%=BoardAdmin%>"></td></tr>
<tr bgcolor="#DEDEDE"><td height="40"><b>属于分类或论坛:</b><br>
选择要属于那个分类或那个论坛</td><td><select size="1" name="ParentID"><%=YxBBs.BoardIDList(ParentID,20)%></select></td></tr>
<tr bgcolor="#DEDEDE"><td height="40"><b>限制用户等级:</b><br>
指定等级以上用户才可进入论坛</td><td>
<select size="1" name="BoardGrade">
<option value="0" selected>0级:游客</option>
<%
Dim UG
set UG=Conn.execute("Select GradeNum,GradeName from YX_UserGrade order by GradeNum asc")
while not UG.Eof
If UG(0)=BoardGrade Then
Response.Write "<option value="&UG(0)&" selected>"&UG(0)&"级:"&UG(1)&"</option>"
Else
Response.Write "<option value="&UG(0)&">"&UG(0)&"级:"&UG(1)&"</option>"
End If
UG.MoveNext
wend
set UG=nothing
%>
</select>*</td></tr>
<tr><td bgcolor=#d7d7d7><b>是否认证版面:</b><br>
认证版只有版主和人证会员</td><td bgcolor=#d7d7d7><input type="radio" value="1" name="BoardType" <%if BoardType=1 then response.write "Checked"%>>是 <input type="radio" value="0" name="BoardType" <%if BoardType=0 then response.write "Checked"%>>否</td></tr>
<tr><td bgcolor=#d7d7d7><b>锁定版面:</b><br>
锁定之后不可以发布帖子</td><td bgcolor=#d7d7d7><input type="radio" value="1" name="BoardLock" <%if BoardLock=1 then response.write "Checked"%>>是 <input type="radio" value="0" name="BoardLock" <%if BoardLock=0 then response.write "Checked"%>>否</td></tr>
<tr bgcolor="#CCCCCC"><td colspan="2" align="center"><input type="submit" value=" 提 交 "> <input type="reset" value=" 重 置 "></td></tr></table>
</form>
<%
End Sub
Sub SaveEditBoard
Dim BoardID,BoardName,Introduce,BoardAdmin,OldBoardAdmin,BoardGrade,BoardLock,BoardType,BoardImg,ParentID,RootID,Depth,Child,Orders,ParentStr,I
Dim NewParentID,BoardNum,P_Rs
BoardID=YxBBs.Fun.GetStr("BoardID")
BoardName=YxBBs.Fun.GetStr("BoardName")
Introduce=YxBBs.Fun.GetStr("Introduce")
BoardAdmin=YxBBs.Fun.GetStr("BoardAdmin")
BoardGrade=YxBBs.Fun.GetStr("BoardGrade")
OldBoardAdmin=YxBBs.Fun.GetStr("OldBoardAdmin")
BoardLock=YxBBs.Fun.GetStr("BoardLock")
BoardType=YxBBs.Fun.GetStr("BoardType")
BoardImg=YxBBs.Fun.GetStr("BoardImg")
NewParentID=YxBBs.Fun.GetStr("ParentID")
If Not isnumeric(NewParentID) or BoardName="" Or Introduce="" Then
Call GoBack("",""):Exit Sub
ElseIF BoardID=NewParentID Then
Call GoBack("","所属论坛不能指定自己!"):Exit Sub
End If
Set Rs=YxBBs.execute("Select RootID,Depth,Child,Orders,ParentID,ParentStr From[YX_Board] where BoardID="&BoardID)
IF Rs.Eof or Rs.Bof Then
Call GoBack("系统出错!","该版面不存在,可能已经删除了!")
Exit Sub
End If
RootID=Rs(0)
Depth=Rs(1)
Child=Rs(2)
Orders=Rs(3)
ParentID=Rs(4)
ParentStr=Rs(5)
Rs.Close
If ParentID=0 then
Call GoBack("系统出错!","分类不能设置"):Exit Sub
ElseIf Int(NewParentID)<>Int(ParentID) Then
'判断所指定的论坛是否其下属论坛
Set Rs=YxBBs.Execute("select BoardID from [YX_board] where ParentStr like '%"&ParentStr&","&BoardID&"%' and BoardID="&NewParentID)
if not (Rs.eof and Rs.bof) then
Call GoBack("","您不能指定该版面的下属子论坛作为所属论坛")
Exit sub
End if
Rs.Close
'获得新选的父级
Set P_rs=YxBBs.Execute("select * from [YX_board] where Boardid="&NewParentID)
If P_rs("Depth")+1> MaxDepth Or (Child>0 And P_Rs("Depth")+2>MaxDepth) Then
P_rs.Close:Set P_rs=Nothing
Call GoBack("","本论坛限制了最多只能有" & MaxDepth & "级论坛.")
Exit Sub
End If
End if
YxBBs.Execute("Update [YX_Board] Set BoardName='"&BoardName&"',Introduce='"&Introduce&"',BoardAdmin='"&BoardAdmin&"',BoardGrade="&BoardGrade&",BoardLock="&BoardLock&",BoardType="&BoardType&",BoardImg='"&BoardImg&"' where BoardID="&BoardID&"")
If BoardAdmin <> OldBoardAdmin Then Call addmaster(BoardAdmin,OldBoardAdmin,1)
If Int(NewParentID)<>Int(ParentID) Then
'将一个分论坛移动到其他分论坛下
'获得所指定的论坛的相关信息
'得到其下属版面数
ParentStr=ParentStr & ","
BoardNum=YxBBs.Execute("select count(*) from [YX_Board] where ParentStr like '%"&ParentStr & BoardID&"%'")(0)
If Isnull(BoardNum) Then BoardNum=1
'在获得移动过来的版面数后更新排序在指定论坛之后的论坛排序数据
YxBBs.Execute("update [YX_Board] set orders=Orders + "&BoardNum&"+1 where RootID="&P_rs("RootID")&" And orders>"&P_rs("orders")&"")
'更新当前版面数据
If P_rs("parentstr")="0" Then
YxBBs.Execute("update [YX_Board] set Depth="&P_Rs("Depth")&"+1,orders="&P_Rs("orders")&"+1,rootid="&P_rs("Rootid")&",ParentID="&NewParentID&",ParentStr='" & P_Rs("BoardID") & "' Where BoardID="&BoardID)
Else
YxBBs.Execute("update [YX_Board] set Depth="&P_Rs("Depth")&"+1,orders="&P_Rs("orders")&"+1,rootid="&P_rs("Rootid")&",ParentID="&NewParentID&",ParentStr='" & P_Rs("ParentStr") & ","& P_Rs("BoardID") &"' Where BoardID="&BoardID)
End If
Dim TempParentStr
i=1
'更新下属,同时获得移动总数i
'如果有则更新下属版面数据
'深度为原有深度加上当前所属论坛的深度
Set Rs=YxBBs.Execute("select * from [YX_Board] where ParentStr like '%"&ParentStr & BoardID&"%' order by orders")
Do while not rs.eof
i=i+1
If P_rs("parentstr")="0" Then'如果其父级为类,那么其下属的版面数据
TempParentStr=P_rs("boardid") & "," & Replace(rs("parentstr"),ParentStr,"")
Else
TempParentStr=P_rs("parentstr") & "," & P_rs("boardID") & "," & replace(Rs("Parentstr"),ParentStr,"")
End If
YxBBs.Execute("update [YX_Board] set depth=depth+"&P_rs("depth")&"-"&depth&"+1,orders="&P_rs("orders")&"+"&I&",Rootid="&P_rs("Rootid")&",ParentStr='"&TempParentStr&"' where BoardID="&Rs("BoardID"))
Rs.movenext
Loop
Rs.Close
Dim TempParentID,II
TempParentID=NewParentID
If RootID=P_rs("RootID") then'在同一分类下移动
'更新所指向的上级论坛版面数,i为本次移动过来的版面数
'更新其父类版面数
YxBBs.Execute("update [YX_Board] set Child=child+"&i&" where (not ParentID=0) and BoardID="&TempParentID)
For II=1 to P_Rs("depth")
'得到其父类的父类的版面ID
Set Rs=YxBBs.Execute("Select ParentID from [YX_Board] where (not ParentID=0) and BoardID="&TempParentID)
If Not (rs.eof and rs.bof) then
TempParentid=Rs(0)
'更新其父类的父类版面数
YxBBs.Execute("update [YX_Board] set Child=child+"&i&" where (not ParentID=0) and BoardID="&TempParentID)
''''YxBBs.Execute("update [YX_Board] set Child=child+"&i&" where (not ParentID=0) and boardid in ())
End if
Next
'更新其原父类版面数
YxBBs.Execute("update [YX_Board] set Child=child-"&i&" where (not ParentID=0) and BoardID="&ParentID)
'更新其原来所属论坛数据
For II=1 to Depth
'得到其原父类的父类的版面ID
Set rs=YxBBs.Execute("select ParentID from [YX_Board] where (not ParentID=0) and BoardID="&ParentID)
if not (rs.eof and rs.bof) then
ParentID=rs(0)
'更新其原父类的父类版面数
YxBBs.Execute("update [YX_Board] set child=child-"&i&" where (not ParentID=0) and boardid="&ParentID)
End IF
Next
Else
'更新所指向的上级论坛版面数,i为本次移动过来的版面数
'更新其父类版面数
YxBBs.Execute("update [YX_Board] set Child=child+"&i&" where BoardID="&TempParentID)
For II=1 to P_Rs("depth")
'得到其父类的父类的版面ID
Set Rs=YxBBs.Execute("Select ParentID from [YX_Board] where BoardID="&TempParentID)
If Not (rs.eof and rs.bof) then
TempParentid=Rs(0)
'更新其父类的父类版面数
YxBBs.Execute("update [YX_Board] set Child=child+"&i&" where BoardID="&TempParentID)
End if
Next
'更新其原父类版面数
YxBBs.Execute("update [YX_Board] set Child=child-"&i&" where BoardID="&ParentID)
'更新其原父类的其它版面排序
YxBBs.Execute("Update [YX_Board] Set Orders=Orders-"&i&" where RootID="&RootID&" and Orders>"&Orders)
'更新其原来所属论坛数据
For II=1 to Depth
'得到其原父类的父类的版面ID
Set rs=YxBBs.Execute("select ParentID from [YX_Board] where BoardID="&ParentID)
if not (rs.eof and rs.bof) then
ParentID=rs(0)
'更新其原父类的父类版面数
YxBBs.Execute("update [YX_Board] set child=child-"&i&" where boardid="&ParentID)
End IF
Next
End if
P_rs.Close:Set P_rs=Nothing
End If
Call Suc("","论坛修改成功 !","Board.Asp")
UpdateBoardCache
End Sub
Sub DelBoard
Dim AllTable,I,II,Depth,ParentID,RootID,Orders
Set Rs=YxBBs.Execute("Select Depth,ParentID,RootID,Orders,Child From[YX_Board] where BoardID="&YxBBs.BoardID)
If Rs.Eof Then
Call Goback("系统出错","不存在,论坛可能已经删除了 !")
Exit Sub
ElseIf Rs(4)>0 Then
Call Goback("系统出错","该论坛含有属下论坛,不能删除 !")
Exit sub
Else
Depth=Rs(0)
ParentID=Rs(1)
RootID=Rs(2)
Orders=Rs(3)
End If
Rs.Close
AllTable=Split(YxBBs.BBSTable(0),",")
For i=0 To uBound(AllTable)
YxBBs.Execute("Delete from [YX_Bbs"&AllTable(i)&"] where BoardID="&YxBBs.BoardID&"")
Next
Set Rs=YxBBs.Execute("Select TopicID From[YX_Topic] where BoardID="&YxBBs.BoardID&" And IsVote ")
Do While Not Rs.Eof
YxBBs.Execute("Delete from [YX_TopicVote] where TopicID="&Rs(0))
YxBBs.Execute("Delete from [YX_TopicVoteUser] where TopicID="&Rs(0))
Rs.MoveNext
Loop
Rs.Close
'删除主题记录
YxBBs.Execute("Delete From[YX_Topic] where BoardID="&YxBBs.BoardID)
YxBBs.Execute("Delete From[YX_Board] where BoardID="&YxBBs.BoardID)
'更新其父类的版面数
YxBBs.Execute("update [YX_Board] set Child=child-1 where BoardID="&ParentID)
'更新其父类的其它版面排序
YxBBs.Execute("Update [YX_Board] Set Orders=Orders-1 where RootID="&RootID&" and Orders>"&Orders)
'更新其所属论坛数据
For II=1 to Depth
'得到其父类的父类的版面ID
Set rs=YxBBs.Execute("select ParentID from [YX_Board] where BoardID="&ParentID)
if not (rs.eof and rs.bof) then
ParentID=rs(0)
'更新其父类的父类版面数
YxBBs.Execute("update [YX_Board] set child=child-1 where boardid="&ParentID)
End IF
Rs.Close
Next
Call Suc("","成功的删除论坛版面 (包括该论坛的所有帖子)!","Board.Asp")
UpdateBoardCache
End Sub
Sub ClassOrders
Dim BoardID
Set Rs=YxBBs.Execute("Select BoardID,BoardName,RootID from[YX_Board] where Depth=0 order by RootID")
If Rs.Eof Then
Call GoBack("","论坛没有分类!请先<a href=?Action=AddClass> 添加分类</a>")
Exit Sub
End If
%><form method=POST style="margin:0" action="?Action=SaveClassOrders">
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#4D65A4">
<td height="25" colspan="2" bgcolor="#CCCCCC" >分类排序</td>
</tr>
<tr><td height="25" colspan="2" align="center" bgcolor="#DEDEDE">排序方式按从小到大排序,请用数字填写,排序数字不能相同。</td>
</tr>
<%
Do while not rs.eof
Response.Write"<tr><td height='25'> "&Rs(1)&"</td><td><input name='BoardID' type='hidden' value='"&Rs(0)&"'><input name='RootID' type='hidden' value='"&Rs(2)&"'><input type=text name='NewRootID' value='"&Rs(2)&"' size=4 ></td></tr>"
Rs.MoveNext
Loop
%>
<tr bgcolor="#4D65A4"><td colspan="2" align="center" bgcolor="#CCCCCC"><input type="submit" value=" 修 改 "> <input type="reset" value=" 重 置 "></td></tr></table></form>
<%Rs.Close
End Sub
Sub SaveClassOrders
Dim BoardID,RootID,NewRootID,Temp,I
Temp=","
For i=1 to Request.form("BoardID").count
BoardID = Request.form("BoardID")(i)
RootID = Request.form("RootID")(i)
NewRootID = Request.form("NewRootID")(i)
If InStr(Temp,","&NewRootID&",")>0 Then
Call GoBack("排序错误","各分类排序的数字不能一样!")
Exit Sub
End If
Temp=Temp&NewRootID&","
IF Not IsNumeric(BoardID) or Not isnumeric(NewRootID) Then
Call GoBack("排序错误","请用数字填写!")
Exit Sub
End IF
Next
For i=1 to Request.form("BoardID").count
BoardID = Request.form("BoardID")(i)
RootID = Request.form("RootID")(i)
NewRootID = Request.form("NewRootID")(i)
If RootID<>NewRootID Then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -