mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
@@ -1,55 +0,0 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.FileSystems.Dependencies;
|
||||
using Orchard.Logging;
|
||||
|
||||
namespace Orchard.Environment.Extensions.Loaders {
|
||||
public class AreaExtensionLoader : ExtensionLoaderBase {
|
||||
private readonly string _hostAssemblyName = "Orchard.Web";
|
||||
private readonly IAssemblyLoader _assemblyLoader;
|
||||
|
||||
public AreaExtensionLoader(IDependenciesFolder dependenciesFolder, IAssemblyLoader assemblyLoader)
|
||||
: base(dependenciesFolder) {
|
||||
_assemblyLoader = assemblyLoader;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
public ILogger Logger { get; set; }
|
||||
|
||||
public override int Order { get { return 50; } }
|
||||
|
||||
public override ExtensionProbeEntry Probe(ExtensionDescriptor descriptor) {
|
||||
if (descriptor.Location == "~/Areas") {
|
||||
return new ExtensionProbeEntry {
|
||||
Descriptor = descriptor,
|
||||
Loader = this,
|
||||
LastWriteTimeUtc = DateTime.MinValue,
|
||||
VirtualPath = "~/Areas/" + descriptor.Id,
|
||||
};
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
var assembly = _assemblyLoader.Load(_hostAssemblyName);
|
||||
if (assembly == null) {
|
||||
Logger.Warning("Support for 'Areas' modules disabled because assembly '{0}' could not be loaded", _hostAssemblyName);
|
||||
return null;
|
||||
}
|
||||
|
||||
return new ExtensionEntry {
|
||||
Descriptor = descriptor,
|
||||
Assembly = assembly,
|
||||
ExportedTypes = assembly.GetExportedTypes().Where(x => IsTypeFromModule(x, descriptor))
|
||||
};
|
||||
}
|
||||
|
||||
private bool IsTypeFromModule(Type type, ExtensionDescriptor descriptor) {
|
||||
return (type.Namespace + ".").StartsWith(_hostAssemblyName + ".Areas." + descriptor.Id + ".");
|
||||
}
|
||||
}
|
||||
}
|
@@ -78,7 +78,6 @@ namespace Orchard.Environment {
|
||||
builder.RegisterType<ThemeFolders>().As<IExtensionFolders>().SingleInstance()
|
||||
.WithParameter(new NamedParameter("paths", new[] { "~/Core", "~/Themes" }));
|
||||
|
||||
builder.RegisterType<AreaExtensionLoader>().As<IExtensionLoader>().SingleInstance();
|
||||
builder.RegisterType<CoreExtensionLoader>().As<IExtensionLoader>().SingleInstance();
|
||||
builder.RegisterType<ReferencedExtensionLoader>().As<IExtensionLoader>().SingleInstance();
|
||||
builder.RegisterType<PrecompiledExtensionLoader>().As<IExtensionLoader>().SingleInstance();
|
||||
|
@@ -642,7 +642,6 @@
|
||||
<Compile Include="Events\IEventBus.cs" />
|
||||
<Compile Include="Environment\Extensions\Folders\AreaFolders.cs" />
|
||||
<Compile Include="Environment\Extensions\Folders\ExtensionFolders.cs" />
|
||||
<Compile Include="Environment\Extensions\Loaders\AreaExtensionLoader.cs" />
|
||||
<Compile Include="Environment\Extensions\Models\Feature.cs" />
|
||||
<Compile Include="Environment\Extensions\Models\FeatureDescriptor.cs" />
|
||||
<Compile Include="Environment\Extensions\OrchardFeatureAttribute.cs" />
|
||||
|
Reference in New Issue
Block a user