using System.Web.Http.Filters;
using Umbraco.Core.Events;
using Umbraco.Web.Models.ContentEditing;
namespace Umbraco.Web.Editors
{
///
/// Used to emit events for editor models in the back office
///
public sealed class EditorModelEventManager
{
public static event TypedEventHandler> SendingContentModel;
public static event TypedEventHandler> SendingMediaModel;
public static event TypedEventHandler> SendingMemberModel;
public static event TypedEventHandler> SendingUserModel;
private static void OnSendingUserModel(HttpActionExecutedContext sender, EditorModelEventArgs e)
{
var handler = SendingUserModel;
if (handler != null) handler(sender, e);
}
private static void OnSendingContentModel(HttpActionExecutedContext sender, EditorModelEventArgs e)
{
var handler = SendingContentModel;
if (handler != null) handler(sender, e);
}
private static void OnSendingMediaModel(HttpActionExecutedContext sender, EditorModelEventArgs e)
{
var handler = SendingMediaModel;
if (handler != null) handler(sender, e);
}
private static void OnSendingMemberModel(HttpActionExecutedContext sender, EditorModelEventArgs e)
{
var handler = SendingMemberModel;
if (handler != null) handler(sender, e);
}
///
/// Based on the type, emit's a specific event
///
///
///
internal static void EmitEvent(HttpActionExecutedContext sender, EditorModelEventArgs e)
{
var contentItemDisplay = e.Model as ContentItemDisplay;
if (contentItemDisplay != null)
{
OnSendingContentModel(sender, new EditorModelEventArgs(e));
}
var mediaItemDisplay = e.Model as MediaItemDisplay;
if (mediaItemDisplay != null)
{
OnSendingMediaModel(sender, new EditorModelEventArgs(e));
}
var memberItemDisplay = e.Model as MemberDisplay;
if (memberItemDisplay != null)
{
OnSendingMemberModel(sender, new EditorModelEventArgs(e));
}
var userDisplay = e.Model as UserDisplay;
if (userDisplay != null)
{
OnSendingUserModel(sender, new EditorModelEventArgs(e));
}
}
}
}