Revision: 47
Author: tmyroadctfig
Date: 2006-06-17 22:42:46 -0700 (Sat, 17 Jun 2006)
ViewCVS: http://svn.sourceforge.net/nmailserver/?rev=47&view=rev
Log Message:
-----------
Further work on admin website.
Modified Paths:
--------------
NMail/branches/luke-dev/NMail/ILocalStore.cs
NMail/branches/luke-dev/NMail/ILocalStoreData.cs
NMail/branches/luke-dev/NMail.Administration.Console/Command/AddMailDomainCommand.cs
NMail/branches/luke-dev/NMail.Administration.Web/App_Code/FolderDataSource.cs
NMail/branches/luke-dev/NMail.Administration.Web/App_Code/MailDomainDataSource.cs
NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx
NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx.cs
NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx
NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx.cs
NMail/branches/luke-dev/NMail.Administration.Web/MasterPage.master
NMail/branches/luke-dev/NMail.Administration.Web/StyleSheet.css
NMail/branches/luke-dev/NMail.Administration.Web/UserDetails.aspx
NMail/branches/luke-dev/NMail.Administration.Web/ViewFolders.aspx
NMail/branches/luke-dev/NMail.Administration.Web/ViewMailDomains.aspx
NMail/branches/luke-dev/NMail.Administration.Web/ViewUsers.aspx
NMail/branches/luke-dev/NMail.Administration.Web/Web.sitemap
NMail/branches/luke-dev/NMail.LocalStore/LocalStore.cs
NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs
Added Paths:
-----------
NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx
NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx.cs
NMail/branches/luke-dev/NMail.Administration.Web/Images/GreenLight.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Delete.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Error.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Group.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/License.txt
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/MailDomain.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/NewFolder.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/OpenFolder.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Question.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Thumbs.db
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/User.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Warning.png
NMail/branches/luke-dev/NMail.Administration.Web/Images/nmail-logo-white.png
Property Changed:
----------------
NMail/branches/luke-dev/NMail.Administration.Web/Images/
Modified: NMail/branches/luke-dev/NMail/ILocalStore.cs
===================================================================
--- NMail/branches/luke-dev/NMail/ILocalStore.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail/ILocalStore.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -549,12 +549,12 @@
MailDomain[] GetMailDomains(IAuthenticationToken authToken);
/// <summary>
- /// Adds a new mail domain.
+ /// Creates a new mail domain for the given host.
/// </summary>
/// <param name="authToken">The authentication credentials.</param>
- /// <param name="mailDomain">The mail domain to add.</param>
+ /// <param name="host">The primary host for the mail domain.</param>
/// <returns>The result of the attempt to add the mail domain.</returns>
- LocalStoreMailDomainResult AddMailDomain(IAuthenticationToken authToken, MailDomain mailDomain);
+ LocalStoreMailDomainResult CreateMailDomain(IAuthenticationToken authToken, Host host);
/// <summary>
/// Deletes a mail domain from the local store.
Modified: NMail/branches/luke-dev/NMail/ILocalStoreData.cs
===================================================================
--- NMail/branches/luke-dev/NMail/ILocalStoreData.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail/ILocalStoreData.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -461,11 +461,11 @@
MailDomain[] GetMailDomains();
/// <summary>
- /// Adds a new mail domain.
- /// </summary>
- /// <param name="mailDomain">The mail domain to add.</param>
- /// <returns>The result of the attempt to add the mail domain.</returns>
- LocalStoreMailDomainResult AddMailDomain(MailDomain mailDomain);
+ /// Creates a new mail domain for the given host.
+ /// </summary>
+ /// <param name="host">The primary host for the mail domain.</param>
+ /// <returns>The result of the attempt to add the mail domain.</returns>
+ LocalStoreMailDomainResult CreateMailDomain(Host host);
/// <summary>
/// Deletes a mail domain from the local store.
Modified: NMail/branches/luke-dev/NMail.Administration.Console/Command/AddMailDomainCommand.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Console/Command/AddMailDomainCommand.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Console/Command/AddMailDomainCommand.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -81,10 +81,8 @@
return;
}
- MailDomain mailDomain = new MailDomain(-1, host);
+ LocalStoreMailDomainResult result = this.localStore.CreateMailDomain(this.authToken, host);
- LocalStoreMailDomainResult result = this.localStore.AddMailDomain(this.authToken, mailDomain);
-
if (result == LocalStoreMailDomainResult.OkSuccessful) {
System.Console.WriteLine("Added new mail domain.");
} else {
Modified: NMail/branches/luke-dev/NMail.Administration.Web/App_Code/FolderDataSource.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/App_Code/FolderDataSource.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/App_Code/FolderDataSource.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -23,6 +23,7 @@
/// </summary>
public static class FolderDataSource
{
+ #region Folder Operations
/// <summary>
/// Gets a list of all folders in the local store.
/// </summary>
@@ -106,7 +107,9 @@
return localStore.CreateFolder(authToken, folderName);
}
+ #endregion
+ #region Folder ACL Operations
/// <summary>
/// Gets a list of access control entries for the given folder.
/// </summary>
@@ -131,6 +134,13 @@
return result;
}
+ /// <summary>
+ /// Sets or adds a store folder ACE.
+ /// </summary>
+ /// <param name="folderId">The folder to add the entry to.</param>
+ /// <param name="identifier">The identifier to set or add the entry for.</param>
+ /// <param name="privilege">The privilege to set or add.</param>
+ /// <param name="aceType">The type of ace to set or add.</param>
public static void SetStoreFolderAce(int folderId, string identifier, StoreFolderPrivilege privilege, AcePrivilegeType aceType)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -142,6 +152,11 @@
localStore.SetStoreFolderAce(authToken, folder, ace);
}
+ /// <summary>
+ /// Removes a folder ACL entry from a store folder.
+ /// </summary>
+ /// <param name="folderId">The Id of the folder to remove the ACE from.</param>
+ /// <param name="identifier">The identifier to remove.</param>
public static void RemoveStoreFolderAce(int folderId, string identifier)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -151,14 +166,29 @@
StoreFolder folder = localStore.GetStoreFolder(authToken, folderId);
localStore.RemoveStoreFolderAce(authToken, folder, identifier);
}
+ #endregion
}
+ #region Store Folder Ace
+ /// <summary>
+ /// A simple wrapper class that converts a store folder ACE into a form
+ /// that ASP.net can use.
+ /// </summary>
public class StoreFolderAce : GenericAce<StoreFolderPrivilege>
{
+ /// <summary>
+ /// Creates a new ACE with the given details.
+ /// </summary>
+ /// <param name="identifier">The identifier to associated with this ACE.</param>
+ /// <param name="privilege">The privilege to set.</param>
+ /// <param name="aceType">The ACE type.</param>
public StoreFolderAce(string identifier, StoreFolderPrivilege privilege, AcePrivilegeType aceType)
: base(identifier, privilege, aceType)
{ }
+ /// <summary>
+ /// Gets or sets whether this ACE has administrative privileges.
+ /// </summary>
public bool AdministrativePrivileges
{
get
@@ -178,6 +208,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to alter the seen flag.
+ /// </summary>
public bool CanAlterSeenFlag
{
get
@@ -197,6 +230,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to create sub folders.
+ /// </summary>
public bool CanCreateFolders
{
get
@@ -216,6 +252,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to delete messages.
+ /// </summary>
public bool CanDelete
{
get
@@ -235,6 +274,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to insert messages.
+ /// </summary>
public bool CanInsert
{
get
@@ -254,6 +296,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to lookup messages and folders.
+ /// </summary>
public bool CanLookup
{
get
@@ -273,6 +318,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to post messages into the folder.
+ /// </summary>
public bool CanPost
{
get
@@ -292,6 +340,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to read messages.
+ /// </summary>
public bool CanRead
{
get
@@ -311,6 +362,9 @@
}
}
+ /// <summary>
+ /// Gets or sets whether this ACE has privileges to write to messages.
+ /// </summary>
public bool CanWrite
{
get
@@ -330,4 +384,5 @@
}
}
}
+ #endregion
}
Modified: NMail/branches/luke-dev/NMail.Administration.Web/App_Code/MailDomainDataSource.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/App_Code/MailDomainDataSource.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/App_Code/MailDomainDataSource.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -1,5 +1,6 @@
using System;
using System.Data;
+using System.Collections.Generic;
using System.Configuration;
using System.Web;
using System.Web.Security;
@@ -21,33 +22,19 @@
/// </summary>
public static class MailDomainDataSource
{
- public static DataTable GetMailDomains()
+ public static List<MailDomain> GetMailDomains()
{
- DataTable result = new DataTable("Mail Domains");
- result.Columns.Add("Id");
- result.Columns.Add("Primary Host");
-
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
IAuthenticationToken authToken = (IAuthenticationToken)session["AuthToken"];
ILocalStore localStore = (ILocalStore)session["LocalStore"];
MailDomain[] mailDomains = localStore.GetMailDomains(authToken);
- foreach (MailDomain mailDomain in mailDomains)
- {
- object[] p = { mailDomain.MailDomainId, mailDomain.PrimaryHost };
- result.Rows.Add(p);
- }
-
- return result;
+ return new List<MailDomain>(mailDomains);
}
- public static DataTable GetMailDomain(int mailDomainId)
+ public static MailDomain GetMailDomain(int mailDomainId)
{
- DataTable result = new DataTable("Mail Domain");
- result.Columns.Add("Id");
- result.Columns.Add("Primary Host");
-
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
IAuthenticationToken authToken = (IAuthenticationToken)session["AuthToken"];
ILocalStore localStore = (ILocalStore)session["LocalStore"];
@@ -58,13 +45,11 @@
{
if (mailDomain.MailDomainId == mailDomainId)
{
- object[] p = { mailDomain.MailDomainId, mailDomain.PrimaryHost };
- result.Rows.Add(p);
- break;
+ return mailDomain;
}
}
- return result;
+ return null;
}
public static void UpdateMailDomain(int mailDomainId, string primaryHost)
@@ -77,5 +62,14 @@
localStore.UpdateMailDomain(authToken, updatedMailDomain);
}
+
+ public static LocalStoreMailDomainResult CreateMailDomain(Host primaryHost)
+ {
+ IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
+ IAuthenticationToken authToken = (IAuthenticationToken)session["AuthToken"];
+ ILocalStore localStore = (ILocalStore)session["LocalStore"];
+
+ return localStore.CreateMailDomain(authToken, primaryHost);
+ }
}
}
Modified: NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx 2006-06-18 05:42:46 UTC (rev 47)
@@ -1,9 +1,10 @@
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="CreateFolder.aspx.cs" Inherits="CreateFolder" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server">
+ <asp:Image ID="StatusImage" runat="server" Visible="false" />
+ <asp:Label ID="StatusMessage" runat="server"></asp:Label>
<h2>Create New Folder</h2>
- <asp:Literal ID="StatusMessage" runat="server"></asp:Literal>
<asp:DetailsView ID="FolderDetailsView" runat="server" AutoGenerateRows="False" CellPadding="4"
- ForeColor="#333333" GridLines="None" DefaultMode="Insert" DataSourceID="CreateFolderDataSource" AutoGenerateInsertButton="True">
+ ForeColor="#333333" GridLines="None" DefaultMode="Insert" DataSourceID="CreateFolderDataSource" AutoGenerateInsertButton="True" OnModeChanging="FolderDetailsView_ModeChanging">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />
<EditRowStyle BackColor="#2461BF" />
Modified: NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/CreateFolder.aspx.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -19,6 +19,7 @@
protected void FolderDataSource_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
{
+ // Save the folder name to display in the insert callback below
this.folderName = (string) e.InputParameters["FolderName"];
}
@@ -26,16 +27,34 @@
{
LocalStoreFolderResult result = (LocalStoreFolderResult)e.ReturnValue;
+ // Display the result of the attempt to create the folder
switch (result)
{
case LocalStoreFolderResult.OkSuccessful:
- StoreFolder folder = FolderDataSource.GetFolder(this.folderName);
- Response.Redirect(string.Format("FolderDetails.aspx?FolderId={0}", folder.FolderId));
+ this.StatusMessage.Text = string.Format("Folder \"{0}\" created successfully!", this.folderName);
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/GreenLight.png";
break;
+ case LocalStoreFolderResult.AlreadyExists:
+ this.StatusMessage.Text = string.Format("Folder \"{0}\" already exists.", this.folderName);
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/Tango/Error.png";
+ break;
+
default:
- this.StatusMessage.Text = result.ToString();
+ this.StatusMessage.Text = string.Format("Unknown error occured while attempting to create the folder \"{0}\": {1}", this.folderName, result.ToString());
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/Tango/Error.png";
break;
}
+
+ this.StatusImage.Visible = true;
}
+
+ protected void FolderDetailsView_ModeChanging(object sender, DetailsViewModeEventArgs e)
+ {
+ // Redirect back to the folder list on canel
+ if (e.CancelingEdit)
+ {
+ Response.Redirect("ViewFolders.aspx");
+ }
+ }
}
Added: NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx (rev 0)
+++ NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx 2006-06-18 05:42:46 UTC (rev 47)
@@ -0,0 +1,25 @@
+<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="CreateMailDomain.aspx.cs" Inherits="CreateMailDomain" Title="Untitled Page" %>
+<asp:Content ID="Content" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server">
+ <asp:Image ID="StatusImage" Visible="false" runat="server" />
+ <asp:Label ID="StatusMessage" runat="server"></asp:Label>
+ <h2>Create New Mail Domain</h2>
+ <asp:DetailsView ID="MailDomainDetailsView" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateRows="False" DefaultMode="Insert" DataMember=" " OnItemInserting="MailDomainDetailsView_ItemInserting" OnModeChanging="MailDomainDetailsView_ModeChanging">
+ <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
+ <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />
+ <EditRowStyle BackColor="#2461BF" />
+ <RowStyle BackColor="#EFF3FB" />
+ <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
+ <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" />
+ <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
+ <AlternatingRowStyle BackColor="White" />
+ <Fields>
+ <asp:TemplateField HeaderText="Primary Host" SortExpression="PrimaryHost">
+ <InsertItemTemplate>
+ <asp:TextBox ID="HostTextBox" runat="server"></asp:TextBox>
+ </InsertItemTemplate>
+ </asp:TemplateField>
+ <asp:CommandField ShowInsertButton="True" />
+ </Fields>
+ </asp:DetailsView>
+</asp:Content>
+
Added: NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx.cs (rev 0)
+++ NMail/branches/luke-dev/NMail.Administration.Web/CreateMailDomain.aspx.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -0,0 +1,56 @@
+using System;
+using System.Data;
+using System.Configuration;
+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 NMail;
+using NMail.DataTypes;
+using NMail.Administration.Web;
+
+public partial class CreateMailDomain : System.Web.UI.Page
+{
+ protected void MailDomainDetailsView_ItemInserting(object sender, DetailsViewInsertEventArgs e)
+ {
+ TextBox hostTextBox = (TextBox)this.MailDomainDetailsView.FindControl("HostTextBox");
+ string hostName = hostTextBox.Text;
+
+ // Attempt to create the mail domain
+ LocalStoreMailDomainResult result = MailDomainDataSource.CreateMailDomain(new Host(hostName));
+
+ // Show the result
+ switch (result)
+ {
+ case LocalStoreMailDomainResult.OkSuccessful:
+ this.StatusMessage.Text = string.Format("Mail domain \"{0}\" created successfully!", hostName);
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/GreenLight.png";
+ break;
+
+ case LocalStoreMailDomainResult.AlreadyExists:
+ this.StatusMessage.Text = string.Format("Mail domain \"{0}\" already exists.", hostName);
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/Tango/Error.png";
+ break;
+
+ default:
+ this.StatusMessage.Text = string.Format("Unknown error occured while attempting to create mail domain \"{0}\": {1}", hostName, result.ToString());
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/Tango/Error.png";
+ break;
+ }
+
+ this.StatusImage.Visible = true;
+ }
+
+ protected void MailDomainDetailsView_ModeChanging(object sender, DetailsViewModeEventArgs e)
+ {
+ // Redirect back to the mail domain list on canel
+ if (e.CancelingEdit)
+ {
+ Response.Redirect("ViewMailDomains.aspx");
+ }
+ }
+}
Modified: NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx 2006-06-18 05:42:46 UTC (rev 47)
@@ -1,10 +1,11 @@
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="CreateUser.aspx.cs" Inherits="CreateUser" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server">
- <asp:Literal ID="StatusMessage" runat="server"></asp:Literal>
+ <asp:Image ID="StatusImage" runat="server" Visible="false" />
+ <asp:Label ID="StatusMessage" runat="server"></asp:Label>
<h2>Create user</h2>
<asp:DetailsView ID="UserDetailsView" runat="server" AutoGenerateRows="False" CellPadding="4"
DataSourceID="CreateUserDataSource" DefaultMode="Insert" ForeColor="#333333"
- GridLines="None">
+ GridLines="None" OnModeChanging="UserDetailsView_ModeChanging">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" />
<EditRowStyle BackColor="#2461BF" />
Modified: NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/CreateUser.aspx.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -19,6 +19,7 @@
protected void CreateUserDataSource_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
{
+ // Save the username to display in the insert callback below
this.username = (string)e.InputParameters["Username"];
}
@@ -26,16 +27,34 @@
{
LocalStoreUserResult result = (LocalStoreUserResult)e.ReturnValue;
+ // Display the result of the attempt to create the user
switch (result)
{
case LocalStoreUserResult.OkSuccessful:
- LocalStoreUser user = UserDataSource.GetUser(this.username);
- Response.Redirect(string.Format("UserDetails.aspx?UserId={0}", user.UserId));
+ this.StatusMessage.Text = string.Format("User \"{0}\" created successfully!", this.username);
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/GreenLight.png";
break;
+ case LocalStoreUserResult.AlreadyExists:
+ this.StatusMessage.Text = string.Format("User \"{0}\" already exists.", this.username);
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/Tango/Error.png";
+ break;
+
default:
- this.StatusMessage.Text = result.ToString();
+ this.StatusMessage.Text = string.Format("Unknown error occured while attempting to create the user \"{0}\": {1}", username, result.ToString());
+ this.StatusImage.ImageUrl = Request.ApplicationPath + @"/Images/Tango/Error.png";
break;
}
+
+ this.StatusImage.Visible = true;
}
+
+ protected void UserDetailsView_ModeChanging(object sender, DetailsViewModeEventArgs e)
+ {
+ // Redirect back to the user list on canel
+ if (e.CancelingEdit)
+ {
+ Response.Redirect("ViewUsers.aspx");
+ }
+ }
}
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images
___________________________________________________________________
Name: svn:ignore
+ Thumbs.db
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/GreenLight.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/GreenLight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Delete.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Delete.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Error.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Error.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Group.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Group.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/License.txt
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/License.txt (rev 0)
+++ NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/License.txt 2006-06-18 05:42:46 UTC (rev 47)
@@ -0,0 +1,5 @@
+These icons are from the Tango Desktop Project and are licensed under the Creative Commons
+Attribution Share-Alike license.
+
+See http://tango.freedesktop.org and http://creativecommons.org/licenses/by-sa/2.5/ for more
+information.
\ No newline at end of file
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/MailDomain.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/MailDomain.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/NewFolder.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/NewFolder.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/OpenFolder.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/OpenFolder.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Question.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Question.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Thumbs.db
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Thumbs.db
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/User.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/User.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Warning.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/Tango/Warning.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: NMail/branches/luke-dev/NMail.Administration.Web/Images/nmail-logo-white.png
===================================================================
(Binary files differ)
Property changes on: NMail/branches/luke-dev/NMail.Administration.Web/Images/nmail-logo-white.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: NMail/branches/luke-dev/NMail.Administration.Web/MasterPage.master
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/MasterPage.master 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/MasterPage.master 2006-06-18 05:42:46 UTC (rev 47)
@@ -11,6 +11,16 @@
this.Response.Redirect("Login.aspx");
}
}
+
+ protected void TreeView_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
+ {
+ SiteMapNode nodeFromSiteMap = (SiteMapNode)e.Node.DataItem;
+
+ if (nodeFromSiteMap["imageUrl"] != null)
+ {
+ e.Node.ImageUrl = nodeFromSiteMap["imageUrl"];
+ }
+ }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
@@ -22,15 +32,20 @@
<form id="MainForm" runat="server">
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 100%">
<tr>
- <td colspan="2" style="vertical-align: middle; width: 100%; border-bottom: darkgray thin solid; background-color: #eff3fb;">
- <h1> <img src="Images/nmail-logo.png" style="vertical-align: middle" /> NMail Web Administration</h1>
+ <td colspan="2" style="vertical-align: middle; width: 100%; background-color: #507cd1; border-bottom-width: thin; border-bottom-color: darkgray;">
+ <h1 style="color: white"> <img src="Images/nmail-logo-white.png" style="vertical-align: middle" /> NMail Web Administration</h1>
</td>
</tr>
<tr>
- <td colspan="2" style="border-bottom: darkgray thick solid;">
+ <td colspan="2" style="border-bottom: darkgray thick solid; background-color: #eff3fb;">
<table style="width: 100%">
<tr>
- <td style="width: 100%"><asp:SiteMapPath ID="SiteMapPath" runat="server" /></td>
+ <td style="width: 100%"><asp:SiteMapPath ID="SiteMapPath" runat="server" Font-Names="Verdana" Font-Size="0.8em" PathSeparator=" : " >
+ <PathSeparatorStyle Font-Bold="True" ForeColor="#1C5E55" />
+ <CurrentNodeStyle ForeColor="#333333" />
+ <NodeStyle Font-Bold="True" ForeColor="#666666" />
+ <RootNodeStyle Font-Bold="True" ForeColor="#1C5E55" />
+ </asp:SiteMapPath></td>
<td style="text-align: right;"><asp:LoginStatus ID="LoginStatus" runat="server" /></td>
</tr>
</table>
@@ -38,7 +53,7 @@
</tr>
<tr>
<td style="border-right-style: solid; border-right-color: darkgray; padding-right: 1em; padding-left: 1em; padding-bottom: 1em; padding-top: 1em; vertical-align: top; background-color: #eff3fb; height: 100%;">
- <asp:TreeView ID="TreeView" runat="server" DataSourceID="SiteMapDataSource">
+ <asp:TreeView ID="TreeView" runat="server" DataSourceID="SiteMapDataSource" OnTreeNodeDataBound="TreeView_TreeNodeDataBound">
</asp:TreeView>
<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server" />
</td>
Modified: NMail/branches/luke-dev/NMail.Administration.Web/StyleSheet.css
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/StyleSheet.css 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/StyleSheet.css 2006-06-18 05:42:46 UTC (rev 47)
@@ -8,7 +8,9 @@
font-size: larger;
}
-h2
+h2
{
font-size: large;
+ margin-bottom: 0.5em;
+ margin-top: 1em;
}
\ No newline at end of file
Modified: NMail/branches/luke-dev/NMail.Administration.Web/UserDetails.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/UserDetails.aspx 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/UserDetails.aspx 2006-06-18 05:42:46 UTC (rev 47)
@@ -1,7 +1,17 @@
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="UserDetails.aspx.cs" Inherits="UserDetails" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server">
+ <asp:Image ID="StatusImage" runat="server" Visible="false" />
+ <asp:Label ID="StatusMessage" runat="server" Visible="False"></asp:Label>
+
+ <asp:Panel ID="ConfirmPanel" runat="server">
+ <div style="border-right: darkgray thin solid; padding-right: 0.5em; border-top: darkgray thin solid; padding-left: 0.5em; padding-bottom: 0.5em; margin: 1em; border-left: darkgray thin solid; color: red; padding-top: 0.5em; border-bottom: darkgray thin solid;">
+ <img src="Images/Tango/Question.png" />
+ Really delete this user?
+ <asp:Button ID="yesBtn" runat="server" Text="Yes" />
+ <asp:Button ID="noBtn" runat="server" Text="No" /></div>
+ </asp:Panel>
+
<h2>User Details</h2>
- <asp:Literal ID="StatusMessage" runat="server" Visible="False"></asp:Literal>
<asp:DetailsView ID="UserDetailsView" runat="server" AutoGenerateRows="False" CellPadding="4"
DataSourceID="UserDataSource" ForeColor="#333333" GridLines="None">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
@@ -30,6 +40,7 @@
<asp:Parameter Name="userId" Type="Int32" />
</DeleteParameters>
</asp:ObjectDataSource>
+
<h2>User's Folders</h2>
<asp:GridView ID="UserFoldersGridView" runat="server" AutoGenerateColumns="False" CellPadding="4"
DataSourceID="UserFolderDataSource" ForeColor="#333333" GridLines="None">
@@ -40,7 +51,7 @@
<asp:BoundField DataField="NameSpace" HeaderText="Namespace" ReadOnly="True" SortExpression="NameSpace" />
<asp:CheckBoxField DataField="HasChildren" HeaderText="Has Children" SortExpression="HasChildren" />
<asp:HyperLinkField DataNavigateUrlFields="FolderId" DataNavigateUrlFormatString="FolderDetails.aspx?FolderId={0}"
- HeaderText="Details" Text="details" />
+ Text="details" />
</Columns>
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
@@ -48,6 +59,9 @@
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
+ <EmptyDataTemplate>
+ The user doesn't have any folders.
+ </EmptyDataTemplate>
</asp:GridView>
<asp:ObjectDataSource ID="UserFolderDataSource" runat="server" SelectMethod="GetUserFolders"
TypeName="NMail.Administration.Web.UserDataSource">
Modified: NMail/branches/luke-dev/NMail.Administration.Web/ViewFolders.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/ViewFolders.aspx 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/ViewFolders.aspx 2006-06-18 05:42:46 UTC (rev 47)
@@ -9,8 +9,7 @@
<asp:BoundField DataField="FolderName" HeaderText="Folder Name" ReadOnly="True" SortExpression="FolderName" />
<asp:BoundField DataField="NameSpace" HeaderText="Namespace" ReadOnly="True" SortExpression="NameSpace" />
<asp:CheckBoxField DataField="HasChildren" HeaderText="Has Children" SortExpression="HasChildren" />
- <asp:HyperLinkField DataNavigateUrlFields="FolderId" DataNavigateUrlFormatString="FolderDetails.aspx?FolderId={0}"
- HeaderText="Details" Text="details" />
+ <asp:HyperLinkField DataNavigateUrlFields="FolderId" DataNavigateUrlFormatString="FolderDetails.aspx?FolderId={0}" Text="details" />
</Columns>
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
Modified: NMail/branches/luke-dev/NMail.Administration.Web/ViewMailDomains.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/ViewMailDomains.aspx 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/ViewMailDomains.aspx 2006-06-18 05:42:46 UTC (rev 47)
@@ -1,18 +1,16 @@
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="ViewMailDomains.aspx.cs" Inherits="ViewMailDomains" Title="Untitled Page" %>
<asp:Content ID="Content" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server">
<h2>Mail Domains</h2>
- <asp:ObjectDataSource ID="MailDomainDataSource" runat="server" SelectMethod="GetMailDomains" TypeName="NMail.Administration.Web.MailDomainDataSource" UpdateMethod="UpdateMailDomain">
- <UpdateParameters>
- <asp:Parameter Name="mailDomainId" Type="Int32" />
- <asp:Parameter Name="primaryHost" Type="String" />
- </UpdateParameters>
+ <asp:ObjectDataSource ID="MailDomainDataSource" runat="server" SelectMethod="GetMailDomains" TypeName="NMail.Administration.Web.MailDomainDataSource">
</asp:ObjectDataSource>
- <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
- CellPadding="4" DataSourceID="MailDomainDataSource" ForeColor="#333333" GridLines="None">
+ <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
+ CellPadding="4" DataSourceID="MailDomainDataSource" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<Columns>
- <asp:HyperLinkField DataNavigateUrlFields="Id" DataNavigateUrlFormatString="MailDomainDetails.aspx?MailDomainId={0}"
- HeaderText="Details" Text="details" />
+ <asp:BoundField DataField="MailDomainId" HeaderText="MailDomainId" SortExpression="MailDomainId" />
+ <asp:BoundField DataField="PrimaryHost" HeaderText="Primary Host" SortExpression="PrimaryHost" />
+ <asp:HyperLinkField DataNavigateUrlFields="MailDomainId" DataNavigateUrlFormatString="MailDomainDetails.aspx?MailDomainId={0}"
+ Text="details" />
</Columns>
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
@@ -20,6 +18,11 @@
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
+ <EmptyDataTemplate>
+ There are no mail domains currently defined in the system.
+ </EmptyDataTemplate>
</asp:GridView>
+ <br />
+ <a href="CreateMailDomain.aspx">Create new mail domain</a>
</asp:Content>
Modified: NMail/branches/luke-dev/NMail.Administration.Web/ViewUsers.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/ViewUsers.aspx 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/ViewUsers.aspx 2006-06-18 05:42:46 UTC (rev 47)
@@ -10,8 +10,7 @@
<asp:BoundField DataField="UserFolderId" HeaderText="UserFolderId" SortExpression="UserFolderId" />
<asp:BoundField DataField="QuotaWarnLimit" HeaderText="QuotaWarnLimit" SortExpression="QuotaWarnLimit" />
<asp:BoundField DataField="QuotaHardLimit" HeaderText="QuotaHardLimit" SortExpression="QuotaHardLimit" />
- <asp:HyperLinkField DataNavigateUrlFields="UserId" DataNavigateUrlFormatString="UserDetails.aspx?UserId={0}"
- HeaderText="Edit" Text="edit" />
+ <asp:HyperLinkField DataNavigateUrlFields="UserId" DataNavigateUrlFormatString="UserDetails.aspx?UserId={0}" Text="details" />
</Columns>
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
Modified: NMail/branches/luke-dev/NMail.Administration.Web/Web.sitemap
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/Web.sitemap 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.Administration.Web/Web.sitemap 2006-06-18 05:42:46 UTC (rev 47)
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
- <siteMapNode url="Default.aspx" title="Home" description="">
- <siteMapNode url="Login.aspx" title="Login" description="" />
- <siteMapNode url="ViewMailDomains.aspx" title="Mail Domains" description="" />
- <siteMapNode url="ViewUsers.aspx" title="Users" description="" />
- <siteMapNode url="ViewFolders.aspx" title="Folders" description="" />
- </siteMapNode>
+ <siteMapNode url="Default.aspx" title="Home" description="">
+ <siteMapNode url="Login.aspx" title="Login" description="" />
+ <siteMapNode url="ViewMailDomains.aspx" title="Mail Domains" description="" imageUrl="~/Images/Tango/MailDomain.png" />
+ <siteMapNode url="ViewUsers.aspx" title="Users" description="" imageUrl="~/Images/Tango/User.png" />
+ <siteMapNode url="ViewFolders.aspx" title="Folders" description="" imageUrl="~/Images/Tango/OpenFolder.png" />
+ </siteMapNode>
</siteMap>
Modified: NMail/branches/luke-dev/NMail.LocalStore/LocalStore.cs
===================================================================
--- NMail/branches/luke-dev/NMail.LocalStore/LocalStore.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.LocalStore/LocalStore.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -1189,18 +1189,17 @@
// TODO: check acls
return this.LocalStoreData.GetMailDomains();
}
-
- /// <summary>
- /// Adds a new mail domain.
+ /// <summary>
+ /// Creates a new mail domain for the given host.
/// </summary>
/// <param name="authToken">The authentication credentials.</param>
- /// <param name="mailDomain">The mail domain to add.</param>
+ /// <param name="host">The primary host for the mail domain.</param>
/// <returns>The result of the attempt to add the mail domain.</returns>
- public LocalStoreMailDomainResult AddMailDomain(IAuthenticationToken authToken, MailDomain mailDomain) {
- // TODO: check ACLs
+ public LocalStoreMailDomainResult CreateMailDomain(IAuthenticationToken authToken, Host host) {
+ // TODO: check ACLs
- return this.LocalStoreData.AddMailDomain(mailDomain);
- }
+ return this.LocalStoreData.CreateMailDomain(host);
+ }
/// <summary>
/// Deletes a mail domain from the local store.
Modified: NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs
===================================================================
--- NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs 2006-06-14 11:45:11 UTC (rev 46)
+++ NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs 2006-06-18 05:42:46 UTC (rev 47)
@@ -1690,14 +1690,16 @@
#endregion
#region Add Mail Domain
- /// <summary>
- /// Adds a new mail domain.
+ /// <summary>
+ /// Creates a new mail domain for the given host.
/// </summary>
- /// <param name="mailDomain">The mail domain to add.</param>
+ /// <param name="host">The primary host for the mail domain.</param>
/// <returns>The result of the attempt to add the mail domain.</returns>
- public LocalStoreMailDomainResult AddMailDomain(MailDomain mailDomain) {
+ public LocalStoreMailDomainResult CreateMailDomain(Host host) {
using (MySqlConnection cnn = GetConnection()) {
using (MySqlCommand cmd = cnn.CreateCommand()) {
+ MailDomain mailDomain = new MailDomain(-1, host);
+
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "AddMailDomain";
cmd.Parameters.Add("PrimaryHost", mailDomain.PrimaryHost.ToString());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|