📄 threadview.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
// TODO: Remove code that display help...
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CommunityServer.Components;
using CommunityServer.Controls;
using CommunityServer.Discussions.Components;
namespace CommunityServer.Discussions.Controls
{
// *********************************************************************
// ThreadView
//
/// <summary>
/// This server control is used to display top level threads. Note, a thread
/// is a post with more information. The Thread class inherits from the Post
/// class.
/// </summary>
///
// ********************************************************************/
public class ThreadView : SkinnedWebControl
{
#region Member variables and constructor
string skinFilename = "View-Threads.ascx";
CSContext csContext = CSContext.Current;
internal Forum forum;
//Control threadDisplay;
Control noThreadsToDisplay;
internal Repeater announcements;
internal Repeater threads;
Pager pager;
CurrentPage currentPage;
ThreadSet threadSet;
DateFilter dateFilter;
SortThreadsBy sortBy = SortThreadsBy.LastPost;
SortOrder sortOrder = SortOrder.Ascending;
ThreadViewMode mode = ThreadViewMode.Default;
Label forumName;
Label forumDescription;
Label forumFilterText;
//EmailNotificationDropDownList ddlTracking;
ThreadSortDropDownList threadSortddl;
SortOrderDropDownList sortOrderddl;
ForumDropDownList forumFilterddl;
Button sortButton;
Button rememberSettingsButton;
HideReadPostsDropDownList hideReadPosts;
FilterUsersDropDownList filterUsers;
// *********************************************************************
// ThreadView
//
/// <summary>
/// The constructor simply checks for a ForumID value passed in via the
/// HTTP POST or GET.
/// properties.
/// </summary>
///
// ********************************************************************/
public ThreadView()
{
try
{
int modeFromQS = Int32.Parse(csContext.Context.Request.QueryString["mode"]);
// What mode are we running in?
//
if (modeFromQS > 0)
mode = (ThreadViewMode) modeFromQS;
}
catch
{
mode = ThreadViewMode.Default;
}
if (SkinFilename == null)
SkinFilename = skinFilename;
}
#endregion
#region Skin initialization
// *********************************************************************
// Initializeskin
//
/// <summary>
/// Initializes the user control loaded in CreateChildControls. Initialization
/// consists of finding well known control names and wiring up any necessary events.
/// </summary>
///
// ********************************************************************/
protected override void InitializeSkin(Control skin)
{
// Find the controls we need to databind
//
forumName = (Label) skin.FindControl("ForumName");
forumDescription = (Label) skin.FindControl("ForumDescription");
//threadDisplay = skin.FindControl("ThreadDisplay");
noThreadsToDisplay = skin.FindControl("NoThreadsToDisplay");
filterUsers = (FilterUsersDropDownList) skin.FindControl("FilterUsers");
threads = (Repeater) skin.FindControl("Threads");
announcements = (Repeater) skin.FindControl("Announcements");
hideReadPosts = (HideReadPostsDropDownList) skin.FindControl("HideReadPosts");
threadSortddl = (ThreadSortDropDownList) skin.FindControl("SortThreads");
sortOrderddl = (SortOrderDropDownList) skin.FindControl("SortOrder");
forumFilterddl = (ForumDropDownList) skin.FindControl("ForumDropDownList1");
forumFilterText = (Label) skin.FindControl("ForumFilterText");
announcements.ItemDataBound += new RepeaterItemEventHandler( Threads_ItemDataBound );
threads.ItemDataBound += new RepeaterItemEventHandler( Threads_ItemDataBound );
// Ensure we have a valid forum
//
try
{
switch (mode)
{
case ThreadViewMode.Active:
forumFilterddl.SelectedIndexChanged += new EventHandler(forumFilterddl_Changed);
forum = new Forum(forumFilterddl.SelectedForum);
forumName.Text = ResourceManager.GetString("ViewActiveThreads_Title");
forumDescription.Text = ResourceManager.GetString("ViewActiveThreads_Description");
break;
case ThreadViewMode.Unanswered:
forumFilterddl.SelectedIndexChanged += new EventHandler(forumFilterddl_Changed);
forum = new Forum(forumFilterddl.SelectedForum);
forumName.Text = ResourceManager.GetString("ViewUnansweredThreads_Title");
forumDescription.Text = ResourceManager.GetString("ViewUnansweredThreads_Description");
break;
case ThreadViewMode.NotRead:
forumFilterddl.SelectedIndexChanged += new EventHandler(forumFilterddl_Changed);
forum = new Forum(forumFilterddl.SelectedForum);
forumName.Text = ResourceManager.GetString("ViewNotReadThreads_Title");
forumDescription.Text = ResourceManager.GetString("ViewNotReadThreads_Description");
break;
case ThreadViewMode.PrivateMessages:
//NOTE: TODO: 0 can not be used to hard code Private Forum
forum = Forums.GetForum(0);
forumName.Text = ResourceManager.GetString("PrivateMessages_Title");
forumDescription.Text = ResourceManager.GetString("PrivateMessages_Description");
break;
case ThreadViewMode.MyForums:
//don't need filter when viewing My Forums
forumFilterddl.Visible = false;
forumFilterText.Visible = false;
forumName.Text = ResourceManager.GetString("ViewMyForumsThreads_Title");
forumDescription.Text = ResourceManager.GetString("ViewMyForumsThreads_Description");
break;
default:
//don't need filter when viewing a forum by default
forumFilterddl.Visible = false;
forumFilterText.Visible = false;
int forumID = csContext.ForumID;
if (forumID > 0)
{
forum = Forums.GetForum(forumID, true, true);
Permissions.AccessCheck(forum, Permission.View, CSContext.Current.User);
forumName.Text = forum.Name;
forumDescription.Text = forum.Description;
}
break;
}
}
catch( Exception ex )
{
throw new CSException(CSExceptionType.SectionNotFound, csContext.ForumID.ToString(), ex );
}
// Ensure we have an authenticated user if the user is asking for the private messages
//
if ((csContext.ForumID == 0) && (csContext.User.IsAnonymous))
throw new CSException(CSExceptionType.SectionNotFound, csContext.ForumID.ToString());
sortButton = (Button) skin.FindControl("SortThreadsButton");
if (sortButton != null)
{
sortButton.Text = ResourceManager.GetString("ViewThreads_SortThreads");
sortButton.Click += new EventHandler(Sort_Changed);
}
rememberSettingsButton = (Button) skin.FindControl("RememberSettingsButton");
if (rememberSettingsButton != null)
{
rememberSettingsButton.Text = ResourceManager.GetString("ViewThreads_RememberSettings");
rememberSettingsButton.Click += new EventHandler(RememberSortSettings_Click);
}
// Subscribe to the date filter's changed event
//
dateFilter = (DateFilter) skin.FindControl("DateFilter");
if (dateFilter != null)
dateFilter.DateChanged += new EventHandler(Sort_Changed);
else
dateFilter = new DateFilter();
// Find the Pager and current page controls
//
pager = (Pager) skin.FindControl("Pager");
currentPage = (CurrentPage) skin.FindControl("CurrentPage");
// Do we have any sortBy / sortOrder data?
//
SetSort();
// Do we have any rembered settings to apply?
if (!csContext.User.IsAnonymous)
{
UserCookie cookie = new UserCookie(csContext.User);
ForumUserOptions options = cookie.GetForumOptions(csContext.ForumID);
if (options.HasSettings)
{
dateFilter.Items.FindByValue( ((int) options.DateFilter).ToString() ).Selected = true;
if (hideReadPosts != null)
hideReadPosts.SelectedValue = options.HideReadPosts;
if (filterUsers != null)
filterUsers.SelectedValue = options.UserFilter;
threadSortddl.SelectedValue = options.SortBy;
sortOrderddl.SelectedValue = options.SortOrder;
}
}
else if (mode != ThreadViewMode.Default)
{
// if (!csContext.User.IsAnonymous)
// ddlTracking.Visible = false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -