diff --git a/src/Umbraco.Core/Events/DeleteEventArgs.cs b/src/Umbraco.Core/Events/DeleteEventArgs.cs index d0a4f024e1..188ce70bd1 100644 --- a/src/Umbraco.Core/Events/DeleteEventArgs.cs +++ b/src/Umbraco.Core/Events/DeleteEventArgs.cs @@ -99,7 +99,8 @@ namespace Umbraco.Core.Events /// public IEnumerable DeletedEntities { - get { return EventObject; } + get { return EventObject; } + internal set { EventObject = value; } } /// diff --git a/src/Umbraco.Core/Services/ContentTypeService.cs b/src/Umbraco.Core/Services/ContentTypeService.cs index 1b6735153d..14ba9f30bf 100644 --- a/src/Umbraco.Core/Services/ContentTypeService.cs +++ b/src/Umbraco.Core/Services/ContentTypeService.cs @@ -54,7 +54,8 @@ namespace Umbraco.Core.Services CreatorId = userId }; - if (uow.Events.DispatchCancelable(SavingContentTypeContainer, this, new SaveEventArgs(container, evtMsgs))) + var saveEventArgs = new SaveEventArgs(container, evtMsgs); + if (uow.Events.DispatchCancelable(SavingContentTypeContainer, this, saveEventArgs)) { uow.Commit(); return Attempt.Fail(new OperationStatus(container, OperationStatusType.FailedCancelledByEvent, evtMsgs)); @@ -62,8 +63,8 @@ namespace Umbraco.Core.Services repo.AddOrUpdate(container); uow.Commit(); - - uow.Events.Dispatch(SavedContentTypeContainer, this, new SaveEventArgs(container, evtMsgs), "SavedContentTypeContainer"); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedContentTypeContainer, this, saveEventArgs, "SavedContentTypeContainer"); //TODO: Audit trail ? return Attempt.Succeed(new OperationStatus(container, OperationStatusType.Success, evtMsgs)); @@ -92,7 +93,8 @@ namespace Umbraco.Core.Services CreatorId = userId }; - if (uow.Events.DispatchCancelable(SavingMediaTypeContainer, this, new SaveEventArgs(container, evtMsgs))) + var saveEventArgs = new SaveEventArgs(container, evtMsgs); + if (uow.Events.DispatchCancelable(SavingMediaTypeContainer, this, saveEventArgs)) { uow.Commit(); return Attempt.Fail(new OperationStatus(container, OperationStatusType.FailedCancelledByEvent, evtMsgs)); @@ -100,8 +102,8 @@ namespace Umbraco.Core.Services repo.AddOrUpdate(container); uow.Commit(); - - uow.Events.Dispatch(SavedMediaTypeContainer, this, new SaveEventArgs(container, evtMsgs), "SavedMediaTypeContainer"); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedMediaTypeContainer, this, saveEventArgs, "SavedMediaTypeContainer"); //TODO: Audit trail ? return Attempt.Succeed(new OperationStatus(container, OperationStatusType.Success, evtMsgs)); @@ -289,7 +291,8 @@ namespace Umbraco.Core.Services return OperationStatus.NoOperation(evtMsgs); } - if (uow.Events.DispatchCancelable(DeletingContentTypeContainer, this, new DeleteEventArgs(container, evtMsgs))) + var deleteEventArgs = new DeleteEventArgs(container, evtMsgs); + if (uow.Events.DispatchCancelable(DeletingContentTypeContainer, this, deleteEventArgs)) { uow.Commit(); return Attempt.Fail(new OperationStatus(OperationStatusType.FailedCancelledByEvent, evtMsgs)); @@ -297,8 +300,8 @@ namespace Umbraco.Core.Services repo.Delete(container); uow.Commit(); - - uow.Events.Dispatch(DeletedContentTypeContainer, this, new DeleteEventArgs(container, evtMsgs), "DeletedContentTypeContainer"); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedContentTypeContainer, this, deleteEventArgs, "DeletedContentTypeContainer"); return OperationStatus.Success(evtMsgs); //TODO: Audit trail ? @@ -319,7 +322,8 @@ namespace Umbraco.Core.Services return OperationStatus.NoOperation(evtMsgs); } - if (uow.Events.DispatchCancelable(DeletingMediaTypeContainer, this, new DeleteEventArgs(container, evtMsgs))) + var deleteEventArgs = new DeleteEventArgs(container, evtMsgs); + if (uow.Events.DispatchCancelable(DeletingMediaTypeContainer, this, deleteEventArgs)) { uow.Commit(); return Attempt.Fail(new OperationStatus(OperationStatusType.FailedCancelledByEvent, evtMsgs)); @@ -327,8 +331,8 @@ namespace Umbraco.Core.Services repo.Delete(container); uow.Commit(); - - uow.Events.Dispatch(DeletedMediaTypeContainer, this, new DeleteEventArgs(container, evtMsgs)); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedMediaTypeContainer, this, deleteEventArgs); return OperationStatus.Success(evtMsgs); //TODO: Audit trail ? @@ -756,7 +760,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(SavingContentType, this, new SaveEventArgs(contentType))) + var saveEventArgs = new SaveEventArgs(contentType); + if (uow.Events.DispatchCancelable(SavingContentType, this, saveEventArgs)) { uow.Commit(); return; @@ -779,7 +784,8 @@ namespace Umbraco.Core.Services UpdateContentXmlStructure(contentType); - uow.Events.Dispatch(SavedContentType, this, new SaveEventArgs(contentType, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedContentType, this, saveEventArgs); Audit(uow, AuditType.Save, "Save ContentType performed by user", userId, contentType.Id); uow.Commit(); @@ -800,7 +806,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(SavingContentType, this, new SaveEventArgs(asArray))) + var saveEventArgs = new SaveEventArgs(asArray); + if (uow.Events.DispatchCancelable(SavingContentType, this, saveEventArgs)) { uow.Commit(); return; @@ -825,7 +832,8 @@ namespace Umbraco.Core.Services UpdateContentXmlStructure(asArray.Cast().ToArray()); - uow.Events.Dispatch(SavedContentType, this, new SaveEventArgs(asArray, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedContentType, this, saveEventArgs); Audit(uow, AuditType.Save, "Save ContentTypes performed by user", userId, -1); uow.Commit(); @@ -845,7 +853,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(DeletingContentType, this, new DeleteEventArgs(contentType))) + var deleteEventArgs = new DeleteEventArgs(contentType); + if (uow.Events.DispatchCancelable(DeletingContentType, this, deleteEventArgs)) { uow.Commit(); return; @@ -860,8 +869,9 @@ namespace Umbraco.Core.Services _contentService.DeleteContentOfTypes(deletedContentTypes.Select(x => x.Id), userId); repository.Delete(contentType); - - uow.Events.Dispatch(DeletedContentType, this, new DeleteEventArgs(deletedContentTypes.DistinctBy(x => x.Id), false)); + deleteEventArgs.DeletedEntities = deletedContentTypes.DistinctBy(x => x.Id); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedContentType, this, deleteEventArgs); Audit(uow, AuditType.Delete, string.Format("Delete ContentType performed by user"), userId, contentType.Id); uow.Commit(); @@ -885,7 +895,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(DeletingContentType, this, new DeleteEventArgs(asArray))) + var deleteEventArgs = new DeleteEventArgs(asArray); + if (uow.Events.DispatchCancelable(DeletingContentType, this, deleteEventArgs)) { uow.Commit(); return; @@ -906,8 +917,9 @@ namespace Umbraco.Core.Services { repository.Delete(contentType); } - - uow.Events.Dispatch(DeletedContentType, this, new DeleteEventArgs(deletedContentTypes.DistinctBy(x => x.Id), false)); + deleteEventArgs.DeletedEntities = deletedContentTypes.DistinctBy(x => x.Id); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedContentType, this, deleteEventArgs); Audit(uow, AuditType.Delete, string.Format("Delete ContentTypes performed by user"), userId, -1); uow.Commit(); @@ -1056,7 +1068,9 @@ namespace Umbraco.Core.Services var moveInfo = new List>(); using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(MovingMediaType, this, new MoveEventArgs(evtMsgs, new MoveEventInfo(toMove, toMove.Path, containerId)))) + var moveEventInfo = new MoveEventInfo(toMove, toMove.Path, containerId); + var moveEventArgs = new MoveEventArgs(evtMsgs, moveEventInfo); + if (uow.Events.DispatchCancelable(MovingMediaType, this, moveEventArgs)) { uow.Commit(); return Attempt.Fail(new OperationStatus(MoveOperationStatusType.FailedCancelledByEvent, evtMsgs)); @@ -1081,7 +1095,9 @@ namespace Umbraco.Core.Services return Attempt.Fail(new OperationStatus(ex.Operation, evtMsgs)); } uow.Commit(); - uow.Events.Dispatch(MovedMediaType, this, new MoveEventArgs(false, evtMsgs, moveInfo.ToArray())); + moveEventArgs.MoveInfoCollection = moveInfo; + moveEventArgs.CanCancel = false; + uow.Events.Dispatch(MovedMediaType, this, moveEventArgs); } return Attempt.Succeed( @@ -1095,7 +1111,9 @@ namespace Umbraco.Core.Services var moveInfo = new List>(); using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(MovingContentType, this, new MoveEventArgs(evtMsgs, new MoveEventInfo(toMove, toMove.Path, containerId)))) + var moveEventInfo = new MoveEventInfo(toMove, toMove.Path, containerId); + var moveEventArgs = new MoveEventArgs(evtMsgs, moveEventInfo); + if (uow.Events.DispatchCancelable(MovingContentType, this, moveEventArgs)) { uow.Commit(); return Attempt.Fail(new OperationStatus(MoveOperationStatusType.FailedCancelledByEvent, evtMsgs)); @@ -1119,8 +1137,10 @@ namespace Umbraco.Core.Services uow.Commit(); return Attempt.Fail(new OperationStatus(ex.Operation, evtMsgs)); } + moveEventArgs.MoveInfoCollection = moveInfo; + moveEventArgs.CanCancel = false; uow.Commit(); - uow.Events.Dispatch(MovedContentType, this, new MoveEventArgs(false, evtMsgs, moveInfo.ToArray())); + uow.Events.Dispatch(MovedContentType, this, moveEventArgs); } return Attempt.Succeed( @@ -1228,7 +1248,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(SavingMediaType, this, new SaveEventArgs(mediaType))) + var saveEventArgs = new SaveEventArgs(mediaType); + if (uow.Events.DispatchCancelable(SavingMediaType, this, saveEventArgs)) { uow.Commit(); return; @@ -1244,8 +1265,8 @@ namespace Umbraco.Core.Services uow.Commit(); UpdateContentXmlStructure(mediaType); - - uow.Events.Dispatch(SavedMediaType, this, new SaveEventArgs(mediaType, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedMediaType, this, saveEventArgs); Audit(uow, AuditType.Save, "Save MediaType performed by user", userId, mediaType.Id); uow.Commit(); @@ -1266,7 +1287,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(SavingMediaType, this, new SaveEventArgs(asArray))) + var saveEventArgs = new SaveEventArgs(asArray); + if (uow.Events.DispatchCancelable(SavingMediaType, this, saveEventArgs)) { uow.Commit(); return; @@ -1290,8 +1312,8 @@ namespace Umbraco.Core.Services uow.Commit(); UpdateContentXmlStructure(asArray.Cast().ToArray()); - - uow.Events.Dispatch(SavedMediaType, this, new SaveEventArgs(asArray, false)); + saveEventArgs.CanCancel = false; + uow.Events.Dispatch(SavedMediaType, this, saveEventArgs); Audit(uow, AuditType.Save, "Save MediaTypes performed by user", userId, -1); uow.Commit(); @@ -1313,7 +1335,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(DeletingMediaType, this, new DeleteEventArgs(mediaType))) + var deleteEventArgs = new DeleteEventArgs(mediaType); + if (uow.Events.DispatchCancelable(DeletingMediaType, this, deleteEventArgs)) { uow.Commit(); return; @@ -1329,7 +1352,9 @@ namespace Umbraco.Core.Services repository.Delete(mediaType); - uow.Events.Dispatch(DeletedMediaType, this, new DeleteEventArgs(deletedMediaTypes.DistinctBy(x => x.Id), false)); + deleteEventArgs.CanCancel = false; + deleteEventArgs.DeletedEntities = deletedMediaTypes.DistinctBy(x => x.Id); + uow.Events.Dispatch(DeletedMediaType, this, deleteEventArgs); Audit(uow, AuditType.Delete, "Delete MediaType performed by user", userId, mediaType.Id); uow.Commit(); @@ -1353,7 +1378,8 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (uow.Events.DispatchCancelable(DeletingMediaType, this, new DeleteEventArgs(asArray))) + var deleteEventArgs = new DeleteEventArgs(asArray); + if (uow.Events.DispatchCancelable(DeletingMediaType, this, deleteEventArgs)) { uow.Commit(); return; @@ -1375,7 +1401,9 @@ namespace Umbraco.Core.Services repository.Delete(mediaType); } - uow.Events.Dispatch(DeletedMediaType, this, new DeleteEventArgs(deletedMediaTypes.DistinctBy(x => x.Id), false)); + deleteEventArgs.DeletedEntities = deletedMediaTypes.DistinctBy(x => x.Id); + deleteEventArgs.CanCancel = false; + uow.Events.Dispatch(DeletedMediaType, this, deleteEventArgs); Audit(uow, AuditType.Delete, "Delete MediaTypes performed by user", userId, -1); uow.Commit();