📄 forumlistbox.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Web.UI.WebControls;
using CommunityServer.Components;
using CommunityServer.Discussions.Components;
namespace CommunityServer.Discussions.Controls
{
/// <summary>
/// Summary description for ForumListBox.
/// </summary>
public class ForumListBox : ListBox
{
public ForumListBox()
{
DataBind();
}
public override void DataBind()
{
ArrayList forumGroups;
// Get all forum groups
if (this.ForumMode == ControlUserMode.User)
forumGroups = ForumGroups.GetForumGroups(false, false);
else
forumGroups = ForumGroups.GetForumGroups(false);
foreach (Group group in forumGroups)
{
User user = CSContext.Current.User;
// quick hack to keep recursive from showing
if (Items.FindByValue("g-" + group.GroupID) == null) {
// Get the sections for the group
if(this.ForumMode == ControlUserMode.User)
group.Sections = Forums.GetForumsByForumGroupID(group.GroupID,true,false,false,false);
else
group.Sections = Forums.GetForumsByForumGroupID(group.GroupID,false,true,false,false);
if(this.ShowEmptyForumGroups)
{
// Add the forum group
//
Items.Add(new ListItem(group.Name, "g-" + group.GroupID));
RecursiveAddForum (0, group.Sections);
// Add the forum group
//
Items.Add(new ListItem("", "s"));
}
else
{
if(group.HasSections)
{
// Add the forum group
//
Items.Add(new ListItem(group.Name, "g-" + group.GroupID));
RecursiveAddForum (0, group.Sections);
// Add the forum group
//
Items.Add(new ListItem("", "s"));
}
}
}
}
}
private bool _ShowEmptyForumGroups = false;
public bool ShowEmptyForumGroups
{
get
{
return _ShowEmptyForumGroups;
}
set
{
_ShowEmptyForumGroups = value;
}
}
public int SelectedForum
{
get
{
if (base.SelectedValue.StartsWith("f-"))
return int.Parse(base.SelectedValue.Replace("f-", ""));
return 0;
}
set
{
if (value > 0)
{
if (base.SelectedValue != "")
Items.FindByValue( base.SelectedValue ).Selected = false;
Items.FindByValue("f-" + value).Selected = true;
}
}
}
public int SelectedForumGroup
{
get
{
if (base.SelectedValue.StartsWith("f"))
{
return Forums.GetForum(int.Parse(base.SelectedValue.Replace("f-", ""))).GroupID;
}
else if(base.SelectedValue.StartsWith("g"))
{
return int.Parse(base.SelectedValue.Replace("g-", ""));
}
else
return 0;
}
set
{
// Deselect current item
if (base.SelectedValue != "")
Items.FindByValue( base.SelectedValue ).Selected = false;
Items.FindByValue("g-" + value).Selected = true;
}
}
private void RecursiveAddForum (int depth, ArrayList forums)
{
foreach (Forum forum in forums)
{
// We only go 3 deep
//
switch (depth)
{
case 0:
Items.Add(new ListItem(ResourceManager.GetString("Navigation_JumpDropDownList_Indent1") + forum.Name, "f-" + forum.SectionID.ToString()));
if (forum.Sections.Count > 0)
RecursiveAddForum((depth + 1), forum.Sections);
break;
case 1:
Items.Add(new ListItem(ResourceManager.GetString("Navigation_JumpDropDownList_Indent2") + forum.Name, "f-" + forum.SectionID.ToString()));
if (forum.Sections.Count > 0)
RecursiveAddForum((depth + 1), forum.Sections);
break;
case 2:
Items.Add(new ListItem(ResourceManager.GetString("Navigation_JumpDropDownList_Indent3") + forum.Name, "f-" + forum.SectionID.ToString()));
if (forum.Sections.Count > 0)
RecursiveAddForum((depth + 1), forum.Sections);
break;
default:
return;
}
}
}
[
System.ComponentModel.DefaultValue( ControlUserMode.User ),
]
public virtual ControlUserMode ForumMode
{
get
{
Object state = ViewState["ForumMode"];
if ( state != null )
{
return (ControlUserMode)state;
}
return ControlUserMode.User;
}
set
{
ViewState["ForumMode"] = value;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -