Introducing IModelsBuilderDashboardProvider

This commit is contained in:
Elitsa Marinovska
2021-02-18 08:27:35 +01:00
parent 74a67bf8bc
commit 4bccb995ec
6 changed files with 59 additions and 22 deletions

View File

@@ -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<ModelsBuilderDashboardController>(controller =>
controller.BuildModels());
}
}

View File

@@ -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<DisableModelsBuilderNotificationHandler>();
builder.Services.AddUnique<IModelsBuilderDashboardProvider, ModelsBuilderDashboardProvider>();
return builder;
}

View File

@@ -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
{
/// <summary>
/// Extension methods for <see cref="IUmbracoBuilder"/> for the common Umbraco functionality
@@ -126,15 +123,8 @@ namespace Umbraco.ModelsBuilder.Embedded.DependencyInjection
}
});
return builder;
}
builder.Services.AddUnique<IModelsBuilderDashboardProvider, NoopModelsBuilderDashboardProvider>();
/// <summary>
/// Can be called if using an external models builder to remove the embedded models builder controller features
/// </summary>
public static IUmbracoBuilder DisableModelsBuilderControllers(this IUmbracoBuilder builder)
{
builder.Services.AddSingleton<DisableModelsBuilderNotificationHandler>();
return builder;
}

View File

@@ -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();
}
}

View File

@@ -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
{
/// <summary>
@@ -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<ModelsBuilderSettings> config,
IShortStringHelper shortStringHelper,
LinkGenerator linkGenerator)
IModelsBuilderDashboardProvider modelsBuilderDashboardProvider)
{
_config = config.Value;
_shortStringHelper = shortStringHelper;
_shortStringHelper = shortStringHelper;
_linkGenerator = linkGenerator;
_modelsBuilderDashboardProvider = modelsBuilderDashboardProvider;
}
/// <summary>
@@ -85,7 +83,7 @@ namespace Umbraco.ModelsBuilder.Embedded
throw new ArgumentException("Invalid umbracoPlugins");
}
umbracoUrls["modelsBuilderBaseUrl"] = _linkGenerator.GetUmbracoApiServiceBaseUrl<ModelsBuilderDashboardController>(controller => controller.BuildModels());
umbracoUrls["modelsBuilderBaseUrl"] = _modelsBuilderDashboardProvider.GetUrl();
umbracoPlugins["modelsBuilder"] = GetModelsBuilderSettings();
}

View File

@@ -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;
}
}