温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:SpaceBuilder v1.1源代码
当前文件:
SpaceBuider11/BlogControls/Admin/BlogFeedbackAdmin.cs,打开代码结构图
SpaceBuider11/BlogControls/Admin/BlogFeedbackAdmin.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; 9
using System.Web; 10
using System.Web.UI.WebControls; 11
12
using SpaceBuilder.Blogs.Components; 13
using SpaceBuilder.Components; 14
using SpaceBuilder.Controls; 15
using SpaceBuilder.Controls.Utils; 16
using SpaceBuilder.Utils; 17
using SpaceBuilder.Security; 18
using SpaceBuilder.Posts.Permissions; 19
using TunyNet.Data.Utils; 20
using TunyNet.Utils; 21
22
namespace SpaceBuilder.Blogs.Controls 23
...{ 24
/**//// <summary> 25
/// Displays an interface for managing a blog's comments and traceback. 26
/// 显示博客评论管理界面 27
/// </summary> 28
public class BlogFeedbackAdmin : WeblogThemedControl 29
...{ 30
Setup#region Setup 31
32
/**//// <summary> 33
/// 验证当前用户身份 34
/// </summary> 35
protected override void Authorize(Weblog w) 36
...{ 37
base.Authorize(w); 38
39
if (CurrentUser.IsAnonymous) 40
throw new SBException(SBExceptionType.AccessDenied, "不允许匿名用户访问"); 41
//如果当前用户是不是户主 42
if (!CurrentUser.IsBlogAdministrator) 43
//检查用户针对博客w是否有发布主题权限 44
Permissions.AccessCheck(w, Permission.Post, CurrentUser); 45
} 46
Child Controls#region Child Controls 47
/**//// <summary> 48
/// 批准状态 49
/// </summary> 50
ApproveStatusDropDownList approvalStatus; 51
/**//// <summary> 52
/// 回复列表 53
/// </summary> 54
Repeater FeedbackList; 55
/**//// <summary> 56
/// 批准按钮 57
/// </summary> 58
LinkButton ApproveButton; 59
/**//// <summary> 60
/// 不批准按钮 61
/// </summary> 62
LinkButton ModerateButton; 63
/**//// <summary> 64
/// 删除按钮 65
/// </summary> 66
LinkButton DeleteButton; 67
/**//// <summary> 68
/// 分页控件 69
/// </summary> 70
PostBackPager GridPager; 71
#endregion 72
/**//// <summary> 73
/// 从加载的皮肤文件中获取具体控件 74
/// </summary> 75
protected override void AttachChildControls() 76
...{ 77
//获取批准状态下拉列表控件 78
approvalStatus = FindControl("ApproveStatus") as ApproveStatusDropDownList; 79
if (approvalStatus != null) 80
...{ 81
approvalStatus.SelectedIndexChanged += new EventHandler(ApproveStatus_SelectedIndexChanged); 82
approvalStatus.AutoPostBack = true; 83
} 84
//获取回复列表控件 85
FeedbackList = FindControl("FeedbackList") as Repeater; 86
if (FeedbackList != null) 87
FeedbackList.ItemDataBound += new RepeaterItemEventHandler(FeedbackList_ItemDataBound); 88
//获取分页控件 89
GridPager = FindControl("GridPager") as PostBackPager; 90
if (GridPager != null) 91
...{ 92
//注册翻页事件 93
GridPager.PageIndexChanged += new PagerEventHandler(GridPager_PageIndexChanged); 94
} 95
//获取批准按钮控件 96
ApproveButton = FindControl("ApproveButton") as LinkButton; 97
if (ApproveButton != null) 98
//注册批准按钮单击事件 99
ApproveButton.Click += new EventHandler(Approve_Click); 100
//获取不批准按钮控件 101
ModerateButton = FindControl("ModerateButton") as LinkButton; 102
if (ModerateButton != null) 103
//注册不批准按钮单击事件 104
ModerateButton.Click += new EventHandler(Moderate_Click); 105
//获取删除按钮控件 106
DeleteButton = FindControl("DeleteButton") as LinkButton; 107
if (DeleteButton != null) 108
...{ 109
//注册删除按钮单击事件 110
DeleteButton.Click += new EventHandler(Delete_Click); 111
//添加客户端单击属性,弹出删除提示框。按钮被单击时,会首先触发它 112
DeleteButton.Attributes.Add("onclick", "if ( !confirm('是否删除选中的评论?') ) {return false; } "); 113
} 114
} 115
/**//// <summary> 116
/// 用户翻页时,会异步绑定新数据 117
/// </summary> 118
void GridPager_PageIndexChanged(object sender, PagerEventArgs e) 119
...{ 120
Bind(); 121
} 122
123
protected override void OnLoad(EventArgs e) 124
...{ 125
base.OnLoad(e); 126
EnsureChildControls(); 127
if (!Page.IsPostBack) 128
...{ 129
//从查询字符串中获取回复状态属性值,以此来确定需要查看那种状态下的回复列表 130
if (SBContext.Current.GetIntFromQueryString("ApprovalStatus", -1) > 0) 131
this.ApproveStatus = (ApprovalStatus)SBContext.Current.GetIntFromQueryString("ApprovalStatus", -1); 132
133
//设置批准状态下拉列表的选中值为当前批准状态 134
approvalStatus.SelectedValue = this.ApproveStatus; 135
this.Bind(); 136
} 137
} 138
139
private void Bind() 140
...{ 141
//实例化一个博客评论查询对象 142
BlogCommentQuery query = new BlogCommentQuery(); 143
//设置博客ID为当前博客ID 144
query.SectionID = this.CurrentWeblog.SectionID; 145
//设置批准状态为当前批准状态的选中值 146
query.CommentApprovalStatus = approvalStatus.SelectedValue; 147
//设置文章评论排序依据为按评论时间排序 148
query.SortBy = BlogCommentSortBy.PostDate; 149
//设置排序顺序为降序 150
query.SortOrder = SortOrder.Descending; 151
//设置当前页码 152
query.PageIndex = GridPager.PageIndex; 153
//设置每页最多显示的记录数为20 154
query.PageSize = 20; 155
//获取查询返回的博客评论集合,该集合是封装成用于分页的数据集合 156
PagingDataSet<BlogPost> pds = BlogPosts.GetComments(query); 157
//获取查询结果的记录数 158
this.GridPager.TotalRecords = pds.TotalRecords; 159
//获取查询结果的每页显示最大记录数 160
this.GridPager.PageSize = pds.PageSize; 161
//设置回复列表的数据源为查询结果的(当前页的)数据集合 162
this.FeedbackList.DataSource = pds.Records; 163
this.FeedbackList.DataBind(); 164
//设置浏览器的标题 165
this.SetPageTitle("管理我的评论"); 166
} 167
168
#endregion 169
170
FeedbackList Event Handlers#region FeedbackList Event Handlers 171
172
private void FeedbackList_ItemDataBound(object sender, RepeaterItemEventArgs e) 173
...{ 174
//处理列表数据项模板中的控件 175
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 176
...{ 177
//获取博客帖子,这里指评论 178
BlogPost post = e.Item.DataItem as BlogPost; 179
BlogThread thread = BlogPosts.GetThread(post.ParentID, false); 180
Weblog blog = Weblogs.GetWeblog(thread.SectionID); 181
//获取选中复选框 182
CheckBox selector = e.Item.FindControl("Selector") as CheckBox; 183
if (selector != null) 184
...{ 185
//绑定博客帖子ID 186
selector.Attributes["value"] = post.PostID.ToString(); 187
} 188
//获取标题链接控件 189
HyperLink Subject = e.Item.FindControl("Subject") as HyperLink; 190
if (Subject != null) 191
...{ 192
//设置标题显示内容 193
Subject.Text = HttpUtility.HtmlEncode(post.Subject); 194
//设置标题链接地址 195
Subject.NavigateUrl = BlogUrls.Instance().ShowPost(thread, blog, post); 196
} 197
//获取评论内容 198
Label Body = e.Item.FindControl("Body") as Label; 199
if (Body != null) 200
...{ 201
//设置评论内容 202
Body.Text = HttpUtility.HtmlEncode(HtmlUtils.TrimHtml(post.Body, 250)); 203
//Body.ToolTip = HttpUtility.HtmlEncode(item.Body); 204
Body.ToolTip = HtmlUtils.TrimHtml(post.Body, 1000); 205
} 206
//获取是否批准显示图片 207
Image IsModerated = e.Item.FindControl("IsModerated") as Image; 208
if (IsModerated != null) 209
...{ 210
//评论已通过审核 211
if (post.IsApproved) 212
...{ 213
IsModerated.ImageUrl = "~/Utility/Icons/icon_true.gif"; 214
IsModerated.ToolTip = "该评论已经通过审核"; 215
} 216
//评论未通过审核 217
else 218
...{ 219
IsModerated.ImageUrl = "~/Utility/Icons/icon_false.gif"; 220
IsModerated.ToolTip = "该评论未通过审核"; 221
} 222
} 223
//获取评论人链接控件 224
HyperLink PostedBy = e.Item.FindControl("PostedBy") as HyperLink; 225
if (PostedBy != null) 226
...{ 227
//获取评论人的用户名 228
PostedBy.Text = HttpUtility.HtmlEncode(post.Author); 229
//如果评论人不是匿名用户,则设置链接地址为评论人空间档案频道首页 230
if (post.UserID > 0) 231
PostedBy.NavigateUrl = UserUrls.Instance().UserChannelHome(post.UserID, UserDomainMenuType.Profile); 232
} 233
//获取显示评论日期控件 234
Literal DatePosted = e.Item.FindControl("DatePosted") as Literal; 235
if (DatePosted != null) 236
...{ 237
//设置控件显示内容为格式化后的评论日期 238
DatePosted.Text = Formatter.FormatDate(post.PostDate); 239
} 240
//如果标题有链接 241
if (post.HasTitleUrl) 242
...{ 243
HyperLink CommentUrl = e.Item.FindControl("CommentUrl") as HyperLink; 244
if (CommentUrl != null) 245
...{ 246
247
if (post.HasTitleUrl) 248
...{ 249
CommentUrl.Text = "Url"; 250
if (post.TitleUrl.StartsWith("http://") || post.TitleUrl.StartsWith("https://")) 251
...{ 252
CommentUrl.NavigateUrl = post.TitleUrl; 253
CommentUrl.ToolTip = post.TitleUrl; 254
} 255
else 256
...{ 257
CommentUrl.NavigateUrl = ""; 258
} 259
} 260
else 261
CommentUrl.Visible = false; 262
} 263
} 264
265
} 266
} 267
268
#endregion 269
270
Button Click Handlers#region Button Click Handlers 271
272
private void Approve_Click(object sender, EventArgs e) 273
...{ 274
Int32[] targetItems = this.GetSelectedPostIDs(); 275
//批准所有被选中的评论 276
this.ApproveItems(targetItems); 277
//ResetData(); 278
Bind(); 279
} 280
281
private void Moderate_Click(object sender, EventArgs e) 282
...{ 283
Int32[] targetItems = this.GetSelectedPostIDs(); 284
//不批准所有被选中的评论 285
this.ModerateItems(targetItems); 286
//ResetData(); 287
Bind(); 288
} 289
290
private void Delete_C




