Exemple #1
0
        public string GetHtml(bool includeTimeStamps, CultureInfo culture)
        {
            ChatParticipant initiator = ChatParticipants.GetChatParticipant(Collection.LoginUser, InitiatorID, InitiatorType, ChatID);
            ChatMessages    messages  = new ChatMessages(Collection.LoginUser);
            StringBuilder   builder   = new StringBuilder("<div class=\"chat-messages\">");

            builder.Append(string.Format("<p class=\"chat-notification\">Initiated On: {0}<p>", DateCreated.ToString("g", culture)));
            if (initiator != null)
            {
                builder.Append(string.Format("<p class=\"chat-notification\">Initiated By: {0} {1}, {2} (<a href=\"mailto:{3}\">{3}</a>)<p>", initiator.FirstName, initiator.LastName, initiator.CompanyName, initiator.Email));
            }

            messages.LoadByChatID(ChatID);
            List <string> eventsList = GetHTMLGlobalEventAttributes();

            foreach (ChatMessage message in messages)
            {
                string time        = message.DateCreated.ToString("h:mm");
                string timeFormat  = includeTimeStamps ? time + ": " : "";
                string messageText = message.Message.Replace("<", "&lt;").Replace(">", "&gt;");

                bool containsProhibitedText = false;
                int  i = 0;

                while (i < eventsList.Count && !containsProhibitedText)
                {
                    containsProhibitedText = message.Message.Trim().IndexOf("<script ") >= 0 || message.Message.Trim().Contains(string.Format(" {0}=", eventsList[i]));
                    i++;
                }

                if ((message.Message.Trim().IndexOf("<img ") == 0 && !containsProhibitedText) ||
                    (message.Message.Trim().IndexOf("/chatattachments/") > 0 && !containsProhibitedText) ||
                    (message.Message.Trim().IndexOf("<a target=\"_blank\" href=") >= 0 && !containsProhibitedText))
                {
                    messageText = message.Message;
                }

                if (message.IsNotification)
                {
                    builder.Append(string.Format("<p class=\"chat-notification\">{0}{1}<p>", includeTimeStamps ? time + ": " : "", messageText));
                }
                else if (message.PosterType == ChatParticipantType.User)
                {
                    if (message.PosterID == Collection.LoginUser.UserID)
                    {
                        builder.Append(string.Format("<p class=\"chat-message-self\"><span class=\"chat-name\">{1}{0}: </span>{2}</p>", message.Row["PosterName"].ToString(), timeFormat, messageText));
                    }
                    else
                    {
                        builder.Append(string.Format("<p class=\"chat-message-user\"><span class=\"chat-name\">{1}{0}: </span>{2}</p>", message.Row["PosterName"].ToString(), timeFormat, messageText));
                    }
                }
                else
                {
                    builder.Append(string.Format("<p class=\"chat-message-client\"><span class=\"chat-name\">{1}{0}: </span>{2}</p>", message.Row["PosterName"].ToString(), timeFormat, messageText));
                }
            }
            builder.Append("</div>");
            return(builder.ToString());
        }