Added overload to Script/Style/IRM.Include() to allow specifing the debug+release url for common .min versions.

Converted built-in themes to use Include() instead of a manifest for simplification.

--HG--
branch : dev
This commit is contained in:
Dave Reed
2010-09-30 18:20:54 -07:00
parent a411d686bf
commit 974bc5c894
14 changed files with 45 additions and 63 deletions

View File

@@ -10,36 +10,9 @@ namespace Orchard.Themes {
manifest.DefineScript("Switchable").SetUrl("jquery.switchable.js").SetDependencies("jQuery"); manifest.DefineScript("Switchable").SetUrl("jquery.switchable.js").SetDependencies("jQuery");
manifest.DefineStyle("Switchable").SetUrl("jquery.switchable.css"); 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.
manifest.DefineStyle("Admin").SetUrl("~/modules/orchard.themes/styles/admin.css");
manifest.DefineStyle("Classic").SetUrl("~/themes/classic/styles/site.css");
manifest.DefineStyle("Classic_Blog").SetUrl("~/themes/classic/styles/blog.css");
manifest.DefineStyle("ClassicDark").SetUrl("~/themes/classicdark/styles/site.css");
manifest.DefineStyle("ClassicDark_Blog").SetUrl("~/themes/classicdark/styles/blog.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: include and define the min.js version too
// todo: move EasySlider to common location // todo: move EasySlider to common location, although it does not appear to be used anywhere right now
manifest.DefineScript("EasySlider").SetUrl("~/themes/contoso/scripts/easySlider.js").SetDependencies("jQuery"); manifest.DefineScript("EasySlider").SetUrl("~/themes/contoso/scripts/easySlider.js").SetDependencies("jQuery");
manifest.DefineStyle("Corporate").SetUrl("~/themes/corporate/styles/site.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");
manifest.DefineStyle("SafeMode").SetUrl("~/themes/safemode/styles/site.css");
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");
} }
} }
} }

View File

@@ -1,7 +1,7 @@
@using Orchard.UI.Resources @using Orchard.UI.Resources
@{ @{
Style.Require("Classic"); Style.Include("site.css");
Style.Require("Classic_Blog"); Style.Include("blog.css");
} }
<div id="wrapper"> <div id="wrapper">
@// HTML.Include will render a div with a class="user-display" @// HTML.Include will render a div with a class="user-display"

View File

@@ -1,7 +1,7 @@
@using Orchard.UI.Resources @using Orchard.UI.Resources
@{ @{
Style.Require("ClassicDark"); Style.Include("site.css");
Style.Require("ClassicDark_Blog"); Style.Include("blog.css");
} }
<div id="wrapper"> <div id="wrapper">
@// HTML.Include will render a div with a class="user-display" @// HTML.Include will render a div with a class="user-display"

View File

@@ -3,7 +3,7 @@
<%@ Import Namespace="Orchard.UI.Resources" %> <%@ Import Namespace="Orchard.UI.Resources" %>
<% <%
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Corporate" }); Html.Resolve<IResourceManager>().Include("stylesheet", "site.css", null);
Model.Zones.AddRenderPartial("header", "Header", Model); Model.Zones.AddRenderPartial("header", "Header", Model);
Model.Zones.AddRenderPartial("menu", "Menu", Model); Model.Zones.AddRenderPartial("menu", "Menu", Model);

View File

@@ -3,7 +3,7 @@
<%@ Import Namespace="Orchard.UI.Resources" %> <%@ Import Namespace="Orchard.UI.Resources" %>
<% <%
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Corporate" }); Html.Resolve<IResourceManager>().Include("stylesheet", "site.css", null);
Model.Zones.AddRenderPartial("header", "Header", Model); Model.Zones.AddRenderPartial("header", "Header", Model);
Model.Zones.AddRenderPartial("menu", "Menu", Model); Model.Zones.AddRenderPartial("menu", "Menu", Model);

View File

@@ -3,7 +3,7 @@
<%@ Import Namespace="Orchard.Blogs.Extensions"%> <%@ Import Namespace="Orchard.Blogs.Extensions"%>
<%@ Import Namespace="Orchard.UI.Resources" %> <%@ Import Namespace="Orchard.UI.Resources" %>
<% <%
Style.Require("Green_Archives"); Style.Include("site.css");
Script.Require("BlogsArchives"); Script.Require("BlogsArchives");
%> %>
<div class="archives"> <div class="archives">

View File

