screwturn-4/PluginFramework/Actions.cs
2009-09-30 13:47:13 +00:00

437 lines
16 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using ScrewTurn.Wiki.AclEngine;
namespace ScrewTurn.Wiki {
/// <summary>
/// Contains actions for resources.
/// </summary>
public static class Actions {
/// <summary>
/// The full control action.
/// </summary>
public const string FullControl = AclEntry.FullControlAction;
/// <summary>
/// Contains actions for global resources.
/// </summary>
public static class ForGlobals {
/// <summary>
/// The master prefix for global resources ('G').
/// </summary>
public const string ResourceMasterPrefix = "G";
/// <summary>
/// Manage user accounts.
/// </summary>
public const string ManageAccounts = "Man_Acc";
/// <summary>
/// Manage user groups.
/// </summary>
public const string ManageGroups = "Man_Grp";
/// <summary>
/// Manage pages and categories.
/// </summary>
public const string ManagePagesAndCategories = "Man_PgCat";
/// <summary>
/// Manage page discussions.
/// </summary>
public const string ManageDiscussions = "Man_Disc";
/// <summary>
/// Manage namespaces.
/// </summary>
public const string ManageNamespaces = "Man_Ns";
/// <summary>
/// Manage configuration.
/// </summary>
public const string ManageConfiguration = "Man_Conf";
/// <summary>
/// Manage providers.
/// </summary>
public const string ManageProviders = "Man_Prov";
/// <summary>
/// Manage files.
/// </summary>
public const string ManageFiles = "Man_Files";
/// <summary>
/// Manage snippets and templates.
/// </summary>
public const string ManageSnippetsAndTemplates = "Man_Snips_Temps";
/// <summary>
/// Manage navigation paths.
/// </summary>
public const string ManageNavigationPaths = "Man_NavPath";
/// <summary>
/// Manage meta-files.
/// </summary>
public const string ManageMetaFiles = "Man_MetaFiles";
/// <summary>
/// Manage permissions.
/// </summary>
public const string ManagePermissions = "Man_Perms";
/// <summary>
/// Gets an array containing all actions.
/// </summary>
public static readonly string[] All = new string[] {
ManageAccounts,
ManageGroups,
ManagePagesAndCategories,
ManageDiscussions,
ManageNamespaces,
ManageConfiguration,
ManageProviders,
ManageFiles,
ManageSnippetsAndTemplates,
ManageNavigationPaths,
ManageMetaFiles,
ManagePermissions
};
/// <summary>
/// Gets the full name of an action.
/// </summary>
/// <param name="name">The internal name.</param>
/// <returns>The full name.</returns>
public static string GetFullName(string name) {
if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl");
else return Exchanger.ResourceExchanger.GetResource("Action_" + name);
}
}
/// <summary>
/// Contains actions for namespaces.
/// </summary>
public static class ForNamespaces {
/// <summary>
/// The master prefix for namespaces ('N.').
/// </summary>
public const string ResourceMasterPrefix = "N.";
/// <summary>
/// The local escalation policies.
/// </summary>
public static readonly Dictionary<string, string[]> LocalEscalators = new Dictionary<string, string[]>() {
{ ReadPages, new string[] { CreatePages, ModifyPages, DeletePages, ManagePages } },
{ ModifyPages, new string[] { ManagePages } },
{ DeletePages, new string[] { ManagePages } },
{ CreatePages, new string[] { ManagePages } },
{ ReadDiscussion, new string[] { PostDiscussion, ManageDiscussion } },
{ PostDiscussion, new string[] { ManageDiscussion } },
{ ManageDiscussion, new string[] { ManagePages } },
{ DownloadAttachments, new string[] { UploadAttachments, DeleteAttachments } },
{ UploadAttachments, new string[] { DeleteAttachments } }
};
/// <summary>
/// The global escalation policies.
/// </summary>
public static readonly Dictionary<string, string[]> GlobalEscalators = new Dictionary<string, string[]>() {
{ ReadPages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ CreatePages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ ModifyPages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ ReadDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } },
{ PostDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } },
{ ManageDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } },
{ DeletePages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ ManagePages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ ManageCategories, new string[] { Actions.ForGlobals.ManagePagesAndCategories } },
{ DownloadAttachments, new string[] { Actions.ForGlobals.ManageFiles } },
{ UploadAttachments, new string[] { Actions.ForGlobals.ManageFiles } },
{ DeleteAttachments, new string[] { Actions.ForGlobals.ManageFiles } }
};
/// <summary>
/// Read pages.
/// </summary>
public const string ReadPages = "Rd_Pg";
/// <summary>
/// Create pages.
/// </summary>
public const string CreatePages = "Crt_Pg";
/// <summary>
/// Modify pages.
/// </summary>
public const string ModifyPages = "Mod_Pg";
/// <summary>
/// Delete pages.
/// </summary>
public const string DeletePages = "Del_Pg";
/// <summary>
/// Manage pages.
/// </summary>
public const string ManagePages = "Man_Pg";
/// <summary>
/// Read page discussions.
/// </summary>
public const string ReadDiscussion = "Rd_Disc";
/// <summary>
/// Post messages in page discussions.
/// </summary>
public const string PostDiscussion = "Pst_Disc";
/// <summary>
/// Manage messages in page discussions.
/// </summary>
public const string ManageDiscussion = "Man_Disc";
/// <summary>
/// Manage categories.
/// </summary>
public const string ManageCategories = "Man_Cat";
/// <summary>
/// Download attachments.
/// </summary>
public const string DownloadAttachments = "Down_Attn";
/// <summary>
/// Upload attachments.
/// </summary>
public const string UploadAttachments = "Up_Attn";
/// <summary>
/// Delete attachments.
/// </summary>
public const string DeleteAttachments = "Del_Attn";
/// <summary>
/// Gets an array containing all actions.
/// </summary>
public static readonly string[] All = new string[] {
ReadPages,
CreatePages,
ModifyPages,
DeletePages,
ManagePages,
ReadDiscussion,
PostDiscussion,
ManageDiscussion,
ManageCategories,
DownloadAttachments,
UploadAttachments,
DeleteAttachments
};
/// <summary>
/// Gets the full name of an action.
/// </summary>
/// <param name="name">The internal name.</param>
/// <returns>The full name.</returns>
public static string GetFullName(string name) {
if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl");
else return Exchanger.ResourceExchanger.GetResource("Action_" + name);
}
}
/// <summary>
/// Contains actions for pages.
/// </summary>
public static class ForPages {
/// <summary>
/// The master prefix for pages ('P.').
/// </summary>
public const string ResourceMasterPrefix = "P.";
/// <summary>
/// The local escalation policies.
/// </summary>
public static readonly Dictionary<string, string[]> LocalEscalators = new Dictionary<string, string[]>() {
{ ReadPage, new string[] { ModifyPage, ManagePage } },
{ ModifyPage, new string[] { ManagePage } },
{ ReadDiscussion, new string[] { PostDiscussion, ManageDiscussion } },
{ PostDiscussion, new string[] { ManageDiscussion } },
{ ManageDiscussion, new string[] { ManagePage } },
{ DownloadAttachments, new string[] { UploadAttachments, DeleteAttachments } },
{ UploadAttachments, new string[] { DeleteAttachments } }
};
/// <summary>
/// The namespace escalation policies.
/// </summary>
public static readonly Dictionary<string, string[]> NamespaceEscalators = new Dictionary<string, string[]>() {
{ ReadPage, new string[] { Actions.ForNamespaces.ReadPages, Actions.ForNamespaces.ModifyPages, Actions.ForNamespaces.ManagePages, Actions.ForNamespaces.CreatePages, Actions.ForNamespaces.DeletePages } },
{ ModifyPage, new string[] { Actions.ForNamespaces.CreatePages, Actions.ForNamespaces.ModifyPages, Actions.ForNamespaces.ManagePages, Actions.ForNamespaces.CreatePages, Actions.ForNamespaces.DeletePages } },
{ ManagePage, new string[] { Actions.ForNamespaces.ManagePages } },
{ ReadDiscussion, new string[] { Actions.ForNamespaces.ReadDiscussion, Actions.ForNamespaces.PostDiscussion, Actions.ForNamespaces.ManageDiscussion } },
{ PostDiscussion, new string[] { Actions.ForNamespaces.PostDiscussion, Actions.ForNamespaces.ManageDiscussion } },
{ ManageDiscussion, new string[] { Actions.ForNamespaces.ManageDiscussion } },
{ DownloadAttachments, new string[] { Actions.ForNamespaces.DownloadAttachments, Actions.ForNamespaces.UploadAttachments, Actions.ForNamespaces.DeleteAttachments } },
{ ManageCategories, new string[] { Actions.ForNamespaces.ManageCategories } },
{ UploadAttachments, new string[] { Actions.ForNamespaces.UploadAttachments } },
{ DeleteAttachments, new string[] { Actions.ForNamespaces.DeleteAttachments } }
};
/// <summary>
/// The global escalation policies.
/// </summary>
public static readonly Dictionary<string, string[]> GlobalEscalators = new Dictionary<string, string[]>() {
{ ReadPage, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ ModifyPage, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ ManagePage, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } },
{ ReadDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } },
{ PostDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } },
{ ManageDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } },
{ ManageCategories, new string[] { Actions.ForGlobals.ManagePagesAndCategories } },
{ DownloadAttachments, new string[] { Actions.ForGlobals.ManageFiles } },
{ UploadAttachments, new string[] { Actions.ForGlobals.ManageFiles } },
{ DeleteAttachments, new string[] { Actions.ForGlobals.ManageFiles } }
};
/// <summary>
/// Read the page.
/// </summary>
public const string ReadPage = "Rd_1Pg";
/// <summary>
/// Modify the page.
/// </summary>
public const string ModifyPage = "Mod_1Pg";
/// <summary>
/// Manage the page.
/// </summary>
public const string ManagePage = "Man_1Pg";
/// <summary>
/// Read page discussion.
/// </summary>
public const string ReadDiscussion = "Rd_1Disc";
/// <summary>
/// Post messages in page discussion.
/// </summary>
public const string PostDiscussion = "Pst_1Disc";
/// <summary>
/// Manage page discussion.
/// </summary>
public const string ManageDiscussion = "Man_1Disc";
/// <summary>
/// Manage the categories of the page.
/// </summary>
public const string ManageCategories = "Man_1Cat";
/// <summary>
/// Download attachments.
/// </summary>
public const string DownloadAttachments = "Down_1Attn";
/// <summary>
/// Upload attachments.
/// </summary>
public const string UploadAttachments = "Up_1Attn";
/// <summary>
/// Delete attachments.
/// </summary>
public const string DeleteAttachments = "Del_1Attn";
/// <summary>
/// Gets an array containing all actions.
/// </summary>
public static readonly string[] All = new string[] {
ReadPage,
ModifyPage,
ManagePage,
ReadDiscussion,
PostDiscussion,
ManageDiscussion,
ManageCategories,
DownloadAttachments,
UploadAttachments,
DeleteAttachments
};
/// <summary>
/// Gets the full name of an action.
/// </summary>
/// <param name="name">The internal name.</param>
/// <returns>The full name.</returns>
public static string GetFullName(string name) {
if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl");
else return Exchanger.ResourceExchanger.GetResource("Action_" + name);
}
}
/// <summary>
/// Contains actions for file directories.
/// </summary>
public static class ForDirectories {
/// <summary>
/// The master prefix for directories ('D.').
/// </summary>
public const string ResourceMasterPrefix = "D.";
/// <summary>
/// The local escalation policies.
/// </summary>
public static readonly Dictionary<string, string[]> LocalEscalators = new Dictionary<string, string[]>() {
{ List, new string[] { DownloadFiles, UploadFiles, DeleteFiles, CreateDirectories, DeleteDirectories } },
{ DownloadFiles, new string[] { UploadFiles, DeleteFiles, CreateDirectories, DeleteDirectories } },
{ UploadFiles, new string[] { DeleteFiles } },
{ CreateDirectories, new string[] { DeleteDirectories } }
};
/// <summary>
/// The global escalation policies.
/// </summary>
public static readonly Dictionary<string, string[]> GlobalEscalators = new Dictionary<string, string[]>() {
{ List, new string[] { Actions.ForGlobals.ManageFiles } },
{ DownloadFiles, new string[] { Actions.ForGlobals.ManageFiles } },
{ UploadFiles, new string[] { Actions.ForGlobals.ManageFiles } },
{ DeleteFiles, new string[] { Actions.ForGlobals.ManageFiles } },
{ CreateDirectories, new string[] { Actions.ForGlobals.ManageFiles } },
{ DeleteDirectories, new string[] { Actions.ForGlobals.ManageFiles } }
};
/// <summary>
/// List files and directories.
/// </summary>
public const string List = "List";
/// <summary>
/// Download files.
/// </summary>
public const string DownloadFiles = "Down_Files";
/// <summary>
/// Upload files.
/// </summary>
public const string UploadFiles = "Up_Files";
/// <summary>
/// Delete files.
/// </summary>
public const string DeleteFiles = "Del_Files";
/// <summary>
/// Create directories.
/// </summary>
public const string CreateDirectories = "Crt_Dirs";
/// <summary>
/// Delete directories.
/// </summary>
public const string DeleteDirectories = "Del_Dirs";
/// <summary>
/// Gets an array containing all actions.
/// </summary>
public static readonly string[] All = new string[] {
List,
DownloadFiles,
UploadFiles,
DeleteFiles,
CreateDirectories,
DeleteDirectories
};
/// <summary>
/// Gets the full name of an action.
/// </summary>
/// <param name="name">The internal name.</param>
/// <returns>The full name.</returns>
public static string GetFullName(string name) {
if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl");
else return Exchanger.ResourceExchanger.GetResource("Action_" + name);
}
}
}
}