Asp.net源码专业站
首页->博客空间->SpaceBuilder v1.1源代码>>BasicWebControls/Manage/Message/MessageInBox.cs>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:SpaceBuilder v1.1源代码
当前文件:文件类型 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 8using System; 9using System.Collections.Generic; 10using System.Text; 11using SpaceBuilder.Components; 12using System.Web.UI.HtmlControls; 13using System.Web.UI.WebControls; 14using SpaceBuilder.Controls.Utils; 15using SpaceBuilder.PrivateMessages.Components; 16using SpaceBuilder.Utils; 17using SpaceBuilder.Security; 18 19using System.Collections; 20using SpaceBuilder.Posts.Permissions; 21using TunyNet.Utils; 22using TunyNet.Data.Utils; 23using SpaceBuilder.Controls; 24 25namespace 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
还没有找到您心仪的内容?请用.net源码大搜捕
代码片断 打包下载该项目完整源码:SpaceBuilder v1.1源代码