@@ -3,9 +3,9 @@
<%@ Import Namespace="Orchard.UI.Resources" %> <%@ Import Namespace="Orchard.UI.Resources" %>
<% <%
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Green_YUI" }); Html.Resolve<IResourceManager>().Include("stylesheet", "yui.css", null);
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Green" }); Html.Resolve<IResourceManager>().Include("stylesheet", "site.css", null);
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Green_Blog" }); Html.Resolve<IResourceManager>().Include("stylesheet", "blog.css", null);
%> %>
<script type="text/javascript"> <script type="text/javascript">

View File

@@ -3,9 +3,9 @@
<%@ Import Namespace="Orchard.UI.Resources" %> <%@ Import Namespace="Orchard.UI.Resources" %>
<% <%
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Green_YUI" }); Html.Resolve<IResourceManager>().Include("stylesheet", "yui.css", null);
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Green" }); Html.Resolve<IResourceManager>().Include("stylesheet", "site.css", null);
Html.Resolve<IResourceManager>().Require(new RequireSettings { Type = "stylesheet", Name = "Green_Blog" }); Html.Resolve<IResourceManager>().Include("stylesheet", "blog.css", null);
%> %>
<script type="text/javascript"> <script type="text/javascript">

View File

@@ -1,5 +1,4 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Search.ViewModels.SearchViewModel>" %> <%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Search.ViewModels.SearchViewModel>" %>
<% Style.Require("Green_Search"); %>
<h1 class="page-title"><%:Html.TitleForPage(T("Search").Text)%></h1><% <h1 class="page-title"><%:Html.TitleForPage(T("Search").Text)%></h1><%
if (!string.IsNullOrWhiteSpace(Model.Query)) { if (!string.IsNullOrWhiteSpace(Model.Query)) {
if (Model.PageOfResults.Count() == 0) { %> if (Model.PageOfResults.Count() == 0) { %>

View File

@@ -6,8 +6,9 @@
@using Orchard.ContentManagement @using Orchard.ContentManagement
@{ @{
Style.Require("TheAdmin"); Style.Include("site.css");
Script.Require("TheAdmin"); Script.Require("jQuery");
Script.Include("admin.js");
RegisterLink(new LinkEntry { Condition = "lte IE 8", Rel = "stylesheet", Type = "text/css", Href = Url.Content("../Styles/ie.css") }.AddAttribute("media", "screen, projection")); RegisterLink(new LinkEntry { Condition = "lte IE 8", Rel = "stylesheet", Type = "text/css", Href = Url.Content("../Styles/ie.css") }.AddAttribute("media", "screen, projection"));
RegisterLink(new LinkEntry { Condition = "lte IE 6", Rel = "stylesheet", Type = "text/css", Href = Url.Content("../Styles/ie6.css") }.AddAttribute("media", "screen, projection")); RegisterLink(new LinkEntry { Condition = "lte IE 6", Rel = "stylesheet", Type = "text/css", Href = Url.Content("../Styles/ie6.css") }.AddAttribute("media", "screen, projection"));
// these are just hacked together to fire existing partials... can change // these are just hacked together to fire existing partials... can change

View File

@@ -1,7 +1,7 @@
@using Orchard.UI.Resources @using Orchard.UI.Resources
@{ @{
Style.Require("Classic"); Style.Include("~/themes/Classic/styles/site.css");
Style.Require("Classic_Blog"); Style.Include("~/themes/Classic/styles/blog.css");
} }
<div id="wrapper"> <div id="wrapper">
@// HTML.Include will render a div with a class="user-display" @// HTML.Include will render a div with a class="user-display"

View File

@@ -13,8 +13,8 @@ namespace Orchard.UI.Resources {
ResourceManifest DynamicResources { get; } ResourceManifest DynamicResources { get; }
ResourceDefinition FindResource(RequireSettings settings); ResourceDefinition FindResource(RequireSettings settings);
void NotRequired(string resourceType, string resourceName); void NotRequired(string resourceType, string resourceName);
RequireSettings Include(string resourceType, string resourcePath); RequireSettings Include(string resourceType, string resourcePath, string resourceDebugPath);
RequireSettings Include(string resourceType, string resourcePath, string relativeFromPath); RequireSettings Include(string resourceType, string resourcePath, string resourceDebugPath, string relativeFromPath);
RequireSettings Require(string resourceType, string resourceName); RequireSettings Require(string resourceType, string resourceName);
void RegisterHeadScript(string script); void RegisterHeadScript(string script);
void RegisterFootScript(string script); void RegisterFootScript(string script);

View File

@@ -20,6 +20,17 @@ namespace Orchard.UI.Resources {
private List<String> _footScripts; private List<String> _footScripts;
private IEnumerable<IResourceManifest> _manifests; private IEnumerable<IResourceManifest> _manifests;
private static string FixPath(string resourcePath, string relativeFromPath) {
if (!String.IsNullOrEmpty(resourcePath) && !VirtualPathUtility.IsAbsolute(resourcePath) && !Uri.IsWellFormedUriString(resourcePath, UriKind.Absolute)) {
// appears to be a relative path (e.g. 'foo.js' or '../foo.js', not "/foo.js" or "http://..")
if (String.IsNullOrEmpty(relativeFromPath)) {
throw new InvalidOperationException("ResourcePath cannot be relative unless a base relative path is also provided.");
}
resourcePath = VirtualPathUtility.ToAbsolute(VirtualPathUtility.Combine(relativeFromPath, resourcePath));
}
return resourcePath;
}
public ResourceManager(IEnumerable<Meta<IResourceManifestProvider, IFeatureMetadata>> resourceProviders) { public ResourceManager(IEnumerable<Meta<IResourceManifestProvider, IFeatureMetadata>> resourceProviders) {
_providers = resourceProviders; _providers = resourceProviders;
} }
@@ -61,11 +72,11 @@ namespace Orchard.UI.Resources {
return settings; return settings;
} }
public virtual RequireSettings Include(string resourceType, string resourcePath) { public virtual RequireSettings Include(string resourceType, string resourcePath, string resourceDebugPath) {
return Include(resourceType, resourcePath, null); return Include(resourceType, resourcePath, null);
} }
public virtual RequireSettings Include(string resourceType, string resourcePath, string relativeFromPath) { public virtual RequireSettings Include(string resourceType, string resourcePath, string resourceDebugPath, string relativeFromPath) {
if (resourceType == null) { if (resourceType == null) {
throw new ArgumentNullException("resourceType"); throw new ArgumentNullException("resourceType");
} }
@@ -77,14 +88,9 @@ namespace Orchard.UI.Resources {
// ~/ ==> convert to absolute path (e.g. /orchard/..) // ~/ ==> convert to absolute path (e.g. /orchard/..)
resourcePath = VirtualPathUtility.ToAbsolute(resourcePath); resourcePath = VirtualPathUtility.ToAbsolute(resourcePath);
} }
else if (!VirtualPathUtility.IsAbsolute(resourcePath) && !Uri.IsWellFormedUriString(resourcePath, UriKind.Absolute)) { resourcePath = FixPath(resourcePath, relativeFromPath);
// appears to be a relative path (e.g. 'foo.js' or '../foo.js', not "/foo.js" or "http://..") resourceDebugPath = FixPath(resourceDebugPath, relativeFromPath);
if (String.IsNullOrEmpty(relativeFromPath)) { return Require(resourceType, resourcePath).Define(d => d.SetUrl(resourcePath, resourceDebugPath));
throw new InvalidOperationException("ResourcePath cannot be relative unless a base relative path is also provided.");
}
resourcePath = VirtualPathUtility.ToAbsolute(VirtualPathUtility.Combine(relativeFromPath, resourcePath));
}
return Require(resourceType, resourcePath).Define(d => d.SetUrl(resourcePath));
} }
public virtual void RegisterHeadScript(string script) { public virtual void RegisterHeadScript(string script) {

View File

@@ -1,10 +1,6 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.UI; using System.Web.UI;
using JetBrains.Annotations;
using Microsoft.WebPages; using Microsoft.WebPages;
namespace Orchard.UI.Resources { namespace Orchard.UI.Resources {
@@ -33,7 +29,14 @@ namespace Orchard.UI.Resources {
if (resourcePath == null) { if (resourcePath == null) {
throw new ArgumentNullException("resourcePath"); throw new ArgumentNullException("resourcePath");
} }
return ResourceManager.Include(ResourceType, resourcePath, ResourceDefinition.GetBasePathFromViewPath(ResourceType, _viewVirtualPath)); return ResourceManager.Include(ResourceType, resourcePath, null, ResourceDefinition.GetBasePathFromViewPath(ResourceType, _viewVirtualPath));
}
public RequireSettings Include(string resourceDebugPath, string resourcePath) {
if (resourcePath == null) {
throw new ArgumentNullException("resourcePath");
}
return ResourceManager.Include(ResourceType, resourcePath, resourceDebugPath, ResourceDefinition.GetBasePathFromViewPath(ResourceType, _viewVirtualPath));
} }
public virtual RequireSettings Require(string resourceName) { public virtual RequireSettings Require(string resourceName) {