https://dev.azure.com/umbraco/D-Team%20Tracker/_workitems/edit/6586 - removed old OutgoingEditorModelEventAttribute and EditorModelEventManager

This commit is contained in:
Bjarke Berg
2020-05-20 08:39:27 +02:00
parent ca399c7e89
commit a8f5d21eeb
8 changed files with 22 additions and 137 deletions

View File

@@ -146,10 +146,11 @@ namespace Umbraco.Web.Editors
"redirectUrlManagementApiBaseUrl", _urlHelper.GetUmbracoApiServiceBaseUrl<RedirectUrlManagementController>(
controller => controller.GetEnableState())
},
{
"tourApiBaseUrl", _urlHelper.GetUmbracoApiServiceBaseUrl<TourController>(
controller => controller.GetTours())
},
//TODO reintroduce
// {
// "tourApiBaseUrl", _urlHelper.GetUmbracoApiServiceBaseUrl<TourController>(
// controller => controller.GetTours())
// },
{
"embedApiBaseUrl", _urlHelper.GetUmbracoApiServiceBaseUrl<RteEmbedController>(
controller => controller.GetEmbed("", 0, 0))

View File

@@ -303,7 +303,7 @@ namespace Umbraco.Web.Editors
/// <param name="id"></param>
/// <param name="culture"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[EnsureUserPermissionForContent("id")]
public ContentItemDisplay GetById(int id)
{
@@ -322,7 +322,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[EnsureUserPermissionForContent("id")]
public ContentItemDisplay GetById(Guid id)
{
@@ -342,7 +342,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[EnsureUserPermissionForContent("id")]
public ContentItemDisplay GetById(Udi id)
{
@@ -360,7 +360,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="contentTypeAlias"></param>
/// <param name="parentId"></param>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public ContentItemDisplay GetEmpty(string contentTypeAlias, int parentId)
{
var contentType = Services.ContentTypeService.Get(contentTypeAlias);
@@ -383,7 +383,7 @@ namespace Umbraco.Web.Editors
return mapped;
}
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public ContentItemDisplay GetEmpty(int blueprintId, int parentId)
{
var blueprint = Services.ContentService.GetBlueprintById(blueprintId);
@@ -608,7 +608,7 @@ namespace Umbraco.Web.Editors
/// <returns></returns>
[FileUploadCleanupFilter]
[ContentSaveValidation]
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public ContentItemDisplay PostSave([ModelBinder(typeof(ContentItemBinder))] ContentItemSave contentItem)
{
var contentItemDisplay = PostSaveInternal(
@@ -1629,7 +1629,7 @@ namespace Umbraco.Web.Editors
/// <param name="model">The content and variants to unpublish</param>
/// <returns></returns>
[EnsureUserPermissionForContent("model.Id", 'Z')]
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public ContentItemDisplay PostUnpublish(UnpublishContent model)
{
var foundContent = GetObjectFromRequest(() => Services.ContentService.GetById(model.Id));

View File

@@ -1,74 +0,0 @@
using System.Collections.Generic;
using System.Web.Http.Filters;
using Umbraco.Core.Dashboards;
using Umbraco.Core.Events;
using Umbraco.Web.Models.ContentEditing;
namespace Umbraco.Web.Editors
{
/// <summary>
/// Used to emit events for editor models in the back office
/// </summary>
public sealed class EditorModelEventManager
{
public static event TypedEventHandler<HttpActionExecutedContext, EditorModelEventArgs<ContentItemDisplay>> SendingContentModel;
public static event TypedEventHandler<HttpActionExecutedContext, EditorModelEventArgs<MediaItemDisplay>> SendingMediaModel;
public static event TypedEventHandler<HttpActionExecutedContext, EditorModelEventArgs<MemberDisplay>> SendingMemberModel;
public static event TypedEventHandler<HttpActionExecutedContext, EditorModelEventArgs<UserDisplay>> SendingUserModel;
public static event TypedEventHandler<HttpActionExecutedContext, EditorModelEventArgs<IEnumerable<Tab<IDashboardSlim>>>> SendingDashboardSlimModel;
private static void OnSendingDashboardModel(HttpActionExecutedContext sender, EditorModelEventArgs<IEnumerable<Tab<IDashboardSlim>>> e)
{
var handler = SendingDashboardSlimModel;
handler?.Invoke(sender, e);
}
private static void OnSendingUserModel(HttpActionExecutedContext sender, EditorModelEventArgs<UserDisplay> e)
{
var handler = SendingUserModel;
handler?.Invoke(sender, e);
}
private static void OnSendingContentModel(HttpActionExecutedContext sender, EditorModelEventArgs<ContentItemDisplay> e)
{
var handler = SendingContentModel;
handler?.Invoke(sender, e);
}
private static void OnSendingMediaModel(HttpActionExecutedContext sender, EditorModelEventArgs<MediaItemDisplay> e)
{
var handler = SendingMediaModel;
handler?.Invoke(sender, e);
}
private static void OnSendingMemberModel(HttpActionExecutedContext sender, EditorModelEventArgs<MemberDisplay> e)
{
var handler = SendingMemberModel;
handler?.Invoke(sender, e);
}
/// <summary>
/// Based on the type, emit's a specific event
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
internal static void EmitEvent(HttpActionExecutedContext sender, EditorModelEventArgs e)
{
if (e.Model is ContentItemDisplay)
OnSendingContentModel(sender, new EditorModelEventArgs<ContentItemDisplay>(e));
if (e.Model is MediaItemDisplay)
OnSendingMediaModel(sender, new EditorModelEventArgs<MediaItemDisplay>(e));
if (e.Model is MemberDisplay)
OnSendingMemberModel(sender, new EditorModelEventArgs<MemberDisplay>(e));
if (e.Model is UserDisplay)
OnSendingUserModel(sender, new EditorModelEventArgs<UserDisplay>(e));
if (e.Model is IEnumerable<Tab<IDashboardSlim>>)
OnSendingDashboardModel(sender, new EditorModelEventArgs<IEnumerable<Tab<IDashboardSlim>>>(e));
}
}
}

View File

@@ -96,7 +96,7 @@ namespace Umbraco.Web.Editors
/// <param name="contentTypeAlias"></param>
/// <param name="parentId"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public MediaItemDisplay GetEmpty(string contentTypeAlias, int parentId)
{
var contentType = Services.MediaTypeService.Get(contentTypeAlias);
@@ -144,7 +144,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[EnsureUserPermissionForMedia("id")]
public MediaItemDisplay GetById(int id)
{
@@ -164,7 +164,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[EnsureUserPermissionForMedia("id")]
public MediaItemDisplay GetById(Guid id)
{
@@ -184,7 +184,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[EnsureUserPermissionForMedia("id")]
public MediaItemDisplay GetById(Udi id)
{
@@ -475,7 +475,7 @@ namespace Umbraco.Web.Editors
/// <returns></returns>
[FileUploadCleanupFilter]
[MediaItemSaveValidation]
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public MediaItemDisplay PostSave(
[ModelBinder(typeof(MediaItemBinder))]
MediaItemSave contentItem)

View File

@@ -135,7 +135,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public MemberDisplay GetByKey(Guid key)
{
var foundMember = Services.MemberService.GetByKey(key);
@@ -151,7 +151,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="contentTypeAlias"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public MemberDisplay GetEmpty(string contentTypeAlias = null)
{
IMember emptyContent;
@@ -178,7 +178,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <returns></returns>
[FileUploadCleanupFilter]
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[MemberSaveValidation]
public async Task<MemberDisplay> PostSave(
[ModelBinder(typeof(MemberBinder))]

View File

@@ -199,7 +199,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
[AdminUsersAuthorize]
public UserDisplay GetById(int id)
{
@@ -521,7 +521,7 @@ namespace Umbraco.Web.Editors
/// </summary>
/// <param name="userSave"></param>
/// <returns></returns>
[OutgoingEditorModelEvent]
// [OutgoingEditorModelEvent] // TODO introduce when moved to .NET Core
public async Task<UserDisplay> PostSaveUser(UserSave userSave)
{
if (userSave == null) throw new ArgumentNullException("userSave");

View File

@@ -155,7 +155,6 @@
<Compile Include="WebAssets\CDF\ClientDependencyRuntimeMinifier.cs" />
<Compile Include="Models\NoNodesViewModel.cs" />
<Compile Include="Mvc\RenderNoContentController.cs" />
<Compile Include="Editors\EditorModelEventManager.cs" />
<Compile Include="Editors\Filters\ContentSaveModelValidator.cs" />
<Compile Include="Editors\Filters\DataTypeValidateAttribute.cs" />
<Compile Include="Editors\Filters\MediaSaveModelValidator.cs" />
@@ -399,7 +398,6 @@
<Compile Include="WebApi\Filters\DisableBrowserCacheAttribute.cs" />
<Compile Include="WebApi\Filters\EnableOverrideAuthorizationAttribute.cs" />
<Compile Include="WebApi\Filters\FilterGrouping.cs" />
<Compile Include="WebApi\Filters\OutgoingEditorModelEventAttribute.cs" />
<Compile Include="WebApi\Filters\OutgoingNoHyphenGuidFormatAttribute.cs" />
<Compile Include="WebApi\Filters\OverridableAuthorizationAttribute.cs" />
<Compile Include="WebApi\Filters\SetAngularAntiForgeryTokensAttribute.cs" />

View File

@@ -1,40 +0,0 @@
using System;
using System.Net.Http;
using System.Web.Http.Filters;
using Umbraco.Core;
using Umbraco.Web.Composing;
using Umbraco.Web.Editors;
using Umbraco.Web.Models.ContentEditing;
namespace Umbraco.Web.WebApi.Filters
{
/// <summary>
/// Used to emit outgoing editor model events
/// </summary>
internal sealed class OutgoingEditorModelEventAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext.Response == null) return;
var user = Current.UmbracoContext.Security.CurrentUser;
if (user == null) return;
if (actionExecutedContext.Response.Content is ObjectContent objectContent)
{
var model = objectContent.Value;
if (model != null)
{
var args = new EditorModelEventArgs(
model,
Current.UmbracoContext);
EditorModelEventManager.EmitEvent(actionExecutedContext, args);
objectContent.Value = args.Model;
}
}
base.OnActionExecuted(actionExecutedContext);
}
}
}