- Refactoring IPackageManager: we want an IExtensionManager because extensions like packages and themes share a lot of aspects.

--HG--
extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4043646
This commit is contained in:
suhacan
2009-12-10 01:32:26 +00:00
parent 85f8b1d03b
commit 73a1740817
28 changed files with 178 additions and 222 deletions

View File

@@ -1,10 +1,7 @@
using System; using System.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework; using NUnit.Framework;
using Orchard.Environment; using Orchard.Environment;
using Orchard.Packages; using Orchard.Extensions;
using Orchard.Tests.Models.Records; using Orchard.Tests.Models.Records;
using Orchard.Tests.Models.Stubs; using Orchard.Tests.Models.Stubs;
@@ -13,12 +10,12 @@ namespace Orchard.Tests.Environment {
public class DefaultCompositionStrategyTests { public class DefaultCompositionStrategyTests {
[Test] [Test]
public void ExpectedRecordsShouldComeBack() { public void ExpectedRecordsShouldComeBack() {
var packageManager = new Moq.Mock<IPackageManager>(); var extensionManager = new Moq.Mock<IExtensionManager>();
packageManager.Setup(x => x.ActivePackages()).Returns(new[] { extensionManager.Setup(x => x.ActiveExtensions()).Returns(new[] {
new PackageEntry new ExtensionEntry
{ExportedTypes = new[] {typeof (GammaRecord), typeof (DeltaRecord), typeof (Delta)}} {ExportedTypes = new[] {typeof (GammaRecord), typeof (DeltaRecord), typeof (Delta)}}
}); });
var strategy = new DefaultCompositionStrategy(packageManager.Object); var strategy = new DefaultCompositionStrategy(extensionManager.Object);
var recordTypes = strategy.GetRecordTypes(); var recordTypes = strategy.GetRecordTypes();
Assert.That(recordTypes.Count(), Is.Not.EqualTo(0)); Assert.That(recordTypes.Count(), Is.Not.EqualTo(0));

View File

@@ -2,12 +2,9 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text;
using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Routing; using System.Web.Routing;
using Autofac; using Autofac;
using Autofac.Builder;
using Autofac.Integration.Web; using Autofac.Integration.Web;
using Autofac.Modules; using Autofac.Modules;
using NUnit.Framework; using NUnit.Framework;
@@ -15,9 +12,8 @@ using Orchard.Environment;
using Orchard.Mvc; using Orchard.Mvc;
using Orchard.Mvc.ModelBinders; using Orchard.Mvc.ModelBinders;
using Orchard.Mvc.Routes; using Orchard.Mvc.Routes;
using Orchard.Packages; using Orchard.Extensions;
using Orchard.Tests.Environment.TestDependencies; using Orchard.Tests.Environment.TestDependencies;
using Orchard.Tests.Mvc.Routes;
using Orchard.Tests.Stubs; using Orchard.Tests.Stubs;
namespace Orchard.Tests.Environment { namespace Orchard.Tests.Environment {
@@ -46,17 +42,17 @@ namespace Orchard.Tests.Environment {
builder.Register(_routeCollection); builder.Register(_routeCollection);
builder.Register(_modelBinderDictionary); builder.Register(_modelBinderDictionary);
builder.Register(new ViewEngineCollection { new WebFormViewEngine() }); builder.Register(new ViewEngineCollection { new WebFormViewEngine() });
builder.Register(new StuPackageManager()).As<IPackageManager>(); builder.Register(new StuExtensionManager()).As<IExtensionManager>();
}); });
} }
public class StuPackageManager : IPackageManager { public class StuExtensionManager : IExtensionManager {
public IEnumerable<PackageDescriptor> AvailablePackages() { public IEnumerable<ExtensionDescriptor> AvailableExtensions() {
return Enumerable.Empty<PackageDescriptor>(); return Enumerable.Empty<ExtensionDescriptor>();
} }
public IEnumerable<PackageEntry> ActivePackages() { public IEnumerable<ExtensionEntry> ActiveExtensions() {
return Enumerable.Empty<PackageEntry>(); return Enumerable.Empty<ExtensionEntry>();
} }
} }

View File

@@ -1,14 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Routing; using System.Web.Routing;
using NUnit.Framework; using NUnit.Framework;
using Orchard.Environment; using Orchard.Environment;
using Orchard.Mvc.ModelBinders; using Orchard.Mvc.ModelBinders;
using Orchard.Mvc.Routes; using Orchard.Mvc.Routes;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Tests.Environment { namespace Orchard.Tests.Environment {
[TestFixture] [TestFixture]
@@ -38,7 +37,7 @@ namespace Orchard.Tests.Environment {
new[] { modelBinderProvider1, modelBinderProvider2 }, new[] { modelBinderProvider1, modelBinderProvider2 },
modelBinderPublisher, modelBinderPublisher,
new ViewEngineCollection { new WebFormViewEngine() }, new ViewEngineCollection { new WebFormViewEngine() },
new Moq.Mock<IPackageManager>().Object, new Moq.Mock<IExtensionManager>().Object,
Enumerable.Empty<IOrchardShellEvents>()); Enumerable.Empty<IOrchardShellEvents>());
runtime.Activate(); runtime.Activate();

View File

@@ -1,16 +1,13 @@
using System; using System.IO;
using System.Collections.Generic;
using System.IO;
using System.Linq; using System.Linq;
using System.Text;
using NUnit.Framework; using NUnit.Framework;
using Orchard.Packages; using Orchard.Extensions;
using Yaml.Grammar; using Yaml.Grammar;
namespace Orchard.Tests.Packages { namespace Orchard.Tests.Extensions {
[TestFixture] [TestFixture]
public class PackageFoldersTests { public class ExtensionFoldersTests {
private const string DataPrefix = "Orchard.Tests.Packages.FoldersData."; private const string DataPrefix = "Orchard.Tests.Extensions.FoldersData.";
private string _tempFolderName; private string _tempFolderName;
[SetUp] [SetUp]
@@ -52,7 +49,7 @@ namespace Orchard.Tests.Packages {
[Test] [Test]
public void NamesFromFoldersWithPackageTxtShouldBeListed() { public void NamesFromFoldersWithPackageTxtShouldBeListed() {
var folders = new PackageFolders(new[] { _tempFolderName }); var folders = new ExtensionFolders(new[] { _tempFolderName });
var names = folders.ListNames(); var names = folders.ListNames();
Assert.That(names.Count(), Is.EqualTo(2)); Assert.That(names.Count(), Is.EqualTo(2));
Assert.That(names, Has.Some.EqualTo("Sample1")); Assert.That(names, Has.Some.EqualTo("Sample1"));
@@ -61,11 +58,11 @@ namespace Orchard.Tests.Packages {
[Test] [Test]
public void PackageTxtShouldBeParsedAndReturnedAsYamlDocument() { public void PackageTxtShouldBeParsedAndReturnedAsYamlDocument() {
var folders = new PackageFolders(new[] { _tempFolderName }); var folders = new ExtensionFolders(new[] { _tempFolderName });
var sample1 = folders.ParseManifest("Sample1"); var sample1 = folders.ParseManifest("Sample1");
var mapping = (Mapping)sample1.YamlDocument.Root; var mapping = (Mapping)sample1.YamlDocument.Root;
var entities = mapping.Entities var entities = mapping.Entities
.Where(x=>x.Key is Scalar) .Where(x => x.Key is Scalar)
.ToDictionary(x => ((Scalar)x.Key).Text, x => x.Value); .ToDictionary(x => ((Scalar)x.Key).Text, x => x.Value);
Assert.That(entities.Keys, Has.Some.EqualTo("name")); Assert.That(entities.Keys, Has.Some.EqualTo("name"));
Assert.That(entities.Keys, Has.Some.EqualTo("author")); Assert.That(entities.Keys, Has.Some.EqualTo("author"));

View File

@@ -1,21 +1,17 @@
using System; using System.Collections.Generic;
using System.Collections;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Autofac; using Autofac;
using Autofac.Builder; using Autofac.Builder;
using Autofac.Modules; using Autofac.Modules;
using NUnit.Framework; using NUnit.Framework;
using Orchard.Packages; using Orchard.Extensions;
using Orchard.Packages.Loaders;
using Yaml.Grammar; using Yaml.Grammar;
namespace Orchard.Tests.Packages { namespace Orchard.Tests.Extensions {
[TestFixture] [TestFixture]
public class PackageManagerTests { public class ExtensionManagerTests {
private IContainer _container; private IContainer _container;
private IPackageManager _manager; private IExtensionManager _manager;
private StubFolders _folders; private StubFolders _folders;
[SetUp] [SetUp]
@@ -23,13 +19,13 @@ namespace Orchard.Tests.Packages {
var builder = new ContainerBuilder(); var builder = new ContainerBuilder();
_folders = new StubFolders(); _folders = new StubFolders();
builder.RegisterModule(new ImplicitCollectionSupportModule()); builder.RegisterModule(new ImplicitCollectionSupportModule());
builder.Register(_folders).As<IPackageFolders>(); builder.Register(_folders).As<IExtensionFolders>();
builder.Register<PackageManager>().As<IPackageManager>(); builder.Register<ExtensionManager>().As<IExtensionManager>();
_container = builder.Build(); _container = builder.Build();
_manager = _container.Resolve<IPackageManager>(); _manager = _container.Resolve<IExtensionManager>();
} }
public class StubFolders : IPackageFolders { public class StubFolders : IExtensionFolders {
public StubFolders() { public StubFolders() {
Manifests = new Dictionary<string, string>(); Manifests = new Dictionary<string, string>();
} }
@@ -57,30 +53,30 @@ namespace Orchard.Tests.Packages {
[Test] [Test]
public void AvailablePackagesShouldFollowCatalogLocations() { public void AvailableExtensionsShouldFollowCatalogLocations() {
_folders.Manifests.Add("foo", "name: Foo"); _folders.Manifests.Add("foo", "name: Foo");
_folders.Manifests.Add("bar", "name: Bar"); _folders.Manifests.Add("bar", "name: Bar");
_folders.Manifests.Add("frap", "name: Frap"); _folders.Manifests.Add("frap", "name: Frap");
_folders.Manifests.Add("quad", "name: Quad"); _folders.Manifests.Add("quad", "name: Quad");
var available = _manager.AvailablePackages(); var available = _manager.AvailableExtensions();
Assert.That(available.Count(), Is.EqualTo(4)); Assert.That(available.Count(), Is.EqualTo(4));
Assert.That(available, Has.Some.Property("Name").EqualTo("foo")); Assert.That(available, Has.Some.Property("Name").EqualTo("foo"));
} }
[Test] [Test]
public void PackageDescriptorsShouldHaveNameAndDescription() { public void ExtensionDescriptorsShouldHaveNameAndDescription() {
_folders.Manifests.Add("Sample", @" _folders.Manifests.Add("Sample", @"
name: Sample Package name: Sample Extension
description: This is the description description: This is the description
version: 2.x version: 2.x
"); ");
var descriptor = _manager.AvailablePackages().Single(); var descriptor = _manager.AvailableExtensions().Single();
Assert.That(descriptor.Name, Is.EqualTo("Sample")); Assert.That(descriptor.Name, Is.EqualTo("Sample"));
Assert.That(descriptor.DisplayName, Is.EqualTo("Sample Package")); Assert.That(descriptor.DisplayName, Is.EqualTo("Sample Extension"));
Assert.That(descriptor.Description, Is.EqualTo("This is the description")); Assert.That(descriptor.Description, Is.EqualTo("This is the description"));
Assert.That(descriptor.Version, Is.EqualTo("2.x")); Assert.That(descriptor.Version, Is.EqualTo("2.x"));
} }

View File

@@ -1,18 +1,15 @@
using System; using System.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc; using System.Web.Mvc;
using Autofac; using Autofac;
using NUnit.Framework; using NUnit.Framework;
using Orchard.Mvc; using Orchard.Mvc;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Tests.Mvc { namespace Orchard.Tests.Mvc {
[TestFixture] public class OrchardControllerIdentificationStrategyTests { [TestFixture] public class OrchardControllerIdentificationStrategyTests {
[Test] [Test]
public void IdentificationStrategyAddsAssemblyNameAsAreaPrefixToControllerNames() { public void IdentificationStrategyAddsAssemblyNameAsAreaPrefixToControllerNames() {
var strategy = new OrchardControllerIdentificationStrategy(Enumerable.Empty<PackageEntry>()); var strategy = new OrchardControllerIdentificationStrategy(Enumerable.Empty<ExtensionEntry>());
var service = strategy.ServiceForControllerType(typeof (StrategyTestingController)); var service = strategy.ServiceForControllerType(typeof (StrategyTestingController));
Assert.That(service, Is.TypeOf<NamedService>()); Assert.That(service, Is.TypeOf<NamedService>());
Assert.That(((NamedService)service).ServiceName, Is.EqualTo("controller.orchard.tests.strategytesting")); Assert.That(((NamedService)service).ServiceName, Is.EqualTo("controller.orchard.tests.strategytesting"));

View File

@@ -1,19 +1,18 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Web.Routing; using System.Web.Routing;
using NUnit.Framework; using NUnit.Framework;
using Orchard.Mvc.Routes; using Orchard.Mvc.Routes;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Tests.Mvc.Routes { namespace Orchard.Tests.Mvc.Routes {
[TestFixture] [TestFixture]
public class StandardPackageRouteProviderTests { public class StandardExtensionRouteProviderTests {
[Test] [Test]
public void PackageDisplayNameShouldBeUsedInBothStandardRoutes() { public void ExtensionDisplayNameShouldBeUsedInBothStandardRoutes() {
var stubManager = new StubPackageManager(); var stubManager = new StubExtensionManager();
var routeProvider = new StandardPackageRouteProvider(stubManager); var routeProvider = new StandardExtensionRouteProvider(stubManager);
var routes = new List<RouteDescriptor>(); var routes = new List<RouteDescriptor>();
routeProvider.GetRoutes(routes); routeProvider.GetRoutes(routes);
@@ -34,20 +33,20 @@ namespace Orchard.Tests.Mvc.Routes {
Assert.That(barRoute.DataTokens["area"], Is.EqualTo("Long.Name.Bar")); Assert.That(barRoute.DataTokens["area"], Is.EqualTo("Long.Name.Bar"));
} }
public class StubPackageManager : IPackageManager { public class StubExtensionManager : IExtensionManager {
public IEnumerable<PackageDescriptor> AvailablePackages() { public IEnumerable<ExtensionDescriptor> AvailableExtensions() {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public IEnumerable<PackageEntry> ActivePackages() { public IEnumerable<ExtensionEntry> ActiveExtensions() {
yield return new PackageEntry { yield return new ExtensionEntry {
Descriptor = new PackageDescriptor { Descriptor = new ExtensionDescriptor {
Name = "Long.Name.Foo", Name = "Long.Name.Foo",
DisplayName = "Foo", DisplayName = "Foo",
} }
}; };
yield return new PackageEntry { yield return new ExtensionEntry {
Descriptor = new PackageDescriptor { Descriptor = new ExtensionDescriptor {
Name = "Long.Name.Bar", Name = "Long.Name.Bar",
DisplayName = "Bar", DisplayName = "Bar",
} }

View File

@@ -43,6 +43,8 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\fluentnhibernate\FluentNHibernate.dll</HintPath> <HintPath>..\..\lib\fluentnhibernate\FluentNHibernate.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<Reference Include="Microsoft.VisualStudio.TeamSystem.Data.UnitTesting, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<Reference Include="Moq, Version=4.0.812.4, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL"> <Reference Include="Moq, Version=4.0.812.4, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\moq\Moq.dll</HintPath> <HintPath>..\..\lib\moq\Moq.dll</HintPath>
@@ -64,6 +66,7 @@
<HintPath>..\..\lib\nunit\nunit.framework.dll</HintPath> <HintPath>..\..\lib\nunit\nunit.framework.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core"> <Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework> <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference> </Reference>
@@ -106,6 +109,8 @@
<Compile Include="Environment\OrchardStarterTests.cs" /> <Compile Include="Environment\OrchardStarterTests.cs" />
<Compile Include="Environment\TestDependencies\TestDependency.cs" /> <Compile Include="Environment\TestDependencies\TestDependency.cs" />
<Compile Include="EventsTests.cs" /> <Compile Include="EventsTests.cs" />
<Compile Include="Extensions\ExtensionFoldersTests.cs" />
<Compile Include="Extensions\ExtensionManagerTests.cs" />
<Compile Include="Localization\NullLocalizerTests.cs" /> <Compile Include="Localization\NullLocalizerTests.cs" />
<Compile Include="Logging\LoggingModuleTests.cs" /> <Compile Include="Logging\LoggingModuleTests.cs" />
<Compile Include="Models\ContentQueryTests.cs" /> <Compile Include="Models\ContentQueryTests.cs" />
@@ -128,12 +133,10 @@
<Compile Include="Mvc\OrchardControllerFactoryTests.cs" /> <Compile Include="Mvc\OrchardControllerFactoryTests.cs" />
<Compile Include="Mvc\OrchardControllerIdentificationStrategyTests.cs" /> <Compile Include="Mvc\OrchardControllerIdentificationStrategyTests.cs" />
<Compile Include="Mvc\RouteCollectionPublisherTests.cs" /> <Compile Include="Mvc\RouteCollectionPublisherTests.cs" />
<Compile Include="Mvc\Routes\StandardPackageRouteProviderTests.cs" /> <Compile Include="Mvc\Routes\StandardExtensionRouteProviderTests.cs" />
<Compile Include="Tasks\SweepGeneratorTests.cs" /> <Compile Include="Tasks\SweepGeneratorTests.cs" />
<Compile Include="UI\Notify\NotifierTests.cs" /> <Compile Include="UI\Notify\NotifierTests.cs" />
<Compile Include="UI\Notify\NotifyFilterTests.cs" /> <Compile Include="UI\Notify\NotifyFilterTests.cs" />
<Compile Include="Packages\PackageFoldersTests.cs" />
<Compile Include="Packages\PackageManagerTests.cs" />
<Compile Include="Services\ClockTests.cs" /> <Compile Include="Services\ClockTests.cs" />
<Compile Include="Storage\FileSystemStorageProviderTests.cs" /> <Compile Include="Storage\FileSystemStorageProviderTests.cs" />
<Compile Include="Stubs\StubClock.cs" /> <Compile Include="Stubs\StubClock.cs" />
@@ -161,11 +164,9 @@
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Packages\FoldersData\Sample2\Two.txt" /> <Content Include="Extensions\FoldersData\Sample1\Package.txt" />
<EmbeddedResource Include="Packages\FoldersData\Sample1\Package.txt" /> <Content Include="Extensions\FoldersData\Sample2\Two.txt" />
</ItemGroup> <Content Include="Extensions\FoldersData\Sample3\Package.txt" />
<ItemGroup>
<EmbeddedResource Include="Packages\FoldersData\Sample3\Package.txt" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@@ -5,7 +5,7 @@ using System.Reflection;
using Autofac; using Autofac;
using Orchard.Models; using Orchard.Models;
using Orchard.Models.Records; using Orchard.Models.Records;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Environment { namespace Orchard.Environment {
//TEMP: This will be replaced by packaging system //TEMP: This will be replaced by packaging system
@@ -18,21 +18,21 @@ namespace Orchard.Environment {
} }
public class DefaultCompositionStrategy : ICompositionStrategy { public class DefaultCompositionStrategy : ICompositionStrategy {
private readonly IPackageManager _packageManager; private readonly IExtensionManager _extensionManager;
public DefaultCompositionStrategy(IPackageManager packageManager) { public DefaultCompositionStrategy(IExtensionManager extensionManager) {
_packageManager = packageManager; _extensionManager = extensionManager;
} }
public IEnumerable<Assembly> GetAssemblies() { public IEnumerable<Assembly> GetAssemblies() {
return _packageManager.ActivePackages() return _extensionManager.ActiveExtensions()
.Select(entry => entry.Assembly) .Select(entry => entry.Assembly)
.Concat(new[] { typeof(IOrchardHost).Assembly }); .Concat(new[] { typeof(IOrchardHost).Assembly });
//return BuildManager.GetReferencedAssemblies().OfType<Assembly>(); //return BuildManager.GetReferencedAssemblies().OfType<Assembly>();
} }
public IEnumerable<Type> GetModuleTypes() { public IEnumerable<Type> GetModuleTypes() {
var types = _packageManager.ActivePackages().SelectMany(x => x.ExportedTypes); var types = _extensionManager.ActiveExtensions().SelectMany(x => x.ExportedTypes);
types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes());
var nonAbstractClasses = types.Where(t => t.IsClass && !t.IsAbstract); var nonAbstractClasses = types.Where(t => t.IsClass && !t.IsAbstract);
var modules = nonAbstractClasses.Where(t => typeof(IModule).IsAssignableFrom(t)); var modules = nonAbstractClasses.Where(t => typeof(IModule).IsAssignableFrom(t));
@@ -40,7 +40,7 @@ namespace Orchard.Environment {
} }
public IEnumerable<Type> GetDependencyTypes() { public IEnumerable<Type> GetDependencyTypes() {
var types = _packageManager.ActivePackages().SelectMany(x => x.ExportedTypes); var types = _extensionManager.ActiveExtensions().SelectMany(x => x.ExportedTypes);
types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes()); types = types.Concat(typeof(IOrchardHost).Assembly.GetExportedTypes());
var nonAbstractClasses = types.Where(t => t.IsClass && !t.IsAbstract); var nonAbstractClasses = types.Where(t => t.IsClass && !t.IsAbstract);
var modules = nonAbstractClasses.Where(t => typeof(IDependency).IsAssignableFrom(t)); var modules = nonAbstractClasses.Where(t => typeof(IDependency).IsAssignableFrom(t));
@@ -48,7 +48,7 @@ namespace Orchard.Environment {
} }
public IEnumerable<Type> GetRecordTypes() { public IEnumerable<Type> GetRecordTypes() {
var types = _packageManager.ActivePackages().SelectMany(x => x.ExportedTypes); var types = _extensionManager.ActiveExtensions().SelectMany(x => x.ExportedTypes);
var recordTypes = types.Where(IsRecordType) var recordTypes = types.Where(IsRecordType)
.Concat(new[] { typeof(ContentItemRecord), typeof(ContentPartRecord), typeof(ContentTypeRecord) }); .Concat(new[] { typeof(ContentItemRecord), typeof(ContentPartRecord), typeof(ContentTypeRecord) });
return recordTypes; return recordTypes;

View File

@@ -5,7 +5,7 @@ using System.Web.Mvc;
using Orchard.Logging; using Orchard.Logging;
using Orchard.Mvc.ModelBinders; using Orchard.Mvc.ModelBinders;
using Orchard.Mvc.Routes; using Orchard.Mvc.Routes;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Environment { namespace Orchard.Environment {
public class DefaultOrchardShell : IOrchardShell { public class DefaultOrchardShell : IOrchardShell {
@@ -14,7 +14,7 @@ namespace Orchard.Environment {
private readonly IEnumerable<IModelBinderProvider> _modelBinderProviders; private readonly IEnumerable<IModelBinderProvider> _modelBinderProviders;
private readonly IModelBinderPublisher _modelBinderPublisher; private readonly IModelBinderPublisher _modelBinderPublisher;
private readonly ViewEngineCollection _viewEngines; private readonly ViewEngineCollection _viewEngines;
private readonly IPackageManager _packageManager; private readonly IExtensionManager _extensionManager;
private readonly IEnumerable<IOrchardShellEvents> _events; private readonly IEnumerable<IOrchardShellEvents> _events;
public DefaultOrchardShell( public DefaultOrchardShell(
@@ -23,14 +23,14 @@ namespace Orchard.Environment {
IEnumerable<IModelBinderProvider> modelBinderProviders, IEnumerable<IModelBinderProvider> modelBinderProviders,
IModelBinderPublisher modelBinderPublisher, IModelBinderPublisher modelBinderPublisher,
ViewEngineCollection viewEngines, ViewEngineCollection viewEngines,
IPackageManager packageManager, IExtensionManager extensionManager,
IEnumerable<IOrchardShellEvents> events) { IEnumerable<IOrchardShellEvents> events) {
_routeProviders = routeProviders; _routeProviders = routeProviders;
_routePublisher = routePublisher; _routePublisher = routePublisher;
_modelBinderProviders = modelBinderProviders; _modelBinderProviders = modelBinderProviders;
_modelBinderPublisher = modelBinderPublisher; _modelBinderPublisher = modelBinderPublisher;
_viewEngines = viewEngines; _viewEngines = viewEngines;
_packageManager = packageManager; _extensionManager = extensionManager;
_events = events; _events = events;
Logger = NullLogger.Instance; Logger = NullLogger.Instance;
@@ -67,7 +67,7 @@ namespace Orchard.Environment {
.Distinct() .Distinct()
.ToArray(); .ToArray();
var activePackageDescriptors = _packageManager.ActivePackages().Select(x => x.Descriptor); var activePackageDescriptors = _extensionManager.ActiveExtensions().Select(x => x.Descriptor);
var sharedLocationFormats = activePackageDescriptors.Select(x => ModelsLocationFormat(x)); var sharedLocationFormats = activePackageDescriptors.Select(x => ModelsLocationFormat(x));
viewEngine.PartialViewLocationFormats = sharedLocationFormats viewEngine.PartialViewLocationFormats = sharedLocationFormats
.Concat(viewEngine.PartialViewLocationFormats) .Concat(viewEngine.PartialViewLocationFormats)
@@ -83,7 +83,7 @@ namespace Orchard.Environment {
} }
private static string ModelsLocationFormat(PackageDescriptor descriptor) { private static string ModelsLocationFormat(ExtensionDescriptor descriptor) {
return Path.Combine(Path.Combine(descriptor.Location, descriptor.Name), "Views/Models/{0}.ascx"); return Path.Combine(Path.Combine(descriptor.Location, descriptor.Name), "Views/Models/{0}.ascx");
} }
} }

View File

@@ -1,13 +1,10 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Hosting;
using Autofac; using Autofac;
using Autofac.Builder; using Autofac.Builder;
using Autofac.Integration.Web; using Autofac.Integration.Web;
using Autofac.Modules; using Autofac.Modules;
using Orchard.Packages; using Orchard.Extensions;
using Orchard.Packages.Loaders; using Orchard.Extensions.Loaders;
namespace Orchard.Environment { namespace Orchard.Environment {
public static class OrchardStarter { public static class OrchardStarter {
@@ -30,17 +27,17 @@ namespace Orchard.Environment {
// still needs to be called on end request, but that's the host component's job to worry about. // still needs to be called on end request, but that's the host component's job to worry about.
builder.Register<ContainerProvider>().As<IContainerProvider>().ContainerScoped(); builder.Register<ContainerProvider>().As<IContainerProvider>().ContainerScoped();
builder.Register<PackageManager>().As<IPackageManager>().SingletonScoped(); builder.Register<ExtensionManager>().As<IExtensionManager>().SingletonScoped();
builder.Register<CorePackageLoader>().As<IPackageLoader>().SingletonScoped(); builder.Register<CoreExtensionLoader>().As<IExtensionLoader>().SingletonScoped();
builder.Register<ReferencedPackageLoader>().As<IPackageLoader>().SingletonScoped(); builder.Register<ReferencedExtensionLoader>().As<IExtensionLoader>().SingletonScoped();
builder.Register<PrecompiledPackageLoader>().As<IPackageLoader>().SingletonScoped(); builder.Register<PrecompiledExtensionLoader>().As<IExtensionLoader>().SingletonScoped();
builder.Register<DynamicPackageLoader>().As<IPackageLoader>().SingletonScoped(); builder.Register<DynamicExtensionLoader>().As<IExtensionLoader>().SingletonScoped();
//builder.Register((ctx, p) => new PackageFolders(MapPaths(p.Named<IEnumerable<string>>("paths")))) //builder.Register((ctx, p) => new PackageFolders(MapPaths(p.Named<IEnumerable<string>>("paths"))))
// .As<IPackageFolders>() // .As<IPackageFolders>()
// .WithExtendedProperty("paths", new[] { "~/Packages" }) // .WithExtendedProperty("paths", new[] { "~/Packages" })
// .SingletonScoped(); // .SingletonScoped();
builder.Register<PackageFolders>().As<IPackageFolders>() builder.Register<ExtensionFolders>().As<IExtensionFolders>()
.WithArguments(new NamedParameter("paths", new[] { "~/Core", "~/Packages" })) .WithArguments(new NamedParameter("paths", new[] { "~/Core", "~/Packages" }))
.SingletonScoped(); .SingletonScoped();

View File

@@ -1,11 +1,5 @@
using System; namespace Orchard.Extensions {
using System.Collections.Generic; public class ExtensionDescriptor {
using System.Linq;
using System.Text;
using Yaml.Grammar;
namespace Orchard.Packages {
public class PackageDescriptor {
public string Location { get; set; } public string Location { get; set; }
public string Name { get; set; } public string Name { get; set; }

View File

@@ -1,12 +1,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text;
namespace Orchard.Packages { namespace Orchard.Extensions {
public class PackageEntry { public class ExtensionEntry {
public PackageDescriptor Descriptor { get; set; } public ExtensionDescriptor Descriptor { get; set; }
public Assembly Assembly { get; set; } public Assembly Assembly { get; set; }
public IEnumerable<Type> ExportedTypes { get; set; } public IEnumerable<Type> ExportedTypes { get; set; }
} }

View File

@@ -1,13 +1,11 @@
using System; using System.Collections.Generic;
using System.Collections;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Web.Hosting; using System.Web.Hosting;
using Yaml.Grammar; using Yaml.Grammar;
namespace Orchard.Packages { namespace Orchard.Extensions {
public interface IPackageFolders { public interface IExtensionFolders {
IEnumerable<string> ListNames(); IEnumerable<string> ListNames();
ParseResult ParseManifest(string name); ParseResult ParseManifest(string name);
} }
@@ -18,10 +16,10 @@ namespace Orchard.Packages {
public YamlDocument YamlDocument { get; set; } public YamlDocument YamlDocument { get; set; }
} }
public class PackageFolders : IPackageFolders { public class ExtensionFolders : IExtensionFolders {
private readonly IEnumerable<string> _paths; private readonly IEnumerable<string> _paths;
public PackageFolders(IEnumerable<string> paths) { public ExtensionFolders(IEnumerable<string> paths) {
_paths = paths; _paths = paths;
} }
@@ -34,8 +32,6 @@ namespace Orchard.Packages {
} }
public IEnumerable<string> ListNames() { public IEnumerable<string> ListNames() {
foreach (var path in _paths) { foreach (var path in _paths) {
foreach (var directoryName in Directory.GetDirectories(GetPhysicalPath(path))) { foreach (var directoryName in Directory.GetDirectories(GetPhysicalPath(path))) {
@@ -47,12 +43,12 @@ namespace Orchard.Packages {
public ParseResult ParseManifest(string name) { public ParseResult ParseManifest(string name) {
foreach (var path in _paths) { foreach (var path in _paths) {
var packageDirectoryPath = Path.Combine(GetPhysicalPath(path), name); var extensionDirectoryPath = Path.Combine(GetPhysicalPath(path), name);
var packageManifestPath = Path.Combine(packageDirectoryPath, "Package.txt"); var extensionManifestPath = Path.Combine(extensionDirectoryPath, "Package.txt");
if (!File.Exists(packageManifestPath)) { if (!File.Exists(extensionManifestPath)) {
continue; continue;
} }
var yamlStream = YamlParser.Load(packageManifestPath); var yamlStream = YamlParser.Load(extensionManifestPath);
return new ParseResult { return new ParseResult {
Location = path, Location = path,
Name = name, Name = name,

View File

@@ -1,26 +1,26 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Orchard.Packages.Loaders; using Orchard.Extensions.Loaders;
using Yaml.Grammar; using Yaml.Grammar;
namespace Orchard.Packages { namespace Orchard.Extensions {
public interface IPackageManager { public interface IExtensionManager {
IEnumerable<PackageDescriptor> AvailablePackages(); IEnumerable<ExtensionDescriptor> AvailableExtensions();
IEnumerable<PackageEntry> ActivePackages(); IEnumerable<ExtensionEntry> ActiveExtensions();
} }
public class PackageManager : IPackageManager { public class ExtensionManager : IExtensionManager {
private readonly IPackageFolders _folders; private readonly IExtensionFolders _folders;
private readonly IEnumerable<IPackageLoader> _loaders; private readonly IEnumerable<IExtensionLoader> _loaders;
private IEnumerable<PackageEntry> _activePackages; private IEnumerable<ExtensionEntry> _activeExtensions;
public PackageManager(IPackageFolders folders, IEnumerable<IPackageLoader> loaders) { public ExtensionManager(IExtensionFolders folders, IEnumerable<IExtensionLoader> loaders) {
_folders = folders; _folders = folders;
_loaders = loaders.OrderBy(x => x.Order); _loaders = loaders.OrderBy(x => x.Order);
} }
public IEnumerable<PackageDescriptor> AvailablePackages() { public IEnumerable<ExtensionDescriptor> AvailableExtensions() {
var names = _folders.ListNames(); var names = _folders.ListNames();
foreach (var name in names) { foreach (var name in names) {
var parseResult = _folders.ParseManifest(name); var parseResult = _folders.ParseManifest(name);
@@ -30,7 +30,7 @@ namespace Orchard.Packages {
.ToDictionary(x => ((Scalar)x.Key).Text, x => x.Value); .ToDictionary(x => ((Scalar)x.Key).Text, x => x.Value);
yield return new PackageDescriptor { yield return new ExtensionDescriptor {
Location = parseResult.Location, Location = parseResult.Location,
Name = name, Name = name,
DisplayName = GetValue(fields, "name"), DisplayName = GetValue(fields, "name"),
@@ -48,21 +48,21 @@ namespace Orchard.Packages {
return fields.TryGetValue(key, out value) ? value.ToString() : null; return fields.TryGetValue(key, out value) ? value.ToString() : null;
} }
public IEnumerable<PackageEntry> ActivePackages() { public IEnumerable<ExtensionEntry> ActiveExtensions() {
if (_activePackages == null) { if (_activeExtensions == null) {
_activePackages = BuildActivePackages().ToList(); _activeExtensions = BuildActiveExtensions().ToList();
} }
return _activePackages; return _activeExtensions;
} }
private IEnumerable<PackageEntry> BuildActivePackages() { private IEnumerable<ExtensionEntry> BuildActiveExtensions() {
foreach (var descriptor in AvailablePackages()) { foreach (var descriptor in AvailableExtensions()) {
//TODO: this component needs access to some "current settings" to know which are active //TODO: this component needs access to some "current settings" to know which are active
yield return BuildEntry(descriptor); yield return BuildEntry(descriptor);
} }
} }
private PackageEntry BuildEntry(PackageDescriptor descriptor) { private ExtensionEntry BuildEntry(ExtensionDescriptor descriptor) {
foreach (var loader in _loaders) { foreach (var loader in _loaders) {
var entry = loader.Load(descriptor); var entry = loader.Load(descriptor);
if (entry != null) if (entry != null)

View File

@@ -1,18 +1,16 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text;
namespace Orchard.Packages.Loaders { namespace Orchard.Extensions.Loaders {
public class CorePackageLoader : IPackageLoader { public class CoreExtensionLoader : IExtensionLoader {
public int Order { get { return 1; } } public int Order { get { return 1; } }
public PackageEntry Load(PackageDescriptor descriptor) { public ExtensionEntry Load(ExtensionDescriptor descriptor) {
if (descriptor.Location == "~/Core") { if (descriptor.Location == "~/Core") {
var assembly = Assembly.Load("Orchard.Core"); var assembly = Assembly.Load("Orchard.Core");
return new PackageEntry { return new ExtensionEntry {
Descriptor = descriptor, Descriptor = descriptor,
Assembly = assembly, Assembly = assembly,
ExportedTypes = assembly.GetExportedTypes().Where(x => IsTypeFromPackage(x, descriptor)) ExportedTypes = assembly.GetExportedTypes().Where(x => IsTypeFromPackage(x, descriptor))
@@ -21,7 +19,7 @@ namespace Orchard.Packages.Loaders {
return null; return null;
} }
private static bool IsTypeFromPackage(Type type, PackageDescriptor descriptor) { private static bool IsTypeFromPackage(Type type, ExtensionDescriptor descriptor) {
return (type.Namespace + ".").StartsWith("Orchard.Core." + descriptor.Name + "."); return (type.Namespace + ".").StartsWith("Orchard.Core." + descriptor.Name + ".");
} }
} }

View File

@@ -6,11 +6,11 @@ using System.Reflection;
using System.Web.Compilation; using System.Web.Compilation;
using System.Web.Hosting; using System.Web.Hosting;
namespace Orchard.Packages.Loaders { namespace Orchard.Extensions.Loaders {
public class DynamicPackageLoader : IPackageLoader { public class DynamicExtensionLoader : IExtensionLoader {
public int Order { get { return 4; } } public int Order { get { return 4; } }
public PackageEntry Load(PackageDescriptor descriptor) { public ExtensionEntry Load(ExtensionDescriptor descriptor) {
if (HostingEnvironment.IsHosted == false) if (HostingEnvironment.IsHosted == false)
return null; return null;
@@ -20,12 +20,12 @@ namespace Orchard.Packages.Loaders {
var options = new CompilerParameters(references.ToArray()); var options = new CompilerParameters(references.ToArray());
var locationPath = HostingEnvironment.MapPath(descriptor.Location); var locationPath = HostingEnvironment.MapPath(descriptor.Location);
var packagePath = Path.Combine(locationPath, descriptor.Name); var extensionPath = Path.Combine(locationPath, descriptor.Name);
var fileNames = GetSourceFileNames(packagePath); var fileNames = GetSourceFileNames(extensionPath);
var results = codeProvider.CompileAssemblyFromFile(options, fileNames.ToArray()); var results = codeProvider.CompileAssemblyFromFile(options, fileNames.ToArray());
return new PackageEntry { return new ExtensionEntry {
Descriptor = descriptor, Descriptor = descriptor,
Assembly = results.CompiledAssembly, Assembly = results.CompiledAssembly,
ExportedTypes = results.CompiledAssembly.GetExportedTypes(), ExportedTypes = results.CompiledAssembly.GetExportedTypes(),
@@ -41,15 +41,15 @@ namespace Orchard.Packages.Loaders {
} }
private IEnumerable<string> GetSourceFileNames(string path) { private IEnumerable<string> GetSourceFileNames(string path) {
foreach(var file in Directory.GetFiles(path, "*.cs")) { foreach (var file in Directory.GetFiles(path, "*.cs")) {
yield return file; yield return file;
} }
foreach(var folder in Directory.GetDirectories(path)) { foreach (var folder in Directory.GetDirectories(path)) {
if (Path.GetFileName(folder).StartsWith(".")) if (Path.GetFileName(folder).StartsWith("."))
continue; continue;
foreach(var file in GetSourceFileNames(folder)) { foreach (var file in GetSourceFileNames(folder)) {
yield return file; yield return file;
} }
} }

View File

@@ -0,0 +1,6 @@
namespace Orchard.Extensions.Loaders {
public interface IExtensionLoader {
int Order { get; }
ExtensionEntry Load(ExtensionDescriptor descriptor);
}
}

View File

@@ -1,14 +1,8 @@
using System; namespace Orchard.Extensions.Loaders {
using System.Collections.Generic; public class PrecompiledExtensionLoader : IExtensionLoader {
using System.Linq;
using System.Reflection;
using System.Text;
namespace Orchard.Packages.Loaders {
public class PrecompiledPackageLoader : IPackageLoader {
public int Order { get { return 3; } } public int Order { get { return 3; } }
public PackageEntry Load(PackageDescriptor descriptor) { public ExtensionEntry Load(ExtensionDescriptor descriptor) {
//var assembly = Assembly.Load(descriptor.Name); //var assembly = Assembly.Load(descriptor.Name);
//return new PackageEntry { //return new PackageEntry {
// Descriptor = descriptor, // Descriptor = descriptor,

View File

@@ -1,27 +1,24 @@
using System; using System.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text;
using System.Web.Compilation; using System.Web.Compilation;
using System.Web.Hosting; using System.Web.Hosting;
namespace Orchard.Packages.Loaders { namespace Orchard.Extensions.Loaders {
public class ReferencedPackageLoader : IPackageLoader { public class ReferencedExtensionLoader : IExtensionLoader {
public int Order { get { return 2; } } public int Order { get { return 2; } }
public PackageEntry Load(PackageDescriptor descriptor) { public ExtensionEntry Load(ExtensionDescriptor descriptor) {
if (HostingEnvironment.IsHosted == false) if (HostingEnvironment.IsHosted == false)
return null; return null;
var assembly = BuildManager.GetReferencedAssemblies() var assembly = BuildManager.GetReferencedAssemblies()
.OfType<Assembly>() .OfType<Assembly>()
.FirstOrDefault(x=>x.GetName().Name == descriptor.Name); .FirstOrDefault(x => x.GetName().Name == descriptor.Name);
if (assembly == null) if (assembly == null)
return null; return null;
return new PackageEntry { return new ExtensionEntry {
Descriptor = descriptor, Descriptor = descriptor,
Assembly = assembly, Assembly = assembly,
ExportedTypes = assembly.GetExportedTypes() ExportedTypes = assembly.GetExportedTypes()

View File

@@ -5,25 +5,25 @@ using Autofac.Integration.Web.Mvc;
using Orchard.Controllers; using Orchard.Controllers;
using Orchard.Environment; using Orchard.Environment;
using Orchard.Mvc.Filters; using Orchard.Mvc.Filters;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Mvc { namespace Orchard.Mvc {
public class MvcModule : Module { public class MvcModule : Module {
private readonly ICompositionStrategy _compositionStrategy; private readonly ICompositionStrategy _compositionStrategy;
private readonly IPackageManager _packageManager; private readonly IExtensionManager _extensionManager;
public MvcModule(ICompositionStrategy compositionStrategy, IPackageManager packageManager) { public MvcModule(ICompositionStrategy compositionStrategy, IExtensionManager extensionManager) {
_compositionStrategy = compositionStrategy; _compositionStrategy = compositionStrategy;
_packageManager = packageManager; _extensionManager = extensionManager;
} }
protected override void Load(ContainerBuilder moduleBuilder) { protected override void Load(ContainerBuilder moduleBuilder) {
var packages = _packageManager.ActivePackages(); var extensions = _extensionManager.ActiveExtensions();
var assemblies = packages.Select(x => x.Assembly).Concat(new[] { typeof(HomeController).Assembly }); var assemblies = extensions.Select(x => x.Assembly).Concat(new[] { typeof(HomeController).Assembly });
var module = new AutofacControllerModule(assemblies.ToArray()) { var module = new AutofacControllerModule(assemblies.ToArray()) {
ActionInvokerType = typeof(FilterResolvingActionInvoker), ActionInvokerType = typeof(FilterResolvingActionInvoker),
IdentificationStrategy = new OrchardControllerIdentificationStrategy(packages) IdentificationStrategy = new OrchardControllerIdentificationStrategy(extensions)
}; };
moduleBuilder.RegisterModule(module); moduleBuilder.RegisterModule(module);

View File

@@ -3,14 +3,14 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Autofac; using Autofac;
using Autofac.Integration.Web.Mvc; using Autofac.Integration.Web.Mvc;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Mvc { namespace Orchard.Mvc {
public class OrchardControllerIdentificationStrategy : IControllerIdentificationStrategy { public class OrchardControllerIdentificationStrategy : IControllerIdentificationStrategy {
private readonly IEnumerable<PackageEntry> _packages; private readonly IEnumerable<ExtensionEntry> _extensions;
public OrchardControllerIdentificationStrategy(IEnumerable<PackageEntry> packages) { public OrchardControllerIdentificationStrategy(IEnumerable<ExtensionEntry> extensions) {
_packages = packages; _extensions = extensions;
} }
public Service ServiceForControllerName(string controllerName) { public Service ServiceForControllerName(string controllerName) {
@@ -21,7 +21,7 @@ namespace Orchard.Mvc {
public Service ServiceForControllerType(Type controllerType) { public Service ServiceForControllerType(Type controllerType) {
var controllerNamespace = controllerType.Namespace; var controllerNamespace = controllerType.Namespace;
var package = _packages.FirstOrDefault(x => x.Assembly == controllerType.Assembly); var extension = _extensions.FirstOrDefault(x => x.Assembly == controllerType.Assembly);
var assemblySimpleName = controllerType.Assembly.GetName().Name; var assemblySimpleName = controllerType.Assembly.GetName().Name;
string areaName; string areaName;
if (assemblySimpleName == "Orchard.Core" && if (assemblySimpleName == "Orchard.Core" &&
@@ -29,8 +29,8 @@ namespace Orchard.Mvc {
areaName = controllerNamespace.Split('.').Skip(2).FirstOrDefault(); areaName = controllerNamespace.Split('.').Skip(2).FirstOrDefault();
} }
else if (package != null) { else if (extension != null) {
areaName = package.Descriptor.Name; areaName = extension.Descriptor.Name;
} }
else { else {
areaName = assemblySimpleName; areaName = assemblySimpleName;

View File

@@ -1,18 +1,18 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Routing; using System.Web.Routing;
using Orchard.Packages; using Orchard.Extensions;
namespace Orchard.Mvc.Routes { namespace Orchard.Mvc.Routes {
public class StandardPackageRouteProvider : IRouteProvider { public class StandardExtensionRouteProvider : IRouteProvider {
private readonly IPackageManager _packageManager; private readonly IExtensionManager _extensionManager;
public StandardPackageRouteProvider(IPackageManager packageManager) { public StandardExtensionRouteProvider(IExtensionManager extensionManager) {
_packageManager = packageManager; _extensionManager = extensionManager;
} }
public IEnumerable<RouteDescriptor> GetRoutes() { public IEnumerable<RouteDescriptor> GetRoutes() {
foreach (var entry in _packageManager.ActivePackages()) { foreach (var entry in _extensionManager.ActiveExtensions()) {
var areaName = entry.Descriptor.Name; var areaName = entry.Descriptor.Name;
var displayName = entry.Descriptor.DisplayName ?? areaName; var displayName = entry.Descriptor.DisplayName ?? areaName;

View File

@@ -100,7 +100,7 @@
<Compile Include="Mvc\Routes\IRoutePublisher.cs" /> <Compile Include="Mvc\Routes\IRoutePublisher.cs" />
<Compile Include="Mvc\Routes\IRouteProvider.cs" /> <Compile Include="Mvc\Routes\IRouteProvider.cs" />
<Compile Include="Mvc\Routes\DefaultRouteProvider.cs" /> <Compile Include="Mvc\Routes\DefaultRouteProvider.cs" />
<Compile Include="Mvc\Routes\StandardPackageRouteProvider.cs" /> <Compile Include="Mvc\Routes\StandardExtensionRouteProvider.cs" />
<Compile Include="Mvc\Routes\RoutePublisher.cs" /> <Compile Include="Mvc\Routes\RoutePublisher.cs" />
<Compile Include="Mvc\Routes\RouteDescriptor.cs" /> <Compile Include="Mvc\Routes\RouteDescriptor.cs" />
<Compile Include="Utility\ReadOnlyCollectionExtensions.cs" /> <Compile Include="Utility\ReadOnlyCollectionExtensions.cs" />
@@ -119,6 +119,15 @@
<Compile Include="Data\Conventions\AttributeCollectionConvention.cs" /> <Compile Include="Data\Conventions\AttributeCollectionConvention.cs" />
<Compile Include="Data\Conventions\CascadeAllDeleteOrphanAttribute.cs" /> <Compile Include="Data\Conventions\CascadeAllDeleteOrphanAttribute.cs" />
<Compile Include="Environment\IOrchardShellEvents.cs" /> <Compile Include="Environment\IOrchardShellEvents.cs" />
<Compile Include="Extensions\ExtensionDescriptor.cs" />
<Compile Include="Extensions\ExtensionEntry.cs" />
<Compile Include="Extensions\ExtensionFolders.cs" />
<Compile Include="Extensions\ExtensionManager.cs" />
<Compile Include="Extensions\Loaders\CoreExtensionLoader.cs" />
<Compile Include="Extensions\Loaders\DynamicExtensionLoader.cs" />
<Compile Include="Extensions\Loaders\IExtensionLoader.cs" />
<Compile Include="Extensions\Loaders\PrecompiledExtensionLoader.cs" />
<Compile Include="Extensions\Loaders\ReferencedExtensionLoader.cs" />
<Compile Include="IEvents.cs" /> <Compile Include="IEvents.cs" />
<Compile Include="Localization\IText.cs" /> <Compile Include="Localization\IText.cs" />
<Compile Include="Localization\LocalizationModule.cs" /> <Compile Include="Localization\LocalizationModule.cs" />
@@ -198,11 +207,6 @@
<Compile Include="Mvc\ViewPage.cs"> <Compile Include="Mvc\ViewPage.cs">
<SubType>ASPXCodeBehind</SubType> <SubType>ASPXCodeBehind</SubType>
</Compile> </Compile>
<Compile Include="Packages\Loaders\DynamicPackageLoader.cs" />
<Compile Include="Packages\Loaders\PrecompiledPackageLoader.cs" />
<Compile Include="Packages\Loaders\CorePackageLoader.cs" />
<Compile Include="Packages\Loaders\IPackageLoader.cs" />
<Compile Include="Packages\Loaders\ReferencedPackageLoader.cs" />
<Compile Include="Security\IAuthenticationService.cs" /> <Compile Include="Security\IAuthenticationService.cs" />
<Compile Include="Security\Authorizer.cs" /> <Compile Include="Security\Authorizer.cs" />
<Compile Include="Security\Providers\FormsAuthenticationService.cs" /> <Compile Include="Security\Providers\FormsAuthenticationService.cs" />
@@ -228,10 +232,6 @@
<Compile Include="UI\Notify\NotifierExtensions.cs" /> <Compile Include="UI\Notify\NotifierExtensions.cs" />
<Compile Include="UI\Notify\NotifyEntry.cs" /> <Compile Include="UI\Notify\NotifyEntry.cs" />
<Compile Include="UI\Notify\NotifyFilter.cs" /> <Compile Include="UI\Notify\NotifyFilter.cs" />
<Compile Include="Packages\PackageEntry.cs" />
<Compile Include="Packages\PackageFolders.cs" />
<Compile Include="Packages\PackageDescriptor.cs" />
<Compile Include="Packages\PackageManager.cs" />
<Compile Include="Security\CreateUserParams.cs" /> <Compile Include="Security\CreateUserParams.cs" />
<Compile Include="Security\IAuthorizationService.cs" /> <Compile Include="Security\IAuthorizationService.cs" />
<Compile Include="Security\IMembershipService.cs" /> <Compile Include="Security\IMembershipService.cs" />

View File

@@ -1,6 +0,0 @@
namespace Orchard.Packages.Loaders {
public interface IPackageLoader {
int Order { get; }
PackageEntry Load(PackageDescriptor descriptor);
}
}