mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
- Converted ResourceManifests to provider/builder pattern.
- Removed ability to require a minimum version --HG-- branch : dev
This commit is contained in:
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Core.ContentsLocation {
|
||||
public class ContentsLocationResourceManifest : ResourceManifest {
|
||||
public ContentsLocationResourceManifest() {
|
||||
DefineStyle("ContentsLocationAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("ContentsLocationAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,11 +5,12 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Core.Localization.Resources {
|
||||
public class LocalizationResourceManifest : ResourceManifest {
|
||||
public LocalizationResourceManifest() {
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
var manifest = builder.Add();
|
||||
// todo: move this file
|
||||
DefineStyle("Localization").SetUrl("base.css");
|
||||
DefineStyle("LocalizationAdmin").SetUrl("admin.css");
|
||||
manifest.DefineStyle("Localization").SetUrl("base.css");
|
||||
manifest.DefineStyle("LocalizationAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Core.PublishLater {
|
||||
public class PublishLaterResourceManifest : ResourceManifest {
|
||||
public PublishLaterResourceManifest() {
|
||||
DefineStyle("PublishLater_DatePicker").SetUrl("datetime.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("PublishLater_DatePicker").SetUrl("datetime.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Core.Routable {
|
||||
public class RoutableResourceManifest : ResourceManifest {
|
||||
public RoutableResourceManifest() {
|
||||
DefineScript("Slugify").SetUrl("jquery.slugify.js").SetDependencies("jQuery");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineScript("Slugify").SetUrl("jquery.slugify.js").SetDependencies("jQuery");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Core.Settings {
|
||||
public class SettingsResourceManifest : ResourceManifest {
|
||||
public SettingsResourceManifest() {
|
||||
DefineStyle("SettingsAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("SettingsAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,11 +5,12 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Core.Shapes {
|
||||
public class CoreShapesResourceManifest : ResourceManifest {
|
||||
public CoreShapesResourceManifest() {
|
||||
DefineScript("ShapesBase").SetUrl("base.js").SetDependencies("jQuery");
|
||||
DefineStyle("Shapes").SetUrl("site.css"); // todo: missing
|
||||
DefineStyle("ShapesSpecial").SetUrl("special.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
var manifest = builder.Add();
|
||||
manifest.DefineScript("ShapesBase").SetUrl("base.js").SetDependencies("jQuery");
|
||||
manifest.DefineStyle("Shapes").SetUrl("site.css"); // todo: missing
|
||||
manifest.DefineStyle("ShapesSpecial").SetUrl("special.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.ArchiveLater {
|
||||
public class ArchiveLaterResourceManifest : ResourceManifest {
|
||||
public ArchiveLaterResourceManifest() {
|
||||
DefineStyle("ArchiveLater_DatePicker").SetUrl("datetime.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("ArchiveLater_DatePicker").SetUrl("datetime.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,12 +5,13 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Blogs {
|
||||
public class BlogsResourceManifest : ResourceManifest {
|
||||
public BlogsResourceManifest() {
|
||||
DefineStyle("BlogsAdmin").SetUrl("admin.css");
|
||||
DefineStyle("BlogsArchives").SetUrl("archives.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
var manifest = builder.Add();
|
||||
manifest.DefineStyle("BlogsAdmin").SetUrl("admin.css");
|
||||
manifest.DefineStyle("BlogsArchives").SetUrl("archives.css");
|
||||
|
||||
DefineScript("BlogsArchives").SetUrl("archives.js").SetDependencies("jQuery");
|
||||
manifest.DefineScript("BlogsArchives").SetUrl("archives.js").SetDependencies("jQuery");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.ContentTypes {
|
||||
public class ContentTypesResourceManifest : ResourceManifest {
|
||||
public ContentTypesResourceManifest() {
|
||||
DefineStyle("ContentTypesAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("ContentTypesAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Indexing {
|
||||
public class IndexingResourceManifest : ResourceManifest {
|
||||
public IndexingResourceManifest() {
|
||||
DefineStyle("IndexingAdmin").SetUrl("admin.css"); // todo: this does not exist
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("IndexingAdmin").SetUrl("admin.css"); // todo: this does not exist
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,9 +3,9 @@ using Orchard.UI.Navigation;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Media {
|
||||
public class MediaResourceManifest : ResourceManifest {
|
||||
public MediaResourceManifest() {
|
||||
DefineStyle("MediaAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("MediaAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Modules {
|
||||
public class ModulesResourceManifest : ResourceManifest {
|
||||
public ModulesResourceManifest() {
|
||||
DefineStyle("ModulesAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("ModulesAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.MultiTenancy {
|
||||
public class MultiTenancyResourceManifest : ResourceManifest {
|
||||
public MultiTenancyResourceManifest() {
|
||||
DefineStyle("MultiTenancyAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("MultiTenancyAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,9 +5,9 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Packaging {
|
||||
public class PackagingResourceManifest : ResourceManifest {
|
||||
public PackagingResourceManifest() {
|
||||
DefineStyle("PackagingAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("PackagingAdmin").SetUrl("admin.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,10 +5,10 @@ using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Search {
|
||||
public class SearchResourceManifest : ResourceManifest {
|
||||
public SearchResourceManifest() {
|
||||
DefineStyle("SearchAdmin").SetUrl("admin.css"); // todo: this does not appear to be used anywhere
|
||||
DefineStyle("Search").SetUrl("search.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineStyle("SearchAdmin").SetUrl("admin.css"); // todo: this does not appear to be used anywhere
|
||||
builder.Add().DefineStyle("Search").SetUrl("search.css");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -39,6 +39,7 @@ using Orchard.UI.PageTitle;
|
||||
using Orchard.UI.Resources;
|
||||
using Orchard.UI.Zones;
|
||||
using IFilterProvider = Orchard.Mvc.Filters.IFilterProvider;
|
||||
using ResourceManifest = Orchard.Core.Shapes.ResourceManifest;
|
||||
|
||||
namespace Orchard.Setup {
|
||||
public class SetupMode : Module {
|
||||
@@ -63,7 +64,7 @@ namespace Orchard.Setup {
|
||||
builder.RegisterType<DefaultCommandManager>().As<ICommandManager>().InstancePerLifetimeScope();
|
||||
builder.RegisterType<HelpCommand>().As<ICommandHandler>().InstancePerLifetimeScope();
|
||||
builder.RegisterType<DefaultWorkContextAccessor>().As<IWorkContextAccessor>().InstancePerMatchingLifetimeScope("shell");
|
||||
builder.RegisterType<CoreShapesResourceManifest>().As<IResourceManifest>().InstancePerLifetimeScope();
|
||||
builder.RegisterType<ResourceManifest>().As<IResourceManifestProvider>().InstancePerLifetimeScope();
|
||||
builder.RegisterType<ResourceManager>().As<IResourceManager>().InstancePerLifetimeScope();
|
||||
builder.RegisterType<ResourceFilter>().As<IFilterProvider>().InstancePerLifetimeScope();
|
||||
|
||||
|
@@ -1,47 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.Themes {
|
||||
public class ThemesResourceManifest : ResourceManifest {
|
||||
public ThemesResourceManifest() {
|
||||
DefineStyle("ThemesAdmin").SetUrl("admin.css");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
var manifest = builder.Add();
|
||||
manifest.DefineStyle("ThemesAdmin").SetUrl("admin.css");
|
||||
// todo: used by core\shapes -- move it?
|
||||
DefineScript("Switchable").SetUrl("jquery.switchable.js").SetDependencies("jQuery");
|
||||
DefineStyle("Switchable").SetUrl("jquery.switchable.css");
|
||||
manifest.DefineScript("Switchable").SetUrl("jquery.switchable.js").SetDependencies("jQuery");
|
||||
manifest.DefineStyle("Switchable").SetUrl("jquery.switchable.css");
|
||||
|
||||
// Resources for the built-in themes (under the orchard.web/themes directory)
|
||||
// The manifest would normally go there rather than here, but orchard.web/themes
|
||||
// is not registered with AutoFac.
|
||||
DefineStyle("Admin").SetUrl("~/modules/orchard.themes/styles/admin.css");
|
||||
manifest.DefineStyle("Admin").SetUrl("~/modules/orchard.themes/styles/admin.css");
|
||||
|
||||
DefineStyle("Classic").SetUrl("~/themes/classic/styles/site.css");
|
||||
DefineStyle("Classic_Blog").SetUrl("~/themes/classic/styles/blog.css");
|
||||
manifest.DefineStyle("Classic").SetUrl("~/themes/classic/styles/site.css");
|
||||
manifest.DefineStyle("Classic_Blog").SetUrl("~/themes/classic/styles/blog.css");
|
||||
|
||||
DefineStyle("ClassicDark").SetUrl("~/themes/classicdark/styles/site.css");
|
||||
DefineStyle("ClassicDark_Blog").SetUrl("~/themes/classicdark/styles/blog.css");
|
||||
manifest.DefineStyle("ClassicDark").SetUrl("~/themes/classicdark/styles/site.css");
|
||||
manifest.DefineStyle("ClassicDark_Blog").SetUrl("~/themes/classicdark/styles/blog.css");
|
||||
|
||||
DefineStyle("Contoso").SetUrl("~/themes/contoso/styles/site.css");
|
||||
DefineStyle("Contoso_Search").SetUrl("~/themes/contoso/styles/search.css");
|
||||
manifest.DefineStyle("Contoso").SetUrl("~/themes/contoso/styles/site.css");
|
||||
manifest.DefineStyle("Contoso_Search").SetUrl("~/themes/contoso/styles/search.css");
|
||||
|
||||
// todo: include and define the min.js version too
|
||||
// todo: move EasySlider to common location
|
||||
DefineScript("EasySlider").SetUrl("~/themes/contoso/scripts/easySlider.js").SetDependencies("jQuery");
|
||||
manifest.DefineScript("EasySlider").SetUrl("~/themes/contoso/scripts/easySlider.js").SetDependencies("jQuery");
|
||||
|
||||
DefineStyle("Corporate").SetUrl("~/themes/corporate/styles/site.css");
|
||||
manifest.DefineStyle("Corporate").SetUrl("~/themes/corporate/styles/site.css");
|
||||
|
||||
DefineStyle("Green").SetUrl("~/themes/green/styles/site.css");
|
||||
DefineStyle("Green_Blog").SetUrl("~/themes/green/styles/blog.css");
|
||||
DefineStyle("Green_YUI").SetUrl("~/themes/green/styles/yui.css");
|
||||
manifest.DefineStyle("Green").SetUrl("~/themes/green/styles/site.css");
|
||||
manifest.DefineStyle("Green_Blog").SetUrl("~/themes/green/styles/blog.css");
|
||||
manifest.DefineStyle("Green_YUI").SetUrl("~/themes/green/styles/yui.css");
|
||||
|
||||
DefineStyle("SafeMode").SetUrl("~/themes/safemode/styles/site.css");
|
||||
manifest.DefineStyle("SafeMode").SetUrl("~/themes/safemode/styles/site.css");
|
||||
|
||||
DefineStyle("TheAdmin").SetUrl("~/themes/theadmin/styles/site.css");
|
||||
DefineStyle("TheAdmin_IE").SetUrl("~/themes/theadmin/styles/ie.css");
|
||||
DefineStyle("TheAdmin_IE6").SetUrl("~/themes/theadmin/styles/ie6.css");
|
||||
DefineScript("TheAdmin").SetUrl("~/themes/theadmin/scripts/admin.js").SetDependencies("jQuery");
|
||||
manifest.DefineStyle("TheAdmin").SetUrl("~/themes/theadmin/styles/site.css");
|
||||
manifest.DefineStyle("TheAdmin_IE").SetUrl("~/themes/theadmin/styles/ie.css");
|
||||
manifest.DefineStyle("TheAdmin_IE6").SetUrl("~/themes/theadmin/styles/ie6.css");
|
||||
manifest.DefineScript("TheAdmin").SetUrl("~/themes/theadmin/scripts/admin.js").SetDependencies("jQuery");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,18 +1,19 @@
|
||||
namespace Orchard.UI.Resources {
|
||||
public class jQueryResourceManifest : ResourceManifest {
|
||||
public jQueryResourceManifest() {
|
||||
DefineScript("jQuery").SetUrl("jquery-1.4.2.min.js", "jquery-1.4.2.js").SetVersion("1.4.2");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
var manifest = builder.Add();
|
||||
manifest.DefineScript("jQuery").SetUrl("jquery-1.4.2.min.js", "jquery-1.4.2.js").SetVersion("1.4.2");
|
||||
|
||||
// todo: include min versions
|
||||
DefineScript("jQueryUtils").SetUrl("jquery.utils.js").SetDependencies("jQuery");
|
||||
DefineScript("jQueryUI_Core").SetUrl("jquery.ui.core.js").SetVersion("1.8b1").SetDependencies("jQuery");
|
||||
DefineScript("jQueryUI_Widget").SetUrl("jquery.ui.widget.js").SetVersion("1.8b1").SetDependencies("jQuery");
|
||||
DefineScript("jQueryUI_DatePicker").SetUrl("jquery.ui.datepicker.js").SetVersion("1.8b1").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
|
||||
DefineScript("jQueryUtils_TimePicker").SetUrl("ui.timepickr.js").SetVersion("0.7.0a").SetDependencies("jQueryUtils", "jQueryUI_Core");
|
||||
manifest.DefineScript("jQueryUtils").SetUrl("jquery.utils.js").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryUI_Core").SetUrl("jquery.ui.core.js").SetVersion("1.8b1").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryUI_Widget").SetUrl("jquery.ui.widget.js").SetVersion("1.8b1").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryUI_DatePicker").SetUrl("jquery.ui.datepicker.js").SetVersion("1.8b1").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
|
||||
manifest.DefineScript("jQueryUtils_TimePicker").SetUrl("ui.timepickr.js").SetVersion("0.7.0a").SetDependencies("jQueryUtils", "jQueryUI_Core");
|
||||
|
||||
DefineStyle("jQueryUtils_TimePicker").SetUrl("ui.timepickr.css");
|
||||
DefineStyle("jQueryUI_Orchard").SetUrl("jquery-ui-1.7.2.custom.css").SetVersion("1.7.2");
|
||||
DefineStyle("jQueryUI_DatePicker").SetUrl("ui.datepicker.css").SetDependencies("jQueryUI_Orchard").SetVersion("1.7.2");
|
||||
manifest.DefineStyle("jQueryUtils_TimePicker").SetUrl("ui.timepickr.css");
|
||||
manifest.DefineStyle("jQueryUI_Orchard").SetUrl("jquery-ui-1.7.2.custom.css").SetVersion("1.7.2");
|
||||
manifest.DefineStyle("jQueryUI_DatePicker").SetUrl("ui.datepicker.css").SetDependencies("jQueryUI_Orchard").SetVersion("1.7.2");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,9 +1,9 @@
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace TinyMce {
|
||||
public class TinyMceResourceManifest : ResourceManifest {
|
||||
public TinyMceResourceManifest() {
|
||||
DefineScript("TinyMce").SetUrl("tiny_mce.js", "tiny_mce_src.js");
|
||||
public class ResourceManifest : IResourceManifestProvider {
|
||||
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||
builder.Add().DefineScript("TinyMce").SetUrl("tiny_mce.js", "tiny_mce_src.js");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
@using Orchard.UI.Resources
|
||||
@{
|
||||
Script.Require("jQuery", "1.4.2");
|
||||
Script.Require("jQuery");
|
||||
Script.Require("ShapesBase");
|
||||
Style.Include("site.css");
|
||||
RegisterLink(new LinkEntry { Condition = "lte IE 6", Rel = "stylesheet", Type="text/css", Href = Href("../Styles/ie6.css")}.AddAttribute("media", "screen, projection"));
|
||||
|
@@ -49,7 +49,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Tests", "Tools\Orch
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Notes", "_Notes", "{8A49DB66-40B2-4B6A-BFF0-D4839A240D00}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
ResourceManager.txt = ResourceManager.txt
|
||||
Shapes.txt = Shapes.txt
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
@@ -160,6 +160,8 @@
|
||||
<Compile Include="Security\CurrentUserWorkContext.cs" />
|
||||
<Compile Include="Settings\CurrentSiteWorkContext.cs" />
|
||||
<Compile Include="Settings\ResourceDebugMode.cs" />
|
||||
<Compile Include="UI\Resources\IResourceManifestProvider.cs" />
|
||||
<Compile Include="UI\Resources\ResourceManifestBuilder.cs" />
|
||||
<Compile Include="UI\Zones\PageWorkContext.cs" />
|
||||
<Compile Include="UI\Zones\ZoneHoldingBehavior.cs" />
|
||||
<Compile Include="Mvc\ViewEngines\ThemeAwareness\ConfiguredEnginesCache.cs" />
|
||||
|
@@ -1,22 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Orchard.UI.Resources {
|
||||
public interface IResourceManifest : ISingletonDependency {
|
||||
public interface IResourceManifest {
|
||||
ResourceDefinition DefineResource(string resourceType, string resourceName);
|
||||
string Name { get; }
|
||||
string BasePath { get; }
|
||||
IDictionary<string, ResourceDefinition> GetResources(string resourceType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//public class DefaultResMgr {
|
||||
// public DefaultResMgr(IEnumerable<IResourceDefinitionProvider> providers) {
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
//public interface IResourceDefinitionProvider {
|
||||
// void GetResources(BlahBuildsinkTargetSomethingToto def);
|
||||
//}
|
||||
}
|
||||
|
5
src/Orchard/UI/Resources/IResourceManifestProvider.cs
Normal file
5
src/Orchard/UI/Resources/IResourceManifestProvider.cs
Normal file
@@ -0,0 +1,5 @@
|
||||
namespace Orchard.UI.Resources {
|
||||
public interface IResourceManifestProvider : ISingletonDependency {
|
||||
void BuildManifests(ResourceManifestBuilder builder);
|
||||
}
|
||||
}
|
@@ -8,7 +8,6 @@ namespace Orchard.UI.Resources {
|
||||
public string Culture { get; set; }
|
||||
public bool DebugMode { get; set; }
|
||||
public bool CdnMode { get; set; }
|
||||
public string MinimumVersion { get; set; }
|
||||
public ResourceLocation Location { get; set; }
|
||||
public Action<ResourceDefinition> InlineDefinition { get; set; }
|
||||
|
||||
@@ -51,13 +50,6 @@ namespace Orchard.UI.Resources {
|
||||
return this;
|
||||
}
|
||||
|
||||
public RequireSettings WithMinimumVersion(string minimumVersion) {
|
||||
MinimumVersion = String.IsNullOrEmpty(MinimumVersion)
|
||||
? minimumVersion
|
||||
: (MinimumVersion.CompareTo(minimumVersion) > 0 ? minimumVersion : MinimumVersion);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RequireSettings WithBasePath(string basePath) {
|
||||
BasePath = basePath;
|
||||
return this;
|
||||
@@ -77,7 +69,6 @@ namespace Orchard.UI.Resources {
|
||||
.UseCdn(CdnMode).UseCdn(other.CdnMode)
|
||||
.UseDebugMode(DebugMode).UseDebugMode(other.DebugMode)
|
||||
.UseCulture(Culture).UseCulture(other.Culture)
|
||||
.WithMinimumVersion(MinimumVersion).WithMinimumVersion(other.MinimumVersion)
|
||||
.Define(InlineDefinition).Define(other.InlineDefinition);
|
||||
}
|
||||
}
|
||||
|
@@ -1,13 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using Orchard.DisplayManagement;
|
||||
using Orchard.Mvc.Filters;
|
||||
using Orchard.Mvc.Html;
|
||||
using Orchard.Mvc.ViewEngines;
|
||||
|
||||
namespace Orchard.UI.Resources {
|
||||
public class ResourceFilter : FilterProvider, IResultFilter {
|
||||
|
@@ -5,29 +5,42 @@ using System.Collections.Specialized;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Hosting;
|
||||
using JetBrains.Annotations;
|
||||
using Autofac.Features.Metadata;
|
||||
using Orchard.DisplayManagement.Descriptors;
|
||||
|
||||
namespace Orchard.UI.Resources {
|
||||
public class ResourceManager : IResourceManager {
|
||||
private readonly Dictionary<Tuple<String, String>, RequireSettings> _required = new Dictionary<Tuple<String, String>, RequireSettings>();
|
||||
private readonly Lazy<DynamicResourceManifest> _dynamicResourceProvider = new Lazy<DynamicResourceManifest>();
|
||||
private readonly List<LinkEntry> _links = new List<LinkEntry>();
|
||||
private readonly Dictionary<string, MetaEntry> _metas = new Dictionary<string, MetaEntry>();
|
||||
private readonly Dictionary<string, IList<ResourceRequiredContext>> _builtResources = new Dictionary<string, IList<ResourceRequiredContext>>();
|
||||
private readonly IEnumerable<Meta<IResourceManifestProvider, IFeatureMetadata>> _providers;
|
||||
private ResourceManifest _dynamicManifest;
|
||||
private List<String> _headScripts;
|
||||
private List<String> _footScripts;
|
||||
private IEnumerable<IResourceManifest> _manifests;
|
||||
|
||||
public ResourceManager(IEnumerable<IResourceManifest> resourceProviders) {
|
||||
ResourceProviders = resourceProviders;
|
||||
public ResourceManager(IEnumerable<Meta<IResourceManifestProvider, IFeatureMetadata>> resourceProviders) {
|
||||
_providers = resourceProviders;
|
||||
}
|
||||
|
||||
public IEnumerable<IResourceManifest> ResourceProviders { get; private set; }
|
||||
public IEnumerable<IResourceManifest> ResourceProviders {
|
||||
get {
|
||||
if (_manifests == null) {
|
||||
var builder = new ResourceManifestBuilder();
|
||||
foreach (var provider in _providers) {
|
||||
builder.Feature = provider.Metadata.Feature;
|
||||
provider.Value.BuildManifests(builder);
|
||||
}
|
||||
_manifests = builder.ResourceManifests;
|
||||
}
|
||||
return _manifests;
|
||||
}
|
||||
}
|
||||
|
||||
// represents resources that were required during the request but that had no matching resource provider
|
||||
public virtual ResourceManifest DynamicResources {
|
||||
get {
|
||||
return _dynamicResourceProvider.Value;
|
||||
return _dynamicManifest ?? (_dynamicManifest = new ResourceManifest());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,23 +121,21 @@ namespace Orchard.UI.Resources {
|
||||
// using the action.
|
||||
var name = settings.Name;
|
||||
var type = settings.Type;
|
||||
var minimumVersion = settings.MinimumVersion;
|
||||
var resource = (from p in ResourceProviders
|
||||
from r in p.GetResources(type)
|
||||
where r.Key == name && (String.IsNullOrEmpty(minimumVersion) || String.CompareOrdinal(r.Value.Version ?? "", minimumVersion) >= 0)
|
||||
where r.Key == name
|
||||
orderby r.Value.Version descending
|
||||
select r.Value).FirstOrDefault();
|
||||
if (resource == null && _dynamicResourceProvider.IsValueCreated) {
|
||||
resource = (from r in _dynamicResourceProvider.Value.GetResources(type)
|
||||
where r.Key == name && (String.IsNullOrEmpty(minimumVersion) || String.CompareOrdinal(r.Value.Version ?? "", minimumVersion) >= 0)
|
||||
if (resource == null && _dynamicManifest != null) {
|
||||
resource = (from r in _dynamicManifest.GetResources(type)
|
||||
where r.Key == name
|
||||
orderby r.Value.Version descending
|
||||
select r.Value).FirstOrDefault();
|
||||
}
|
||||
if (resource == null && settings.InlineDefinition != null) {
|
||||
// defining it on the fly
|
||||
resource = DynamicResources.DefineResource(type, name)
|
||||
.SetBasePath(settings.BasePath)
|
||||
.SetVersion(minimumVersion);
|
||||
.SetBasePath(settings.BasePath);
|
||||
settings.InlineDefinition(resource);
|
||||
}
|
||||
return resource;
|
||||
@@ -161,9 +172,7 @@ namespace Orchard.UI.Resources {
|
||||
foreach (var settings in GetRequiredResources(resourceType)) {
|
||||
var resource = FindResource(settings);
|
||||
if (resource == null) {
|
||||
throw String.IsNullOrEmpty(settings.MinimumVersion)
|
||||
? new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, "A '{1}' named '{0}' could not be found.", settings.Name, settings.Type))
|
||||
: new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, "A '{2}' named '{0}' with version greater than or equal to '{1}' could not be found.", settings.Name, settings.MinimumVersion, settings.Type));
|
||||
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, "A '{1}' named '{0}' could not be found.", settings.Name, settings.Type));
|
||||
}
|
||||
ExpandDependencies(resource, settings, allResources);
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@ using System.Web;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
|
||||
namespace Orchard.UI.Resources {
|
||||
public abstract class ResourceManifest : IResourceManifest {
|
||||
public class ResourceManifest : IResourceManifest {
|
||||
private string _basePath;
|
||||
private readonly IDictionary<string, IDictionary<string, ResourceDefinition>> _resources = new Dictionary<string, IDictionary<string, ResourceDefinition>>();
|
||||
|
||||
@@ -22,11 +22,11 @@ namespace Orchard.UI.Resources {
|
||||
return definition;
|
||||
}
|
||||
|
||||
protected ResourceDefinition DefineScript(string name) {
|
||||
public ResourceDefinition DefineScript(string name) {
|
||||
return DefineResource("script", name);
|
||||
}
|
||||
|
||||
protected ResourceDefinition DefineStyle(string name) {
|
||||
public ResourceDefinition DefineStyle(string name) {
|
||||
return DefineResource("stylesheet", name);
|
||||
}
|
||||
|
||||
@@ -48,6 +48,4 @@ namespace Orchard.UI.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
internal class DynamicResourceManifest : ResourceManifest {
|
||||
}
|
||||
}
|
||||
|
27
src/Orchard/UI/Resources/ResourceManifestBuilder.cs
Normal file
27
src/Orchard/UI/Resources/ResourceManifestBuilder.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
|
||||
namespace Orchard.UI.Resources {
|
||||
public class ResourceManifestBuilder {
|
||||
public ResourceManifestBuilder() {
|
||||
ResourceManifests = new HashSet<IResourceManifest>();
|
||||
}
|
||||
|
||||
public Feature Feature { get; set; }
|
||||
|
||||
internal HashSet<IResourceManifest> ResourceManifests { get; private set; }
|
||||
|
||||
public ResourceManifest Add() {
|
||||
var manifest = new ResourceManifest { Feature = Feature };
|
||||
ResourceManifests.Add(manifest);
|
||||
return manifest;
|
||||
}
|
||||
|
||||
public void Add(IResourceManifest manifest) {
|
||||
ResourceManifests.Add(manifest);
|
||||
}
|
||||
}
|
||||
}
|
@@ -9,7 +9,7 @@ using Microsoft.WebPages;
|
||||
|
||||
namespace Orchard.UI.Resources {
|
||||
public class ResourceRegister {
|
||||
private string _viewVirtualPath;
|
||||
private readonly string _viewVirtualPath;
|
||||
|
||||
public ResourceRegister(IViewDataContainer container, IResourceManager resourceManager, string resourceType) {
|
||||
var templateControl = container as TemplateControl;
|
||||
@@ -29,10 +29,6 @@ namespace Orchard.UI.Resources {
|
||||
protected IResourceManager ResourceManager { get; private set; }
|
||||
protected string ResourceType { get; private set; }
|
||||
|
||||
public RequireSettings Require(string resourceName) {
|
||||
return Require(resourceName, (string)null);
|
||||
}
|
||||
|
||||
public RequireSettings Include(string resourcePath) {
|
||||
if (resourcePath == null) {
|
||||
throw new ArgumentNullException("resourcePath");
|
||||
@@ -40,12 +36,11 @@ namespace Orchard.UI.Resources {
|
||||
return ResourceManager.Include(ResourceType, resourcePath, ResourceDefinition.GetBasePathFromViewPath(ResourceType, _viewVirtualPath));
|
||||
}
|
||||
|
||||
public virtual RequireSettings Require(string resourceName, string minimumVersion) {
|
||||
public virtual RequireSettings Require(string resourceName) {
|
||||
if (resourceName == null) {
|
||||
throw new ArgumentNullException("resourceName");
|
||||
}
|
||||
var settings = ResourceManager.Require(ResourceType, resourceName)
|
||||
.WithMinimumVersion(minimumVersion);
|
||||
var settings = ResourceManager.Require(ResourceType, resourceName);
|
||||
if (_viewVirtualPath != null) {
|
||||
settings.WithBasePath(ResourceDefinition.GetBasePathFromViewPath(ResourceType, _viewVirtualPath));
|
||||
}
|
||||
|
@@ -1,41 +0,0 @@
|
||||
ResourceManager Notes from Bertrand
|
||||
====================================
|
||||
|
||||
x No default parameters
|
||||
x Refactor to take over resource manager name
|
||||
Better interface pattern for defining resources
|
||||
x Script.Load API that is a view engine specific helper and that directs rendering within the using (using Idisposable pattern) to a buffer that can be rendered later.
|
||||
x Script.Require returns RequireSettings and has fluent api to add stuff later.
|
||||
x (.Include) When using the shortcut registration+require Script.Require("../script/foo.js") we resolve the url to an app-relative path and use that as the id.
|
||||
x If you want ot define a debug version in that case, just do a proper registration.
|
||||
To decide if the app is in debug mode, we look at a setting on the require, then at site setting mode and as a last resort on the compilation mode of the app.
|
||||
x Merge asap, then debug, then refactor.
|
||||
|
||||
Raw notes from Dave during meeting:
|
||||
====================================
|
||||
Script.RequireHead("TinyMce");
|
||||
Script.RequireFoot("TinyMce", new RequireSettings { DebugMode = false });
|
||||
|
||||
Script.Require("Foo", "1.4.2", d => {
|
||||
d.SetUrl("dfdf")
|
||||
});
|
||||
|
||||
Script.Require("~/modules/mymodule/scripts/foo.min?.js")
|
||||
Script.Require("/orchardlocal/dfdfd/foo.js")
|
||||
|
||||
// x no defualt params
|
||||
// better interface/pattern for defining resources
|
||||
// x Script.Load (view-engine specific helper required)
|
||||
// x Script.Require returns RequireSettings and has fluent api?
|
||||
// x (no) Add Script.RequireHead <-- or no due to fluent api
|
||||
// x Rename Localization resource manager
|
||||
// x (.Include) Require w/ app relative url means inline definitin of url only, resolved url is resource name
|
||||
// Site setting for debug mode true false or from web.config setting
|
||||
// x Moved all copies of jquery and jquery related scripts to a single location
|
||||
// Get minified versions of any external scripts that we don't currently have.
|
||||
// Integrate MS ajax min to build to minify our own js and css files?
|
||||
|
||||
|
||||
//using(Script.InlineTailScriptAfterEverythingElseOnThePageWithoutLambda()) {
|
||||
//}
|
||||
|
Reference in New Issue
Block a user