/* Yet Another Forum.net
* Copyright (C) 2003 Bjørnar Henden
* http://www.yetanotherforum.net/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace yaf.pages
{
///
/// Summary description for inbox.
///
public partial class cp_inbox : ForumPage
{
public cp_inbox() : base("CP_INBOX")
{
}
private void SetSort(string field,bool asc)
{
if(ViewState["SortField"]!=null && (string)ViewState["SortField"]==field)
{
ViewState["SortAsc"] = !(bool)ViewState["SortAsc"];
}
else
{
ViewState["SortField"] = field;
ViewState["SortAsc"] = asc;
}
}
private void SubjectLink_Click(object sender, System.EventArgs e)
{
SetSort("Subject",true);
BindData();
}
private void FromLink_Click(object sender, System.EventArgs e)
{
if(IsSentItems)
SetSort("ToUser",true);
else
SetSort("FromUser",true);
BindData();
}
private void DateLink_Click(object sender, System.EventArgs e)
{
SetSort("Created",false);
BindData();
}
protected void DeleteSelected_Load(object sender, System.EventArgs e)
{
((Button)sender).Attributes["onclick"] = String.Format("return confirm('{0}')",GetText("confirm_delete"));
}
protected void Page_Load(object sender, System.EventArgs e)
{
if(!User.IsAuthenticated)
{
if(User.CanLogin)
Forum.Redirect(Pages.login,"ReturnUrl={0}",Utils.GetSafeRawUrl());
else
Forum.Redirect(Pages.forum);
}
if(!IsPostBack)
{
SetSort("Created",false);
IsSentItems = Request.QueryString["sent"]!=null;
BindData();
PageLinks.AddLink(BoardSettings.Name,Forum.GetLink(Pages.forum));
PageLinks.AddLink(PageUserName,Forum.GetLink(Pages.cp_profile));
PageLinks.AddLink(GetText(IsSentItems ? "sentitems" : "title"),"");
SubjectLink.Text = Server.HtmlEncode(GetText("subject"));
FromLink.Text = GetText(IsSentItems ? "to" : "from");
DateLink.Text = GetText("date");
}
}
protected bool IsSentItems
{
get
{
return (bool)ViewState["IsSentItems"];
}
set
{
ViewState["IsSentItems"] = value;
}
}
private void BindData() {
object toUserID = null;
object fromUserID = null;
if(IsSentItems)
fromUserID = PageUserID;
else
toUserID = PageUserID;
using(DataView dv = DB.pmessage_list(toUserID,fromUserID,null).DefaultView)
{
dv.Sort = String.Format("{0} {1}",ViewState["SortField"],(bool)ViewState["SortAsc"] ? "asc" : "desc");
Inbox.DataSource = dv;
DataBind();
}
if(IsSentItems)
SortFrom.Visible = (string)ViewState["SortField"] == "ToUser";
else
SortFrom.Visible = (string)ViewState["SortField"] == "FromUser";
SortFrom.Src = GetThemeContents("SORT",(bool)ViewState["SortAsc"] ? "ASCENDING" : "DESCENDING");
SortSubject.Visible = (string)ViewState["SortField"] == "Subject";
SortSubject.Src = GetThemeContents("SORT",(bool)ViewState["SortAsc"] ? "ASCENDING" : "DESCENDING");
SortDate.Visible = (string)ViewState["SortField"] == "Created";
SortDate.Src = GetThemeContents("SORT",(bool)ViewState["SortAsc"] ? "ASCENDING" : "DESCENDING");
}
protected string FormatBody(object o) {
DataRowView row = (DataRowView)o;
return FormatMsg.ForumCodeToHtml(this,(string)row["Body"]);
}
private void Inbox_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) {
if(e.CommandName == "delete") {
long nItemCount = 0;
foreach(RepeaterItem item in Inbox.Items)
{
if(((CheckBox)item.FindControl("ItemCheck")).Checked)
{
DB.userpmessage_delete(((Label)item.FindControl("UserPMessageID")).Text);
nItemCount++;
}
}
//TODO DB.pmessage_delete(e.CommandArgument);
BindData();
if(nItemCount==1)
AddLoadMessage(GetText("msgdeleted1"));
else
AddLoadMessage(String.Format(GetText("msgdeleted2"),nItemCount));
}
}
protected string GetImage(object o)
{
if((bool)((DataRowView)o)["IsRead"])
return GetThemeContents("ICONS","TOPIC");
else
return GetThemeContents("ICONS","TOPIC_NEW");
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
SubjectLink.Click += new EventHandler(SubjectLink_Click);
FromLink.Click += new EventHandler(FromLink_Click);
DateLink.Click += new EventHandler(DateLink_Click);
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.Inbox.ItemCommand += new System.Web.UI.WebControls.RepeaterCommandEventHandler(this.Inbox_ItemCommand);
}
#endregion
}
}