ÎÂܰÌáʾ£º´úÂëÔÚÏßä¯ÀÀ¹¦ÄÜÖ»ÄÜ×öΪԴÂëä¯ÀÀ²Î¿¼£¬Èç¹ûÏë¸ü½øÒ»²½Á˽â¸Ã´úÂëÇëÏÂÔØ£ºSpaceBuilder v1.1Ô´´úÂë
µ±Ç°Îļþ£º
SpaceBuider11/BlogControls/Channel/PostRanks.cs£¬´ò¿ª´úÂë½á¹¹Í¼
SpaceBuider11/BlogControls/Channel/PostRanks.cs£¬´ò¿ª´úÂë½á¹¹Í¼1//------------------------------------------------------------------------------ 2
// <copyright company="Tunynet"> 3
// Copyright (c) Tunynet Inc. All rights reserved. 4
// </copyright> 5
//------------------------------------------------------------------------------ 6
7
using System; 8
using System.Collections.Generic; 9
using System.Text; 10
using SpaceBuilder.Components; 11
using SpaceBuilder.Blogs.Components; 12
using System.Web.UI.HtmlControls; 13
using System.Web.UI.WebControls; 14
using SpaceBuilder.Controls.BaseClasses; 15
using SpaceBuilder.Controls.Utils; 16
using SpaceBuilder.Utils; 17
using SpaceBuilder.Controls; 18
using TunyNet.Utils; 19
using TunyNet.Data.Utils; 20
using System.Threading; 21
22
namespace SpaceBuilder.Blogs.Controls 23
{ 24
/// <summary> 25
/// ÏÔʾ²©¿ÍÎÄÕÂÅÅÐÐ 26
/// </summary> 27
public class PostRanks : TemplatedWebControl 28
{ 29
SBContext wlContext; 30
/// <summary> 31
/// ¿Ø¼þ³õʼ»¯Ê±£¬¸¸Àà»áµ÷ÓÃÕâ¸ö·½·¨ 32
/// </summary> 33
/// <param name="e"></param> 34
protected override void OnInit(EventArgs e) 35
{ 36
if (SkinName == null) 37
ExternalSkinFileName = "Blogs/Skin-PostRanks.ascx"; 38
else 39
ExternalSkinFileName = SkinName; 40
41
wlContext = SBContext.Current; 42
43
base.OnInit(e); 44
} 45
46
Child Controls 68
69
/// <summary> 70
/// ¼ÓÔØ×ӿؼþ£¬¸¸Àà¼ÓÔØÆ¤·ôÎļþʱ»áµ÷ÓÃÕâ¸ö·½·¨ 71
/// </summary> 72
protected override void AttachChildControls() 73
{ 74
rankByMostRecentLi = FindControl("RankByMostRecentLi") as HtmlControl; 75
rankByMostRecent = FindControl("RankByMostRecent") as HyperLink; 76
rankByTotalViewsLi = FindControl("RankByTotalViewsLi") as HtmlControl; 77
rankByTotalViews = FindControl("RankByTotalViews") as HyperLink; 78
rankByTotalRepliesLi = FindControl("RankByTotalRepliesLi") as HtmlControl; 79
rankByTotalReplies = FindControl("RankByTotalReplies") as HyperLink; 80
rankByTotalRatingsLi = FindControl("RankByTotalRatingsLi") as HtmlControl; 81
rankByTotalRatings = FindControl("RankByTotalRatings") as HyperLink; 82
83
84
pager = FindControl("Pager") as PostBackPager; 85
pager.PageIndexChanged += new PagerEventHandler(Pager_PageIndexChanged); 86
87
88
pager2 = FindControl("Pager2") as Pager; 89
90
postsRepeater = FindControl("PostsRepeater") as Repeater; 91
postsRepeater.ItemDataBound += new RepeaterItemEventHandler(PostsRepeater_ItemDataBound); 92
} 93
94
/// <summary> 95
/// µ±Óû§²é¿´ÆäËüҳʱ£¬»áµ÷ÓÃÕâ¸ö·½·¨£¬ÔÙÊý¾Ý¿âÖÐȥȡ¸ÃÒ³µÄÊý¾Ý 96
/// </summary> 97
/// <param name="sender"></param> 98
/// <param name="e"></param> 99
void Pager_PageIndexChanged(object sender, PagerEventArgs e) 100
{ 101
Bind(); 102
} 103
104
/// <summary> 105
/// ¿Ø¼þ±»¼ÓÔØÊ±£¬»áÏȵ÷ÓÃÕâ¸ö·½·¨ 106
/// </summary> 107
/// <param name="e"></param> 108
protected override void OnLoad(EventArgs e) 109
{ 110
base.OnLoad(e); 111
EnsureChildControls(); 112
113
/* 114
RankBy={0} 115
*/ 116
if (wlContext.GetIntFromQueryString("RankBy", 0) > 0) 117
this.SortBy = (BlogThreadSortBy)wlContext.GetIntFromQueryString("RankBy", 0); 118
119
if (!Page.IsPostBack) 120
Bind(); 121
} 122
123
/// <summary> 124
/// Ϊ¿Ø¼þ°ó¶¨Êý¾Ý 125
/// </summary> 126
void Bind() 127
{ 128
Header.AddTitle(Globals.SiteName + " :: ²©¿Í - ÎÄÕÂÅÅÐÐ", Context); 129
switch (this.SortBy) 130
{ 131
case BlogThreadSortBy.MostRecent: 132
rankByMostRecentLi.Attributes["class"] = "selected"; 133
break; 134
case BlogThreadSortBy.TotalViews: 135
rankByTotalViewsLi.Attributes["class"] = "selected"; 136
break; 137
case BlogThreadSortBy.TotalReplies: 138
rankByTotalRepliesLi.Attributes["class"] = "selected"; 139
break; 140
case BlogThreadSortBy.TotalRatings: 141
rankByTotalRatingsLi.Attributes["class"] = "selected"; 142
break; 143
} 144
//²âÊÔÓà 145
// string asdfasdf= ChannelUrls.Instance().BlogsForTab(10, (int)SortBlogsBy.WeekHitTimes, SortOrder.Descending); 146
rankByMostRecent.NavigateUrl = ChannelUrls.Instance().WeblogPostRanks((int)BlogThreadSortBy.MostRecent); 147
rankByTotalViews.NavigateUrl = ChannelUrls.Instance().WeblogPostRanks((int)BlogThreadSortBy.TotalViews); 148
rankByTotalReplies.NavigateUrl = ChannelUrls.Instance().WeblogPostRanks((int)BlogThreadSortBy.TotalReplies); 149
rankByTotalRatings.NavigateUrl = ChannelUrls.Instance().WeblogPostRanks((int)BlogThreadSortBy.TotalRatings); 150
151
//·â×°²éѯÌõ¼þ 152
BlogThreadQuery query = new BlogThreadQuery(); 153
query.IsPublicFilter = true; 154
query.IncludeTags = false; 155
//query.MaxRecords = 500; 156
query.SortBy = this.SortBy; 157
query.SortOrder = SortOrder.Descending; 158
query.PageIndex = pager.PageIndex; 159
//´ÓÊý¾Ý¿âÖлñÈ¡Êý¾Ý 160
PagingDataSet<BlogThread> pds = BlogPosts.GetBlogThreads(query); 161
162
if (pds != null) 163
{ 164
if (pager != null) 165
{ 166
pager.TotalRecords = pds.TotalRecords; 167
pager.PageSize = query.PageSize; 168
} 169
if (pager2 != null) 170
{ 171
pager2.TotalRecords = pds.TotalRecords; 172
pager2.PageSize = query.PageSize; 173
} 174
} 175
176
postsRepeater.DataSource = pds.Records; 177
postsRepeater.DataBind(); 178
} 179
180
/// <summary> 181
/// °ó¶¨Ã¿Ìõ¼Ç¼Ïîʱ£¬»áµ÷ÓÃÕâ¸ö·½·¨ 182
/// Ä¿µÄÊÇΪÁ˸øÃ¿Ìõ¼Ç¼ÖжÔÓ¦µÄÿ¸ö×ӿؼþ°ó¶¨ÉÏÊý¾Ý 183
/// </summary> 184
/// <param name="sender"></param> 185
/// <param name="e"></param> 186
private void PostsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 187
{ 188
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 189
{ 190
BlogThread post = (BlogThread)e.Item.DataItem; 191
if (post != null) 192
{ 193
HyperLink subject = e.Item.FindControl("Subject") as HyperLink; 194
if (subject != null) 195
{ 196
subject.Text = StringUtils.Trim(post.Subject, 30); 197
subject.ToolTip = post.Subject; 198
subject.NavigateUrl = BlogUrls.Instance().ShowPost(post); 199
subject.Attributes["target"] = "_blank"; 200
} 201
202
Literal blogPostType = e.Item.FindControl("BlogPostType") as Literal; 203
if (blogPostType != null) 204
blogPostType.Text = post.BlogPostTypeText; 205
206
Literal postDate = e.Item.FindControl("PostDate") as Literal; 207
if (postDate != null) 208
postDate.Text = Formatter.FormatDate(post.PostDate); 209
210
Literal totalReplies = e.Item.FindControl("TotalReplies") as Literal; 211
if (totalReplies != null) 212
totalReplies.Text = post.ReplyCount.ToString(); 213
214
Literal totalViews = e.Item.FindControl("TotalViews") as Literal; 215
if (totalViews != null) 216
totalViews.Text = post.HitTimes.ToString(); 217
RatingButton ratingButton = e.Item.FindControl("PostRating") as RatingButton; 218
if (ratingButton != null) 219
{ 220
ratingButton.TotalRatings = post.TotalRatings; 221
ratingButton.RatingSum = post.RatingSum; 222
ratingButton.ThreadID = post.ThreadID; 223
ratingButton.ApplicationType = ApplicationType.Blog; 224
} 225
226
HyperLink blogName = e.Item.FindControl("BlogName") as HyperLink; 227
if (blogName != null) 228
{ 229
blogName.Text = post.Weblog.SectionName; 230
if (ValueHelper.IsNullOrEmpty(blogName.Text)) 231
blogName.Text = post.User.DisplayName; 232
233
blogName.ToolTip = string.Format("²é¿´ {0} µÄ²©¿Í", blogName.Text); 234
blogName.NavigateUrl = UserUrls.Instance().BlogHome(post.Weblog.ApplicationKey); 235
blogName.Attributes["target"] = "_blank"; 236
} 237
} 238
} 239
} 240
241
242
ÊôÐÔ 255
256
} 257
}





}