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(" "); writer.Write(DateLastPost.ToString("t")); writer.Write("<BR>"); ForumText lastPostAliasForumText = new ForumText(LastPostAlias); writer.Write(lastPostAliasForumText.ProcessSingleLine(images)); writer.Write(" "); 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 }
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("<<"); writer.RenderEndTag(); // A writer.Write(" "); // < 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("< Previous"); writer.RenderEndTag(); // A } // Divider if (backwards && forwards) { writer.Write(" | "); } // 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 >"); writer.RenderEndTag(); writer.Write(" "); // 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(">>"); writer.RenderEndTag(); } // Close column writer.Write(" "); writer.RenderEndTag(); // Td }