Merge branch 'v9/dev' into v9/task/more-flexible-startup
# Conflicts: # src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@@ -54,18 +54,18 @@ namespace Umbraco.Extensions
|
||||
/// <param name="html"></param>
|
||||
/// <param name="externalLogins"></param>
|
||||
/// <returns></returns>
|
||||
public static Task<IHtmlContent> AngularValueExternalLoginInfoScriptAsync(this IHtmlHelper html,
|
||||
public static async Task<IHtmlContent> AngularValueExternalLoginInfoScriptAsync(this IHtmlHelper html,
|
||||
IBackOfficeExternalLoginProviders externalLogins,
|
||||
BackOfficeExternalLoginProviderErrors externalLoginErrors)
|
||||
{
|
||||
var providers = externalLogins.GetBackOfficeProviders();
|
||||
var providers = await externalLogins.GetBackOfficeProvidersAsync();
|
||||
|
||||
var loginProviders = providers
|
||||
.Select(p => new
|
||||
{
|
||||
authType = p.AuthenticationType,
|
||||
caption = p.Name,
|
||||
properties = p.Options
|
||||
authType = p.ExternalLoginProvider.AuthenticationType,
|
||||
caption = p.AuthenticationScheme.DisplayName,
|
||||
properties = p.ExternalLoginProvider.Options
|
||||
})
|
||||
.ToArray();
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace Umbraco.Extensions
|
||||
sb.AppendLine(JsonConvert.SerializeObject(loginProviders));
|
||||
sb.AppendLine(@"});");
|
||||
|
||||
return Task.FromResult(html.Raw(sb.ToString()));
|
||||
return html.Raw(sb.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Umbraco.Cms.Core.Security;
|
||||
|
||||
namespace Umbraco.Extensions
|
||||
@@ -10,5 +12,6 @@ namespace Umbraco.Extensions
|
||||
|
||||
public static BackOfficeExternalLoginProviderErrors GetExternalLoginProviderErrors(this HttpContext httpContext)
|
||||
=> httpContext.Items[nameof(BackOfficeExternalLoginProviderErrors)] as BackOfficeExternalLoginProviderErrors;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.Hosting;
|
||||
using Umbraco.Cms.Core.Manifest;
|
||||
using Umbraco.Cms.Core.WebAssets;
|
||||
using Umbraco.Cms.Infrastructure.WebAssets;
|
||||
|
||||
namespace Umbraco.Extensions
|
||||
{
|
||||
public static class RuntimeMinifierExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns the JavaScript to load the back office's assets
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static async Task<string> GetScriptForLoadingBackOfficeAsync(
|
||||
this IRuntimeMinifier minifier,
|
||||
GlobalSettings globalSettings,
|
||||
IHostingEnvironment hostingEnvironment,
|
||||
IManifestParser manifestParser)
|
||||
{
|
||||
var files = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
foreach(var file in await minifier.GetJsAssetPathsAsync(BackOfficeWebAssets.UmbracoCoreJsBundleName))
|
||||
{
|
||||
files.Add(file);
|
||||
}
|
||||
|
||||
foreach (var file in await minifier.GetJsAssetPathsAsync(BackOfficeWebAssets.UmbracoExtensionsJsBundleName))
|
||||
{
|
||||
files.Add(file);
|
||||
}
|
||||
|
||||
// process the independent bundles
|
||||
if (manifestParser.CombinedManifest.Scripts.TryGetValue(BundleOptions.Independent, out IReadOnlyList<ManifestAssets> independentManifestAssetsList))
|
||||
{
|
||||
foreach (ManifestAssets manifestAssets in independentManifestAssetsList)
|
||||
{
|
||||
var bundleName = BackOfficeWebAssets.GetIndependentPackageBundleName(manifestAssets, AssetType.Javascript);
|
||||
foreach(var asset in await minifier.GetJsAssetPathsAsync(bundleName))
|
||||
{
|
||||
files.Add(asset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// process the "None" bundles, meaning we'll just render the script as-is
|
||||
foreach (var asset in await minifier.GetJsAssetPathsAsync(BackOfficeWebAssets.UmbracoNonOptimizedPackageJsBundleName))
|
||||
{
|
||||
files.Add(asset);
|
||||
}
|
||||
|
||||
var result = BackOfficeJavaScriptInitializer.GetJavascriptInitialization(
|
||||
files,
|
||||
"umbraco",
|
||||
globalSettings,
|
||||
hostingEnvironment);
|
||||
|
||||
result += await GetStylesheetInitializationAsync(minifier, manifestParser);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the back office css bundle paths and formats a JS call to lazy load them
|
||||
/// </summary>
|
||||
private static async Task<string> GetStylesheetInitializationAsync(
|
||||
IRuntimeMinifier minifier,
|
||||
IManifestParser manifestParser)
|
||||
{
|
||||
var files = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
foreach(var file in await minifier.GetCssAssetPathsAsync(BackOfficeWebAssets.UmbracoCssBundleName))
|
||||
{
|
||||
files.Add(file);
|
||||
}
|
||||
|
||||
// process the independent bundles
|
||||
if (manifestParser.CombinedManifest.Stylesheets.TryGetValue(BundleOptions.Independent, out IReadOnlyList<ManifestAssets> independentManifestAssetsList))
|
||||
{
|
||||
foreach (ManifestAssets manifestAssets in independentManifestAssetsList)
|
||||
{
|
||||
var bundleName = BackOfficeWebAssets.GetIndependentPackageBundleName(manifestAssets, AssetType.Css);
|
||||
foreach (var asset in await minifier.GetCssAssetPathsAsync(bundleName))
|
||||
{
|
||||
files.Add(asset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// process the "None" bundles, meaning we'll just render the script as-is
|
||||
foreach (var asset in await minifier.GetCssAssetPathsAsync(BackOfficeWebAssets.UmbracoNonOptimizedPackageCssBundleName))
|
||||
{
|
||||
files.Add(asset);
|
||||
}
|
||||
|
||||
var sb = new StringBuilder();
|
||||
foreach (string file in files)
|
||||
{
|
||||
sb.AppendFormat("{0}LazyLoad.css('{1}');", Environment.NewLine, file);
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ using Umbraco.Cms.Web.BackOffice.Middleware;
|
||||
using Umbraco.Cms.Web.BackOffice.Routing;
|
||||
using Umbraco.Cms.Web.Common.ApplicationBuilder;
|
||||
using Umbraco.Cms.Web.Common.Extensions;
|
||||
using Umbraco.Cms.Web.Common.Middleware;
|
||||
|
||||
namespace Umbraco.Extensions
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user