diff --git a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs index 543c506653..9fa9a47003 100644 --- a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs +++ b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs @@ -39,12 +39,10 @@ namespace Umbraco.Core.Services.Implement public static event TypedEventHandler> SavedContainer; public static event TypedEventHandler> DeletingContainer; public static event TypedEventHandler> DeletedContainer; - - // fixme - can we have issues with event names? - + protected void OnChanged(IScope scope, ContentTypeChange.EventArgs args) { - scope.Events.Dispatch(Changed, This, args, "Changed"); + scope.Events.Dispatch(Changed, This, args, nameof(Changed)); } protected void OnUowRefreshedEntity(ContentTypeChange.EventArgs args) @@ -52,13 +50,7 @@ namespace Umbraco.Core.Services.Implement // that one is always immediate (not dispatched, transactional) UowRefreshedEntity.RaiseEvent(args, This); } - - // fixme what is thsi? - protected void OnSaving(IScope scope, SaveEventArgs args) - { - Saving.RaiseEvent(args, This); - } - + protected bool OnSavingCancelled(IScope scope, SaveEventArgs args) { return scope.Events.DispatchCancelable(Saving, This, args); @@ -68,29 +60,17 @@ namespace Umbraco.Core.Services.Implement { scope.Events.Dispatch(Saved, This, args); } - - // fixme what is thsi? - protected void OnDeleting(IScope scope, DeleteEventArgs args) - { - Deleting.RaiseEvent(args, This); - } - + protected bool OnDeletingCancelled(IScope scope, DeleteEventArgs args) { - return scope.Events.DispatchCancelable(Deleting, This, args); + return scope.Events.DispatchCancelable(Deleting, This, args, nameof(Deleting)); } - + protected void OnDeleted(IScope scope, DeleteEventArgs args) { scope.Events.Dispatch(Deleted, This, args); } - - // fixme what is thsi? - protected void OnMoving(IScope scope, MoveEventArgs args) - { - Moving.RaiseEvent(args, This); - } - + protected bool OnMovingCancelled(IScope scope, MoveEventArgs args) { return scope.Events.DispatchCancelable(Moving, This, args); @@ -100,16 +80,10 @@ namespace Umbraco.Core.Services.Implement { scope.Events.Dispatch(Moved, This, args); } - - // fixme what is this? - protected void OnSavingContainer(IScope scope, SaveEventArgs args) - { - SavingContainer.RaiseEvent(args, This); - } - + protected bool OnSavingContainerCancelled(IScope scope, SaveEventArgs args) { - return scope.Events.DispatchCancelable(SavingContainer, This, args); + return scope.Events.DispatchCancelable(SavingContainer, This, args, nameof(SavingContainer)); } protected void OnSavedContainer(IScope scope, SaveEventArgs args) @@ -117,18 +91,16 @@ namespace Umbraco.Core.Services.Implement scope.Events.Dispatch(SavedContainer, This, args); } + protected bool OnRenamingContainerCancelled(IScope scope, SaveEventArgs args) + { + return scope.Events.DispatchCancelable(SavedContainer, This, args, nameof(SavedContainer)); + } + protected void OnRenamedContainer(IScope scope, SaveEventArgs args) { - // fixme changing the name of the event?! - scope.Events.Dispatch(SavedContainer, This, args, "RenamedContainer"); + scope.Events.Dispatch(SavedContainer, This, args, nameof(SavedContainer)); } - - // fixme what is this? - protected void OnDeletingContainer(IScope scope, DeleteEventArgs args) - { - DeletingContainer.RaiseEvent(args, This); - } - + protected bool OnDeletingContainerCancelled(IScope scope, DeleteEventArgs args) { return scope.Events.DispatchCancelable(DeletingContainer, This, args); @@ -136,7 +108,7 @@ namespace Umbraco.Core.Services.Implement protected void OnDeletedContainer(IScope scope, DeleteEventArgs args) { - scope.Events.Dispatch(DeletedContainer, This, args, "DeletedContainer"); + scope.Events.Dispatch(DeletedContainer, This, args, nameof(DeletedContainer)); } } } diff --git a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs index 1d53fad4de..8ed0a0f645 100644 --- a/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs +++ b/src/Umbraco.Core/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs @@ -795,7 +795,8 @@ namespace Umbraco.Core.Services.Implement using (var scope = ScopeProvider.CreateScope()) { - if (OnSavingContainerCancelled(scope, new SaveEventArgs(container, evtMsgs))) + var args = new SaveEventArgs(container, evtMsgs); + if (OnSavingContainerCancelled(scope, args)) { scope.Complete(); return OperationResult.Attempt.Cancel(evtMsgs); @@ -806,7 +807,8 @@ namespace Umbraco.Core.Services.Implement _containerRepository.Save(container); scope.Complete(); - OnSavedContainer(scope, new SaveEventArgs(container, evtMsgs)); + args.CanCancel = false; + OnSavedContainer(scope, args); } //TODO: Audit trail ? @@ -921,10 +923,18 @@ namespace Umbraco.Core.Services.Implement throw new InvalidOperationException("No container found with id " + id); container.Name = name; + + var saveEventArgs = new SaveEventArgs(container, evtMsgs); + if (OnRenamingContainerCancelled(scope, saveEventArgs)) + { + scope.Complete(); + return OperationResult.Attempt.Cancel(evtMsgs); + } + _containerRepository.Save(container); scope.Complete(); - var saveEventArgs = new SaveEventArgs(container, evtMsgs) {CanCancel = false}; + saveEventArgs.CanCancel = false; OnRenamedContainer(scope, saveEventArgs); return OperationResult.Attempt.Succeed(OperationResultType.Success, evtMsgs, container);