Allows replacing the model with the outgoing event args

This commit is contained in:
Shannon
2018-12-11 12:53:15 +11:00
parent e91cf0039b
commit 9b52fa215f
2 changed files with 23 additions and 9 deletions

View File

@@ -4,9 +4,13 @@ namespace Umbraco.Web.Editors
{
public sealed class EditorModelEventArgs<T> : EditorModelEventArgs
{
private readonly EditorModelEventArgs _baseArgs;
private T _model;
public EditorModelEventArgs(EditorModelEventArgs baseArgs)
: base(baseArgs.Model, baseArgs.UmbracoContext)
{
_baseArgs = baseArgs;
Model = (T)baseArgs.Model;
}
@@ -16,7 +20,16 @@ namespace Umbraco.Web.Editors
Model = model;
}
public new T Model { get; private set; }
public new T Model
{
get => _model;
set
{
_model = value;
if (_baseArgs != null)
_baseArgs.Model = _model;
}
}
}
public class EditorModelEventArgs : EventArgs
@@ -27,7 +40,7 @@ namespace Umbraco.Web.Editors
UmbracoContext = umbracoContext;
}
public object Model { get; private set; }
public UmbracoContext UmbracoContext { get; private set; }
public object Model { get; set; }
public UmbracoContext UmbracoContext { get; }
}
}
}

View File

@@ -19,16 +19,17 @@ namespace Umbraco.Web.WebApi.Filters
var user = UmbracoContext.Current.Security.CurrentUser;
if (user == null) return;
var objectContent = actionExecutedContext.Response.Content as ObjectContent;
if (objectContent != null)
if (actionExecutedContext.Response.Content is ObjectContent objectContent)
{
var model = objectContent.Value;
if (model != null)
{
EditorModelEventManager.EmitEvent(actionExecutedContext, new EditorModelEventArgs(
(dynamic)model,
UmbracoContext.Current));
var args = new EditorModelEventArgs(
model,
UmbracoContext.Current);
EditorModelEventManager.EmitEvent(actionExecutedContext, args);
objectContent.Value = args.Model;
}
}