diff --git a/src/Orchard.Specs/Bindings/OrchardSiteFactory.cs b/src/Orchard.Specs/Bindings/OrchardSiteFactory.cs index 99d75304f..7378fb141 100644 --- a/src/Orchard.Specs/Bindings/OrchardSiteFactory.cs +++ b/src/Orchard.Specs/Bindings/OrchardSiteFactory.cs @@ -16,7 +16,7 @@ namespace Orchard.Specs.Bindings { var webApp = Binding(); webApp.GivenIHaveACleanSiteWith(TableData( - new { extension = "module", names = "Orchard.Setup, Orchard.Themes, Orchard.Users, Orchard.Roles, Orchard.Pages, Orchard.Comments, TinyMce" }, + new { extension = "module", names = "Orchard.Setup, Orchard.Modules, Orchard.Themes, Orchard.Users, Orchard.Roles, Orchard.Pages, Orchard.Comments, TinyMce" }, new { extension = "core", names = "Common, Dashboard, Feeds, HomePage, Navigation, Scheduling, Settings, XmlRpc" }, new { extension = "theme", names = "SafeMode, Classic" })); diff --git a/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs new file mode 100644 index 000000000..951e25210 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs @@ -0,0 +1,14 @@ +using Orchard.UI.Navigation; + +namespace Orchard.Modules { + public class AdminMenu : INavigationProvider { + public string MenuName { get { return "admin"; } } + + public void GetNavigation(NavigationBuilder builder) { + builder.Add("Modules", "10", + menu => menu + .Add("Manage Modules", "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.Modules" }) + .Permission(Permissions.ManageModules))); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs new file mode 100644 index 000000000..a43a3b945 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs @@ -0,0 +1,10 @@ +using System.Web.Mvc; +using Orchard.Modules.ViewModels; + +namespace Orchard.Modules.Controllers { + public class AdminController : Controller { + public ActionResult Index() { + return View(new ModulesIndexViewModel()); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Module.txt b/src/Orchard.Web/Modules/Orchard.Modules/Module.txt new file mode 100644 index 000000000..8cdff6082 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Module.txt @@ -0,0 +1,2 @@ +name: Modules +antiforgery: enabled diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj new file mode 100644 index 000000000..84e84c03f --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj @@ -0,0 +1,111 @@ + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {17F86780-9A1F-4AA1-86F1-875EEC2730C7} + {F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + Orchard.Modules + Orchard.Modules + v3.5 + false + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + 3.5 + + + 3.5 + + + False + ..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} + Orchard.Framework + + + + + + + + + + + + + + + + False + True + 25046 + / + + + False + True + http://orchard.codeplex.com + False + + + + + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs new file mode 100644 index 000000000..ed500bfb8 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using Orchard.Security.Permissions; + +namespace Orchard.Modules { + public class Permissions : IPermissionProvider { + public static readonly Permission ManageModules = new Permission { Description = "Manage Modules", Name = "ManageModules" }; + + public string ModuleName { + get { return "Modules"; } + } + + public IEnumerable GetPermissions() { + return new[] {ManageModules}; + } + + public IEnumerable GetDefaultStereotypes() { + return new[] { + new PermissionStereotype { + Name = "Administrator", + Permissions = new[] {ManageModules} + } + }; + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Properties/AssemblyInfo.cs b/src/Orchard.Web/Modules/Orchard.Modules/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..9f6634896 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Orchard.Modules")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Orchard.Modules")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("9c778ece-c759-47fb-95b6-e73c03d9e969")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModulesIndexViewModel.cs b/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModulesIndexViewModel.cs new file mode 100644 index 000000000..c0fb5a8e1 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/ViewModels/ModulesIndexViewModel.cs @@ -0,0 +1,6 @@ +using Orchard.Mvc.ViewModels; + +namespace Orchard.Modules.ViewModels { + public class ModulesIndexViewModel : BaseViewModel { + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Index.ascx b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Index.ascx new file mode 100644 index 000000000..c47212b04 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Index.ascx @@ -0,0 +1,5 @@ +<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> +<%@ Import Namespace="Orchard.Mvc.Html"%> +<%@ Import Namespace="Orchard.Modules.ViewModels"%> +

<%=Html.TitleForPage(T("Manage Modules").ToString()) %>

+

manage the modules

\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Views/Web.config b/src/Orchard.Web/Modules/Orchard.Modules/Views/Web.config new file mode 100644 index 000000000..e065d8735 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Views/Web.config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Web.config b/src/Orchard.Web/Modules/Orchard.Modules/Web.config new file mode 100644 index 000000000..84fdb9c18 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Modules/Web.config @@ -0,0 +1,140 @@ + + + + + + + +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs index a55f2b749..cd6ac207b 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs @@ -82,10 +82,12 @@ namespace Orchard.Setup.Controllers { }; // The vanilla Orchard distibution has the following modules enabled. - const string hardcoded = @"Orchard.Framework, + const string hardcoded = + @"Orchard.Framework, Common,Dashboard,Feeds,HomePage,Navigation,Scheduling,Settings,XmlRpc, Orchard.Users,Orchard.Roles,TinyMce, - Orchard.Pages,Orchard.Comments,Orchard.Themes"; + Orchard.Modules,Orchard.Themes, + Orchard.Pages,Orchard.Comments"; var shellDescriptor = new ShellDescriptor { EnabledFeatures = hardcoded.Split(',').Select(name => new ShellFeature { Name = name.Trim() }) diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index 8663f3128..fb81981bd 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -126,6 +126,10 @@ {D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB} Orchard.Media + + {17F86780-9A1F-4AA1-86F1-875EEC2730C7} + Orchard.Modules + {72457126-E118-4171-A08F-9A709EE4B7FC} Orchard.MultiTenancy diff --git a/src/Orchard.sln b/src/Orchard.sln index a04f6d91d..03401fe46 100644 --- a/src/Orchard.sln +++ b/src/Orchard.sln @@ -59,6 +59,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.MultiTenancy", "Orc EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Themes", "Orchard.Web\Modules\Orchard.Themes\Orchard.Themes.csproj", "{CDE24A24-01D3-403C-84B9-37722E18DFB7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Modules", "Orchard.Web\Modules\Orchard.Modules\Orchard.Modules.csproj", "{17F86780-9A1F-4AA1-86F1-875EEC2730C7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -165,6 +167,10 @@ Global {CDE24A24-01D3-403C-84B9-37722E18DFB7}.Debug|Any CPU.Build.0 = Debug|Any CPU {CDE24A24-01D3-403C-84B9-37722E18DFB7}.Release|Any CPU.ActiveCfg = Release|Any CPU {CDE24A24-01D3-403C-84B9-37722E18DFB7}.Release|Any CPU.Build.0 = Release|Any CPU + {17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {17F86780-9A1F-4AA1-86F1-875EEC2730C7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -188,6 +194,7 @@ Global {8C7FCBC2-E6E1-405E-BFB5-D8D9E67A09C4} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {72457126-E118-4171-A08F-9A709EE4B7FC} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {CDE24A24-01D3-403C-84B9-37722E18DFB7} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} + {17F86780-9A1F-4AA1-86F1-875EEC2730C7} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {5E5E7A21-C7B2-44D8-8593-2F9541AE041D} = {383DBA32-4A3E-48D1-AAC3-75377A694452} {4AB4B5B6-277E-4FF6-B69B-7AE9E16D2A56} = {383DBA32-4A3E-48D1-AAC3-75377A694452} {33B1BC8D-E292-4972-A363-22056B207156} = {383DBA32-4A3E-48D1-AAC3-75377A694452}