Esempio n. 1
0
    /// <summary>
    /// Loads data of specific e-mail from DB.
    /// </summary>
    protected void LoadData()
    {
        if (mEmailId <= 0)
        {
            return;
        }

        // Get specific e-mail
        EmailInfo ei = EmailInfoProvider.GetEmailInfo(mEmailId);

        if (ei == null)
        {
            plcDetails.Visible = false;
            ShowInformation(GetString("emailqueue.details.emailalreadysent"));
            return;
        }

        EditedObject = ei;

        lblFromValue.Text         = HTMLHelper.HTMLEncode(ei.EmailFrom);
        lblToValue.Text           = !ei.EmailIsMass ? HTMLHelper.HTMLEncode(ei.EmailTo) : GetString("emailqueue.detail.multiplerecipients");
        lblCcValue.Text           = HTMLHelper.HTMLEncode(ei.EmailCc);
        lblBccValue.Text          = HTMLHelper.HTMLEncode(ei.EmailBcc);
        lblReplyToValue.Text      = HTMLHelper.HTMLEncode(ei.EmailReplyTo);
        lblSubjectValue.Text      = HTMLHelper.HTMLEncode(ei.EmailSubject);
        lblErrorMessageValue.Text = HTMLHelper.HTMLEncodeLineBreaks(ei.EmailLastSendResult);

        if (UserIsAdmin)
        {
            LoadHTMLBody(ei);
            LoadPlainTextBody(ei);
            GetAttachments();
        }
    }
Esempio n. 2
0
    /// <summary>
    /// Returns HTML encoded comment text.
    /// </summary>
    private static string GetHTMLEncodedCommentText(BlogCommentInfo bci)
    {
        if (bci != null)
        {
            string comment = HTMLHelper.HTMLEncodeLineBreaks(bci.CommentText);

            // Trackback comment
            if (bci.CommentIsTrackback)
            {
                string from = "";
                if (string.IsNullOrEmpty(bci.CommentUserName))
                {
                    // Use blog post URL
                    from = bci.CommentUrl;
                }
                else
                {
                    // Use user name
                    from = bci.CommentUserName;
                }
                return(HTMLHelper.HTMLEncode(string.Format(ResHelper.GetString("blog.comments.pingbackfrom"), from)) + "<br />" + comment);
            }
            // Normal comment
            else
            {
                return(comment);
            }
        }
        return("");
    }
Esempio n. 3
0
    private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
        case "userid":
            // Get user friendly name instead of id
            UserInfo ui = UserInfoProvider.GetUserInfo(ValidationHelper.GetInteger(parameter, 0));
            if (ui != null)
            {
                return(HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ui.UserName) + " (" + ui.Email + ")"));
            }
            else
            {
                return(GetString("general.na"));
            }

        case "result":
            return(TextHelper.LimitLength(parameter.ToString(), 50));

        case "resulttooltip":
            return(HTMLHelper.HTMLEncodeLineBreaks(parameter.ToString()));

        case "status":
            return(GetEmailStatus(parameter));
        }

        return(null);
    }
    protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
        case "messageapproved":
            return(UniGridFunctions.ColoredSpanYesNo(parameter));

        case "messageisspam":
            return(UniGridFunctions.ColoredSpanYesNoReversed(parameter));

        case "messagetext":
            string text = parameter.ToString();
            if (text.Length > 30)
            {
                text = text.Substring(0, 30) + "...";
            }
            return(HTMLHelper.HTMLEncode(text));

        case "messagetooltip":
            return(HTMLHelper.HTMLEncodeLineBreaks(parameter.ToString()));

        case "edit":
            CMSGridActionButton editButton = ((CMSGridActionButton)sender);
            int boardID = ValidationHelper.GetInteger(((DataRowView)((GridViewRow)parameter).DataItem).Row["BoardID"], 0);

            string url = "~/CMSModules/MessageBoards/Tools/Messages/Message_Edit.aspx";
            if (IsLiveSite)
            {
                url = "~/CMSModules/MessageBoards/CMSPages/Message_Edit.aspx";
            }

            editButton.OnClientClick = "modalDialog('" + AuthenticationHelper.ResolveDialogUrl(((EditPageUrl == "") ? url : EditPageUrl)) +
                                       "?messageboardid=" + boardID + "&messageId=" + editButton.CommandArgument + "', 'MessageEdit', 800, 535); return false;";
            break;

        case "approve":
            bool approve = ValidationHelper.GetBoolean(((DataRowView)((GridViewRow)parameter).DataItem).Row["MessageApproved"], false);
            if (!approve)
            {
                CMSGridActionButton button = ((CMSGridActionButton)sender);
                button.IconCssClass = "icon-check-circle";
                button.IconStyle    = GridIconStyle.Allow;
                button.ToolTip      = GetString("general.approve");
            }
            else
            {
                CMSGridActionButton button = ((CMSGridActionButton)sender);
                button.IconCssClass = "icon-times-circle";
                button.IconStyle    = GridIconStyle.Critical;
                button.ToolTip      = GetString("general.reject");
            }
            break;

        case "messageinserted":
            return(TimeZoneMethods.ConvertDateTime(ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME), this).ToString());
        }
        return(parameter);
    }
Esempio n. 5
0
    protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        bool approve = false;

        switch (sourceName.ToLower())
        {
        case "messageapproved":
            return(UniGridFunctions.ColoredSpanYesNo(parameter));

        case "messageisspam":
            return(UniGridFunctions.ColoredSpanYesNoReversed(parameter));

        case "messagetext":
            string text = parameter.ToString();
            if (text.Length > 30)
            {
                text = text.Substring(0, 30) + "...";
            }
            return(HTMLHelper.HTMLEncode(text));

        case "messagetooltip":
            return(HTMLHelper.HTMLEncodeLineBreaks(parameter.ToString()));

        case "edit":
            ImageButton editButton = ((ImageButton)sender);
            int         boardID    = ValidationHelper.GetInteger(((DataRowView)((GridViewRow)parameter).DataItem).Row["BoardID"], 0);

            string url = "~/CMSModules/MessageBoards/Tools/Messages/Message_Edit.aspx";
            if (this.IsLiveSite)
            {
                url = "~/CMSModules/MessageBoards/CMSPages/Message_Edit.aspx";
            }

            editButton.OnClientClick = "modalDialog('" + CMSContext.ResolveDialogUrl(((this.EditPageUrl == "") ? url : this.EditPageUrl)) +
                                       "?messageboardid=" + boardID + "&messageId=" + editButton.CommandArgument + "', 'MessageEdit', 500, 400); return false;";
            break;

        case "approve":
            approve = ValidationHelper.GetBoolean(((DataRowView)((GridViewRow)parameter).DataItem).Row["MessageApproved"], false);
            if (!approve)
            {
                ImageButton button = ((ImageButton)sender);
                button.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Approve.png");
                button.ToolTip  = GetString("general.approve");
            }
            else
            {
                ImageButton button = ((ImageButton)sender);
                button.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/Reject.png");
                button.ToolTip  = GetString("general.reject");
            }
            break;

        case "messageinserted":
            return(CMSContext.ConvertDateTime(ValidationHelper.GetDateTime(parameter, DataHelper.DATETIME_NOT_SELECTED), this).ToString());
        }
        return(parameter);
    }
Esempio n. 6
0
    private IEnumerable <HtmlTableCell> GetRowCells(MacroExpr expression)
    {
        // Expression
        string exprTag = expression.RuleText ?? HTMLHelper.HTMLEncodeLineBreaks(TextHelper.LimitLength(expression.Expression, 500));

        yield return(CreateTableCellWithClass("wrap-normal", $"<span class=\"MacroExpression\" title=\"{HTMLHelper.HTMLEncode(expression.Expression)}\">{exprTag}</span>"));

        // Syntax valid
        var errorText = UniGridFunctions.ColoredSpanYesNo(!expression.Error);

        if (!String.IsNullOrEmpty(expression.ErrorMessage))
        {
            errorText = $"<span title=\"{HTMLHelper.HTMLEncode(expression.ErrorMessage)}\">{errorText}</span>";
        }

        yield return(CreateTableCellWithClass("text-center", errorText));

        // Signature valid
        yield return(new HtmlTableCell {
            InnerHtml = $"<div class=\"text-center\">{UniGridFunctions.ColoredSpanYesNo(expression.SignatureValid)}</div><div class=\"text-center\">{expression.SignedBy.ToString()}</div>"
        });

        var anyMembersIssue = expression.MembersIssues.Any();
        var membersMessage  = $"<div class=\"text-center\">{UniGridFunctions.ColoredSpanYesNo(!anyMembersIssue)}</div>";

        if (anyMembersIssue)
        {
            membersMessage = $"{membersMessage}{String.Join("<br />", expression.MembersIssues.Select(methodIssue => $"<div class=\"text-center\">{FormatMethodIssue(methodIssue)}</div>"))}";
        }

        // Members valid
        yield return(new HtmlTableCell {
            InnerHtml = membersMessage
        });

        yield return(new HtmlTableCell
        {
            Controls =
            {
                new ObjectTransformation(expression.ObjectType, expression.ObjectID)
                {
                    UseEmptyInfoForObjectLimitedByLicense = true,
                    Transformation = "{% Object.GetFullObjectName(true, true) %}"
                }
            }
        });

        // Column
        yield return(new HtmlTableCell {
            InnerText = expression.Field
        });
    }
