using System; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.Messaging; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; using CMS.ExtendedControls; using TimeZoneInfo = CMS.SiteProvider.TimeZoneInfo; public partial class CMSModules_Messaging_Controls_ViewMessage : CMSUserControl { #region "Variables" private MessageModeEnum mMessageMode = MessageModeEnum.Inbox; protected MessageInfo mMessage = null; protected UserInfo currentUserInfo = null; protected UserInfo messageUserInfo = null; private TimeZoneInfo usedTimeZone = null; #endregion #region "Public properties" /// /// Messages placeholder /// public override MessagesPlaceHolder MessagesPlaceHolder { get { return plcMess; } } /// /// Indicates if control is used on live site. /// public override bool IsLiveSite { get { return base.IsLiveSite; } set { plcMess.IsLiveSite = value; base.IsLiveSite = value; } } /// /// Message ID. /// public int MessageId { get { return ValidationHelper.GetInteger(ViewState["MessageId"], 0); } set { ViewState["MessageId"] = value; if (value <= 0) { mMessage = null; } } } /// /// Message. /// public MessageInfo Message { get { if ((mMessage == null) && (MessageId > 0)) { mMessage = MessageInfoProvider.GetMessageInfo(MessageId); } return mMessage; } set { mMessage = value; if (mMessage != null) { ViewState["MessageId"] = mMessage.MessageID; } } } /// /// Message mode. /// public MessageModeEnum MessageMode { get { return mMessageMode; } set { mMessageMode = value; } } /// /// Information text. /// public string InformationText { get { return ucMessageUserButtons.InformationText; } } /// /// Error text. /// public string ErrorText { get { return ucMessageUserButtons.ErrorText; } } #endregion #region "Page events" /// /// Page load. /// protected void Page_Load(object sender, EventArgs e) { // Message id is set, display message details if (Message != null) { // Find postback invoker string invokerName = Page.Request.Params.Get("__EVENTTARGET"); // If postback was caused by user buttons if (invokerName.Contains(ucMessageUserButtons.UniqueID)) { StopProcessing = false; } ReloadData(); } } #endregion #region "Other methods" public void ReloadData() { if (StopProcessing) { // Do nothing ucMessageUserButtons.StopProcessing = true; ucUserPicture.StopProcessing = true; } else { ucMessageUserButtons.StopProcessing = false; ucUserPicture.StopProcessing = false; if (Message != null) { // Get current user info currentUserInfo = CMSContext.CurrentUser; // Get message user info if (MessageMode == MessageModeEnum.Inbox) { messageUserInfo = UserInfoProvider.GetUserInfo(Message.MessageSenderUserID); } else { messageUserInfo = UserInfoProvider.GetUserInfo(Message.MessageRecipientUserID); } // Display only to authorized user if ((currentUserInfo.UserID == Message.MessageRecipientUserID) || (currentUserInfo.UserID == Message.MessageSenderUserID) || currentUserInfo.IsGlobalAdministrator) { pnlViewMessage.Visible = true; lblDateCaption.Text = GetString("Messaging.Date"); lblSubjectCaption.Text = GetString("general.subject"); lblFromCaption.Text = (MessageMode == MessageModeEnum.Inbox) ? GetString("Messaging.From") : GetString("Messaging.To"); // Sender exists if (messageUserInfo != null) { ucUserPicture.Visible = true; ucUserPicture.UserID = messageUserInfo.UserID; // Gravatar support string avType = SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSAvatarType"); if (avType == AvatarInfoProvider.USERCHOICE) { avType = messageUserInfo.UserSettings.UserAvatarType; } ucUserPicture.UserAvatarType = avType; // Disable message user buttons on live site for hidden or disabled users if (IsLiveSite && !currentUserInfo.IsGlobalAdministrator && (messageUserInfo.UserIsDisabledManually || messageUserInfo.UserIsHidden)) { ucMessageUserButtons.RelatedUserId = 0; } else { ucMessageUserButtons.RelatedUserId = messageUserInfo.UserID; } lblFrom.Text = HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(messageUserInfo.UserName, messageUserInfo.FullName, messageUserInfo.UserNickName, IsLiveSite)); } else { ucMessageUserButtons.RelatedUserId = 0; lblFrom.Text = HTMLHelper.HTMLEncode(Message.MessageSenderNickName); } string body = Message.MessageBody; // Resolve macros DiscussionMacroHelper dmh = new DiscussionMacroHelper(); body = dmh.ResolveMacros(body); lblSubject.Text = HTMLHelper.HTMLEncodeLineBreaks(Message.MessageSubject); if (IsLiveSite) { lblDate.Text = CMSContext.ConvertDateTime(Message.MessageSent, this).ToString(); } else { lblDate.Text = TimeZoneHelper.GetCurrentTimeZoneDateTimeString(Message.MessageSent, currentUserInfo, CMSContext.CurrentSite, out usedTimeZone); } lblBody.Text = body; } } else { ShowError(GetString("Messaging.MessageDoesntExist")); } } } #endregion }