温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:SpaceBuilder v1.1源代码
当前文件:
SpaceBuider11/BasicWebControls/Manage/Message/ShowMessage.cs[9K,2009-6-12 11:54:33],打开代码结构图
SpaceBuider11/BasicWebControls/Manage/Message/ShowMessage.cs[9K,2009-6-12 11:54:33],打开代码结构图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.Security; 12
using System.Web.UI.WebControls; 13
using System.Web.UI.HtmlControls; 14
using SpaceBuilder.Communications.Components; 15
using SpaceBuilder.Utils; 16
using SpaceBuilder.Posts.Permissions; 17
using SpaceBuilder.Configuration; 18
using SpaceBuilder.Controls; 19
using SpaceBuilder.PrivateMessages.Components; 20
21
namespace SpaceBuilder.Web.Manage.Controls 22
{ 23
/// <summary> 24
/// 回复消息 25
/// 暂时用InterestAdministrator,以后需要更改 26
/// </summary> 27
public class ShowMessage : ManageBaseControl 28
{ 29
SBContext wlContext; 30
31
/// <summary> 32
/// 验证权限 33
/// </summary> 34
protected override void Authorize() 35
{ 36
base.Authorize(); 37
38
if (!SBContext.Current.User.IsMessageAdministrator) 39
PermissionBase.RedirectOrExcpetion(SBExceptionType.AccessDenied); 40
} 41
42
protected override void OnInit(EventArgs e) 43
{ 44
if (SkinName == null) 45
SkinName = "Messages/Skin-ShowMessage.ascx"; 46
47
wlContext = SBContext.Current; 48
49
base.OnInit(e); 50
} 51
52
protected override void OnLoad(EventArgs e) 53
{ 54
base.OnLoad(e); 55
EnsureChildControls(); 56
57
if (!Page.IsPostBack) 58
DataBind(); 59
} 60
61
public override void DataBind() 62
{ 63
base.DataBind(); 64
BindData(); 65
} 66
67
68
Child Controls 107
/// <summary> 108
/// 附加子控件 109
/// </summary> 110
protected override void AttachChildControls() 111
{ 112
pageTitle = FindControl("PageTitle") as Literal; 113
114
textBoxReplyMessage = FindControl("TextBoxReplyMessage") as Editor; 115
replyButton = FindControl("ReplyButton") as LinkButton; 116
if (replyButton != null) 117
replyButton.Click += new EventHandler(ReplyButton_Click); 118
returnButton = FindControl("ReturnButton") as HyperLink; 119
speakerName = FindControl("SpeakerName") as HyperLink; 120
yourName = FindControl("YourName") as HyperLink; 121
122
subject = FindControl("Subject") as Literal; 123
124
replyRepeater = FindControl("ReplyRepeater") as Repeater; 125
if (replyRepeater != null) 126
{ 127
replyRepeater.ItemDataBound += new RepeaterItemEventHandler(ReplyRepeater_ItemDataBound); 128
} 129
relativeItemSpan = FindControl("RelativeItemSpan") as HtmlControl; 130
relativeItemLabel = FindControl("RelativeItemLabel") as Label; 131
relativeItem = FindControl("RelativeItem") as HyperLink; 132
133
} 134
135
void BindData() 136
{ 137
PrivateMessage message = SpaceBuilder.PrivateMessages.Components.PrivateMessages.GetPrivateMessage(wlContext.ThreadID, true); 138
if (message == null) 139
PermissionBase.RedirectOrExcpetion(SBExceptionType.AccessDenied); 140
141
if (pageTitle != null) 142
pageTitle.Text = "显示消息详细内容"; 143
this.SetPageTitle("显示消息详细内容"); 144
145
146
//设置消息为已读 147
if (message.MessageType == PrivateMessageType.System) 148
{ 149
SpaceBuilder.PrivateMessages.Components.PrivateMessages.SetReadFlag((int)PrivateMessageEspecialUserID.System, message.ThreadID, true); 150
} 151
else 152
{ 153
SpaceBuilder.PrivateMessages.Components.PrivateMessages.SetReadFlag((int)PrivateMessageEspecialUserID.Serve, message.ThreadID, true); 154
} 155
//设置参与者 156
if (message.SenderUserID > 0) 157
{ 158
speakerName.Text = message.Sender; 159
speakerName.NavigateUrl = UserUrls.Instance().UserChannelHome(message.SenderUserID, UserDomainMenuType.Profile); 160
yourName.Text = message.Receiver; 161
} 162
else 163
{ 164
speakerName.Text = message.Receiver; 165
speakerName.NavigateUrl = UserUrls.Instance().UserChannelHome(message.ReceiverUserID, UserDomainMenuType.Profile); 166
yourName.Text = message.Sender; 167
} 168
169
if (message.RelativeItemID != 0) 170
{ 171
relativeItemSpan.Visible = true; 172
relativeItem.Text = message.RelativeItemName; 173
relativeItem.Attributes["target"] = "_blank"; 174
switch (message.MessageType) 175
{ 176
case PrivateMessageType.Impeach: 177
relativeItemLabel.Text = "被举报人:"; 178
relativeItem.NavigateUrl = UserUrls.Instance().UserChannelHome(message.RelativeItemID, UserDomainMenuType.Profile); 179
break; 180
} 181
} 182
//返回收件箱 183
returnButton.NavigateUrl = ManagerUrls.Instance().MessageInbox(); 184
subject.Text = message.Subject; 185
List<PrivateMessagePost> pms = new List<PrivateMessagePost>(); 186
PrivateMessagePost post = new PrivateMessagePost(); 187
post.ThreadID = message.ThreadID; 188
post.Author = message.Sender; 189
post.UserID = message.SenderUserID; 190
post.PostDate = message.PostDate; 191
post.Subject = message.Subject; 192
post.Body = message.Body; 193
pms.Add(post); 194
pms.AddRange(message.Replies); 195
replyRepeater.DataSource = pms; 196
replyRepeater.DataBind(); 197
198
} 199
200
201
private void ReplyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 202
{ 203
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 204
{ 205
PrivateMessagePost reply = e.Item.DataItem as PrivateMessagePost; 206
if (reply != null) 207
{ 208
209
HyperLink replier = e.Item.FindControl("Replier") as HyperLink; 210
Literal replyDate = e.Item.FindControl("ReplyDate") as Literal; 211
Literal replyBody = e.Item.FindControl("ReplyBody") as Literal; 212
UserAvatar avatar = e.Item.FindControl("Avatar") as UserAvatar; 213
Image otherAvatar = e.Item.FindControl("OtherAvatar") as Image; 214
215
216
if (replier != null) 217
replier.Text = reply.Author; 218
//用户 219
if (reply.UserID > 0) 220
{ 221
replier.NavigateUrl = UserUrls.Instance().UserChannelHome(reply.UserID, UserDomainMenuType.Profile); 222
avatar.UserID = reply.UserID; 223
} 224
//客服 225
else if (otherAvatar != null) 226
{ 227
avatar.Visible = false; 228
otherAvatar.Visible = true; 229
if (reply.UserID == (int)PrivateMessageEspecialUserID.Serve) 230
otherAvatar.ImageUrl = "~/Images/ServeAvatar.gif"; 231
if (reply.UserID == (int)PrivateMessageEspecialUserID.System) 232
otherAvatar.ImageUrl = "~/Images/SystemAvatar.gif"; 233
} 234
if (replyDate != null) 235
replyDate.Text = Formatter.FormatFriendlyDate(reply.PostDate); 236
if (replyBody != null) 237
replyBody.Text = reply.Body; 238
} 239
} 240
} 241
242
/// <summary> 243
/// 回复消息 244
/// </summary> 245
protected void ReplyButton_Click(Object sender, EventArgs e) 246
{ 247
if (!Page.IsValid) 248
return; 249
PrivateMessage pm = new PrivateMessage(); 250
pm = SpaceBuilder.PrivateMessages.Components.PrivateMessages.GetPrivateMessage(wlContext.ThreadID, true); 251
PrivateMessagePost post = new PrivateMessagePost(); 252
post.ThreadID = wlContext.ThreadID; 253
post.ParentPostID = pm.PostID; 254
post.UserID = (int)PrivateMessageEspecialUserID.Serve; 255
post.Subject = string.Format("回复:{0}", pm.Subject); 256
post.Body = textBoxReplyMessage.Text; 257
if (pm != null && post != null) 258
{ 259
SpaceBuilder.PrivateMessages.Components.PrivateMessages.ReplyMessage(post, pm); 260
textBoxReplyMessage.Text = ""; 261
} 262
BindData(); 263
} 264
} 265
266
} 267






}