diff --git a/src/Umbraco.Core/Events/EntityContainerRenamedNotification.cs b/src/Umbraco.Core/Events/EntityContainerRenamedNotification.cs index 3fac1fdd40..dc1b858bd9 100644 --- a/src/Umbraco.Core/Events/EntityContainerRenamedNotification.cs +++ b/src/Umbraco.Core/Events/EntityContainerRenamedNotification.cs @@ -2,7 +2,7 @@ using Umbraco.Cms.Core.Models; namespace Umbraco.Cms.Core.Events { - public class EntityContainerRenamedNotification : SavedNotification + public class EntityContainerRenamedNotification : RenamedNotification { public EntityContainerRenamedNotification(EntityContainer target, EventMessages messages) : base(target, messages) { diff --git a/src/Umbraco.Core/Events/EntityContainerRenamingNotification.cs b/src/Umbraco.Core/Events/EntityContainerRenamingNotification.cs new file mode 100644 index 0000000000..f2408a1faf --- /dev/null +++ b/src/Umbraco.Core/Events/EntityContainerRenamingNotification.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Models; + +namespace Umbraco.Cms.Core.Events +{ + public class EntityContainerRenamingNotification : RenamingNotification + { + public EntityContainerRenamingNotification(EntityContainer target, EventMessages messages) : base(target, messages) + { + } + } +} diff --git a/src/Umbraco.Core/Events/RenamedNotification.cs b/src/Umbraco.Core/Events/RenamedNotification.cs new file mode 100644 index 0000000000..81a568b6df --- /dev/null +++ b/src/Umbraco.Core/Events/RenamedNotification.cs @@ -0,0 +1,20 @@ +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System.Collections.Generic; + +namespace Umbraco.Cms.Core.Events +{ + public abstract class RenamedNotification : EnumerableObjectNotification + { + protected RenamedNotification(T target, EventMessages messages) : base(target, messages) + { + } + + protected RenamedNotification(IEnumerable target, EventMessages messages) : base(target, messages) + { + } + + public IEnumerable Entities => Target; + } +} diff --git a/src/Umbraco.Core/Events/RenamingNotification.cs b/src/Umbraco.Core/Events/RenamingNotification.cs new file mode 100644 index 0000000000..f215a8ea54 --- /dev/null +++ b/src/Umbraco.Core/Events/RenamingNotification.cs @@ -0,0 +1,20 @@ +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System.Collections.Generic; + +namespace Umbraco.Cms.Core.Events +{ + public abstract class RenamingNotification : CancelableEnumerableObjectNotification + { + protected RenamingNotification(T target, EventMessages messages) : base(target, messages) + { + } + + protected RenamingNotification(IEnumerable target, EventMessages messages) : base(target, messages) + { + } + + public IEnumerable Entities => Target; + } +} diff --git a/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs b/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs index fd1b40eb2f..455f88a70f 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs @@ -223,10 +223,17 @@ namespace Umbraco.Cms.Core.Services.Implement container.Name = name; + var renamingEntityContainerNotification = new EntityContainerRenamingNotification(container, evtMsgs); + if (scope.Notifications.PublishCancelable(renamingEntityContainerNotification)) + { + scope.Complete(); + return OperationResult.Attempt.Cancel(evtMsgs, container); + } + _dataTypeContainerRepository.Save(container); scope.Complete(); - scope.Notifications.Publish(new EntityContainerRenamedNotification(container, evtMsgs)); + scope.Notifications.Publish(new EntityContainerRenamedNotification(container, evtMsgs).WithStateFrom(renamingEntityContainerNotification)); return OperationResult.Attempt.Succeed(OperationResultType.Success, evtMsgs, container); }