diff --git a/src/Umbraco.Web.BackOffice/ModelsBuilder/ModelsBuilderDashboardProvider.cs b/src/Umbraco.Web.BackOffice/ModelsBuilder/ModelsBuilderDashboardProvider.cs new file mode 100644 index 0000000000..f84982a04c --- /dev/null +++ b/src/Umbraco.Web.BackOffice/ModelsBuilder/ModelsBuilderDashboardProvider.cs @@ -0,0 +1,20 @@ +using Microsoft.AspNetCore.Routing; +using Umbraco.Extensions; +using Umbraco.Web.Common.ModelsBuilder; + +namespace Umbraco.Web.BackOffice.ModelsBuilder +{ + public class ModelsBuilderDashboardProvider: IModelsBuilderDashboardProvider + { + private readonly LinkGenerator _linkGenerator; + + public ModelsBuilderDashboardProvider(LinkGenerator linkGenerator) + { + _linkGenerator = linkGenerator; + } + + public string GetUrl() => + _linkGenerator.GetUmbracoApiServiceBaseUrl(controller => + controller.BuildModels()); + } +} diff --git a/src/Umbraco.Web.BackOffice/ModelsBuilder/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.BackOffice/ModelsBuilder/UmbracoBuilderExtensions.cs index d5c89a9938..7c35d1b845 100644 --- a/src/Umbraco.Web.BackOffice/ModelsBuilder/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.BackOffice/ModelsBuilder/UmbracoBuilderExtensions.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.DependencyInjection; using Umbraco.Core.DependencyInjection; +using Umbraco.Web.Common.ModelsBuilder; namespace Umbraco.Web.BackOffice.ModelsBuilder { @@ -14,6 +15,7 @@ namespace Umbraco.Web.BackOffice.ModelsBuilder public static IUmbracoBuilder DisableModelsBuilderControllers(this IUmbracoBuilder builder) { builder.Services.AddSingleton(); + builder.Services.AddUnique(); return builder; } diff --git a/src/Umbraco.ModelsBuilder.Embedded/DependencyInjection/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/ModelsBuilder/DependencyInjection/UmbracoBuilderExtensions.cs similarity index 93% rename from src/Umbraco.ModelsBuilder.Embedded/DependencyInjection/UmbracoBuilderExtensions.cs rename to src/Umbraco.Web.Common/ModelsBuilder/DependencyInjection/UmbracoBuilderExtensions.cs index 852cde55fc..068518da64 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/DependencyInjection/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/ModelsBuilder/DependencyInjection/UmbracoBuilderExtensions.cs @@ -1,17 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Linq; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; -using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.DependencyInjection; using Umbraco.Core.Events; using Umbraco.Core.Models.PublishedContent; -using Umbraco.ModelsBuilder.Embedded.Building; +using Umbraco.Infrastructure.ModelsBuilder; +using Umbraco.Infrastructure.ModelsBuilder.Building; using Umbraco.Web.Common.ModelBinders; using Umbraco.Web.WebAssets; @@ -73,7 +70,7 @@ using Umbraco.Web.WebAssets; * graph includes all of the above mentioned services, all the way up to the RazorProjectEngine and it's LazyMetadataReferenceFeature. */ -namespace Umbraco.ModelsBuilder.Embedded.DependencyInjection +namespace Umbraco.Web.Common.ModelsBuilder.DependencyInjection { /// /// Extension methods for for the common Umbraco functionality @@ -126,15 +123,8 @@ namespace Umbraco.ModelsBuilder.Embedded.DependencyInjection } }); - return builder; - } + builder.Services.AddUnique(); - /// - /// Can be called if using an external models builder to remove the embedded models builder controller features - /// - public static IUmbracoBuilder DisableModelsBuilderControllers(this IUmbracoBuilder builder) - { - builder.Services.AddSingleton(); return builder; } diff --git a/src/Umbraco.Web.Common/ModelsBuilder/IModelsBuilderDashboardProvider.cs b/src/Umbraco.Web.Common/ModelsBuilder/IModelsBuilderDashboardProvider.cs new file mode 100644 index 0000000000..47af1d2a94 --- /dev/null +++ b/src/Umbraco.Web.Common/ModelsBuilder/IModelsBuilderDashboardProvider.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Umbraco.Web.Routing; + +namespace Umbraco.Web.Common.ModelsBuilder +{ + public interface IModelsBuilderDashboardProvider + { + string GetUrl(); + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/ModelsBuilderNotificationHandler.cs b/src/Umbraco.Web.Common/ModelsBuilder/ModelsBuilderNotificationHandler.cs similarity index 94% rename from src/Umbraco.ModelsBuilder.Embedded/ModelsBuilderNotificationHandler.cs rename to src/Umbraco.Web.Common/ModelsBuilder/ModelsBuilderNotificationHandler.cs index 0d6d1cc668..d612b9040c 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/ModelsBuilderNotificationHandler.cs +++ b/src/Umbraco.Web.Common/ModelsBuilder/ModelsBuilderNotificationHandler.cs @@ -11,12 +11,11 @@ using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; using Umbraco.Core.Strings; -using Umbraco.Extensions; -using Umbraco.ModelsBuilder.Embedded.BackOffice; +using Umbraco.Infrastructure.ModelsBuilder; using Umbraco.Web.Common.ModelBinders; using Umbraco.Web.WebAssets; -namespace Umbraco.ModelsBuilder.Embedded +namespace Umbraco.Web.Common.ModelsBuilder { /// @@ -26,17 +25,16 @@ namespace Umbraco.ModelsBuilder.Embedded { private readonly ModelsBuilderSettings _config; private readonly IShortStringHelper _shortStringHelper; - private readonly LinkGenerator _linkGenerator; + private readonly IModelsBuilderDashboardProvider _modelsBuilderDashboardProvider; public ModelsBuilderNotificationHandler( IOptions config, IShortStringHelper shortStringHelper, - LinkGenerator linkGenerator) + IModelsBuilderDashboardProvider modelsBuilderDashboardProvider) { _config = config.Value; _shortStringHelper = shortStringHelper; - _shortStringHelper = shortStringHelper; - _linkGenerator = linkGenerator; + _modelsBuilderDashboardProvider = modelsBuilderDashboardProvider; } /// @@ -85,7 +83,7 @@ namespace Umbraco.ModelsBuilder.Embedded throw new ArgumentException("Invalid umbracoPlugins"); } - umbracoUrls["modelsBuilderBaseUrl"] = _linkGenerator.GetUmbracoApiServiceBaseUrl(controller => controller.BuildModels()); + umbracoUrls["modelsBuilderBaseUrl"] = _modelsBuilderDashboardProvider.GetUrl(); umbracoPlugins["modelsBuilder"] = GetModelsBuilderSettings(); } diff --git a/src/Umbraco.Web.Common/ModelsBuilder/NoopModelsBuilderDashboardProvider.cs b/src/Umbraco.Web.Common/ModelsBuilder/NoopModelsBuilderDashboardProvider.cs new file mode 100644 index 0000000000..7c5a0daabf --- /dev/null +++ b/src/Umbraco.Web.Common/ModelsBuilder/NoopModelsBuilderDashboardProvider.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Umbraco.Web.Common.ModelsBuilder +{ + public class NoopModelsBuilderDashboardProvider: IModelsBuilderDashboardProvider + { + public string GetUrl() => string.Empty; + } +}