📄 forummembersview.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using CommunityServer.Components;
using CommunityServer.Controls;
namespace CommunityServer.Discussions.Controls
{
/// <summary>
/// This server control is used to display all the members of the current forum.
/// </summary>
[
ParseChildren(true)
]
public class ForumMembersView : TemplatedWebControl
{
#region Child Controls
protected UserSearch UserSearchControl;
protected Repeater userList;
protected ForumLinkButtonPager pager;
protected CurrentPage currentPage;
protected Label sectionTitle;
protected Label sectionDescription;
#endregion
protected override void OnInit(EventArgs e)
{
if (SkinName == null)
ExternalSkinFileName = "View-ForumMembers.ascx";
else
ExternalSkinFileName = SkinName;
base.OnInit(e);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!this.Page.IsPostBack)
{
this.EnsureChildControls();
CSContext cntx = CSContext.Current;
UserSearchControl.Visible = cntx.SiteSettings.EnablePublicAdvancedMemberSearch;
pager.PageSize = cntx.SiteSettings.MembersPerPage;
// Don't DataBind the first time this page loadss. Only when the UserSearchControl.SearchButton has been clicked.
if (cntx.QueryString["search"] != null)
DataBind();
}
}
#region DataBind
public override void DataBind()
{
base.DataBind();
PopulateUserList();
}
private void UserList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
User user = e.Item.DataItem as User;
if(user != null)
{
// Username
HyperLink Username = e.Item.FindControl("Username") as HyperLink;
if(Username != null)
{
Username.Text = user.DisplayName;
Username.NavigateUrl = Globals.GetSiteUrls().UserProfile(user.Username);
}
// Location
Literal Location = e.Item.FindControl("Location") as Literal;
if(Location != null)
{
if (!Globals.IsNullorEmpty(user.Profile.Location))
{
Location.Text = user.Profile.Location;
}
else
{
HtmlContainerControl LocationDiv = e.Item.FindControl("LocationDiv") as HtmlContainerControl;
if (LocationDiv != null)
LocationDiv.Visible = false;
else
Location.Visible = false;
}
}
// Private Messages
UserImageButtons PrivateMessages = e.Item.FindControl("PrivateMessages") as UserImageButtons;
if(PrivateMessages != null)
PrivateMessages.User = user;
// Home Page
UserImageButtons HomePage = e.Item.FindControl("HomePage") as UserImageButtons;
if(HomePage != null)
HomePage.User = user;
// Weblog
UserImageButtons Weblog = e.Item.FindControl("Weblog") as UserImageButtons;
if(Weblog != null)
Weblog.User = user;
// Date Created
CSContext cntx = CSContext.Current;
Literal DateCreated = e.Item.FindControl("DateCreated") as Literal;
if(DateCreated != null)
DateCreated.Text = user.DateCreated.ToString(cntx.User.Profile.DateFormat);
// Date Created
Literal LastActivity = e.Item.FindControl("LastActivity") as Literal;
if(LastActivity != null)
LastActivity.Text = user.LastActivity.ToString(cntx.User.Profile.DateFormat);
// Posts
HyperLink PostCount = e.Item.FindControl("PostCount") as HyperLink;
if(PostCount != null)
{
if (user.TotalPosts > 0)
{
PostCount.Text = Formatter.FormatNumber(user.TotalPosts);
PostCount.NavigateUrl = Globals.GetSiteUrls().SearchByUser(user.UserID);
}
else
{
PostCount.Text = "-";
}
}
}
}
}
#endregion
#region Skin
protected override void AttachChildControls()
{
userList = FindControl("UserList") as Repeater;
pager = FindControl("Pager") as ForumLinkButtonPager;
currentPage = FindControl("CurrentPage") as CurrentPage;
UserSearchControl = FindControl("UserSearchControl") as UserSearch;
// Set the title and description if they haven't been set by a derived class
if (sectionTitle == null && sectionDescription == null)
{
sectionTitle = (Label) FindControl("SectionTitle");
if (sectionTitle != null)
sectionTitle.Text = ResourceManager.GetString("CommunityServerMembers_Inline1");
sectionDescription = (Label) FindControl("SectionDescription");
if (sectionDescription != null)
sectionDescription.Text = ResourceManager.GetString("CommunityServerMembers_Inline2");
}
InitializeChildControls();
}
private void InitializeChildControls()
{
if (pager != null)
pager.IndexChanged +=new EventHandler(PageIndex_Changed);
if (userList != null)
userList.ItemDataBound +=new RepeaterItemEventHandler(UserList_ItemDataBound);
}
#endregion
#region Event Handlers
private void PageIndex_Changed(Object sender, EventArgs e)
{
DataBind();
}
#endregion
#region Helpers
public virtual void PopulateUserList()
{
CSContext context = CSContext.Current;
int pageIndex = 0;
int pageSize = 999999999;
if (pager != null)
{
pageIndex = pager.PageIndex;
pageSize = context.SiteSettings.MembersPerPage;
pager.PageSize = pageSize;
}
UserSet userSet = UserSearchControl.GetUsersAndBindControl(pageIndex, pageSize, null);
if (userList != null)
{
userList.DataSource = userSet.Users;
userList.DataBind();
}
if (pager != null)
pager.TotalRecords = currentPage.TotalRecords = userSet.TotalRecords;
if (currentPage != null)
{
currentPage.TotalPages = pager.CalculateTotalPages();
currentPage.PageIndex = pager.PageIndex;
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -