rendered paste bodyusing System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for DisplayPost.
/// </summary>
public class DisplayPost : BaseUserControl
{
protected HyperLink Attach, Edit, Quote;
protected LinkButton Delete;
protected HyperLink Pm, Home, Yim, Aim, Icq, Email, Msn, Blog;
protected HtmlTableCell NameCell, AdminInfo;
protected controls.PopMenu PopMenu1;
protected HyperLink UserName;
private void Page_Load(object sender, System.EventArgs e)
{
PopMenu1.Visible = ForumPage.IsAdmin;
if(PopMenu1.Visible)
{
PopMenu1.ItemClick += new PopEventHandler(PopMenu1_ItemClick);
PopMenu1.AddItem("userprofile","User Profile");
PopMenu1.AddItem("edituser","Edit User (Admin)");
PopMenu1.Attach(UserName);
}
Page.RegisterClientScriptBlock("yafjs",string.Format("<script language='javascript' src='{0}'></script>",ResolveUrl("../yaf.js")));
NameCell.ColSpan = int.Parse(GetIndentSpan());
}
private void DisplayPost_PreRender(object sender,EventArgs e)
{
Attach.Visible = CanAttach;
Attach.Text = ForumPage.GetThemeContents("BUTTONS","ATTACHMENTS");
Attach.ToolTip = "Attachments";
Attach.NavigateUrl = Forum.GetLink(Pages.attachments,"m={0}",DataRow["MessageID"]);
Edit.Visible = CanEditPost;
Edit.Text = ForumPage.GetThemeContents("BUTTONS","EDITPOST");
Edit.ToolTip = "Edit this post";
Edit.NavigateUrl = Forum.GetLink(Pages.postmessage,"m={0}",DataRow["MessageID"]);
Delete.Visible = CanDeletePost;
Delete.Text = ForumPage.GetThemeContents("BUTTONS","DELETEPOST");
Delete.ToolTip = "Delete this post";
Delete.Attributes["onclick"] = string.Format("return confirm('{0}')",ForumPage.GetText("confirm_deletemessage"));
Quote.Visible = CanReply;
Quote.Text = ForumPage.GetThemeContents("BUTTONS","QUOTEPOST");
Quote.ToolTip = "Reply with quote";
Quote.NavigateUrl = Forum.GetLink(Pages.postmessage,"t={0}&f={1}&q={2}",ForumPage.PageTopicID,ForumPage.PageForumID,DataRow["MessageID"]);
// private messages
Pm.Visible = ForumPage.User.IsAuthenticated && ForumPage.BoardSettings.AllowPrivateMessages;
Pm.Text = ForumPage.GetThemeContents("BUTTONS","PM");
Pm.NavigateUrl = Forum.GetLink(Pages.pmessage,"u={0}",DataRow["UserID"]);
// emailing
Email.Visible = ForumPage.User.IsAuthenticated && ForumPage.BoardSettings.AllowEmailSending;
Email.NavigateUrl = Forum.GetLink(Pages.im_email,"u={0}",DataRow["UserID"]);
Email.Text = ForumPage.GetThemeContents("BUTTONS","EMAIL");
Home.Visible = DataRow["HomePage"]!=DBNull.Value;
Home.NavigateUrl = DataRow["HomePage"].ToString();
Home.Text = ForumPage.GetThemeContents("BUTTONS","WWW");
Blog.Visible = DataRow["Weblog"]!=DBNull.Value;
Blog.NavigateUrl = DataRow["Weblog"].ToString();
Blog.Text = ForumPage.GetThemeContents("BUTTONS","WEBLOG");
Msn.Visible = ForumPage.User.IsAuthenticated && DataRow["MSN"]!=DBNull.Value;
Msn.Text = ForumPage.GetThemeContents("BUTTONS","MSN");
Msn.NavigateUrl = Forum.GetLink(Pages.im_email,"u={0}",DataRow["UserID"]);
Yim.Visible = ForumPage.User.IsAuthenticated && DataRow["YIM"]!=DBNull.Value;
Yim.NavigateUrl = Forum.GetLink(Pages.im_yim,"u={0}",DataRow["UserID"]);
Yim.Text = ForumPage.GetThemeContents("BUTTONS","YAHOO");
Aim.Visible = ForumPage.User.IsAuthenticated && DataRow["AIM"]!=DBNull.Value;
Aim.Text = ForumPage.GetThemeContents("BUTTONS","AIM");
Aim.NavigateUrl = Forum.GetLink(Pages.im_aim,"u={0}",DataRow["UserID"]);
Icq.Visible = ForumPage.User.IsAuthenticated && DataRow["ICQ"]!=DBNull.Value;
Icq.Text = ForumPage.GetThemeContents("BUTTONS","ICQ");
Icq.NavigateUrl = Forum.GetLink(Pages.im_icq,"u={0}",DataRow["UserID"]);
// display admin only info
if (ForumPage.IsAdmin)
{
AdminInfo.InnerHtml = "<span class='smallfont'>";
if (Convert.ToDateTime(DataRow["Edited"]) != Convert.ToDateTime(DataRow["Posted"]))
{
// message has been edited
AdminInfo.InnerHtml += String.Format("<b>Edited:</b> {0}",ForumPage.FormatDateTimeShort(Convert.ToDateTime(DataRow["Edited"])));
}
AdminInfo.InnerHtml += String.Format(" <b>IP:</b> {0}",DataRow["IP"].ToString());
AdminInfo.InnerHtml += "</span>";
}
}
override protected void OnInit(EventArgs e)
{
this.Load += new System.EventHandler(this.Page_Load);
this.PreRender += new EventHandler(DisplayPost_PreRender);
Delete.Click += new EventHandler(Delete_Click);
base.OnInit(e);
}
private DataRowView m_row = null;
public DataRowView DataRow
{
get
{
return m_row;
}
set
{
m_row = value;
}
}
protected bool CanEditPost
{
get
{
return !PostLocked && ((int)DataRow["ForumFlags"] & (int)ForumFlags.Locked)!=(int)ForumFlags.Locked && ((int)DataRow["TopicFlags"] & (int)TopicFlags.Locked)!=(int)TopicFlags.Locked && ((int)DataRow["UserID"]==ForumPage.PageUserID || ForumPage.ForumModeratorAccess) && ForumPage.ForumEditAccess;
}
}
private bool PostLocked
{
get
{
if(!ForumPage.IsAdmin && ForumPage.BoardSettings.LockPosts>0)
{
DateTime edited = (DateTime)DataRow["Edited"];
if(edited.AddDays(ForumPage.BoardSettings.LockPosts)<DateTime.Now)
return true;
}
return false;
}
}
protected bool CanAttach
{
get
{
return !PostLocked && ((int)DataRow["ForumFlags"] & (int)ForumFlags.Locked)!=(int)ForumFlags.Locked && ((int)DataRow["TopicFlags"] & (int)TopicFlags.Locked)!=(int)TopicFlags.Locked && ((int)DataRow["UserID"]==ForumPage.PageUserID || ForumPage.ForumModeratorAccess) && ForumPage.ForumUploadAccess;
}
}
protected bool CanDeletePost
{
get
{
return !PostLocked && ((int)DataRow["ForumFlags"] & (int)ForumFlags.Locked)!=(int)ForumFlags.Locked && ((int)DataRow["TopicFlags"] & (int)TopicFlags.Locked)!=(int)TopicFlags.Locked && ((int)DataRow["UserID"]==ForumPage.PageUserID || ForumPage.ForumModeratorAccess) && ForumPage.ForumDeleteAccess;
}
}
protected bool CanReply
{
get
{
return ((int)DataRow["ForumFlags"] & (int)ForumFlags.Locked)!=(int)ForumFlags.Locked && ((int)DataRow["TopicFlags"] & (int)TopicFlags.Locked)!=(int)TopicFlags.Locked && ForumPage.ForumReplyAccess;
}
}
private bool m_isAlt = false;
public bool IsAlt
{
get { return this.m_isAlt; }
set { this.m_isAlt = value; }
}
private bool m_isThreaded = false;
public bool IsThreaded
{
get
{
return m_isThreaded;
}
set
{
m_isThreaded = value;
}
}
protected string GetIndentCell()
{
if(!IsThreaded)
return "";
int iIndent = (int)DataRow["Indent"];
if(iIndent>0)
return string.Format("<td rowspan='3' width='1%'><img src='{1}images/spacer.gif' width='{0}' height='2'/></td>",iIndent*32,Data.ForumRoot);
else
return "";
}
protected string GetIndentSpan()
{
if(!IsThreaded || (int)DataRow["Indent"]==0)
return "2";
else
return "1";
}
protected string GetPostClass()
{
if(this.IsAlt)
return "post_alt";
else
return "post";
}
protected string FormatUserBox()
{
System.Data.DataRowView row = DataRow;
string html = "";
// Avatar
if(ForumPage.BoardSettings.AvatarUpload && row["HasAvatarImage"]!=null && long.Parse(row["HasAvatarImage"].ToString())>0)
{
html += String.Format("<img src='{1}image.aspx?u={0}'><br clear=\"all\"/>",row["UserID"],Data.ForumRoot);
}
else if(row["Avatar"].ToString().Length>0) // Took out ForumPage.BoardSettings.AvatarRemote
{
//html += String.Format("<img src='{0}'><br clear=\"all\"/>",row["Avatar"]);
html += String.Format("<img src='{3}image.aspx?url={0}&width={1}&height={2}'><br clear=\"all\"/>",
Server.UrlEncode(row["Avatar"].ToString()),
ForumPage.BoardSettings.AvatarWidth,
ForumPage.BoardSettings.AvatarHeight,
Data.ForumRoot
);
}
// Rank Image
if(row["RankImage"].ToString().Length>0)
html += String.Format("<img align=left src=\"{0}images/ranks/{1}\"/><br clear=\"all\"/>",Data.ForumRoot,row["RankImage"]);
// Rank
html += String.Format("{0}: {1}<br clear=\"all\"/>",ForumPage.GetText("rank"),row["RankName"]);
// Groups
if(ForumPage.BoardSettings.ShowGroups)
{
using(DataTable dt = DB.usergroup_list(row["UserID"]))
{
html += String.Format("{0}: ",ForumPage.GetText("groups"));
bool bFirst = true;
foreach(DataRow grp in dt.Rows)
{
if(bFirst)
{
html += grp["Name"].ToString();
bFirst = false;
}
else
{
html += String.Format(", {0}",grp["Name"]);
}
}
html += "<br/>";
}
}
// Extra row
html += "<br/>";
// Joined
html += String.Format("{0}: {1}<br/>",ForumPage.GetText("joined"),ForumPage.FormatDateShort((DateTime)row["Joined"]));
// Posts
html += String.Format("{0}: {1:N0}<br/>",ForumPage.GetText("posts"),row["Posts"]);
// Location
if(row["Location"].ToString().Length>0)
html += String.Format("{0}: {1}<br/>",ForumPage.GetText("location"),FormatMsg.RepairHtml(ForumPage,row["Location"].ToString(),false));
return html;
}
protected string FormatBody()
{
DataRowView row = DataRow;
string html2 = FormatMsg.FormatMessage(ForumPage,row["Message"].ToString(),new MessageFlags(Convert.ToInt32(row["Flags"])));
// define valid image extensions
string[] aImageExtensions = {"jpg","gif","png"};
if (long.Parse(row["HasAttachments"].ToString()) > 0)
{
string stats = ForumPage.GetText("ATTACHMENTINFO");
string strFileIcon = ForumPage.GetThemeContents("ICONS","ATTACHED_FILE");
html2 += "<p>";
using(DataTable dt = DB.attachment_list(row["MessageID"],null,null))
{
// show file then image attachments...
int tmpDisplaySort = 0;
while (tmpDisplaySort <= 1)
{
bool bFirstItem = true;
foreach(DataRow dr in dt.Rows)
{
string strFilename = Convert.ToString(dr["FileName"]).ToLower();
bool bShowImage = false;
// verify it's not too large to display (might want to make this a board setting)
if (Convert.ToInt32(dr["Bytes"]) <= 262144)
{
// is it an image file?
for (int i=0;i<aImageExtensions.Length;i++)
{
if (strFilename.EndsWith(aImageExtensions[i]))
{
bShowImage = true;
break;
}
}
}
if (bShowImage && tmpDisplaySort == 1)
{
if (bFirstItem)
{
html2 += "<i class=\"smallfont\">";
html2 += String.Format(ForumPage.GetText("IMAGE_ATTACHMENT_TEXT"),Convert.ToString(row["UserName"]));
html2 += "</i><br/>";
bFirstItem = false;
}
html2 += String.Format("<img src=\"{0}image.aspx?a={1}\" alt=\"{2}\"><br/>",Data.ForumRoot,dr["AttachmentID"],Server.HtmlEncode(Convert.ToString(dr["FileName"])));
}
else if (!bShowImage && tmpDisplaySort == 0)
{
if (bFirstItem)
{
html2 += String.Format("<b class=\"smallfont\">{0}</b><br/>",ForumPage.GetText("ATTACHMENTS"));
bFirstItem = false;
}
// regular file attachment
int kb = (1023 + (int)dr["Bytes"]) / 1024;
html2 += String.Format("<img border='0' src='{0}'> <b><a href=\"{1}image.aspx?a={2}\">{3}</a></b> <span class='smallfont'>{4}</span><br/>",strFileIcon,Data.ForumRoot,dr["AttachmentID"],dr["FileName"],String.Format(stats,kb,dr["Downloads"]));
}
}
// now show images
tmpDisplaySort++;
html2 += "<br/>";
}
}
}
if(row["Signature"] != DBNull.Value && row["Signature"].ToString().ToLower() != "<p> </p>" && ForumPage.BoardSettings.AllowSignatures)
{
// don't allow any HTML on signatures
MessageFlags tFlags = new MessageFlags();
tFlags.IsHTML = false;
html2 += "<br/><hr noshade/>" + FormatMsg.FormatMessage(ForumPage,row["Signature"].ToString(),tFlags);
}
return html2;
}
private void Delete_Click(object sender,EventArgs e)
{
if(!CanDeletePost)
return;
// CHANGED BAI 30.01.2004
//Create objects for easy access
object tmpMessageID = DataRow["MessageID"];
object tmpForumID = DataRow["ForumID"];
object tmpTopicID = DataRow["TopicID"];
// Delete message. If it is the last message of the topic, the topic is also deleted
DB.message_delete(tmpMessageID);
// retrieve topic information.
DataRow topic = DB.topic_info(tmpTopicID);
//If topic has been deleted, redirect to topic list for active forum, else show remaining posts for topic
if (topic == null)
Forum.Redirect(Pages.topics,"f={0}",tmpForumID);
else
Forum.Redirect(Pages.posts,"t={0}",tmpTopicID);
// END CHANGED BAI 30.01.2004
}
private void PopMenu1_ItemClick(object sender, PopEventArgs e)
{
switch(e.Item)
{
case "userprofile":
Forum.Redirect(Pages.profile,"u={0}",DataRow["UserID"]);
break;
case "edituser":
Forum.Redirect(Pages.admin_edituser,"u={0}",DataRow["UserID"]);
break;
}
}
}
}
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="DisplayPost.ascx.cs" Inherits="yaf.controls.DisplayPost" EnableViewState="false" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<%@ Register TagPrefix="yaf" Namespace="yaf.controls" Assembly="yaf" %>
<tr class="postheader">
<%#GetIndentCell()%>
<td width="140px" id="NameCell" runat="server">
<a name="<%# DataRow["MessageID"] %>"/>
<b><asp:hyperlink id="UserName" runat="server" href='<%# yaf.Forum.GetLink(yaf.Pages.profile,"u={0}",DataRow["UserID"]) %>'><%# Server.HtmlEncode(DataRow["UserName"].ToString()) %></asp:hyperlink></b>
</td>
<td width="80%">
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="postheader">
<b><%# ForumPage.GetText("POSTED") %>:</b>
<%# ForumPage.FormatDateTime((System.DateTime)DataRow["Posted"]) %>
</td>
<td class="postheader" align="right">
<asp:hyperlink runat="server" id="Attach"/>
<asp:hyperlink runat="server" id="Edit"/>
<asp:linkbutton runat="server" id="Delete"/>
<asp:hyperlink runat="server" id="Quote"/>
</td>
</tr>
</table>
</td>
</tr>
<tr class=<%#GetPostClass()%>>
<td valign="top" height="100" class="UserBox" colspan='<%#GetIndentSpan()%>'>
<%# FormatUserBox() %>
</td>
<td valign="top" class="message">
<%# FormatBody() %>
</td>
</tr>
<tr class="postfooter">
<td class="small" colspan='<%#GetIndentSpan()%>'>
<a href="javascript:scroll(0,0)"><%# ForumPage.GetText("TOP") %></a>
</td>
<td class="postfooter">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<asp:hyperlink runat='server' id='Pm'/>
<asp:hyperlink runat='server' id='Email'/>
<asp:hyperlink runat='server' id='Home'/>
<asp:hyperlink runat='server' id='Blog'/>
<asp:hyperlink runat='server' id='Msn'/>
<asp:hyperlink runat='server' id='Yim'/>
<asp:hyperlink runat='server' id='Aim'/>
<asp:hyperlink runat='server' id='Icq'/>
</td>
<td align="right" id="AdminInfo" runat="server"> </td>
</tr>
</table>
</td>
</tr>
<tr class="postsep"><td colspan="3" style="height:5px"></td></tr>
<yaf:PopMenu runat="server" id="PopMenu1" control="UserName"/>