diff --git a/src/Umbraco.Core/Events/RollbackEventArgs.cs b/src/Umbraco.Core/Events/RollbackEventArgs.cs index 58baa334b7..b0a8c164bb 100644 --- a/src/Umbraco.Core/Events/RollbackEventArgs.cs +++ b/src/Umbraco.Core/Events/RollbackEventArgs.cs @@ -1,4 +1,13 @@ namespace Umbraco.Core.Events { - public class RollbackEventArgs : System.ComponentModel.CancelEventArgs { } + public class RollbackEventArgs : CancellableObjectEventArgs + { + public RollbackEventArgs(TEntity entity, bool canCancel) : base(entity, canCancel) + { + } + + public RollbackEventArgs(TEntity entity) : base(entity) + { + } + } } \ No newline at end of file diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index 420a72c4f7..7ed0ea82bb 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -1135,29 +1135,23 @@ namespace Umbraco.Core.Services /// The newly created object public IContent Rollback(int id, Guid versionId, int userId = -1) { - var e = new RollbackEventArgs(); - var uow = _uowProvider.GetUnitOfWork(); using (var repository = _repositoryFactory.CreateContentRepository(uow)) { var content = repository.GetByVersion(id, versionId); - if (Rollingback != null) - Rollingback(content, e); + if (RollingBack.IsRaisedEventCancelled(new RollbackEventArgs(content), this)) + return content; + + SetUser(content, userId); + SetWriter(content, userId); - if (!e.Cancel) - { - SetUser(content, userId); - SetWriter(content, userId); + repository.AddOrUpdate(content); + uow.Commit(); - repository.AddOrUpdate(content); - uow.Commit(); + RolledBack.RaiseEvent(new RollbackEventArgs(content, false), this); - if (Rolledback != null) - Rolledback(content, e); - - Audit.Add(AuditTypes.RollBack, "Content rollback performed by user", content.WriterId, content.Id); - } + Audit.Add(AuditTypes.RollBack, "Content rollback performed by user", content.WriterId, content.Id); return content; } @@ -1313,12 +1307,12 @@ namespace Umbraco.Core.Services /// /// Occurs before Rollback /// - public static event EventHandler Rollingback; + public static event TypedEventHandler> RollingBack; /// /// Occurs after Rollback /// - public static event EventHandler Rolledback; + public static event TypedEventHandler> RolledBack; /// /// Occurs before Send to Publish