📄 #group.mo
字号:
Option Explicit
TBBS.Vars("template") = "admin.group"
TBBS.SetNodes "group"
TBBS.AddNav "", TBBS.Lang("user_manage")
Call main()
Private Sub doGet()
Select Case TBBS.Vars("action")
Case "edit"
Call doGetEdit()
Case Else
TBBS.AddNav "", TBBS.Lang("user_group_manage")
End Select
End Sub
Private Sub doPost()
Select Case TBBS.Vars("action")
Case "save"
TBBS.AddNav "", TBBS.Lang("user_group_manage")
Call doPostSave
Case "edit"
TBBS.AddNav "admin.asp?handle=group", TBBS.Lang("user_group_manage")
Call doPostEdit
Case "delete"
TBBS.AddNav "", TBBS.Lang("user_group_manage")
Call doPostDelete
Case Else
TBBS.AddNav "", TBBS.Lang("user_group_manage")
TBBS.AddError "invalid_handle", Array()
End Select
End Sub
Private Sub doGetEdit()
TBBS.AddNav "admin.asp?handle=group", TBBS.Lang("user_group_manage")
If Not CheckGroup("crt", Request.QueryString("id")) Then
TBBS.Vars("state") = 1
TBBS.AddHint "missing_edit_group", Array()
End If
End Sub
Private Function CheckGroup(ByVal strName, ByVal strId)
CheckGroup = False
Dim lngId
Dim key, arr, i
Dim clsPermit
Dim xmlPermits, xmlPermit
lngId = atol(strId)
If lngId < 0 Then Exit Function
Dim xmlDoc, xmlNode
Set xmlDoc = TBBS.GetXMLCache("Groups")
Set xmlNode = XMLQuery(xmlDoc.documentElement, "group[@seqid = " & lngId & "]")
If Not xmlNode Is Nothing Then
CheckGroup = True
TBBS.Vars("group_" & strName & "_id") = lngId
Set clsPermit = Server.CreateObject(PROGID_HASH)
HashAdd clsPermit, MyKernel.Resource("moex.twinbbs.permit"), "|"
arr = Split(xmlNode.getAttribute("permit"), "|")
key = clsPermit.Keys
Set xmlPermits = TBBS.Element("permits")
For i = 0 To UBound(key)
Set xmlPermit = xmlPermits.appendChild(xmlPermits.ownerDocument.createElement("permit"))
xmlPermit.setAttribute "name", key(i)
xmlPermit.setAttribute "lang", TBBS.Lang("ps_" & key(i))
If i > UBound(arr) Then
xmlPermit.setAttribute "value", 0
Else
xmlPermit.setAttribute "value", arr(i)
End If
Set xmlPermit = Nothing
Next
Set xmlPermits = Nothing
set clsPermit = Nothing
End If
Set xmlNode = Nothing
Set xmlDoc = Nothing
End Function
Private Sub doPostSave()
Dim arrSeqId, arrName, arrMinPosts, arrGroupImg
Dim i
Dim clsCmd
TBBS.Vars("flag") = atoi(MyIO.Form("flag"))
Select Case TBBS.Vars("flag")
Case GROUP_MEMBER
TBBS.Vars("state") = 1
Case GROUP_SYSTEM
TBBS.Vars("state") = 3
Case GROUP_CUSTOM
TBBS.Vars("state") = 5
End Select
TBBS.Vars("seqid") = MyIO.Form("seqid")
TBBS.Vars("name") = MyIO.Form("name")
TBBS.Vars("minposts") = MyIO.Form("minposts")
TBBS.Vars("groupimg") = MyIO.Form("groupimg")
arrSeqId = Split(TBBS.Vars("seqid"), ", ")
arrName = Split(TBBS.Vars("name"), ", ")
arrMinPosts = Split(TBBS.Vars("minposts"), ", ")
arrGroupImg = Split(TBBS.Vars("groupimg"), ", ")
If UBound(arrSeqId) <> UBound(arrName) Then
TBBS.AddHint "invalid_group_name", Array()
ElseIf UBound(arrSeqId) <> UBound(arrMinPosts) Then
TBBS.AddHint "invalid_minposts", Array()
ElseIf UBound(arrSeqId) <> UBound(arrGroupImg) Then
TBBS.AddHint "invalid_groupimg", Array()
Else
Set clsCmd = MyKernel.Command(T_GROUP)
For i = 0 TO UBound(arrSeqId)
If Trim(arrName(i)) <> "" Then
clsCmd.CommandType = IIf(arrSeqId(i) = "0" And TBBS.Vars("flag") <> 1, "INSERT", "UPDATE")
clsCmd.Where = "SEQID=" & atol(arrSeqId(i))
clsCmd.Add "name", arrName(i)
clsCmd.Add "minposts", arrMinPosts(i)
clsCmd.Add "groupimg", arrGroupImg(i)
If arrSeqId(i) = "0" Then
clsCmd.Add "permit", ""
clsCmd.Add "usercount", 0
clsCmd.Add "flag", TBBS.Vars("flag")
End If
clsCmd.Exec
End If
Next
Set clsCmd = Nothing
Select Case TBBS.Vars("flag")
Case GROUP_MEMBER
TBBS.Vars("state") = 2
Case GROUP_SYSTEM
TBBS.Vars("state") = 4
Case GROUP_CUSTOM
TBBS.Vars("state") = 6
End Select
TBBS.AddHint "save_group_ok", Array()
TBBS.SetXMLCache "Groups"
TBBS.SetNodes "group"
End If
End Sub
Private Sub doPostEdit()
Dim ptr
Dim clsPermit
Dim clsCmd
Dim xmlPermits, xmlPermit
TBBS.Vars("state") = 1
If Not CheckGroup("crt", Request.QueryString("id")) Then
TBBS.AddHint "missing_edit_group", Array()
Else
TBBS.Vars("state") = 2
TBBS.AddHint "edit_group_ok", Array()
Set clsPermit = Server.CreateObject(PROGID_HASH)
HashAdd clsPermit, MyKernel.Resource("moex.twinbbs.permit"), "|"
Set xmlPermits = TBBS.Element("permits")
For Each ptr In clsPermit.Keys
Set xmlPermit = xmlPermits.selectSingleNode("permit[@name = '" & XPathString(ptr) & "']")
xmlPermit.setAttribute "value", MyIO.Form(ptr)
Set xmlPermit = Nothing
clsPermit(ptr) = atoi(MyIO.Form(ptr))
Next
Set xmlPermits = Nothing
Set clsCmd = MyKernel.Command(T_GROUP)
clsCmd.CommandType = "UPDATE"
clsCmd.Where = "SEQID=" & TBBS.Vars("group_crt_id")
clsCmd.Add "permit", Join(clsPermit.Items, "|")
clsCmd.Exec
Set clsCmd = Nothing
set clsPermit = Nothing
TBBS.SetXMLCache "Groups"
TBBS.SetNodes "group"
End If
End Sub
Private Sub doPostDelete()
TBBS.Vars("flag") = atol(MyIO.Form("flag"))
Select Case TBBS.Vars("flag")
Case GROUP_MEMBER
TBBS.Vars("state") = 1
Case GROUP_SYSTEM
TBBS.Vars("state") = 3
Case GROUP_CUSTOM
TBBS.Vars("state") = 5
End Select
TBBS.Vars("gid") = atol(MyIO.Form("gid"))
If TBBS.Vars("gid") < 1 Then
TBBS.AddHint "missing_delete_group", Array()
ElseIf TBBS.Vars("flag") = GROUP_SYSTEM Then
TBBS.AddHint "forbid_delete_system_group", Array()
ElseIf Not CheckGroup("crt", TBBS.Vars("gid")) Then
TBBS.AddHint "missing_delete_group", Array()
Else
Select Case TBBS.Vars("flag")
Case GROUP_MEMBER
TBBS.Vars("state") = 2
Case GROUP_SYSTEM
TBBS.Vars("state") = 4
Case GROUP_CUSTOM
TBBS.Vars("state") = 6
End Select
MyKernel.DB.Exec "DELETE FROM " & T_GROUP & " WHERE SEQID=" & TBBS.Vars("gid")
TBBS.AddHint "delete_group_ok", Array()
TBBS.SetXMLCache "Groups"
TBBS.SetNodes "group"
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -