示例#1
0
		public void FormatDisableHtml()
		{
			// From Code Project forums...
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<script",	"&lt;script");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</script",	"&lt;/script");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<input",	"&lt;input");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</input",	"&lt;/input");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<object",	"&lt;object");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</object",	"&lt;/object");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<applet",	"&lt;applet");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</applet",	"&lt;/applet");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<form",		"&lt;form");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</form",	"&lt;/form");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<table",	"&lt;table");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</table",	"&lt;/table");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<tr",		"&lt;tr");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</tr",		"&lt;/tr");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<td",		"&lt;td");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</td",		"&lt;/td");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<select",	"&lt;select");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</select",	"&lt;/select");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<option",	"&lt;option");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</option",	"&lt;/option");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "<iframe",	"&lt;iframe");
			_text = WebSolutionUtils.ReplaceCaseInsensitive(_text, "</iframe",	"&lt;/iframe");
		}
示例#2
0
        private void SubmitButton_Click(object sender, EventArgs e)
        {
            // Only allow an action to be completed if the subject and body validators
            // are valid - i.e. we will not allow empty strings in either text box.
            if (_bodyValidator.IsValid && _subjectValidator.IsValid)
            {
                // Create forum post object
                ForumPost forumPost = new ForumPost();

                // Post specific fields
                forumPost.Notify     = _notifyCheckBox.Checked;
                forumPost.Body       = _bodyTextBox.Text;
                forumPost.Subject    = _subjectTextBox.Text;
                forumPost.RemoteAddr = Page.Request.ServerVariables["REMOTE_ADDR"];

                // User specific fields
                forumPost.User        = new User();
                forumPost.User.UserID = _userID;

                // Perform action depending on button command name
                int    postID = 0;
                string action = _submitButton.CommandName;

                // Perform new post, reply, quote or edit action
                switch (action)
                {
                case "new":
                    postID = AddNew(forumPost);
                    break;

                case "reply":
                case "quote":
                    forumPost.ParentPostID = _postID;
                    postID = AddReply(forumPost);
                    break;

                case "edit":
                    forumPost.PostID = _postID;
                    postID           = _postID;
                    EditPost(forumPost);
                    break;
                }

                // Redirect user to page displaying new information
                string redirectURL = null;
                if (postID > 0)
                {
                    redirectURL = WebSolutionUtils.GetURL(GetDocument(), Page, "postid=" + postID, "forumaction=&threadspage=&searchpage=");
                }
                else
                {
                    redirectURL = WebSolutionUtils.GetURL(GetDocument(), Page, "", "postid=&forumaction=&threadspage=&searchpage=");
                }
                if (DocumentID > 0)
                {
                    redirectURL = "../" + redirectURL;
                }
                Page.Response.Redirect(redirectURL);
            }
        }
示例#3
0
        private void RenderThreadsPaging(HtmlTextWriter writer)
        {
            // Start the new column
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "50%");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // First, previous, next, last thread hyperlinks
            int  pageCount = ((_threadCount - 1) / _threadsPerPage) + 1;
            bool backwards = _threadsPage != 0;
            bool forwards  = _threadsPage != pageCount - 1;

            // << First and < Previous links
            if (backwards)
            {
                // << First
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, "", "postid=&forumaction=&searchpage=&threadspage="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("<<");
                writer.RenderEndTag();                  // A
                writer.Write("&nbsp;");

                // < Previous
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, string.Format("threadspage={0}", _threadsPage), "postid=&forumaction="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("< Previous");
                writer.RenderEndTag();                  // A
            }

            // Divider
            if (backwards && forwards)
            {
                writer.Write("&nbsp;|&nbsp;");
            }

            // Next > and Last >> links
            if (forwards)
            {
                // Next >
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, string.Format("threadspage={0}", _threadsPage + 2), "postid=&forumaction="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("Next >");
                writer.RenderEndTag();                  // A
                writer.Write("&nbsp;");

                // Last >>
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, string.Format("threadspage={0}", pageCount), "postid=&forumaction="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write(">>");
                writer.RenderEndTag();                  // A
            }

            // Close column
            writer.RenderEndTag();              // Td
        }
示例#4
0
        private void RenderHeader(HtmlTextWriter writer)
        {
            // Start a new row, 25 pixels high that spans two columns
            writer.AddAttribute(HtmlTextWriterAttribute.Height, "25");
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "6");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // We will put the header within a table
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            // Left hand side link: All Threads | New Thread
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "left");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "50%");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // All Threads hyper link
            writer.Write("&nbsp;");
            writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, "forumaction=showall", "searchterms=&threadspage=&searchpage=&postid="));
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.Write("All Threads");
            writer.RenderEndTag();              // A
            writer.Write("&nbsp;|&nbsp;");

            // New Thread link
            writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, "forumaction=new", "postid=&threadspage=&searchpage="));
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.Write("New Thread");
            writer.RenderEndTag();              // A
            writer.RenderEndTag();              // Td

            // Right hand side: Search text box
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "50%");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // Search list box
            writer.Write("Search:&nbsp;");
            _searchTextBox.RenderControl(writer);
            writer.RenderEndTag();              // Td

            // End table and row
            writer.RenderEndTag();              // Tr
            writer.RenderEndTag();              // Table
            writer.RenderEndTag();              // Td
            writer.RenderEndTag();              // Tr
        }
示例#5
0
        protected void CheckStartSearch(string searchTerms)
        {
            // Redirect user to search page
            if (searchTerms.Length > 0)
            {
                string redirectURL = null;
                searchTerms = searchTerms.Replace("&", ":amp:");
                redirectURL = WebSolutionUtils.GetURL(GetDocument(), Page, "forumaction=search&searchterms=" + searchTerms, "postid=&threadspage=&searchpage=");

                if (DocumentID > 0)
                {
                    redirectURL = "../" + redirectURL;
                }
                Page.Response.Redirect(redirectURL);
            }
        }
示例#6
0
        private void RenderHeader(HtmlTextWriter writer)
        {
            // Start a new row, 25 pixels high that spans two columns
            writer.AddAttribute(HtmlTextWriterAttribute.Height, "25");
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // We will put the header within a table
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            // Left hand side link: All Threads | Back to Referring Post
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "left");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // All Threads link always displayed
            writer.Write("&nbsp;");
            writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, "forumaction=showall", "postid=&threadspage=&searchpage="));
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.Write("All Threads");
            writer.RenderEndTag();              // A

            // Back to Referring Post not displayed when creating a new thread
            if (_action == "edit" || _action == "reply" || _action == "quote")
            {
                writer.Write("&nbsp;|&nbsp;");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, "postid=" + _postID + "#" + _postID, "forumaction=&threadspage=&searchpage="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("Back to Referring Post");
                writer.RenderEndTag();          // A
            }
            writer.RenderEndTag();              // Td

            // End table and row
            writer.RenderEndTag();              // Tr
            writer.RenderEndTag();              // Table
            writer.RenderEndTag();              // Td
            writer.RenderEndTag();              // Tr
        }
示例#7
0
        public void Render(HtmlTextWriter writer, int threadsPerPage, DateTime lastVisited, Page page, string images, string document, int postsPerPage, ForumUtils.ForumView forumView)
        {
            // Start row
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            // Render thread image.  If the total number of posts in this thread is great than the
            // number of posts that can be displayed on one page, then we display a special image that
            // indicates this thread is "on fire".
            int totalPosts = (int)Replies + 1;

            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRow");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "25");
            writer.AddAttribute(HtmlTextWriterAttribute.Valign, "middle");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            if (totalPosts > threadsPerPage)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Src, images + "board_thread_fire.gif");
            }
            else
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Src, images + "board_thread.gif");
            }
            writer.RenderBeginTag(HtmlTextWriterTag.Img);
            writer.RenderEndTag();              // Img
            writer.RenderEndTag();              // Td

            // Thread subject with link (and indicate whether or not this thread is pinned)
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRow");
            writer.AddAttribute(HtmlTextWriterAttribute.Valign, "middle");
            writer.AddAttribute(HtmlTextWriterAttribute.Valign, "left");
            writer.AddAttribute(HtmlTextWriterAttribute.Height, "25");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            if (PinnedDate > DateTime.Now)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.B);
                writer.Write("Sticky: ");
                writer.RenderEndTag();                  // B
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}", ThreadID), "forumaction=&searchpage=&threadspage=") + string.Format("#{0}", ThreadID));
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            ForumText subjectForumText = new ForumText(Subject);

            writer.Write(subjectForumText.ProcessSingleLine(images));
            writer.RenderEndTag();              // A

            // If thread spans several pages, then we need to indicate this in the thread list
            // by displaying text like (Page 1, 2, 3, ..., 5)
            if (totalPosts > threadsPerPage)
            {
                writer.Write(" (Page: ");
                int  pageCount       = ((totalPosts - 1) / threadsPerPage) + 1;
                int  pageCountCapped = Math.Min(pageCount, 4);
                bool showFinalPage   = (pageCountCapped < pageCount);
                for (int threadPage = 0; threadPage < pageCountCapped; threadPage++)
                {
                    int postID = ForumDB.GetPostFromThreadAndPage(ThreadID, threadPage, postsPerPage, forumView);
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}", postID), "forumaction=&searchpage=&threadspage="));
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    writer.Write(string.Format("{0}", threadPage + 1));
                    writer.RenderEndTag();                      // A
                    if ((threadPage < pageCountCapped - 1) || showFinalPage)
                    {
                        writer.Write(", ");
                    }
                }
                if (showFinalPage)
                {
                    if (pageCount > 5)
                    {
                        writer.Write("..., ");
                    }
                    int postID = ForumDB.GetPostFromThreadAndPage(ThreadID, pageCount - 1, postsPerPage, forumView);
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}", postID), "forumaction=&searchpage=&threadspage="));
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    writer.Write(pageCount.ToString());
                    writer.RenderEndTag();                      // A
                }
                writer.Write(")");
            }

            // Display new image if this thread is new since last time user visited
            if (lastVisited < _dateLastPost)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Src, images + "new.gif");
                writer.RenderBeginTag(HtmlTextWriterTag.Img);
                writer.RenderEndTag();
            }
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // Started by
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRowHighlight");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            ForumText startedByAliasForumText = new ForumText(StartedByAlias);

            writer.Write(startedByAliasForumText.ProcessSingleLine(images));
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // Replies
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRowHighlight");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "50");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            writer.Write(Replies);
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // Views
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRowHighlight");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "50");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            writer.Write(Views);
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // Last Post
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRowHighlight");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "140");
            writer.AddAttribute(HtmlTextWriterAttribute.Nowrap, "nowrap");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionSmallerFont");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            writer.Write(DateLastPost.ToString("dd MMM yy"));
            writer.Write("&nbsp;");
            writer.Write(DateLastPost.ToString("t"));
            writer.Write("<BR>");
            ForumText lastPostAliasForumText = new ForumText(LastPostAlias);

            writer.Write(lastPostAliasForumText.ProcessSingleLine(images));
            writer.Write("&nbsp;");
            writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}", LastPostID), "forumaction=&searchpage=&threadspage=") + string.Format("#{0}", LastPostID));
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.AddAttribute(HtmlTextWriterAttribute.Src, images + "last_post.gif");
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.RenderBeginTag(HtmlTextWriterTag.Img);
            writer.RenderEndTag();              // Img
            writer.RenderEndTag();              // A
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // End row
            writer.RenderEndTag();              // Tr
        }
        public void Render(HtmlTextWriter writer, bool displayActions, ForumUtils.ForumView forumView, bool selected, DateTime lastVisited, Page page, int loggedOnUserID, string avatar, string images, string document)
        {
            // New row
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            // Left hand side contains user information (user alias, avatar, number of posts etc)
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRow");
            writer.AddAttribute(HtmlTextWriterAttribute.Nowrap, "nowrap");
            writer.AddAttribute(HtmlTextWriterAttribute.Valign, "top");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "160");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // We will put this user information in its own table in the first column
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "3");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "160");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            // User alias and number of posts
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.RenderBeginTag(HtmlTextWriterTag.B);
            ForumText userAliasForumText = new ForumText(User.Alias);

            writer.Write(userAliasForumText.ProcessSingleLine(images));
            writer.RenderEndTag();              // B
            writer.RenderBeginTag(HtmlTextWriterTag.Br);
            writer.Write(string.Format("Posts: {0}", User.PostCount));
            writer.RenderEndTag();              // Br
            writer.RenderEndTag();              // Td
            writer.RenderEndTag();              // Tr

            // Avatar
            if (forumView == ForumUtils.ForumView.TreeViewDynamic)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Id, PostID.ToString() + "_avatarrow");
                if (!selected)
                {
                    writer.AddStyleAttribute("display", "none");
                }
            }
            if ((selected && forumView == ForumUtils.ForumView.TreeView) || forumView != ForumUtils.ForumView.TreeView)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                if (avatar != string.Empty)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
                    writer.AddAttribute(HtmlTextWriterAttribute.Src, avatar);
                    writer.RenderBeginTag(HtmlTextWriterTag.Img);
                    writer.RenderEndTag();              // Img
                }
                writer.RenderEndTag();                  // Td
                writer.RenderEndTag();                  // Tr
            }

            // End user information table
            writer.RenderEndTag();              // Table
            writer.RenderEndTag();              // Td

            // Start row which will display subject, body and actions (reply, edit, etc)
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRow");
            writer.AddAttribute(HtmlTextWriterAttribute.Valign, "top");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
            if (forumView != ForumUtils.ForumView.FlatView && !selected)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Height, "100%");
            }
            if (forumView == ForumUtils.ForumView.TreeViewDynamic)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Id, PostID.ToString() + "_headercell");
            }
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // Start a new table for this information
            writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "3");
            writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            if (forumView != ForumUtils.ForumView.FlatView && !selected)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Height, "100%");
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
            if (forumView == ForumUtils.ForumView.TreeViewDynamic)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Id, PostID.ToString() + "_messagetable");
            }
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            // Highlighted row (subject and when posted information)
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            if (forumView != ForumUtils.ForumView.FlatView)
            {
                RenderLevelIndentCell(writer);
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRowHighlight");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.RenderBeginTag(HtmlTextWriterTag.B);
            writer.AddAttribute(HtmlTextWriterAttribute.Name, PostID.ToString());
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            writer.RenderEndTag();

            // Provide link to select a different post
            writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}", PostID), "forumaction=&searchpage=&threadspage=") + "#" + PostID);
            if (forumView == ForumUtils.ForumView.TreeViewDynamic)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Id, "DynMessLink");
                writer.AddAttribute(HtmlTextWriterAttribute.Name, PostID.ToString());
            }
            writer.RenderBeginTag(HtmlTextWriterTag.A);

            ForumText subjectForumText = new ForumText(Subject);

            writer.Write(subjectForumText.ProcessSingleLine(images));
            writer.RenderEndTag();              // A
            writer.RenderEndTag();              // B

            // Display new image if this post is new since last time user visited
            if (lastVisited < PostDate)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Src, images + "new.gif");
                writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
                writer.RenderBeginTag(HtmlTextWriterTag.Img);
                writer.RenderEndTag();
            }
            writer.RenderBeginTag(HtmlTextWriterTag.Br);
            writer.Write(string.Format("Posted: {0} {1}", PostDate.ToString("dd MMM yy"), PostDate.ToString("t")));
            writer.RenderEndTag();              // Br
            writer.RenderEndTag();              // Td
            writer.RenderEndTag();              // Tr

            // Message row
            if ((selected && forumView == ForumUtils.ForumView.TreeView) || forumView != ForumUtils.ForumView.TreeView)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
                if (forumView == ForumUtils.ForumView.TreeViewDynamic)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Id, PostID.ToString() + "_messagerow");
                    if (!selected)
                    {
                        writer.AddStyleAttribute("display", "none");
                    }
                }
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                if (forumView != ForumUtils.ForumView.FlatView)
                {
                    RenderLevelIndentCell(writer);
                }
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                ForumText bodyForumText = new ForumText(Body);
                writer.Write(bodyForumText.Process(images));

                writer.RenderEndTag();                  // Td
                writer.RenderEndTag();                  // Tr
            }

            // Reply, Quote, Edit, Get Link row
            if (displayActions && ((selected && forumView == ForumUtils.ForumView.TreeView) || forumView != ForumUtils.ForumView.TreeView))
            {
                if (forumView == ForumUtils.ForumView.TreeViewDynamic)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Id, PostID.ToString() + "_actionsrow");
                    if (!selected)
                    {
                        writer.AddStyleAttribute("display", "none");
                    }
                }
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                if (forumView != ForumUtils.ForumView.FlatView)
                {
                    RenderLevelIndentCell(writer);
                }
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
                writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
                writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
                writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
                writer.RenderBeginTag(HtmlTextWriterTag.Table);
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                writer.AddAttribute(HtmlTextWriterAttribute.Align, "Left");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                // Reply link
                writer.Write("[");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}&forumaction=reply", PostID), "searchpage=&threadspage="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("Reply");
                writer.RenderEndTag();                  // A
                writer.Write("]");

                // Quote link
                writer.Write("[");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}&forumaction=quote", PostID), "searchpage=&threadspage="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("Quote");
                writer.RenderEndTag();                  // A
                writer.Write("]");

                if (forumView == ForumUtils.ForumView.TreeViewDynamic)
                {
                    // Get Link
                    writer.Write("[");
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}", PostID), "forumaction=&searchpage=&threadspage=") + "#" + PostID);
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    writer.Write("Get Link");
                    writer.RenderEndTag();                       // A
                    writer.Write("]");
                }

                writer.RenderEndTag();                  // Td

                writer.AddAttribute(HtmlTextWriterAttribute.Align, "Right");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                // Edit link (only allowed if this post by currently logged on user or an administrator)
                if (User.UserID == loggedOnUserID || page.User.IsInRole("ForumAdmin"))
                {
                    writer.Write("[");
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}&forumaction=edit", PostID), "searchpage=&threadspage="));
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    writer.Write("Edit");
                    writer.RenderEndTag();                      // A
                    writer.Write("]");
                }

                writer.RenderEndTag();                  // Td
                writer.RenderEndTag();                  // Tr
                writer.RenderEndTag();                  // Table

                writer.RenderEndTag();                  // Td
                writer.RenderEndTag();                  // Tr
            }

            // Close out table and this row
            writer.RenderEndTag();              // Table
            writer.RenderEndTag();              // Td
            writer.RenderEndTag();              // Tr
        }
示例#9
0
        public void Render(HtmlTextWriter writer, DateTime lastVisited, Page page, string images, string document)
        {
            // Start row
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            // Render post image
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRow");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "25");
            writer.AddAttribute(HtmlTextWriterAttribute.Valign, "middle");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Src, images + "board_thread.gif");
            writer.RenderBeginTag(HtmlTextWriterTag.Img);
            writer.RenderEndTag();              // Img
            writer.RenderEndTag();              // Td

            // Post subject with hyperlink
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRow");
            writer.AddAttribute(HtmlTextWriterAttribute.Valign, "middle");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "left");
            writer.AddAttribute(HtmlTextWriterAttribute.Height, "25");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(document, page, string.Format("postid={0}", PostID), "forumaction=&threadspage=&searchpage=&searchterms=") + string.Format("#{0}", PostID));
            writer.RenderBeginTag(HtmlTextWriterTag.A);
            ForumText subjectForumText = new ForumText(Subject);

            writer.Write(subjectForumText.ProcessSingleLine(images));
            writer.RenderEndTag();              // A

            // Display new image if this post is new since last time user visited
            if (lastVisited < PostDate)
            {
                writer.Write(" ");
                writer.AddAttribute(HtmlTextWriterAttribute.Src, images + "new.gif");
                writer.RenderBeginTag(HtmlTextWriterTag.Img);
                writer.RenderEndTag();
            }
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // Posted by
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRowHighlight");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            ForumText aliasForumText = new ForumText(Alias);

            writer.Write(aliasForumText.ProcessSingleLine(images));
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // Date
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "WebSolutionRowHighlight");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            writer.Write(string.Format("{0}", PostDate.ToString("dd MMM yy")));
            writer.RenderEndTag();              // Span
            writer.RenderEndTag();              // Td

            // End row
            writer.RenderEndTag();              // Tr
        }
