mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-12-03 03:58:13 +08:00
For theme views include all dependencies when compiling to allow theme views to be reference free.
--HG-- branch : dev
This commit is contained in:
@@ -3,6 +3,7 @@ using System.IO;
|
||||
using System.IO.Packaging;
|
||||
using Autofac;
|
||||
using NUnit.Framework;
|
||||
using Orchard.Environment;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.FileSystems.VirtualPath;
|
||||
using Orchard.FileSystems.WebSite;
|
||||
@@ -17,6 +18,7 @@ namespace Orchard.Tests.Modules.Packaging.Services {
|
||||
protected override void Register(ContainerBuilder builder) {
|
||||
builder.RegisterType<PackageBuilder>().As<IPackageBuilder>();
|
||||
builder.RegisterType<DefaultVirtualPathProvider>().As<IVirtualPathProvider>();
|
||||
builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>();
|
||||
builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>()
|
||||
.As<InMemoryWebSiteFolder>().InstancePerLifetimeScope();
|
||||
}
|
||||
|
||||
@@ -42,21 +42,21 @@ namespace Orchard.Mvc.ViewEngines.Razor {
|
||||
}
|
||||
|
||||
public void CodeGenerationStarted(RazorBuildProvider provider) {
|
||||
DependencyDescriptor dependencyDescriptor = GetDependencyDescriptor(provider.VirtualPath);
|
||||
DependencyDescriptor moduleDependencyDescriptor = GetModuleDependencyDescriptor(provider.VirtualPath);
|
||||
|
||||
IEnumerable<DependencyDescriptor> dependencyDescriptors = _dependenciesFolder.LoadDescriptors();
|
||||
List<DependencyDescriptor> filteredDependencyDescriptors = new List<DependencyDescriptor>();
|
||||
if (dependencyDescriptor != null) {
|
||||
List<DependencyDescriptor> filteredDependencyDescriptors;
|
||||
if (moduleDependencyDescriptor != null) {
|
||||
// Add module
|
||||
filteredDependencyDescriptors.Add(dependencyDescriptor);
|
||||
filteredDependencyDescriptors = new List<DependencyDescriptor> { moduleDependencyDescriptor };
|
||||
|
||||
// Add module's references
|
||||
filteredDependencyDescriptors.AddRange(dependencyDescriptor.References
|
||||
filteredDependencyDescriptors.AddRange(moduleDependencyDescriptor.References
|
||||
.SelectMany(reference => dependencyDescriptors
|
||||
.Where(dependency => dependency.Name == reference.Name)));
|
||||
}
|
||||
else {
|
||||
// Fall back that shouldn't usually be called
|
||||
// Fall back for themes
|
||||
filteredDependencyDescriptors = dependencyDescriptors.ToList();
|
||||
}
|
||||
|
||||
@@ -94,9 +94,9 @@ namespace Orchard.Mvc.ViewEngines.Razor {
|
||||
}
|
||||
}
|
||||
|
||||
private DependencyDescriptor GetDependencyDescriptor(string virtualPath) {
|
||||
private DependencyDescriptor GetModuleDependencyDescriptor(string virtualPath) {
|
||||
var appRelativePath = VirtualPathUtility.ToAppRelative(virtualPath);
|
||||
var prefix = PrefixMatch(appRelativePath, new [] { "~/Modules/", "~/Themes/", "~/Core/"});
|
||||
var prefix = PrefixMatch(appRelativePath, new [] { "~/Modules/", "~/Core/"});
|
||||
if (prefix == null)
|
||||
return null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user