📄 threadview.cs
字号:
if ((mode != ThreadViewMode.Default) && (mode != ThreadViewMode.PrivateMessages))
{
if (forumSettings != null)
forumSettings.Visible = false;
}
}
}
else
{
if (newPostButton != null)
newPostButton.Visible = false;
if (poll != null)
poll.Visible = false;
if (newPostButtonDown != null)
newPostButtonDown.Visible = false;
if (forumSettings != null)
forumSettings.Visible = false;
}
#endregion
#region Get a populated ThreadSet
// Get a populated thread set
//
if ((forum != null) && (forum.SectionID > 0))
forumID = forum.SectionID;
else
if (mode != ThreadViewMode.PrivateMessages)
forumID = forumFilterddl.SelectedForum;
// Fix #1308: don't show private messages unless if asked
// occurs when forumGroup or blank is selected
if ((forumID == 0) && (mode != ThreadViewMode.PrivateMessages))
{
forumID = -1; // show all
forumFilterddl.SelectedIndex = 0; // select all filter
}
if (dateFilterMode == ThreadDateFilterMode.LastVisit)
dateFilterValue = csContext.User.GetUserCookie().LastVisit;
else
dateFilterValue = dateFilter.SelectedDate;
ForumThreadQuery query = new ForumThreadQuery();
query.ForumID = forumID;
query.PageIndex = pager.PageIndex;
query.PageSize = pager.PageSize;
query.ThreadsNewerThan = dateFilterValue;
query.SortBy = this.sortBy;
query.Order = this.sortOrder;
query.UserFilter = this.userFilter;
query.PostMedia = this.postMedia;
switch (mode)
{
case ThreadViewMode.Active:
query.ActiveTopics = true;
query.UnReadOnly = this.hideReadPost;
threadSet = Threads.GetThreads(query);
pager.UrlPattern = this.BuildQuerystringFilter(ForumUrls.Instance().PostsActivePaged( forumID ), mode);
break;
case ThreadViewMode.Unanswered:
query.UnReadOnly = this.hideReadPost;
query.UnAnsweredOnly = true;
threadSet = Threads.GetThreads(query);
pager.UrlPattern = this.BuildQuerystringFilter(ForumUrls.Instance().PostsUnansweredPaged( forumID ), mode);
break;
case ThreadViewMode.NotRead:
query.UnReadOnly = true;
threadSet = Threads.GetThreads(query);
pager.UrlPattern = this.BuildQuerystringFilter(ForumUrls.Instance().PostsNotReadPaged( forumID ), mode);
break;
case ThreadViewMode.MyForums:
query.UserFilter = ThreadUsersFilter.HideTopicsParticipatedIn;
query.UnReadOnly = this.hideReadPost;
threadSet = Threads.GetThreads(query);
pager.UrlPattern = this.BuildQuerystringFilter(SiteUrls.Instance().UserMyForums, mode);
break;
case ThreadViewMode.PrivateMessages:
query.ForumID = 0;
query.UserFilter = ThreadUsersFilter.All;
threadSet = Threads.GetThreads(query);
pager.UrlPattern = this.BuildQuerystringFilter( SiteUrls.Instance().UserPrivateMessages, mode );
break;
case ThreadViewMode.Videos:
query.PostMedia = PostMediaType.Video;
threadSet = Threads.GetThreads(query);
break;
default:
if (forumID > 0)
{
query.UnReadOnly = this.hideReadPost;
threadSet = Threads.GetThreads(query);
}
else
throw new CSException(CSExceptionType.SectionNotFound);
pager.UrlPattern = this.BuildQuerystringFilter( ForumUrls.Instance().Forum( forumID ), mode );
break;
}
// If we have sub forums display them
if ((null != forum) && (forum.Sections.Count > 0))
{
subForumContainer.Visible = true;
// Sort subforums by name
forum.Sections.Sort(new SectionSorter(SectionSortBy.Name));
subForums.DataSource = forum.Sections;
subForums.DataBind();
}
if ((threadSet.Announcements.Count > 0) &&
(mode != ThreadViewMode.Unanswered) &&
(mode != ThreadViewMode.Active) )
{
announcements.DataSource = threadSet.Announcements;
announcements.DataBind();
}
else if ((mode != ThreadViewMode.Unanswered) &&
(mode != ThreadViewMode.Active))
{
announcements.DataSource = null;
announcements.DataBind();
}
// Do we have posts to display?
//
if (threadSet.Threads.Count > 0)
{
threads.DataSource = threadSet.Threads;
threads.DataBind();
}
else
{
threads.DataSource = null;
threads.DataBind();
}
// Do we have announcements or threads?
//
if ((threads.DataSource == null) &&
(announcements.DataSource == null))
{
noThreadsToDisplay.Visible = true;
if (moveThreads != null)
{
moveThreads.Visible = false;
}
}
else
{
noThreadsToDisplay.Visible = false;
}
#endregion
pager.TotalRecords = currentPage.TotalRecords = threadSet.TotalRecords;
if (pager2 != null)
{
pager2.PageIndex = pager.PageIndex;
pager2.UrlPattern = pager.UrlPattern;
pager2.TotalRecords = pager.TotalRecords;
}
currentPage.TotalPages = pager.CalculateTotalPages();
currentPage.PageIndex = pager.PageIndex;
if (currentPage2 != null)
{
currentPage2.TotalRecords = currentPage.TotalRecords;
currentPage2.TotalPages = currentPage.TotalPages;
currentPage2.PageIndex = pager.PageIndex;
}
if ((aggregateRssLink != null) && (forumFilterddl.SelectedIndex == 0))
{
switch (mode)
{
case ThreadViewMode.Active:
case ThreadViewMode.Unanswered:
case ThreadViewMode.Videos:
aggregateRssLink.Mode = mode;
aggregateRssLink.Visible = true;
break;
}
if (rssLink != null)
rssLink.Visible = false;
}
if ((rssLink != null) && (forumFilterddl.SelectedIndex != 0))
{
csContext.SectionID = forumFilterddl.SelectedForum;
rssLink.Mode = mode;
rssLink.Visible = true;
if (aggregateRssLink != null)
aggregateRssLink.Visible = false;
}
}
#endregion
[AjaxMethod(IncludeControlValuesWithCallBack=false)]
public void UpdateForumName(string name)
{
if(csContext.User.IsForumAdministrator)
{
Forum f = Forums.GetForum(csContext.SectionID);
if(f != null)
{
f.Name = name;
Sections.UpdateSection(f);
}
}
}
[AjaxMethod(IncludeControlValuesWithCallBack=false)]
public void UpdateForumDescription(string description)
{
if(csContext.User.IsForumAdministrator)
{
Forum f = Forums.GetForum(csContext.SectionID);
if(f != null)
{
f.Description = description;
Sections.UpdateSection(f);
}
}
}
#region Skin
protected override void AttachChildControls()
{
forumName = (InlineTextEdit) FindControl("ForumName");
forumDescription = (InlineTextEdit) FindControl("ForumDescription");
//threadDisplay = FindControl("ThreadDisplay");
noThreadsToDisplay = FindControl("NoThreadsToDisplay");
filterUsers = (FilterUsersDropDownList) FindControl("FilterUsers");
threads = (Repeater) FindControl("Threads");
announcements = (Repeater) FindControl("Announcements");
subForumContainer = FindControl("SubForumContainer") as Control;
subForums = FindControl("SubForumRepeater") as ForumRepeater;
hideReadPosts = (HideReadPostsDropDownList) FindControl("HideReadPosts");
threadSortddl = (ThreadSortDropDownList) FindControl("SortThreads");
sortOrderddl = (SortOrderDropDownList) FindControl("SortOrder");
forumFilterddl = (ForumDropDownList) FindControl("ForumDropDownList1");
forumFilterText = (Label) FindControl("ForumFilterText");
moveThreads = (LinkButton) FindControl("moveThreads");
filterTopicRow = (HtmlTableRow) FindControl("FilterTopicRow");
emailNotificationRow = (HtmlTableRow) FindControl("EmailNotificationRow");
ddlTracking = (EmailNotificationDropDownList) FindControl("ForumTrackingDDL");
sortButton = (Button) FindControl("SortThreadsButton");
rememberSettingsButton = (Button) FindControl("RememberSettingsButton");
dateFilter = (DateFilter) FindControl("DateFilter");
pager = (ForumPager) FindControl("Pager");
pager2 = (ForumPager) FindControl("Pager2");
currentPage = (CurrentPage) FindControl("CurrentPage");
currentPage2 = (CurrentPage) FindControl("CurrentPage2");
newPostButton = (ForumImageButton) FindControl("NewPostButton");
poll = (ForumImageButton) FindControl("Poll");
newPostButtonDown = (ForumImageButton) FindControl("NewPostButtonDown");
forumSettings = (ForumImageButton) FindControl("ForumSettings");
//postbackSourceControl = GetPostBackControl();
aggregateRssLink = (AggregateRssLink) FindControl("aggregateRssLink");
rssLink = (RssLink) FindControl("rssLink");
InitializeChildControls();
}
private void InitializeChildControls()
{
if (announcements != null)
announcements.ItemDataBound += new RepeaterItemEventHandler( Threads_ItemDataBound );
if (threads != null)
threads.ItemDataBound += new RepeaterItemEventHandler( Threads_ItemDataBound );
// We don't need to move threads that are private messages, so the skin doesn't have the move button.
//
if (moveThreads != null &&
mode != ThreadViewMode.PrivateMessages)
{
moveThreads.Click += new EventHandler( MoveThreads_OnClick );
}
if (sortButton != null)
sortButton.Click += new EventHandler( ThreadFilterSettings_Changed );
if (rememberSettingsButton != null)
rememberSettingsButton.Click += new EventHandler( RememberThreadFilterSettings_Click );
if (forumFilterddl != null)
{
switch (mode)
{
case ThreadViewMode.Active:
case ThreadViewMode.Unanswered:
case ThreadViewMode.NotRead:
case ThreadViewMode.MyForums:
forumFilterddl.SelectedIndexChanged += new EventHandler( ForumFilter_Changed );
break;
}
}
if (dateFilter != null)
{
if ((mode != ThreadViewMode.Default) && (mode != ThreadViewMode.PrivateMessages))
{
if ((FindControl("DateFilter2") as DateFilter) != null)
{
dateFilter = FindControl("DateFilter2") as DateFilter;
dateFilter.Visible = true;
dateFilter.DateChanged += new EventHandler( ForumFilter_Changed );
}
}
}
}
#endregion
#region Properties
/// <value>
/// Controls the mode that the thread view control displays
/// </value>
public ThreadViewMode ThreadViewMode
{
get { return mode; }
set { mode = value; }
}
#endregion
#region Event Handlers
#region ForumFilter_Changed
/// <summary>
/// Fired when thread's forum filter has changed.
/// </summary>
public void ForumFilter_Changed (Object sender, EventArgs e)
{
// Set pager to 1st page
pager.PageIndex = 0;
if (dateFilter != null)
dateFilterMode = dateFilter.SelectedValue;
DataBind();
}
#endregion
#region ThreadFilterSettings_Changed
/// <summary>
/// Fired when current thread's filter settigs should be changed
/// and applied.
/// </summary>
public void ThreadFilterSettings_Changed(Object sender, EventArgs e)
{
// Set pager to 1st page
//
pager.PageIndex = 0;
// If user have chosen Apply then we shall use local filter.
// This applies only to authenticated users.
//
authUseLocalFilter = true;
// Update filtering field values
//
this.SetFilteringFieldValues();
DataBind();
}
#endregion
#region RememberThreadFilterSettings_Click
/// <summary>
/// Fired when current thread's filter settigs should be remembered
/// in current user's cookie and applied.
/// </summary>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -