Completes: U4-3230 Combine/Minify manifest files to one request with CDF

This commit is contained in:
Shannon
2013-11-28 10:37:08 +11:00
parent 413248a126
commit c86f52d5ea
4 changed files with 73 additions and 50 deletions

View File

@@ -1,10 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Web;
using ClientDependency.Core;
using ClientDependency.Core.Config;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Umbraco.Core.IO;
@@ -17,7 +14,7 @@ namespace Umbraco.Web.UI.JavaScript
/// Reads from all defined manifests and ensures that any of their initialization is output with the
/// main Umbraco initialization output.
/// </summary>
internal class JsInitialization
internal class JsInitialization : AssetInitialization
{
private readonly ManifestParser _parser;
@@ -54,55 +51,13 @@ namespace Umbraco.Web.UI.JavaScript
}
//now we can optimize if in release mode
umbracoInit = CheckIfReleaseAndOptimized(umbracoInit);
umbracoInit = CheckIfReleaseAndOptimized(umbracoInit, ClientDependencyType.Javascript);
return ParseMain(
umbracoInit.ToString(),
IOHelper.ResolveUrl(SystemDirectories.Umbraco));
}
/// <summary>
/// This will check if we're in release mode, if so it will create a CDF URL to load them all in at once
/// </summary>
/// <param name="fileRefs"></param>
/// <returns></returns>
internal JArray CheckIfReleaseAndOptimized(JArray fileRefs)
{
if (HttpContext.Current != null && HttpContext.Current.IsDebuggingEnabled == false)
{
return GetOptimized(fileRefs);
}
return fileRefs;
}
internal JArray GetOptimized(JArray fileRefs)
{
var depenencies = fileRefs.Select(x =>
{
var asString = x.ToString();
if (asString.StartsWith("/") == false)
{
if (Uri.IsWellFormedUriString(asString, UriKind.Relative))
{
var absolute = new Uri(HttpContext.Current.Request.Url, asString);
return new JavascriptFile(absolute.AbsolutePath);
}
return null;
}
return new JavascriptFile(asString);
}).Where(x => x != null);
var urls = ClientDependencySettings.Instance.DefaultCompositeFileProcessingProvider.ProcessCompositeList(
depenencies, ClientDependencyType.Javascript, new HttpContextWrapper(HttpContext.Current));
var result = new JArray();
foreach (var u in urls)
{
result.Add(u);
}
return result;
}
/// <summary>
/// Returns the default config as a JArray
/// </summary>