示例#10
0
        private void EmailReplyNotification(ForumPost parentForumPost, ForumPost forumPost)
        {
            User user       = UserDB.GetUser(forumPost.User.UserID);
            User userParent = UserDB.GetUser(parentForumPost.User.UserID);

            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("A reply from {0} has been posted to your message entitled \"{1}\"\r\n\r\n", user.Alias, parentForumPost.Subject);
            sb.AppendFormat("Subject: \"{0}\"\r\n\r\n", forumPost.Subject);
            sb.AppendFormat("Reply: \r\n\r\n{0}\r\n\r\n", forumPost.Body);
            string url = "http://" + Page.Request.ServerVariables["SERVER_NAME"] + "/" + WebSolutionUtils.GetURL(GetDocument(), Page, "postid=" + forumPost.PostID + "#" + forumPost.PostID, "forumaction=&threadspage=&searchpage=");

            sb.Append("To view this reply at the forum, click on the following link:\r\n\r\n");
            sb.Append(url);

            MailMessage mailMessage = new MailMessage();

            mailMessage.To         = userParent.Email;
            mailMessage.Subject    = "Message board reply";
            mailMessage.Body       = sb.ToString();
            mailMessage.BodyFormat = MailFormat.Text;
            string host = Page.Request.Url.Host;

            if (host.Length > 4 && host.Substring(0, 4) == "www.")
            {
                host = host.Substring(4, host.Length - 4);
            }
            mailMessage.From = "forums@" + host;

            SmtpMail.SmtpServer = Page.Request.ServerVariables["SERVER_NAME"];

            try
            {
                SmtpMail.Send(mailMessage);
            }
            catch (Exception)
            {
            }
        }
