Added ability to Script/Style/ResourceManager.Include() with just a plain url.

--HG--
branch : dev
This commit is contained in:
Dave Reed
2010-09-21 15:32:37 -07:00
parent 847c6df8c8
commit 9c3dd779df
4 changed files with 47 additions and 7 deletions

View File

@@ -2,7 +2,7 @@
@{
Script.Require("jQuery", "1.4.2");
Script.Require("ShapesBase");
Style.Require("SafeMode").Define(d => d.SetUrl("site.css"));
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"));
}
<div id="header">

View File

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

View File

@@ -4,6 +4,8 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Hosting;
using JetBrains.Annotations;
namespace Orchard.UI.Resources {
@@ -29,7 +31,7 @@ namespace Orchard.UI.Resources {
}
}
public virtual RequireSettings Require(string resourceType, [NotNull] string resourceName) {
public virtual RequireSettings Require(string resourceType, string resourceName) {
if (resourceType == null) {
throw new ArgumentNullException("resourceType");
}
@@ -46,6 +48,32 @@ namespace Orchard.UI.Resources {
return settings;
}
public virtual RequireSettings Include(string resourceType, string resourcePath) {
return Include(resourceType, resourcePath, null);
}
public virtual RequireSettings Include(string resourceType, string resourcePath, string relativeFromPath) {
if (resourceType == null) {
throw new ArgumentNullException("resourceType");
}
if (resourcePath == null) {
throw new ArgumentNullException("resourcePath");
}
if (VirtualPathUtility.IsAppRelative(resourcePath)) {
// ~/ ==> convert to absolute path (e.g. /orchard/..)
resourcePath = VirtualPathUtility.ToAbsolute(resourcePath);
}
else if (!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 Require(resourceType, resourcePath).Define(d => d.SetUrl(resourcePath));
}
public virtual void RegisterHeadScript(string script) {
if (_headScripts == null) {
_headScripts = new List<string>();

View File

@@ -9,17 +9,17 @@ using Microsoft.WebPages;
namespace Orchard.UI.Resources {
public class ResourceRegister {
private string _baseVirtualPath;
private string _viewVirtualPath;
public ResourceRegister(IViewDataContainer container, IResourceManager resourceManager, string resourceType) {
var templateControl = container as TemplateControl;
if (templateControl != null) {
_baseVirtualPath = templateControl.AppRelativeVirtualPath;
_viewVirtualPath = templateControl.AppRelativeVirtualPath;
}
else {
var webPage = container as WebPageBase;
if (webPage != null) {
_baseVirtualPath = webPage.VirtualPath;
_viewVirtualPath = webPage.VirtualPath;
}
}
ResourceManager = resourceManager;
@@ -33,11 +33,21 @@ namespace Orchard.UI.Resources {
return Require(resourceName, (string)null);
}
public RequireSettings Include(string resourcePath) {
if (resourcePath == null) {
throw new ArgumentNullException("resourcePath");
}
return ResourceManager.Include(ResourceType, resourcePath, ResourceDefinition.GetBasePathFromViewPath(ResourceType, _viewVirtualPath));
}
public virtual RequireSettings Require(string resourceName, string minimumVersion) {
if (resourceName == null) {
throw new ArgumentNullException("resourceName");
}
var settings = ResourceManager.Require(ResourceType, resourceName)
.WithMinimumVersion(minimumVersion);
if (_baseVirtualPath != null) {
settings.WithBasePath(ResourceDefinition.GetBasePathFromViewPath(ResourceType, _baseVirtualPath));
if (_viewVirtualPath != null) {
settings.WithBasePath(ResourceDefinition.GetBasePathFromViewPath(ResourceType, _viewVirtualPath));
}
return settings;
}