From f114b06531ff013c097cc0cc6d8b786dd31b04df Mon Sep 17 00:00:00 2001 From: Morten Christensen Date: Mon, 10 Dec 2012 14:59:33 -0100 Subject: [PATCH] Adding events to MacroService --- src/Umbraco.Core/Services/MacroService.cs | 57 ++++++++++++++++++++--- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index 4e134fa3c2..f3b4ac8276 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using Umbraco.Core.Auditing; @@ -73,11 +74,21 @@ namespace Umbraco.Core.Services /// Optional id of the user deleting the macro public void Delete(IMacro macro, int userId = -1) { - var repository = _macroRepository; - repository.Delete(macro); - _unitOfWork.Commit(); + var e = new DeleteEventArgs(); + if (Deleting != null) + Deleting(macro, e); - Audit.Add(AuditTypes.Delete, "Delete Macro performed by user", userId > -1 ? userId : 0, -1); + if (!e.Cancel) + { + var repository = _macroRepository; + repository.Delete(macro); + _unitOfWork.Commit(); + + if (Deleted != null) + Deleted(macro, e); + + Audit.Add(AuditTypes.Delete, "Delete Macro performed by user", userId > -1 ? userId : 0, -1); + } } /// @@ -87,10 +98,20 @@ namespace Umbraco.Core.Services /// Optional Id of the user deleting the macro public void Save(IMacro macro, int userId = -1) { - _macroRepository.AddOrUpdate(macro); - _unitOfWork.Commit(); + var e = new SaveEventArgs(); + if (Saving != null) + Saving(macro, e); - Audit.Add(AuditTypes.Save, "Save Macro performed by user", userId > -1 ? userId : 0, -1); + if (!e.Cancel) + { + _macroRepository.AddOrUpdate(macro); + _unitOfWork.Commit(); + + if (Saved != null) + Saved(macro, e); + + Audit.Add(AuditTypes.Save, "Save Macro performed by user", userId > -1 ? userId : 0, -1); + } } /// @@ -111,5 +132,27 @@ namespace Umbraco.Core.Services { return MacroPropertyTypeResolver.Current.MacroPropertyTypes.FirstOrDefault(x => x.Alias == alias); } + + #region Event Handlers + /// + /// Occurs before Delete + /// + public static event EventHandler Deleting; + + /// + /// Occurs after Delete + /// + public static event EventHandler Deleted; + + /// + /// Occurs before Save + /// + public static event EventHandler Saving; + + /// + /// Occurs after Save + /// + public static event EventHandler Saved; + #endregion } } \ No newline at end of file