示例#11
0
 private void RedirectUserHasNoAuthority()
 {
     Page.Response.Redirect(WebSolutionUtils.GetURL(GetDocument(), Page, "", "forumaction="));
 }
示例#12
0
        private void RenderThreadPaging(HtmlTextWriter writer, int pageCount)
        {
            // Start the new column
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
            writer.AddAttribute(HtmlTextWriterAttribute.Width, "50%");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "Normal");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            // First, previous, next, last thread hyperlinks
            bool backwards = _threadPage != 0;
            bool forwards  = _threadPage != pageCount - 1;

            // << First and < Previous links
            if (backwards)
            {
                int postID = 0;

                // << First
                postID = _threadID;
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, string.Format("postid={0}", postID), "forumaction="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("&lt;&lt;");
                writer.RenderEndTag();                  // A
                writer.Write("&nbsp;");

                // < Previous
                postID = ForumDB.GetPostFromThreadAndPage(_threadID, _threadPage - 1, ForumUtils.GetPostsPerPage(), _forumView);
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, string.Format("postid={0}", postID), "forumaction="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("&lt;&nbsp;Previous");
                writer.RenderEndTag();                  // A
            }

            // Divider
            if (backwards && forwards)
            {
                writer.Write("&nbsp;|&nbsp;");
            }

            // Next > and Last >> links
            if (forwards)
            {
                int postID = 0;

                // Next >
                postID = ForumDB.GetPostFromThreadAndPage(_threadID, _threadPage + 1, ForumUtils.GetPostsPerPage(), _forumView);
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, string.Format("postid={0}", postID), "forumaction="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("Next&nbsp;&gt;");
                writer.RenderEndTag();
                writer.Write("&nbsp;");

                // Last >>
                postID = ForumDB.GetPostFromThreadAndPage(_threadID, pageCount - 1, ForumUtils.GetPostsPerPage(), _forumView);
                writer.AddAttribute(HtmlTextWriterAttribute.Href, WebSolutionUtils.GetURL(GetDocument(), Page, string.Format("postid={0}", postID), "forumaction="));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("&gt;&gt;");
                writer.RenderEndTag();
            }

            // Close column
            writer.Write("&nbsp;");
            writer.RenderEndTag();              // Td
        }