Esempio n. 7
0
    /// <summary>
    /// Gets post's content with HTML tags. New lines and URLs are replaced by HTML tags.
    /// </summary>
    /// <param name="postText">Plain post text.</param>
    /// <returns>Post text with HTML tags.</returns>
    private string GetPostTextHTML(string postText)
    {
        string result = HTMLHelper.HTMLEncodeLineBreaks(HTMLHelper.HTMLEncode(postText));

        URLParser urlParser = new URLParser();

        result = urlParser.Replace(result, match =>
        {
            string href = String.IsNullOrEmpty(match.Protocol) ? URLHelper.AddHTTPToUrl(match.URL) : match.URL;
            return(String.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", href, match.URL));
        });

        return(result);
    }
Esempio n. 8
0
    /// <summary>
    /// Prepare the plain text body of the e-mail message for display.
    /// </summary>
    /// <param name="ei">The e-mail message object</param>
    private void LoadPlainTextBody(EmailInfo ei)
    {
        DiscussionMacroResolver dmh = new DiscussionMacroResolver {
            ResolveToPlainText = true
        };
        string body = dmh.ResolveMacros(ei.EmailPlainTextBody);

        body = HTMLHelper.HTMLEncode(body);

        lblBodyValue.Visible = true;

        // Replace line breaks with br tags and modify discussion macros
        lblBodyValue.Text = DiscussionMacroResolver.RemoveTags(HTMLHelper.HTMLEncodeLineBreaks(body));
    }
Esempio n. 9
0
    /// <summary>
    /// Renders the particular macro expression
    /// </summary>
    protected void RenderItem(MacroExpr expression)
    {
        var sb = new StringBuilder();

        sb.Append("<tr>");

        // Expression
        string exprTag = expression.RuleText ?? HTMLHelper.HTMLEncodeLineBreaks(TextHelper.LimitLength(expression.Expression, 500));

        sb.Append("<td class=\"wrap-normal\"><span class=\"MacroExpression\" title=\"", HTMLHelper.HTMLEncode(expression.Expression), "\">", exprTag, "</span></td>");

        // Syntax valid
        var errorText = UniGridFunctions.ColoredSpanYesNo(!expression.Error);

        if (!String.IsNullOrEmpty(expression.ErrorMessage))
        {
            errorText = String.Format("<span title=\"{0}\">{1}</span>", HTMLHelper.HTMLEncode(expression.ErrorMessage), errorText);
        }

        sb.Append("<td class=\"text-center\">", errorText, "</td>");

        // Signed by
        sb.Append("<td>", HTMLHelper.HTMLEncode(expression.SignedBy), "</td>");

        // Signature valid
        sb.Append("<td class=\"text-center\">", UniGridFunctions.ColoredSpanYesNo(expression.SignatureValid), "</td><td>");

        sb.Append();

        plcRows.Controls.Add(new LiteralControl(sb.ToString()));
        sb.Clear();

        // Object
        var tr = new ObjectTransformation(expression.ObjectType, expression.ObjectID)
        {
            UseEmptyInfoForObjectLimitedByLicense = true,
            Transformation = "{% Object.GetFullObjectName(true, true) %}"
        };

        plcRows.Controls.Add(tr);

        // Column
        //sb.Append(" (", expression.ObjectID, ")");
        sb.Append("</td><td>", expression.Field, "</td></tr>");

        plcRows.Controls.Add(new LiteralControl(sb.ToString()));
        sb.Clear();
    }
Esempio n. 10
0
    /// <summary>
    /// Reload data.
    /// </summary>
    public void LoadData()
    {
        if (Comment == null)
        {
            return;
        }

        SetUserPicture();

        if (!String.IsNullOrEmpty(Comment.CommentUrl))
        {
            lnkName.Text        = HTMLHelper.HTMLEncode(Comment.CommentUserName);
            lnkName.NavigateUrl = Comment.CommentUrl;

            AddRelAttribute();

            lblName.Visible = false;
        }
        else
        {
            lblName.Text    = HTMLHelper.HTMLEncode(Comment.CommentUserName);
            lnkName.Visible = false;
        }

        lblText.Text = HTMLHelper.HTMLEncodeLineBreaks(Comment.CommentText);
        lblDate.Text = TimeZoneUIMethods.ConvertDateTime(Comment.CommentDate, this).ToString();

        string url = "~/CMSModules/Blogs/Controls/Comment_Edit.aspx";

        if (IsLiveSite)
        {
            url = "~/CMSModules/Blogs/CMSPages/Comment_Edit.aspx";
        }

        lnkEdit.OnClientClick    = String.Format("EditComment('{0}?commentID={1}'); return false;", ResolveUrl(url), CommentID);
        lnkDelete.OnClientClick  = String.Format("if(ConfirmDelete()) {{ {0}; }} return false;", GetPostBackEventReference("delete"));
        lnkApprove.OnClientClick = String.Format("{0}; return false;", GetPostBackEventReference("approve"));
        lnkReject.OnClientClick  = String.Format("{0}; return false;", GetPostBackEventReference("reject"));

        // Initialize report abuse
        ucInlineAbuseReport.ReportTitle             = ResHelper.GetString("BlogCommentDetail.AbuseReport", CultureHelper.GetDefaultCultureCode(SiteContext.CurrentSiteName)) + Comment.CommentText;
        ucInlineAbuseReport.ReportObjectID          = CommentID;
        ucInlineAbuseReport.CMSPanel.Roles          = AbuseReportRoles;
        ucInlineAbuseReport.CMSPanel.SecurityAccess = AbuseReportSecurityAccess;
        ucInlineAbuseReport.CMSPanel.OwnerID        = AbuseReportOwnerID;
    }
Esempio n. 11
0
    /// <summary>
    /// Prepare the plain text body of the e-mail message for display.
    /// </summary>
    /// <param name="ei">The e-mail message object</param>
    private void LoadPlainTextBody(EmailInfo ei)
    {
        if (string.IsNullOrEmpty(ei.EmailPlainTextBody))
        {
            lblPlainTextValue.Text = GetString("emailqueue.detail.valuenotentered");
            return;
        }

        DiscussionMacroResolver dmh = new DiscussionMacroResolver {
            ResolveToPlainText = true
        };
        string body = dmh.ResolveMacros(ei.EmailPlainTextBody);

        body = HTMLHelper.HTMLEncode(body);

        // Replace line breaks with br tags and modify discussion macros
        lblPlainTextValue.Text = DiscussionMacroResolver.RemoveTags(HTMLHelper.HTMLEncodeLineBreaks(body));
    }
    private IEnumerable <HtmlTableCell> GetRowCells(MacroExpr expression)
    {
        // Expression
        string exprTag = expression.RuleText ?? HTMLHelper.HTMLEncodeLineBreaks(TextHelper.LimitLength(expression.Expression, 500));

        yield return(CreateTableCellWithClass("wrap-normal", $"<span class=\"MacroExpression\" title=\"{HTMLHelper.HTMLEncode(expression.Expression)}\">{exprTag}</span>"));

        // Syntax valid
        var errorText = UniGridFunctions.ColoredSpanYesNo(!expression.Error);

        if (!String.IsNullOrEmpty(expression.ErrorMessage))
        {
            errorText = $"<span title=\"{HTMLHelper.HTMLEncode(expression.ErrorMessage)}\">{errorText}</span>";
        }

        yield return(CreateTableCellWithClass("text-center", errorText));

        // Signed by
        yield return(new HtmlTableCell {
            InnerText = expression.SignedBy.ToString()
        });

        // Signature valid
        yield return(CreateTableCellWithClass("text-center", UniGridFunctions.ColoredSpanYesNo(expression.SignatureValid)));

        yield return(new HtmlTableCell
        {
            Controls =
            {
                new ObjectTransformation(expression.ObjectType, expression.ObjectID)
                {
                    UseEmptyInfoForObjectLimitedByLicense = true,
                    Transformation = "{% Object.GetFullObjectName(true, true) %}"
                }
            }
        });

        // Column
        yield return(new HtmlTableCell {
            InnerText = expression.Field
        });
    }
    /// <summary>
    /// Reload data.
    /// </summary>
    public void LoadData()
    {
        if (Comment == null)
        {
            return;
        }

        // Set user picture
        if (BlogProperties.EnableUserPictures)
        {
            userPict.UserID           = Comment.CommentUserID;
            userPict.Width            = BlogProperties.UserPictureMaxWidth;
            userPict.Height           = BlogProperties.UserPictureMaxHeight;
            userPict.Visible          = true;
            userPict.RenderOuterDiv   = true;
            userPict.OuterDivCSSClass = "CommentUserPicture";

            // Gravatar support
            string avType = SettingsKeyInfoProvider.GetValue(SiteContext.CurrentSiteName + ".CMSAvatarType");
            if (avType == AvatarInfoProvider.USERCHOICE)
            {
                UserInfo ui = UserInfoProvider.GetUserInfo(Comment.CommentUserID);
                avType = ui != null ? ui.UserSettings.UserAvatarType : AvatarInfoProvider.GRAVATAR;
            }

            userPict.UserEmail      = Comment.CommentEmail;
            userPict.UserAvatarType = avType;
        }
        else
        {
            userPict.Visible = false;
        }

        if (!String.IsNullOrEmpty(Comment.CommentUrl))
        {
            lnkName.Text        = HTMLHelper.HTMLEncode(Comment.CommentUserName);
            lnkName.NavigateUrl = Comment.CommentUrl;
            // Add no follow attribute if it is required
            if (HTMLHelper.UseNoFollowForUsersLinks(SiteContext.CurrentSiteName))
            {
                lnkName.Attributes.Add("rel", "nofollow");
            }
            lblName.Visible = false;
        }
        else
        {
            lblName.Text    = HTMLHelper.HTMLEncode(Comment.CommentUserName);
            lnkName.Visible = false;
        }

        lblText.Text = HTMLHelper.HTMLEncodeLineBreaks(Comment.CommentText);
        lblDate.Text = TimeZoneMethods.ConvertDateTime(Comment.CommentDate, this).ToString();

        string url = "~/CMSModules/Blogs/Controls/Comment_Edit.aspx";

        if (IsLiveSite)
        {
            url = "~/CMSModules/Blogs/CMSPages/Comment_Edit.aspx";
        }

        lnkEdit.OnClientClick    = string.Format("EditComment('{0}?commentID={1}'); return false;", ResolveUrl(url), CommentID);
        lnkDelete.OnClientClick  = string.Format("if(ConfirmDelete()) {{ {0}; }} return false;", GetPostBackEventReference("delete"));
        lnkApprove.OnClientClick = string.Format("{0}; return false;", GetPostBackEventReference("approve"));
        lnkReject.OnClientClick  = string.Format("{0}; return false;", GetPostBackEventReference("reject"));

        // Initialize report abuse
        ucInlineAbuseReport.ReportTitle             = ResHelper.GetString("BlogCommentDetail.AbuseReport", SettingsKeyInfoProvider.GetValue(SiteContext.CurrentSiteName + ".CMSDefaultCulture")) + Comment.CommentText;
        ucInlineAbuseReport.ReportObjectID          = CommentID;
        ucInlineAbuseReport.CMSPanel.Roles          = AbuseReportRoles;
        ucInlineAbuseReport.CMSPanel.SecurityAccess = AbuseReportSecurityAccess;
        ucInlineAbuseReport.CMSPanel.OwnerID        = AbuseReportOwnerID;
    }
Esempio n. 14
0
    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;

                        // Disable message user buttons on live site for hidden or disabled users
                        if (IsLiveSite && !currentUserInfo.IsGlobalAdministrator && (!messageUserInfo.Enabled || 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
            {
                lblError.Text    = GetString("Messaging.MessageDoesntExist");
                lblError.Visible = true;
            }
        }
    }
Esempio n. 15
0
    public void ReloadData()
    {
        if (StopProcessing)
        {
            // Do nothing
            MessageUserButtonsControl.StopProcessing = true;
            UserPictureControl.StopProcessing        = true;
        }
        else
        {
            MessageUserButtonsControl.StopProcessing = false;
            UserPictureControl.StopProcessing        = false;

            if (Message != null)
            {
                // Get current user info
                currentUserInfo = MembershipContext.AuthenticatedUser;
                // 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.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin))
                {
                    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)
                    {
                        UserPictureControl.Visible = true;
                        UserPictureControl.UserID  = messageUserInfo.UserID;

                        // Gravatar support
                        string avType = SettingsKeyInfoProvider.GetValue(SiteContext.CurrentSiteName + ".CMSAvatarType");
                        if (avType == AvatarInfoProvider.USERCHOICE)
                        {
                            avType = messageUserInfo.UserSettings.UserAvatarType;
                        }

                        UserPictureControl.UserAvatarType = avType;

                        // Disable message user buttons on live site for hidden or disabled users
                        if (IsLiveSite && !currentUserInfo.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin) && (messageUserInfo.UserIsDisabledManually || messageUserInfo.UserIsHidden))
                        {
                            MessageUserButtonsControl.RelatedUserId = 0;
                        }
                        else
                        {
                            MessageUserButtonsControl.RelatedUserId = messageUserInfo.UserID;
                        }
                        lblFrom.Text = HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(messageUserInfo.UserName, messageUserInfo.FullName, messageUserInfo.UserNickName, IsLiveSite));
                    }
                    else
                    {
                        MessageUserButtonsControl.RelatedUserId = 0;
                        lblFrom.Text = HTMLHelper.HTMLEncode(Message.MessageSenderNickName);
                    }
                    string body = Message.MessageBody;
                    // Resolve macros
                    DiscussionMacroResolver dmh = new DiscussionMacroResolver();
                    body = dmh.ResolveMacros(body);

                    lblSubject.Text = HTMLHelper.HTMLEncodeLineBreaks(Message.MessageSubject);
                    if (IsLiveSite)
                    {
                        lblDate.Text = TimeZoneUIMethods.ConvertDateTime(Message.MessageSent, this).ToString();
                    }
                    else
                    {
                        lblDate.Text = TimeZoneHelper.ConvertToUserTimeZone(Message.MessageSent, true, currentUserInfo, SiteContext.CurrentSite);
                    }
                    lblBody.Text = body;
                }
            }
            else
            {
                ShowError(GetString("Messaging.MessageDoesntExist"));
            }
        }
    }
    /// <summary>
    /// Displays data in table.
    /// </summary>
    /// <param name="ds">Dataset with data</param>
    protected void DisplayData(DataSet ds)
    {
        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            // Prepare list of tables
            SortedDictionary <string, DataTable> tables = new SortedDictionary <string, DataTable>();
            foreach (DataTable dt in ds.Tables)
            {
                if (!DataHelper.DataSourceIsEmpty(dt))
                {
                    tables.Add(GetString("ObjectType." + dt.TableName), dt);
                }
            }

            // Generate the tables
            foreach (DataTable dt in tables.Values)
            {
                pnlContent.Controls.Add(new LiteralControl("<h3>" + GetString("ObjectType." + dt.TableName) + "</h3>"));

                if (dt.Columns.Count >= 6)
                {
                    StringBuilder sb;

                    // Write all rows
                    foreach (DataRow dr in dt.Rows)
                    {
                        sb = new StringBuilder();

                        sb.Append("<table class=\"table table-hover\">");

                        // Add header
                        sb.AppendFormat("<thead><tr class=\"unigrid-head\"><th>{0}</th><th class=\"main-column-100\">{1}</th></tr></thead><tbody>", GetString("General.FieldName"), GetString("General.Value"));

                        // Add values
                        foreach (DataColumn dc in dt.Columns)
                        {
                            sb.AppendFormat("<tr><td><strong>{0}</strong></td><td class=\"wrap-normal\">", dc.ColumnName);

                            string content = null;

                            // Binary columns
                            if ((dc.DataType == typeof(byte[])) && (dr[dc.ColumnName] != DBNull.Value))
                            {
                                content = "<binary data>";
                            }
                            else
                            {
                                content = ValidationHelper.GetString(dr[dc.ColumnName], String.Empty);
                            }

                            bool standard = true;
                            switch (dc.ColumnName.ToLowerCSafe())
                            {
                            // Document content
                            case "documentcontent":
                                EditableItems items = new EditableItems();
                                items.LoadContentXml(ValidationHelper.GetString(dr[dc.ColumnName], String.Empty));

                                // Add regions
                                foreach (DictionaryEntry region in items.EditableRegions)
                                {
                                    sb.Append("<span class=\"VersionEditableRegionTitle\">" + (string)region.Key + "</span>");

                                    string regionContent = HTMLHelper.ResolveUrls((string)region.Value, SystemContext.ApplicationPath);

                                    sb.Append("<span class=\"VersionEditableRegionText\">" + regionContent + "</span>");
                                }

                                // Add web parts
                                foreach (DictionaryEntry part in items.EditableWebParts)
                                {
                                    sb.Append("<span class=\"VersionEditableWebPartTitle\">" + (string)part.Key + "</span>");

                                    string regionContent = HTMLHelper.ResolveUrls((string)part.Value, SystemContext.ApplicationPath);
                                    sb.Append("<span class=\"VersionEditableWebPartText\">" + regionContent + "</span>");
                                }

                                standard = false;
                                break;

                            // XML columns
                            case "pagetemplatewebparts":
                            case "webpartproperties":
                            case "reportparameters":
                            case "classformdefinition":
                            case "classxmlschema":
                            case "classformlayout":
                                content = HTMLHelper.ReformatHTML(content);
                                break;
                            }

                            // Standard rendering
                            if (standard)
                            {
                                content = HTMLHelper.HTMLEncodeLineBreaks(content);
                                content = content.Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");
                                sb.Append("<div style=\"max-height: 300px; overflow: auto;\">" + content + "</div>");
                            }

                            sb.Append("</td></tr>");
                        }

                        sb.Append("</tbody></table><br />\n");

                        pnlContent.Controls.Add(new LiteralControl(sb.ToString()));
                    }
                }
                else
                {
                    GridView newGrid = new GridView();
                    newGrid.ID = "grid" + dt.TableName;
                    newGrid.EnableViewState             = false;
                    newGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
                    newGrid.CellPadding = 3;
                    newGrid.GridLines   = GridLines.Horizontal;

                    pnlContent.Controls.Add(newGrid);

                    newGrid.DataSource = ds;
                    newGrid.DataMember = dt.TableName;

                    newGrid.DataBind();
                }
            }
        }
    }
    /// <summary>
    /// Preview button click handler.
    /// </summary>
    protected void btnPreview_Click(object sender, EventArgs e)
    {
        // If external preview is enabled fire OnPreview event
        if (UseExternalPreview)
        {
            #region "Forum properties"

            // Get forum post info with dependence on current state
            ForumPostInfo fp = ForumContext.CurrentState == ForumStateEnum.EditPost ? ForumContext.CurrentPost : new ForumPostInfo();

            // Post forum
            fp.PostForumID = ForumContext.CurrentForum.ForumID;
            // Post time
            fp.PostTime = DateTime.Now;
            // Post subject
            fp.PostSubject = txtSubject.Text;
            // Post user email
            fp.PostUserMail = txtEmail.Text;
            // Post signature
            fp.PostUserSignature = txtSignature.Text;

            // Post user id
            if (!MembershipContext.AuthenticatedUser.IsPublic())
            {
                fp.PostUserID = MembershipContext.AuthenticatedUser.UserID;
            }

            // Post user name
            if (ForumContext.CurrentForum.ForumAllowChangeName || MembershipContext.AuthenticatedUser.IsPublic() || (ForumContext.UserIsModerator(ForumContext.CurrentForum.ForumID, ForumContext.CommunityGroupID)))
            {
                fp.PostUserName = TextHelper.LimitLength(txtUserName.Text, POST_USERNAME_LENGTH, "");
            }
            else
            {
                fp.PostUserName = UserName;
            }

            // Post parent id -> reply to
            if (ForumContext.CurrentReplyThread != null)
            {
                fp.PostParentID = ForumContext.CurrentReplyThread.PostId;
            }

            // Get post text from HTML editor if is enabled
            fp.PostText = ForumContext.CurrentForum.ForumHTMLEditor ? htmlTemplateBody.ResolvedValue : ucBBEditor.Text;

            #endregion


            if (OnPreview != null)
            {
                OnPreview(fp, null);
            }
        }
        else
        {
            pnlReplyPost.Visible   = true;
            lblSubjectPreview.Text = HTMLHelper.HTMLEncode(txtSubject.Text);

            // Get forum text from HTML editor or text area
            if (ForumContext.CurrentForum.ForumHTMLEditor)
            {
                lblTextPreview.Text = htmlTemplateBody.ResolvedValue;
            }
            else
            {
                lblTextPreview.Text = HTMLHelper.HTMLEncodeLineBreaks(ucBBEditor.Text);
            }
        }
    }