📄 aggregatelist.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Web.UI.WebControls;
using CommunityServer.Blogs.Components;
using CommunityServer.Components;
using CommunityServer.Controls;
namespace CommunityServer.Blogs.Controls
{
/// <summary>
/// Summary description for AggregateList.
/// </summary>
public class AggregateList : WeblogBaseTemplatedWebControl
{
public AggregateList()
{
//
// TODO: Add constructor logic here
//
}
public event EventHandler PagerIndexChanged;
Repeater posts = null;
Pager postPager = null;
private WeblogConfiguration config = WeblogConfiguration.Instance();
/// <summary>
/// Property TotalRecords (int)
/// </summary>
public int TotalRecords
{
get
{
this.EnsureChildControls();
return postPager.TotalRecords;
}
set
{
this.EnsureChildControls();
this.postPager.TotalRecords = value;
}
}
/// <summary>
/// Property PageIndex (int)
/// </summary>
public int PageIndex
{
get
{
this.EnsureChildControls();
return postPager.PageIndex;
}
set
{
this.EnsureChildControls();
this.postPager.PageIndex = value;
}
}
/// <summary>
/// Property PageSize (int)
/// </summary>
public int PageSize
{
get
{
this.EnsureChildControls();
return postPager.PageSize;
}
set
{
this.EnsureChildControls();
this.postPager.PageSize = value;
}
}
private bool _enablePager = true;
public bool EnablePager
{
get
{
//this.EnsureChildControls();
//return postPager.Enabled;
return _enablePager;
}
set
{
//this.EnsureChildControls();
//postPager.Enabled = value;
_enablePager = value;
}
}
private object _dataSource;
/// <summary>
/// Property DataSource (object)
/// </summary>
public object DataSource
{
get { return this._dataSource; }
set { this._dataSource = value; }
}
public override void DataBind()
{
base.DataBind();
if (DataSource != null)
{
posts.DataSource = DataSource;
posts.DataBind();
}
}
protected override void AttachChildControls()
{
posts = FindControl("Posts") as Repeater;
postPager = FindControl("PostsPager") as Pager;
if(EnablePager)
postPager.Visible = true;
else
postPager.Visible = false;
posts.ItemDataBound += new RepeaterItemEventHandler(posts_ItemDataBound);
}
private void postPager_IndexChanged(object sender, EventArgs e)
{
if (PagerIndexChanged != null)
PagerIndexChanged(sender, e);
}
private string FormatDate (DateTime date)
{
CSContext context = CSContext.Current;
DateTime serverDateTime;
// Set the time to the user's time
if (context.IsAuthenticated) {
serverDateTime = DateTime.Now.AddHours(context.User.Profile.Timezone - context.SiteSettings.TimezoneOffset);
} else {
serverDateTime = DateTime.Now;
}
date = context.User.GetTimezone(date);
if (date > serverDateTime.AddHours(-24) ) {
int minutes = (serverDateTime - date).Minutes;
int hours = (serverDateTime - date).Hours;
if (date > serverDateTime.AddHours(-1) ) {
if (minutes < 2)
return string.Format(ResourceManager.GetString("aggblog_minuteago"), minutes);
return string.Format(ResourceManager.GetString("aggblog_minutesago"), minutes);
} else {
if (hours < 2)
return string.Format(ResourceManager.GetString("aggblog_hourago"), hours, minutes);
return string.Format(ResourceManager.GetString("aggblog_hoursago"), hours, minutes);
}
} else {
return date.ToString("MMMM dd, yyyy");
}
}
private void posts_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
WeblogPost post = e.Item.DataItem as WeblogPost;
if (post != null)
{
HyperLink titleLink = e.Item.FindControl("TitleLink") as HyperLink;
titleLink.Text = post.Subject;
titleLink.NavigateUrl = BlogUrls.Instance().Post(post);
Literal body = e.Item.FindControl("Body") as Literal;
if (config.TruncateAggregatePost)
body.Text = Formatter.RemoveHtml(post.FormattedBody, config.AggregatePostSize) + "...";
else
body.Text = post.FormattedBody;
HyperLink Blog = e.Item.FindControl("Blog") as HyperLink;
Blog.NavigateUrl = BlogUrls.Instance().HomePage(post.Section.ApplicationKey);
switch (config.PostedbyDisplay)
{
case BlogPostedByDisplayType.Off:
{
Blog.Visible = false;
// Make "by" text non-visible
ResourceControl byResource = e.Item.FindControl("PostByResource") as ResourceControl;
if (byResource != null)
byResource.Visible = false;
break;
}
case BlogPostedByDisplayType.UserName:
{
Blog.Text = Users.GetUser(post.AuthorID, false).DisplayName;
break;
}
case BlogPostedByDisplayType.Weblog:
{
Blog.Text = Users.GetUser(post.AuthorID, false).DisplayName;
break;
}
}
Literal Posted = e.Item.FindControl("Posted") as Literal;
Posted.Text = FormatDate(post.BloggerTime);
HyperLink linkImage = e.Item.FindControl("linkImage") as HyperLink;
if (linkImage != null)
{
linkImage.NavigateUrl = titleLink.NavigateUrl;
linkImage.ToolTip = post.Subject;
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -