diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs
index abd5fd87db..9f66207d99 100644
--- a/src/Umbraco.Core/Services/ContentService.cs
+++ b/src/Umbraco.Core/Services/ContentService.cs
@@ -813,7 +813,7 @@ namespace Umbraco.Core.Services
uow.Commit();
}
- DeletedRevisions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, dateToRetain: versionDate), this);
+ DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, dateToRetain: versionDate), this);
Audit.Add(AuditTypes.Delete, "Delete Content by version date performed by user", userId == -1 ? 0 : userId, -1);
}
@@ -843,7 +843,7 @@ namespace Umbraco.Core.Services
uow.Commit();
}
- DeletedRevisions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, specificVersion:versionId), this);
+ DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, specificVersion:versionId), this);
Audit.Add(AuditTypes.Delete, "Delete Content by version performed by user", userId == -1 ? 0 : userId, -1);
}
@@ -1234,7 +1234,7 @@ namespace Umbraco.Core.Services
///
/// Occurs after Delete
///
- public static event TypedEventHandler DeletedRevisions;
+ public static event TypedEventHandler DeletedVersions;
///
/// Occurs before Save
diff --git a/src/Umbraco.Core/Services/IContentService.cs b/src/Umbraco.Core/Services/IContentService.cs
index a26302ea97..4836f25736 100644
--- a/src/Umbraco.Core/Services/IContentService.cs
+++ b/src/Umbraco.Core/Services/IContentService.cs
@@ -94,11 +94,7 @@ namespace Umbraco.Core.Services
///
/// Saves a collection of objects.
- ///
- ///
- /// If the collection of content contains new objects that references eachother by Id or ParentId,
- /// then use the overload Save method with a collection of Lazy .
- ///
+ ///
/// Collection of to save
/// Optional Id of the User saving the Content
void Save(IEnumerable contents, int userId = -1);
diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs
index 3475f60737..cba54ddb4b 100644
--- a/src/Umbraco.Core/Services/MediaService.cs
+++ b/src/Umbraco.Core/Services/MediaService.cs
@@ -69,19 +69,15 @@ namespace Umbraco.Core.Services
}
var media = new Models.Media(parentId, mediaType);
- var e = new NewEventArgs {Alias = mediaTypeAlias, ParentId = parentId};
- if (Creating != null)
- Creating(media, e);
- if (!e.Cancel)
- {
- SetUser(media, userId);
+ if (Creating.IsRaisedEventCancelled(new NewEventArgs(media, mediaTypeAlias, parentId), this))
+ return media;
- if (Created != null)
- Created(media, e);
+ SetUser(media, userId);
- Audit.Add(AuditTypes.New, "", media.CreatorId, media.Id);
- }
+ Created.RaiseEvent(new NewEventArgs(media, false, mediaTypeAlias, parentId), this);
+
+ Audit.Add(AuditTypes.New, "", media.CreatorId, media.Id);
return media;
}
@@ -288,25 +284,18 @@ namespace Umbraco.Core.Services
if (Trashing.IsRaisedEventCancelled(new MoveEventArgs(media, -21), this))
return;
- var e = new MoveEventArgs {ParentId = -20};
- if (Trashing != null)
- Trashing(media, e);
- if (!e.Cancel)
- {
- var uow = _uowProvider.GetUnitOfWork();
- using (var repository = _repositoryFactory.CreateMediaRepository(uow))
- {
- ((Core.Models.Media) media).ChangeTrashedState(true);
- repository.AddOrUpdate(media);
- uow.Commit();
- }
+ var uow = _uowProvider.GetUnitOfWork();
+ using (var repository = _repositoryFactory.CreateMediaRepository(uow))
+ {
+ ((Core.Models.Media)media).ChangeTrashedState(true);
+ repository.AddOrUpdate(media);
+ uow.Commit();
+ }
- if (Trashed != null)
- Trashed(media, e);
+ Trashed.RaiseEvent(new MoveEventArgs(media, false, -21), this);
- Audit.Add(AuditTypes.Move, "Move Media to Recycle Bin performed by user", userId == -1 ? 0 : userId,
- media.Id);
- }
+ Audit.Add(AuditTypes.Move, "Move Media to Recycle Bin performed by user", userId == -1 ? 0 : userId,
+ media.Id);
}
///
@@ -314,6 +303,9 @@ namespace Umbraco.Core.Services
///
public void EmptyRecycleBin()
{
+ //TODO: Should have an event for this.
+ //TODO: Why don't we have a base class to share between MediaService/ContentService as some of this is exacty the same?
+
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMediaRepository(uow))
{
@@ -338,7 +330,7 @@ namespace Umbraco.Core.Services
/// Optional id of the user deleting the media
public void DeleteMediaOfType(int mediaTypeId, int userId = -1)
{
- //TODO: Do we need another event DeletingMediaOfType ?
+ //TODO: Do we need another event DeletingMediaOfType, If we just change delete args to be ienumerable this would fix this ?
var uow = _uowProvider.GetUnitOfWork();
var repository = _repositoryFactory.CreateMediaRepository(uow);
@@ -348,28 +340,26 @@ namespace Umbraco.Core.Services
var query = Query.Builder.Where(x => x.ContentTypeId == mediaTypeId);
var contents = repository.GetByQuery(query);
- var e = new DeleteEventArgs {Id = mediaTypeId};
- if (Deleting != null)
- Deleting(contents, e);
- //var e = new DeleteEventArgs { Id = mediaTypeId };
- //if (Deleting != null)
- // Deleting(contents, e);
+ //var e = new DeleteEventArgs {Id = mediaTypeId};
+ //if (Deleting != null)
+ // Deleting(contents, e);
+ // //var e = new DeleteEventArgs { Id = mediaTypeId };
+ // //if (Deleting != null)
+ // // Deleting(contents, e);
- if (!e.Cancel)
- {
- foreach (var content in contents)
- {
- ((Core.Models.Media) content).ChangeTrashedState(true);
- repository.AddOrUpdate(content);
- }
+ foreach (var content in contents)
+ {
+ ((Core.Models.Media)content).ChangeTrashedState(true);
+ repository.AddOrUpdate(content);
+ }
- uow.Commit();
- uow.Dispose();
+ uow.Commit();
+ uow.Dispose();
- if (Deleted != null)
- Deleted(contents, e);
- Audit.Add(AuditTypes.Delete, "Delete Media items by Type performed by user", userId == -1 ? 0 : userId, -1);
- }
+ //if (Deleted != null)
+ // Deleted(contents, e);
+
+ Audit.Add(AuditTypes.Delete, "Delete Media items by Type performed by user", userId == -1 ? 0 : userId, -1);
}
///
@@ -386,23 +376,16 @@ namespace Umbraco.Core.Services
if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(media), this))
return;
- var e = new DeleteEventArgs {Id = media.Id};
- if (Deleting != null)
- Deleting(media, e);
- if (!e.Cancel)
- {
- var uow = _uowProvider.GetUnitOfWork();
- using (var repository = _repositoryFactory.CreateMediaRepository(uow))
- {
- repository.Delete(media);
- uow.Commit();
- }
+ var uow = _uowProvider.GetUnitOfWork();
+ using (var repository = _repositoryFactory.CreateMediaRepository(uow))
+ {
+ repository.Delete(media);
+ uow.Commit();
+ }
- if (Deleted != null)
- Deleted(media, e);
+ Deleted.RaiseEvent(new DeleteEventArgs(media, false), this);
- Audit.Add(AuditTypes.Delete, "Delete Media performed by user", userId == -1 ? 0 : userId, media.Id);
- }
+ Audit.Add(AuditTypes.Delete, "Delete Media performed by user", userId == -1 ? 0 : userId, media.Id);
}
///
@@ -413,24 +396,19 @@ namespace Umbraco.Core.Services
/// Optional Id of the User deleting versions of a Content object
public void DeleteVersions(int id, DateTime versionDate, int userId = -1)
{
- var e = new DeleteEventArgs { Id = id };
- if (Deleting != null)
- Deleting(versionDate, e);
+ if (DeletingVersions.IsRaisedEventCancelled(new DeleteRevisionsEventArgs(id, dateToRetain: versionDate), this))
+ return;
+
+ var uow = _uowProvider.GetUnitOfWork();
+ using (var repository = _repositoryFactory.CreateMediaRepository(uow))
+ {
+ repository.DeleteVersions(id, versionDate);
+ uow.Commit();
+ }
- if (!e.Cancel)
- {
- var uow = _uowProvider.GetUnitOfWork();
- using (var repository = _repositoryFactory.CreateMediaRepository(uow))
- {
- repository.DeleteVersions(id, versionDate);
- uow.Commit();
- }
+ DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, dateToRetain: versionDate), this);
- if (Deleted != null)
- Deleted(versionDate, e);
-
- Audit.Add(AuditTypes.Delete, "Delete Media by version date performed by user", userId == -1 ? 0 : userId, -1);
- }
+ Audit.Add(AuditTypes.Delete, "Delete Media by version date performed by user", userId == -1 ? 0 : userId, -1);
}
///
@@ -448,24 +426,19 @@ namespace Umbraco.Core.Services
DeleteVersions(id, content.UpdateDate, userId);
}
- var e = new DeleteEventArgs { Id = id };
- if (Deleting != null)
- Deleting(versionId, e);
+ if (DeletingVersions.IsRaisedEventCancelled(new DeleteRevisionsEventArgs(id, specificVersion:versionId), this))
+ return;
- if (!e.Cancel)
- {
- var uow = _uowProvider.GetUnitOfWork();
- using (var repository = _repositoryFactory.CreateMediaRepository(uow))
- {
- repository.DeleteVersion(versionId);
- uow.Commit();
- }
+ var uow = _uowProvider.GetUnitOfWork();
+ using (var repository = _repositoryFactory.CreateMediaRepository(uow))
+ {
+ repository.DeleteVersion(versionId);
+ uow.Commit();
+ }
- if (Deleted != null)
- Deleted(versionId, e);
+ DeletedVersions.RaiseEvent(new DeleteRevisionsEventArgs(id, false, specificVersion: versionId), this);
- Audit.Add(AuditTypes.Delete, "Delete Media by version performed by user", userId == -1 ? 0 : userId, -1);
- }
+ Audit.Add(AuditTypes.Delete, "Delete Media by version performed by user", userId == -1 ? 0 : userId, -1);
}
///
@@ -475,23 +448,20 @@ namespace Umbraco.Core.Services
/// Id of the User saving the Content
public void Save(IMedia media, int userId = -1)
{
- var e = new SaveEventArgs();
- if (Saving != null)
- Saving(media, e);
- if (!e.Cancel)
- {
- var uow = _uowProvider.GetUnitOfWork();
- using (var repository = _repositoryFactory.CreateMediaRepository(uow))
- {
- SetUser(media, userId);
- repository.AddOrUpdate(media);
- uow.Commit();
- }
+ if (Saving.IsRaisedEventCancelled(new SaveEventArgs(media), this))
+ return;
+
+ var uow = _uowProvider.GetUnitOfWork();
+ using (var repository = _repositoryFactory.CreateMediaRepository(uow))
+ {
+ SetUser(media, userId);
+ repository.AddOrUpdate(media);
+ uow.Commit();
+ }
+
+ Saved.RaiseEvent(new SaveEventArgs(media, false), this);
- if (Saved != null)
- Saved(media, e);
- }
Audit.Add(AuditTypes.Save, "Save Media performed by user", media.CreatorId, media.Id);
}
@@ -502,30 +472,25 @@ namespace Umbraco.Core.Services
/// Id of the User saving the Content
public void Save(IEnumerable medias, int userId = -1)
{
- var e = new SaveEventArgs();
- if (Saving != null)
- Saving(medias, e);
+ if (SavingCollection.IsRaisedEventCancelled(new SaveEventArgs>(medias), this))
+ return;
- if (!e.Cancel)
- {
- var uow = _uowProvider.GetUnitOfWork();
- using (var repository = _repositoryFactory.CreateMediaRepository(uow))
- {
- foreach (var media in medias)
- {
- SetUser(media, userId);
- repository.AddOrUpdate(media);
- }
+ var uow = _uowProvider.GetUnitOfWork();
+ using (var repository = _repositoryFactory.CreateMediaRepository(uow))
+ {
+ foreach (var media in medias)
+ {
+ SetUser(media, userId);
+ repository.AddOrUpdate(media);
+ }
//commit the whole lot in one go
- uow.Commit();
- }
-
- if (Saved != null)
- Saved(medias, e);
+ uow.Commit();
+ }
- Audit.Add(AuditTypes.Save, "Save Media items performed by user", userId == -1 ? 0 : userId, -1);
- }
+ SavedCollection.RaiseEvent(new SaveEventArgs>(medias, false), this);
+
+ Audit.Add(AuditTypes.Save, "Save Media items performed by user", userId == -1 ? 0 : userId, -1);
}
///
@@ -569,6 +534,17 @@ namespace Umbraco.Core.Services
}
#region Event Handlers
+
+ ///
+ /// Occurs before Delete
+ ///
+ public static event TypedEventHandler DeletingVersions;
+
+ ///
+ /// Occurs after Delete
+ ///
+ public static event TypedEventHandler DeletedVersions;
+
///
/// Occurs before Delete
///
@@ -611,6 +587,7 @@ namespace Umbraco.Core.Services
/// Please note that the Media object has been created, but not saved
/// so it does not have an identity yet (meaning no Id has been set).
///
+ public static event TypedEventHandler> Created;
///
/// Occurs before Content is moved to Recycle Bin