For theme views include all dependencies when compiling to allow theme views to be reference free.

--HG--
branch : dev
This commit is contained in:
Andre Rodrigues
2011-03-22 12:59:09 -07:00
parent e340097378
commit 1e452be3f6
2 changed files with 10 additions and 8 deletions

View File

@@ -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();
}

View File

@@ -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;