Revision: 45
Author: tmyroadctfig
Date: 2006-06-14 04:43:39 -0700 (Wed, 14 Jun 2006)
ViewCVS: http://svn.sourceforge.net/nmailserver/?rev=45&view=rev
Log Message:
-----------
Work on admin website.
Modified Paths:
--------------
NMail/branches/luke-dev/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs
NMail/branches/luke-dev/NMail.Administration.Web/App_Code/FolderDataSource.cs
NMail/branches/luke-dev/NMail.Administration.Web/App_Code/UserDataSource.cs
NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx
NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx.cs
NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs
Modified: NMail/branches/luke-dev/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs
===================================================================
--- NMail/branches/luke-dev/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs 2006-06-07 09:30:26 UTC (rev 44)
+++ NMail/branches/luke-dev/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs 2006-06-14 11:43:39 UTC (rev 45)
@@ -34,48 +34,48 @@
/// The mailbox is visible to the IMAP "LIST" and "LSUB" commands. Mailbox details
/// can be obtained (e.g. message counts, etc).
/// </summary>
- Lookup,
+ Lookup = 1,
/// <summary>
/// The mailbox can be selected and searched and mail can be fetched, copied, etc.
/// </summary>
- Read,
+ Read = 2,
/// <summary>
/// The seen flag can be altered.
/// </summary>
- AlterSeenFlag,
+ AlterSeenFlag = 4,
/// <summary>
/// Message flags aside from seen and deleted can be altered.
/// </summary>
- Write,
+ Write = 8,
/// <summary>
/// Messages can be appended or copied into the mailbox.
/// </summary>
- Insert,
+ Insert = 16,
/// <summary>
/// Send mail to submission address for mailbox.
/// </summary>
- Post,
+ Post = 32,
/// <summary>
/// New sub-mailboxes can be created.
/// </summary>
- CreateFolders,
+ CreateFolders = 64,
/// <summary>
/// The message deleted flag can be altered. Expunge command is allowed. Mailboxes
/// can be deleted.
/// </summary>
- Delete,
+ Delete = 128,
/// <summary>
/// ACLs can be altered on the mailbox.
/// </summary>
- Admin
+ Admin = 256
}
/// <summary>
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-07 09:30:26 UTC (rev 44)
+++ NMail/branches/luke-dev/NMail.Administration.Web/App_Code/FolderDataSource.cs 2006-06-14 11:43:39 UTC (rev 45)
@@ -18,10 +18,15 @@
namespace NMail.Administration.Web
{
/// <summary>
- /// Summary description for FolderDataSource
+ /// Some simple glue code to allow an object data source to bind to
+ /// the NMail data model.
/// </summary>
public static class FolderDataSource
{
+ /// <summary>
+ /// Gets a list of all folders in the local store.
+ /// </summary>
+ /// <returns>The list of folders.</returns>
public static List<StoreFolder> GetFolders()
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -31,6 +36,11 @@
return new List<StoreFolder>(localStore.GetFolders(authToken));
}
+ /// <summary>
+ /// Gets the folder with the given folder Id.
+ /// </summary>
+ /// <param name="folderId">The Id of the folder to get.</param>
+ /// <returns>The folder or null.</returns>
public static StoreFolder GetFolder(int folderId)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -40,6 +50,11 @@
return localStore.GetStoreFolder(authToken, folderId);
}
+ /// <summary>
+ /// Gets a folder based on its folder name.
+ /// </summary>
+ /// <param name="folderName">The name of the folder to get.</param>
+ /// <returns>The folder or null.</returns>
public static StoreFolder GetFolder(string folderName)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -49,6 +64,11 @@
return localStore.GetStoreFolder(authToken, folderName);
}
+ /// <summary>
+ /// Gets a list of sub-folder for the given folder.
+ /// </summary>
+ /// <param name="folderId">The Id of the folder to get the sub-folders for.</param>
+ /// <returns>The list of folders.</returns>
public static List<StoreFolder> GetSubFolders(int folderId)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -59,6 +79,11 @@
return new List<StoreFolder>(localStore.GetChildren(authToken, parent));
}
+ /// <summary>
+ /// Deletes the folder with the given folder Id.
+ /// </summary>
+ /// <param name="folderId">The Id of the folder to delete.</param>
+ /// <returns>The result of the attempt to delete the folder.</returns>
public static LocalStoreFolderResult DeleteFolder(int folderId)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -68,6 +93,11 @@
return localStore.DeleteFolder(authToken, folderId);
}
+ /// <summary>
+ /// Creates a new folder.
+ /// </summary>
+ /// <param name="folderName">The name of the folder to create.</param>
+ /// <returns>The result of the attempt to create the folder.</returns>
public static LocalStoreFolderResult CreateFolder(string folderName)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -77,23 +107,227 @@
return localStore.CreateFolder(authToken, folderName);
}
- public static List<GenericAce<StoreFolderPrivilege>> GetFolderAcl(int folderId)
+ /// <summary>
+ /// Gets a list of access control entries for the given folder.
+ /// </summary>
+ /// <param name="folderId">The folder to get the ACL for.</param>
+ /// <returns>The list of ACEs.</returns>
+ public static List<StoreFolderAce> GetFolderAcl(int folderId)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
IAuthenticationToken authToken = (IAuthenticationToken)session["AuthToken"];
ILocalStore localStore = (ILocalStore)session["LocalStore"];
StoreFolderAcl acl = localStore.GetStoreFolderAcl(authToken, folderId);
- List<GenericAce<StoreFolderPrivilege>> result = new List<GenericAce<StoreFolderPrivilege>>();
+ List<StoreFolderAce> result = new List<StoreFolderAce>();
IEnumerator<string> e = acl.GetIdentifiers();
while (e.MoveNext())
{
GenericAce<StoreFolderPrivilege> ace = acl[e.Current];
- result.Add(ace);
+ result.Add(new StoreFolderAce(ace.Identifier, ace.Privilege, ace.AceType));
}
return result;
}
+
+ public static void SetStoreFolderAce(int folderId, string identifier, StoreFolderPrivilege privilege, AcePrivilegeType aceType)
+ {
+ IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
+ IAuthenticationToken authToken = (IAuthenticationToken)session["AuthToken"];
+ ILocalStore localStore = (ILocalStore)session["LocalStore"];
+
+ StoreFolder folder = localStore.GetStoreFolder(authToken, folderId);
+ GenericAce<StoreFolderPrivilege> ace = new GenericAce<StoreFolderPrivilege>(identifier, privilege, aceType);
+ localStore.SetStoreFolderAce(authToken, folder, ace);
+ }
+
+ public static void RemoveStoreFolderAce(int folderId, string identifier)
+ {
+ IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
+ IAuthenticationToken authToken = (IAuthenticationToken)session["AuthToken"];
+ ILocalStore localStore = (ILocalStore)session["LocalStore"];
+
+ StoreFolder folder = localStore.GetStoreFolder(authToken, folderId);
+ localStore.RemoveStoreFolderAce(authToken, folder, identifier);
+ }
}
+
+ public class StoreFolderAce : GenericAce<StoreFolderPrivilege>
+ {
+ public StoreFolderAce(string identifier, StoreFolderPrivilege privilege, AcePrivilegeType aceType)
+ : base(identifier, privilege, aceType)
+ { }
+
+ public bool AdministrativePrivileges
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.Admin) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.Admin);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.Admin);
+ }
+ }
+ }
+
+ public bool CanAlterSeenFlag
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.AlterSeenFlag) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.AlterSeenFlag);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.AlterSeenFlag);
+ }
+ }
+ }
+
+ public bool CanCreateFolders
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.CreateFolders) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.CreateFolders);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.CreateFolders);
+ }
+ }
+ }
+
+ public bool CanDelete
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.Delete) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.Delete);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.Delete);
+ }
+ }
+ }
+
+ public bool CanInsert
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.Insert) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.Insert);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.Insert);
+ }
+ }
+ }
+
+ public bool CanLookup
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.Lookup) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.Lookup);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.Lookup);
+ }
+ }
+ }
+
+ public bool CanPost
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.Post) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.Post);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.Post);
+ }
+ }
+ }
+
+ public bool CanRead
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.Read) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.Read);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.Read);
+ }
+ }
+ }
+
+ public bool CanWrite
+ {
+ get
+ {
+ return ((this.Privilege & StoreFolderPrivilege.Write) != 0);
+ }
+ set
+ {
+ if (value)
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.AddPrivileges(this.Privilege, StoreFolderPrivilege.Write);
+ }
+ else
+ {
+ this.Privilege = StoreFolderPrivilegeHelper.RemovePrivileges(this.Privilege, StoreFolderPrivilege.Write);
+ }
+ }
+ }
+ }
}
Modified: NMail/branches/luke-dev/NMail.Administration.Web/App_Code/UserDataSource.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/App_Code/UserDataSource.cs 2006-06-07 09:30:26 UTC (rev 44)
+++ NMail/branches/luke-dev/NMail.Administration.Web/App_Code/UserDataSource.cs 2006-06-14 11:43:39 UTC (rev 45)
@@ -17,10 +17,15 @@
namespace NMail.Administration.Web
{
/// <summary>
- /// Summary description for UserDataSource
+ /// Some simple glue code to allow an object data source to bind to
+ /// the NMail data model.
/// </summary>
public static class UserDataSource
{
+ /// <summary>
+ /// Gets all users in the system.
+ /// </summary>
+ /// <returns>The list of users.</returns>
public static List<LocalStoreUser> GetUsers()
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
@@ -32,6 +37,11 @@
return new List<LocalStoreUser>(users);
}
+ /// <summary>
+ /// Gets the user that matches the given username.
+ /// </summary>
+ /// <param name="username">The name of the user to lookup.</param>
+ /// <returns>The user or null.</returns>
public static LocalStoreUser GetUser(string username)
{
IHttpSessionState session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current);
Modified: NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx 2006-06-07 09:30:26 UTC (rev 44)
+++ NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx 2006-06-14 11:43:39 UTC (rev 45)
@@ -57,7 +57,7 @@
</SelectParameters>
</asp:ObjectDataSource>
<h2>Folder ACL</h2>
- <asp:GridView ID="AclGridView" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" DataSourceID="FolderAclDataSource">
+ <asp:GridView ID="AclGridView" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" DataSourceID="FolderAclDataSource" ShowFooter="True">
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
@@ -66,16 +66,154 @@
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
<Columns>
- <asp:BoundField DataField="Identifier" HeaderText="Identifier" SortExpression="Identifier" />
- <asp:BoundField DataField="Privilege" HeaderText="Privilege" SortExpression="Privilege" />
- <asp:BoundField DataField="AceType" HeaderText="AceType" SortExpression="AceType" />
+ <asp:TemplateField>
+ <EditItemTemplate><!-- Don't show in edit --></EditItemTemplate>
+ <ItemTemplate>
+ <asp:LinkButton ID="DeleteLinkBtn" runat="server" OnClientClick="return confirm('Really delete this ACL entry?');" CommandName="Delete">Delete conf</asp:LinkButton>
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:Button ID="CancelInsertAclEntryBtn" runat="server" Text="Cancel" OnClick="CancelInsertAclEntryBtn_Click"/>
+ <asp:Button ID="InsertAclEntryBtn" runat="server" Text="Insert" OnClick="InsertAclEntryBtn_Click"/>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:CommandField ShowEditButton="True" />
+ <asp:TemplateField HeaderText="Identifier" SortExpression="Identifier">
+ <EditItemTemplate>
+ <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Identifier") %>'></asp:TextBox>
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:Label ID="Label1" runat="server" Text='<%# Bind("Identifier") %>'></asp:Label>
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:TextBox ID="NewIdentifier" runat="server"></asp:TextBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Insert" SortExpression="CanInsert">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("CanInsert") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("CanInsert") %>' Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanInsert" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Post" SortExpression="CanPost">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Bind("CanPost") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Bind("CanPost") %>' Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanPost" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Lookup" SortExpression="CanLookup">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox3" runat="server" Checked='<%# Bind("CanLookup") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox3" runat="server" Checked='<%# Bind("CanLookup") %>' Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanLookup" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Write" SortExpression="CanWrite">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox4" runat="server" Checked='<%# Bind("CanWrite") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox4" runat="server" Checked='<%# Bind("CanWrite") %>' Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanWrite" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Read" SortExpression="CanRead">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox5" runat="server" Checked='<%# Bind("CanRead") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox5" runat="server" Checked='<%# Bind("CanRead") %>' Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanRead" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Create Sub-folders" SortExpression="CanCreateFolders">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox6" runat="server" Checked='<%# Bind("CanCreateFolders") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox6" runat="server" Checked='<%# Bind("CanCreateFolders") %>'
+ Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanCreateSubFolders" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Delete" SortExpression="CanDelete">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox7" runat="server" Checked='<%# Bind("CanDelete") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox7" runat="server" Checked='<%# Bind("CanDelete") %>' Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanDelete" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Alter Seen Flag" SortExpression="CanAlterSeenFlag">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox8" runat="server" Checked='<%# Bind("CanAlterSeenFlag") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox8" runat="server" Checked='<%# Bind("CanAlterSeenFlag") %>'
+ Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanAlterSeenFlag" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
+ <asp:TemplateField HeaderText="Admin" SortExpression="AdministrativePrivileges">
+ <EditItemTemplate>
+ <asp:CheckBox ID="CheckBox9" runat="server" Checked='<%# Bind("AdministrativePrivileges") %>' />
+ </EditItemTemplate>
+ <ItemTemplate>
+ <asp:CheckBox ID="CheckBox9" runat="server" Checked='<%# Bind("AdministrativePrivileges") %>'
+ Enabled="false" />
+ </ItemTemplate>
+ <FooterTemplate>
+ <asp:CheckBox ID="NewCanAdmin" runat="server"></asp:CheckBox>
+ </FooterTemplate>
+ </asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="FolderAclDataSource" runat="server" SelectMethod="GetFolderAcl"
- TypeName="NMail.Administration.Web.FolderDataSource">
+ TypeName="NMail.Administration.Web.FolderDataSource" OnUpdating="FolderAclDataSource_Updating" UpdateMethod="SetStoreFolderAce" DeleteMethod="RemoveStoreFolderAce" InsertMethod="SetStoreFolderAce" OnDeleting="FolderAclDataSource_Deleting" OnInserting="FolderAclDataSource_Inserting">
<SelectParameters>
<asp:QueryStringParameter Name="folderId" QueryStringField="FolderId" Type="Int32" />
</SelectParameters>
+ <UpdateParameters>
+ <asp:Parameter Name="folderId" Type="Int32" />
+ <asp:Parameter Name="identifier" Type="String" />
+ <asp:Parameter Name="privilege" Type="Object" />
+ <asp:Parameter Name="aceType" Type="Object" />
+ </UpdateParameters>
+ <DeleteParameters>
+ <asp:Parameter Name="folderId" Type="Int32" />
+ <asp:Parameter Name="identifier" Type="String" />
+ </DeleteParameters>
+ <InsertParameters>
+ <asp:Parameter Name="folderId" Type="Int32" />
+ <asp:Parameter Name="identifier" Type="String" />
+ <asp:Parameter Name="privilege" Type="Object" />
+ <asp:Parameter Name="aceType" Type="Object" />
+ </InsertParameters>
</asp:ObjectDataSource>
+ <asp:LinkButton ID="ShowInsertAclEntryBtn" runat="server" OnClick="ShowInsertAclEntryBtn_Click">Insert ACL Entry</asp:LinkButton>
</asp:Content>
Modified: NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx.cs
===================================================================
--- NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx.cs 2006-06-07 09:30:26 UTC (rev 44)
+++ NMail/branches/luke-dev/NMail.Administration.Web/FolderDetails.aspx.cs 2006-06-14 11:43:39 UTC (rev 45)
@@ -10,9 +10,17 @@
using System.Web.UI.HtmlControls;
using NMail;
+using NMail.DataTypes.ACLs;
public partial class FolderDetails : System.Web.UI.Page
{
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+
+ this.AclGridView.ShowFooter = false;
+ }
+
protected void FolderDataSource_Deleting(object sender, ObjectDataSourceMethodEventArgs e)
{
e.InputParameters["folderId"] = Request.QueryString["FolderId"];
@@ -37,4 +45,152 @@
break;
}
}
+
+ protected void FolderAclDataSource_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
+ {
+ StoreFolderPrivilege privilege = StoreFolderPrivilege.None;
+
+ if ((bool)e.InputParameters["NewCanAdmin"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Admin);
+ }
+
+ if ((bool)e.InputParameters["NewCanAlterSeenFlag"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.AlterSeenFlag);
+ }
+
+ if ((bool)e.InputParameters["NewCanCreateSubFolders"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.CreateFolders);
+ }
+
+ if ((bool)e.InputParameters["NewCanDelete"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Delete);
+ }
+
+ if ((bool)e.InputParameters["NewCanInsert"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Insert);
+ }
+
+ if ((bool)e.InputParameters["NewCanLookup"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Lookup);
+ }
+
+ if ((bool)e.InputParameters["NewCanPost"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Post);
+ }
+
+ if ((bool)e.InputParameters["NewCanRead"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Read);
+ }
+
+ if ((bool)e.InputParameters["NewCanWrite"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Write);
+ }
+
+ string identifier = (string)e.InputParameters["NewIdentifier"];
+
+ e.InputParameters.Clear();
+
+ e.InputParameters["Identifier"] = identifier;
+ e.InputParameters["FolderId"] = this.Request.QueryString["FolderId"];
+ e.InputParameters["Privilege"] = privilege;
+ e.InputParameters["AceType"] = AcePrivilegeType.Allow;
+ }
+
+ protected void FolderAclDataSource_Updating(object sender, ObjectDataSourceMethodEventArgs e)
+ {
+ StoreFolderPrivilege privilege = StoreFolderPrivilege.None;
+
+ if ((bool)e.InputParameters["AdministrativePrivileges"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Admin);
+ }
+
+ if ((bool)e.InputParameters["CanAlterSeenFlag"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.AlterSeenFlag);
+ }
+
+ if ((bool)e.InputParameters["CanCreateFolders"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.CreateFolders);
+ }
+
+ if ((bool)e.InputParameters["CanDelete"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Delete);
+ }
+
+ if ((bool)e.InputParameters["CanInsert"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Insert);
+ }
+
+ if ((bool)e.InputParameters["CanLookup"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Lookup);
+ }
+
+ if ((bool)e.InputParameters["CanPost"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Post);
+ }
+
+ if ((bool)e.InputParameters["CanRead"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Read);
+ }
+
+ if ((bool)e.InputParameters["CanWrite"])
+ {
+ privilege = StoreFolderPrivilegeHelper.AddPrivileges(privilege, StoreFolderPrivilege.Write);
+ }
+
+ string identifier = (string)e.InputParameters["Identifier"];
+
+ e.InputParameters.Clear();
+
+ e.InputParameters["Identifier"] = identifier;
+ e.InputParameters["FolderId"] = this.Request.QueryString["FolderId"];
+ e.InputParameters["Privilege"] = privilege;
+ e.InputParameters["AceType"] = AcePrivilegeType.Allow;
+ }
+
+ protected void FolderAclDataSource_Deleting(object sender, ObjectDataSourceMethodEventArgs e)
+ {
+ string identifier = (string)e.InputParameters["Identifier"];
+
+ e.InputParameters.Clear();
+
+ e.InputParameters["Identifier"] = identifier;
+ e.InputParameters["FolderId"] = this.Request.QueryString["FolderId"];
+ }
+
+ protected void ShowInsertAclEntryBtn_Click(object sender, EventArgs e)
+ {
+ this.AclGridView.ShowFooter = true;
+ this.ShowInsertAclEntryBtn.Visible = false;
+ }
+
+ protected void CancelInsertAclEntryBtn_Click(object sender, EventArgs e)
+ {
+ this.AclGridView.ShowFooter = false;
+ this.ShowInsertAclEntryBtn.Visible = true;
+ }
+
+ protected void InsertAclEntryBtn_Click(object sender, EventArgs e)
+ {
+ this.AclGridView.ShowFooter = false;
+ this.ShowInsertAclEntryBtn.Visible = false;
+
+ this.FolderAclDataSource.Insert();
+ }
}
Modified: NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs
===================================================================
--- NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs 2006-06-07 09:30:26 UTC (rev 44)
+++ NMail/branches/luke-dev/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs 2006-06-14 11:43:39 UTC (rev 45)
@@ -1807,7 +1807,7 @@
string identifer = (string) reader["Identifier"];
uint privilegeValue = (uint) reader["Privilege"];
SystemPrivilege privilege = (SystemPrivilege) privilegeValue;
- bool allowValue = (bool) reader["Allow"];
+ bool allowValue = ((sbyte) reader["Allow"] == 1) ? true : false;
AcePrivilegeType allow = (allowValue) ? AcePrivilegeType.Allow : AcePrivilegeType.Deny;
result.SetAce(new GenericAce<SystemPrivilege>(identifer, privilege, allow));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|