screwturn-4/WebApplication/Operation.aspx.cs
2009-09-30 13:47:13 +00:00

102 lines
3.4 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ScrewTurn.Wiki.PluginFramework;
using System.Text;
namespace ScrewTurn.Wiki {
public partial class Operation : BasePage {
string op = "";
protected void Page_Load(object sender, EventArgs e) {
Page.Title = Properties.Messages.OperationTitle + " - " + Settings.WikiTitle;
if(Request["Operation"] == null) UrlTools.RedirectHome();
op = Request["Operation"].ToLowerInvariant();
switch(op) {
case "deletemessage":
Page.Title = "Delete Message - " + Settings.WikiTitle;
mlwOperation.ActiveViewIndex = 0;
PrepareDeleteMessage();
break;
}
}
#region Operation: DeleteMessage
/// <summary>
/// Prepares the message deletion GUI.
/// </summary>
private void PrepareDeleteMessage() {
string ms = Request["Message"];
string pg = Request["Page"];
if(ms == null || ms.Length == 0 || pg == null || pg.Length == 0) UrlTools.RedirectHome();
PageInfo page = Pages.FindPage(pg);
if(page == null) UrlTools.RedirectHome();
if(page.Provider.ReadOnly) UrlTools.Redirect(UrlTools.BuildUrl(page.FullName, Settings.PageExtension));
bool canManageDiscussion = AuthChecker.CheckActionForPage(page, Actions.ForPages.ManageDiscussion,
SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames());
if(!canManageDiscussion) UrlTools.Redirect("AccessDenied.aspx");
int id = -1;
try {
id = int.Parse(ms);
}
catch {
UrlTools.RedirectHome();
}
Message message = Pages.FindMessage(Pages.GetPageMessages(page), id);
if(message == null) UrlTools.RedirectHome();
StringBuilder sb = new StringBuilder(500);
sb.Append("<b>");
sb.Append(FormattingPipeline.PrepareTitle(message.Subject, false, FormattingContext.MessageBody, page));
sb.Append("</b><br /><small>");
sb.Append(Properties.Messages.Posted);
sb.Append(" ");
sb.Append(Preferences.AlignWithTimezone(message.DateTime).ToString(Settings.DateTimeFormat));
sb.Append(" ");
sb.Append(Properties.Messages.By);
sb.Append(" ");
sb.Append(Users.UserLink(message.Username));
sb.Append("</small><br /><br />");
sb.Append(FormattingPipeline.FormatWithPhase3(FormattingPipeline.FormatWithPhase1And2(message.Body, false, FormattingContext.MessageBody, page),
FormattingContext.MessageBody, page));
lblDeleteMessageContent.Text = sb.ToString();
}
protected void btnDeleteMessage_Click(object sender, EventArgs e) {
int id = int.Parse(Request["Message"]);
PageInfo page = Pages.FindPage(Request["Page"]);
Log.LogEntry("Message deletion requested for " + page.FullName + "." + id.ToString(), EntryType.General, SessionFacade.GetCurrentUsername());
bool done = Pages.RemoveMessage(page, id, chkDeleteMessageReplies.Checked);
UrlTools.Redirect(UrlTools.BuildUrl(Request["Page"], Settings.PageExtension + "?Discuss=1"));
}
protected void btnCancelDeleteMessage_Click(object sender, EventArgs e) {
UrlTools.Redirect(UrlTools.BuildUrl(Request["Page"], Settings.PageExtension, "?Discuss=1"));
}
#endregion
}
}