温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:SpaceBuilder v1.1源代码
当前文件:
SpaceBuider11/BasicWebControls/Manage/Message/MessageInBox.cs[13K,2009-6-12 11:54:33],打开代码结构图
SpaceBuider11/BasicWebControls/Manage/Message/MessageInBox.cs[13K,2009-6-12 11:54:33],打开代码结构图1//------------------------------------------------------------------------------ 2
// <copyright company="Tunynet"> 3
// Copyright (c) Tunynet Inc. All rights reserved. 4
// </copyright> 5
//------------------------------------------------------------------------------ 6
7
8
using System; 9
using System.Collections.Generic; 10
using System.Text; 11
using SpaceBuilder.Components; 12
using System.Web.UI.HtmlControls; 13
using System.Web.UI.WebControls; 14
using SpaceBuilder.Controls.Utils; 15
using SpaceBuilder.PrivateMessages.Components; 16
using SpaceBuilder.Utils; 17
using SpaceBuilder.Security; 18
19
using System.Collections; 20
using SpaceBuilder.Posts.Permissions; 21
using TunyNet.Utils; 22
using TunyNet.Data.Utils; 23
using SpaceBuilder.Controls; 24
25
namespace SpaceBuilder.Web.Manage.Controls 26
{ 27
/// <summary> 28
/// 管理消息 29
/// </summary> 30
public class MessageInBox : ManageBaseControl 31
{ 32
SBContext wlContext; 33
/// <summary> 34
/// 验证权限 35
/// </summary> 36
protected override void Authorize() 37
{ 38
base.Authorize(); 39
40
if (!SBContext.Current.User.IsMessageAdministrator) 41
PermissionBase.RedirectOrExcpetion(SBExceptionType.AccessDenied); 42
} 43
44
protected override void OnInit(EventArgs e) 45
{ 46
if (SkinName == null) 47
SkinName = "Messages/Skin-MessageInBox.ascx"; 48
49
wlContext = SBContext.Current; 50
51
base.OnInit(e); 52
} 53
54
Child Controls 87
/// <summary> 88
/// 附加子控件 89
/// </summary> 90
protected override void AttachChildControls() 91
{ 92
totalCount = FindControl("TotalCount") as Literal; 93
notReadCount = FindControl("NotReadCount") as Literal; 94
95
batchDeleteButton = FindControl("BatchDeleteButton") as LinkButton; 96
batchDeleteButton.Click += new EventHandler(BatchDeleteButton_Click); 97
98
setIsReadButton = FindControl("SetIsReadButton") as LinkButton; 99
setIsReadButton.Click += new EventHandler(SetIsReadButton_Click); 100
101
setNotReadButton = FindControl("SetNotReadButton") as LinkButton; 102
setNotReadButton.Click += new EventHandler(SetNotReadButton_Click); 103
104
messageListRepeater = FindControl("MessageListRepeater") as Repeater; 105
pager = FindControl("Pager") as PostBackPager; 106
pager.PageIndexChanged += new PagerEventHandler(pager_PageIndexChanged); 107
108
if (messageListRepeater != null) 109
{ 110
messageListRepeater.ItemDataBound += new RepeaterItemEventHandler(MessageListRepeater_ItemDataBound); 111
messageListRepeater.ItemCommand += new RepeaterCommandEventHandler(MessageListRepeater_ItemCommand); 112
} 113
114
} 115
116
117
protected override void OnLoad(EventArgs e) 118
{ 119
base.OnLoad(e); 120
EnsureChildControls(); 121
if (!Page.IsPostBack) 122
Bind(); 123
this.SetPageTitle("收件箱"); 124
} 125
126
void Bind() 127
{ 128
notReadCount.Text = PrivateMessages.Components.PrivateMessages.GetNoReadCount((int)PrivateMessageEspecialUserID.Serve).ToString(); 129
PrivateMessageInboxItemQuery query = new PrivateMessageInboxItemQuery(); 130
query.PageSize = displayItemCount; 131
query.UserID = (int)PrivateMessageEspecialUserID.Serve; 132
query.PageIndex = pager.PageIndex; 133
PagingDataSet<PrivateMessageInboxItem> pds = SpaceBuilder.PrivateMessages.Components.PrivateMessages.GetPrivateMessagesFromInbox(query); 134
135
messageListRepeater.DataSource = pds.Records; 136
messageListRepeater.DataBind(); 137
totalCount.Text = pds.TotalRecords.ToString(); 138
if (pds.Records != null) 139
{ 140
pager.TotalRecords = pds.TotalRecords; 141
pager.PageSize = query.PageSize; 142
} 143
} 144
145
146
private void MessageListRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 147
{ 148
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 149
{ 150
PrivateMessageInboxItem message = e.Item.DataItem as PrivateMessageInboxItem; 151
if (message != null) 152
{ 153
CheckBox selector = e.Item.FindControl("Selector") as CheckBox; 154
if (selector != null) 155
{ 156
selector.Attributes["value"] = message.ThreadID.ToString(); 157
} 158
//消息状态标识 159
Image readImage = e.Item.FindControl("ReadImage") as Image; 160
HtmlContainerControl messageRow = e.Item.FindControl("MessageRow") as HtmlContainerControl; 161
if (readImage != null) 162
{ 163
if (!message.IsRead) 164
{ 165
if (messageRow != null) 166
{ 167
messageRow.Attributes["class"] = "messageListRow messageReadAnon"; 168
} 169
readImage.ImageUrl = "~/Utility/Icons/icon_message_notread.gif"; 170
readImage.ToolTip = "未读"; 171
} 172
else 173
readImage.Visible = false; 174
} 175
//发件人 176
HyperLink senderName = e.Item.FindControl("Sender") as HyperLink; 177
if (senderName != null) 178
{ 179
senderName.Text = message.Sender; 180
if ((message.SenderUserID != (int)PrivateMessageEspecialUserID.Serve) && (message.SenderUserID != (int)PrivateMessageEspecialUserID.System)) 181
{ 182
senderName.NavigateUrl = UserUrls.Instance().UserChannelHome(message.SenderUserID, UserDomainMenuType.Profile); 183
senderName.Attributes["target"] = "_blank"; 184
} 185
senderName.Visible = true; 186
} 187
188
//消息类型 189
Literal messageType = e.Item.FindControl("MessageType") as Literal; 190
if (messageType != null) 191
{ 192
messageType.Text = ResourceManager.GetString(string.Format("PrivateMessageType:{0}", message.MessageType.ToString())); 193
} 194
195
//消息标题 196
HyperLink subject = e.Item.FindControl("Subject") as HyperLink; 197
if (subject != null) 198
{ 199
subject.Text = StringUtils.Trim(message.MostRecentPostSubject, 25); 200
subject.ToolTip = message.MostRecentPostSubject; 201
subject.NavigateUrl = ManagerUrls.Instance().ShowMessage(message.ThreadID); 202
} 203
//消息内容 204
Label body = e.Item.FindControl("Body") as Label; 205
{ 206
body.Text = StringUtils.Trim(message.MostRecentPostBody, 30); 207
body.ToolTip = message.MostRecentPostBody; 208
} 209
210
//用户头像 211
UserAvatar avatar = e.Item.FindControl("Avatar") as UserAvatar; 212
if (avatar != null) 213
avatar.User = Users.GetUser(message.SenderUserID, false); 214
215
//消息发布日期 216
Literal postDate = e.Item.FindControl("PostDate") as Literal; 217
if (postDate != null) 218
postDate.Text = Formatter.FormatFriendlyDate(message.MostRecentPostDate); 219
//如果不是系统消息则显示回复按钮 220
221
if (message.MessageType != PrivateMessageType.System) 222
{ 223
ImageButton replyButton = e.Item.FindControl("ReplyButton") as ImageButton; 224
replyButton.Visible = true; 225
if (replyButton != null) 226
{ 227
replyButton.CommandArgument = message.ThreadID.ToString(); 228
replyButton.ImageUrl = "~/Utility/Icons/icon_ReplyMessage.gif"; 229
replyButton.ToolTip = "回复该消息"; 230
replyButton.PostBackUrl = ManagerUrls.Instance().ShowMessage(message.ThreadID)+"#reply"; 231
} 232
} 233
234
//删除 235
ImageButton deleteButton = e.Item.FindControl("DeleteButton") as ImageButton; 236
if (deleteButton != null) 237
{ 238
deleteButton.Attributes.Add("onclick", "if ( !confirm('是否删除选中的消息?') ) {return false; } "); 239
deleteButton.CommandArgument = message.ThreadID.ToString(); 240
} 241
} 242
} 243
} 244
245
private void MessageListRepeater_ItemCommand(object source, RepeaterCommandEventArgs e) 246
{ 247
switch (e.CommandName) 248
{ 249
case "Reply": 250
//Context.Response.Redirect(FriendUrls.Instance().ReplyMessage(CurrentUser.UserType, CurrentUserDomainName, int.Parse((string)e.CommandArgument))); 251
Context.Response.End(); 252
break; 253
254
case "Delete": 255
SpaceBuilder.PrivateMessages.Components.PrivateMessages.DeletePrivateMessageFromInbox((int)PrivateMessageEspecialUserID.Serve, int.Parse((string)e.CommandArgument)); 256
Context.Response.Redirect(ManagerUrls.Instance().MessageInbox(), true); 257
break; 258
259
} 260
} 261
262
263
/// <summary> 264
/// 批量删除消息 265
/// </summary> 266
protected void BatchDeleteButton_Click(Object sender, EventArgs e) 267
{ 268
foreach (RepeaterItem item in this.messageListRepeater.Items) 269
{ 270
CheckBox selector = item.FindControl("Selector") as CheckBox; 271
if (selector != null && selector.Checked) 272
{ 273
Int32 threadID = Convert.ToInt32(selector.Attributes["value"]); 274
SpaceBuilder.PrivateMessages.Components.PrivateMessages.DeletePrivateMessageFromInbox((int)PrivateMessageEspecialUserID.Serve, threadID); 275
276
} 277
} 278
279
Bind(); 280
281
} 282
283
/// <summary> 284
/// 设置消息为已读 285
/// </summary> 286
protected void SetIsReadButton_Click(Object sender, EventArgs e) 287
{ 288
foreach (RepeaterItem item in this.messageListRepeater.Items) 289
{ 290
CheckBox selector = item.FindControl("Selector") as CheckBox; 291
if (selector != null && selector.Checked) 292
{ 293
Int32 threadID = Convert.ToInt32(selector.Attributes["value"]); 294
SpaceBuilder.PrivateMessages.Components.PrivateMessages.SetReadFlag((int)PrivateMessageEspecialUserID.Serve, threadID, true); 295
} 296
} 297
298
Bind(); 299
300
} 301
302
/// <summary> 303
/// 设置消息为未读 304
/// </summary> 305
protected void SetNotReadButton_Click(Object sender, EventArgs e) 306
{ 307
foreach (RepeaterItem item in this.messageListRepeater.Items) 308
{ 309
CheckBox selector = item.FindControl("Selector") as CheckBox; 310
if (selector != null && selector.Checked) 311
{ 312
Int32 threadID = Convert.ToInt32(selector.Attributes["value"]); 313
SpaceBuilder.PrivateMessages.Components.PrivateMessages.SetReadFlag((int)PrivateMessageEspecialUserID.Serve, threadID, false); 314
} 315
} 316
Bind(); 317
} 318
319
void pager_PageIndexChanged(object sender, PagerEventArgs e) 320
{ 321
Bind(); 322
} 323
324
325
属性 338
339
} 340
} 341






}