From 755b52e1360ef4eb88a1884babec2f3eb82bb0c1 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Tue, 17 Mar 2020 15:33:40 +0100 Subject: [PATCH] Abstracting more CDF methods --- src/Umbraco.Core/Runtime/IRuntimeMinifier.cs | 3 ++ .../Editors/BackOfficeController.cs | 14 ++--- .../CDF/ClientDependencyRuntimeMinifier.cs | 52 ++++++++++++++++++- 3 files changed, 57 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Core/Runtime/IRuntimeMinifier.cs b/src/Umbraco.Core/Runtime/IRuntimeMinifier.cs index bf5a4bc6a1..f11720ab39 100644 --- a/src/Umbraco.Core/Runtime/IRuntimeMinifier.cs +++ b/src/Umbraco.Core/Runtime/IRuntimeMinifier.cs @@ -25,5 +25,8 @@ namespace Umbraco.Core.Runtime IEnumerable GetAssetPaths(AssetType assetType, List attributes); string Minify(string src); + void Reset(); + string GetScriptForBackOffice(); + IEnumerable GetAssetList(); } } diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs index 9287cab628..a1b9f12524 100644 --- a/src/Umbraco.Web/Editors/BackOfficeController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeController.cs @@ -243,12 +243,7 @@ namespace Umbraco.Web.Editors [OutputCache(Order = 1, VaryByParam = "none", Location = OutputCacheLocation.Server, Duration = 5000)] public JavaScriptResult Application() { - var initJs = new JsInitialization(_manifestParser, _runtimeMinifier); - var initCss = new CssInitialization(_manifestParser, _runtimeMinifier); - - var files = initJs.OptimizeBackOfficeScriptFiles(HttpContext, JsInitialization.GetDefaultInitialization()); - var result = JsInitialization.GetJavascriptInitialization(HttpContext, files, "umbraco", GlobalSettings, _ioHelper); - result += initCss.GetStylesheetInitialization(HttpContext); + var result = _runtimeMinifier.GetScriptForBackOffice(); return JavaScript(result); } @@ -263,11 +258,8 @@ namespace Umbraco.Web.Editors { JArray GetAssetList() { - var initJs = new JsInitialization(_manifestParser, _runtimeMinifier); - var initCss = new CssInitialization(_manifestParser, _runtimeMinifier); - var assets = new List(); - assets.AddRange(initJs.OptimizeBackOfficeScriptFiles(HttpContext, Enumerable.Empty())); - assets.AddRange(initCss.GetStylesheetFiles(HttpContext)); + var assets = _runtimeMinifier.GetAssetList(); + return new JArray(assets); } diff --git a/src/Umbraco.Web/JavaScript/CDF/ClientDependencyRuntimeMinifier.cs b/src/Umbraco.Web/JavaScript/CDF/ClientDependencyRuntimeMinifier.cs index 673f50ce68..a2f61aaf72 100644 --- a/src/Umbraco.Web/JavaScript/CDF/ClientDependencyRuntimeMinifier.cs +++ b/src/Umbraco.Web/JavaScript/CDF/ClientDependencyRuntimeMinifier.cs @@ -1,11 +1,16 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Web.Mvc; using ClientDependency.Core; using ClientDependency.Core.CompositeFiles; using ClientDependency.Core.Config; using Umbraco.Core.Assets; +using Umbraco.Core.Configuration; +using Umbraco.Core.IO; +using Umbraco.Core.Logging; +using Umbraco.Core.Manifest; using Umbraco.Core.Runtime; namespace Umbraco.Web.JavaScript.CDF @@ -13,13 +18,23 @@ namespace Umbraco.Web.JavaScript.CDF public class ClientDependencyRuntimeMinifier : IRuntimeMinifier { private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IIOHelper _ioHelper; + private readonly ILogger _logger; + private readonly IUmbracoVersion _umbracoVersion; + private readonly IManifestParser _manifestParser; + private readonly IGlobalSettings _globalSettings; private readonly HtmlHelper _htmlHelper; public string GetHashValue => ClientDependencySettings.Instance.Version.ToString(); - public ClientDependencyRuntimeMinifier(IHttpContextAccessor httpContextAccessor) + public ClientDependencyRuntimeMinifier(IHttpContextAccessor httpContextAccessor, IIOHelper ioHelper, ILogger logger, IUmbracoVersion umbracoVersion, IManifestParser manifestParser, IGlobalSettings globalSettings) { _httpContextAccessor = httpContextAccessor; + _ioHelper = ioHelper; + _logger = logger; + _umbracoVersion = umbracoVersion; + _manifestParser = manifestParser; + _globalSettings = globalSettings; _htmlHelper = new HtmlHelper(new ViewContext(), new ViewPage()); } @@ -79,6 +94,41 @@ namespace Umbraco.Web.JavaScript.CDF return jsMinifier.Minify(reader); } + public void Reset() + { + // Update ClientDependency version + var clientDependencyConfig = new ClientDependencyConfiguration(_logger, _ioHelper); + var clientDependencyUpdated = clientDependencyConfig.UpdateVersionNumber( + _umbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); + // Delete ClientDependency temp directories to make sure we get fresh caches + var clientDependencyTempFilesDeleted = clientDependencyConfig.ClearTempFiles(_httpContextAccessor.HttpContext); + } + + public string GetScriptForBackOffice() + { + var initJs = new JsInitialization(_manifestParser, this); + var initCss = new CssInitialization(_manifestParser, this); + + var httpContext = _httpContextAccessor.GetRequiredHttpContext(); + var files = initJs.OptimizeBackOfficeScriptFiles(httpContext, JsInitialization.GetDefaultInitialization()); + var result = JavaScriptHelper.GetJavascriptInitialization(httpContext, files, "umbraco", _globalSettings, _ioHelper); + result += initCss.GetStylesheetInitialization(httpContext); + + return result; + } + + public IEnumerable GetAssetList() + { + var initJs = new JsInitialization(_manifestParser, this); + var initCss = new CssInitialization(_manifestParser, this); + var assets = new List(); + var httpContext = _httpContextAccessor.GetRequiredHttpContext(); + assets.AddRange(initJs.OptimizeBackOfficeScriptFiles(httpContext, Enumerable.Empty())); + assets.AddRange(initCss.GetStylesheetFiles(httpContext)); + + return assets; + } + private ClientDependencyType MapDependencyTypeValue(AssetType type) { switch (type)