Adding events and audit trail for LocalizationService

This commit is contained in:
Morten Christensen
2012-12-10 14:53:36 -01:00
parent 190cdaacb5
commit 0613a422fb
8 changed files with 141 additions and 65 deletions

View File

@@ -266,7 +266,7 @@ namespace Umbraco.Core.Services
//TODO Change this so we can avoid a depencency to the horrible library method / umbraco.content (singleton) class.
//global::umbraco.library.RefreshContent();
Audit.Add(AuditTypes.Publish, "RePublish All issued by user", userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Publish, "RePublish All performed by user", userId == -1 ? 0 : userId, -1);
}
return published;
@@ -335,7 +335,7 @@ namespace Umbraco.Core.Services
//TODO Need to investigate if it will also update the cache for children of the Content object
//global::umbraco.library.UpdateDocumentCache(content.Id);
Audit.Add(AuditTypes.Publish, "Publish with Children issued by user", userId == -1 ? 0 : userId, content.Id);
Audit.Add(AuditTypes.Publish, "Publish with Children performed by user", userId == -1 ? 0 : userId, content.Id);
}
return published;
@@ -380,7 +380,7 @@ namespace Umbraco.Core.Services
//TODO Change this so we can avoid a depencency to the horrible library method / umbraco.content class.
//global::umbraco.library.UnPublishSingleNode(content.Id);
Audit.Add(AuditTypes.Publish, "UnPublish issued by user", userId == -1 ? 0 : userId, content.Id);
Audit.Add(AuditTypes.Publish, "UnPublish performed by user", userId == -1 ? 0 : userId, content.Id);
}
return unpublished;
@@ -463,7 +463,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(content, e);
Audit.Add(AuditTypes.Publish, "Save and Publish issued by user", userId == -1 ? 0 : userId, content.Id);
Audit.Add(AuditTypes.Publish, "Save and Publish performed by user", userId == -1 ? 0 : userId, content.Id);
return published;
}
@@ -494,7 +494,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(content, e);
Audit.Add(AuditTypes.Save, "Save Content issued by user", userId == -1 ? 0 : userId, content.Id);
Audit.Add(AuditTypes.Save, "Save Content performed by user", userId == -1 ? 0 : userId, content.Id);
}
}
@@ -544,7 +544,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(contents, e);
Audit.Add(AuditTypes.Save, "Bulk Save content issued by user", userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, "Bulk Save content performed by user", userId == -1 ? 0 : userId, -1);
}
}
@@ -578,7 +578,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(contents, e);
Audit.Add(AuditTypes.Save, "Bulk Save (lazy) content issued by user", userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, "Bulk Save (lazy) content performed by user", userId == -1 ? 0 : userId, -1);
}
}
@@ -613,7 +613,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(contents, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete Content of Type {0} issued by user", contentTypeId), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, string.Format("Delete Content of Type {0} performed by user", contentTypeId), userId == -1 ? 0 : userId, -1);
}
}
@@ -643,7 +643,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(content, e);
Audit.Add(AuditTypes.Delete, "Delete Content issued by user", userId == -1 ? 0 : userId, content.Id);
Audit.Add(AuditTypes.Delete, "Delete Content performed by user", userId == -1 ? 0 : userId, content.Id);
}
}
@@ -690,7 +690,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(versionDate, e);
Audit.Add(AuditTypes.Delete, "Delete Content by version date issued by user", userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, "Delete Content by version date performed by user", userId == -1 ? 0 : userId, -1);
}
}
@@ -722,7 +722,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(versionId, e);
Audit.Add(AuditTypes.Delete, "Delete Content by version issued by user", userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, "Delete Content by version performed by user", userId == -1 ? 0 : userId, -1);
}
}
@@ -752,7 +752,7 @@ namespace Umbraco.Core.Services
if (Trashed != null)
Trashed(content, e);
Audit.Add(AuditTypes.Move, "Move Content to Recycle Bin issued by user", userId == -1 ? 0 : userId, content.Id);
Audit.Add(AuditTypes.Move, "Move Content to Recycle Bin performed by user", userId == -1 ? 0 : userId, content.Id);
}
}
@@ -800,7 +800,7 @@ namespace Umbraco.Core.Services
if(Moved != null)
Moved(content, e);
Audit.Add(AuditTypes.Move, "Move Content issued by user", userId == -1 ? 0 : userId, content.Id);
Audit.Add(AuditTypes.Move, "Move Content performed by user", userId == -1 ? 0 : userId, content.Id);
}
}
@@ -820,7 +820,7 @@ namespace Umbraco.Core.Services
}
_unitOfWork.Commit();
Audit.Add(AuditTypes.Delete, "Empty Recycle Bin issued by user", 0, -20);
Audit.Add(AuditTypes.Delete, "Empty Recycle Bin performed by user", 0, -20);
}
/// <summary>
@@ -856,7 +856,7 @@ namespace Umbraco.Core.Services
if(Copied != null)
Copied(copy, e);
Audit.Add(AuditTypes.Delete, "Copy Content issued by user", content.WriterId, content.Id);
Audit.Add(AuditTypes.Delete, "Copy Content performed by user", content.WriterId, content.Id);
return copy;
}
@@ -882,7 +882,7 @@ namespace Umbraco.Core.Services
if (SentToPublish != null)
SentToPublish(content, e);
Audit.Add(AuditTypes.SendToPublish, "Send to Publish issued by user", content.WriterId, content.Id);
Audit.Add(AuditTypes.SendToPublish, "Send to Publish performed by user", content.WriterId, content.Id);
}
/*SendToPublishEventArgs e = new SendToPublishEventArgs();
@@ -932,7 +932,7 @@ namespace Umbraco.Core.Services
if (Rolledback != null)
Rolledback(content, e);
Audit.Add(AuditTypes.RollBack, "Content rollback issued by user", content.WriterId, content.Id);
Audit.Add(AuditTypes.RollBack, "Content rollback performed by user", content.WriterId, content.Id);
}
return content;

View File

@@ -119,7 +119,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(contentType, e);
Audit.Add(AuditTypes.Save, string.Format("Save ContentType issued by user"), userId == -1 ? 0 : userId, contentType.Id);
Audit.Add(AuditTypes.Save, string.Format("Save ContentType performed by user"), userId == -1 ? 0 : userId, contentType.Id);
}
}
@@ -146,7 +146,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(contentTypes, e);
Audit.Add(AuditTypes.Save, string.Format("Save ContentTypes issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, string.Format("Save ContentTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -177,7 +177,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(contentTypes, e);
Audit.Add(AuditTypes.Save, string.Format("Save (lazy) ContentTypes issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, string.Format("Save (lazy) ContentTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -205,7 +205,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(contentType, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete ContentType issued by user"), userId == -1 ? 0 : userId, contentType.Id);
Audit.Add(AuditTypes.Delete, string.Format("Delete ContentType performed by user"), userId == -1 ? 0 : userId, contentType.Id);
}
}
@@ -242,7 +242,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(contentTypes, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete ContentTypes issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, string.Format("Delete ContentTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -317,7 +317,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(mediaType, e);
Audit.Add(AuditTypes.Save, string.Format("Save MediaType issued by user"), userId == -1 ? 0 : userId, mediaType.Id);
Audit.Add(AuditTypes.Save, string.Format("Save MediaType performed by user"), userId == -1 ? 0 : userId, mediaType.Id);
}
}
@@ -344,7 +344,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(mediaTypes, e);
Audit.Add(AuditTypes.Save, string.Format("Save MediaTypes issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, string.Format("Save MediaTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -372,7 +372,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(mediaType, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete MediaType issued by user"), userId == -1 ? 0 : userId, mediaType.Id);
Audit.Add(AuditTypes.Delete, string.Format("Delete MediaType performed by user"), userId == -1 ? 0 : userId, mediaType.Id);
}
}
@@ -407,7 +407,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(mediaTypes, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete MediaTypes issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, string.Format("Delete MediaTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
}

View File

@@ -103,7 +103,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(dataTypeDefinition, e);
Audit.Add(AuditTypes.Save, string.Format("Save DataTypeDefinition issued by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id);
Audit.Add(AuditTypes.Save, string.Format("Save DataTypeDefinition performed by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id);
}
}
@@ -153,7 +153,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(dataTypeDefinition, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete DataTypeDefinition issued by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id);
Audit.Add(AuditTypes.Delete, string.Format("Delete DataTypeDefinition performed by user"), userId == -1 ? 0 : userId, dataTypeDefinition.Id);
}
}

View File

@@ -72,7 +72,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(stylesheet, e);
Audit.Add(AuditTypes.Save, string.Format("Save Stylesheet issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, string.Format("Save Stylesheet performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -97,7 +97,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(stylesheet, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete Stylesheet issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, string.Format("Delete Stylesheet performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -151,7 +151,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(script, e);
Audit.Add(AuditTypes.Save, string.Format("Save Script issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, string.Format("Save Script performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -176,7 +176,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(script, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete Script issued by user"), userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, string.Format("Delete Script performed by user"), userId == -1 ? 0 : userId, -1);
}
}
@@ -230,7 +230,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(template, e);
Audit.Add(AuditTypes.Save, string.Format("Save Template issued by user"), userId == -1 ? 0 : userId, template.Id);
Audit.Add(AuditTypes.Save, string.Format("Save Template performed by user"), userId == -1 ? 0 : userId, template.Id);
}
}
@@ -255,7 +255,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(template, e);
Audit.Add(AuditTypes.Delete, string.Format("Delete Template issued by user"), userId == -1 ? 0 : userId, template.Id);
Audit.Add(AuditTypes.Delete, string.Format("Delete Template performed by user"), userId == -1 ? 0 : userId, template.Id);
}
}

View File

@@ -60,14 +60,16 @@ namespace Umbraco.Core.Services
/// Saves a <see cref="IDictionaryItem"/> object
/// </summary>
/// <param name="dictionaryItem"><see cref="IDictionaryItem"/> to save</param>
void Save(IDictionaryItem dictionaryItem);
/// <param name="userId">Optional id of the user saving the dictionary item</param>
void Save(IDictionaryItem dictionaryItem, int userId = -1);
/// <summary>
/// Deletes a <see cref="IDictionaryItem"/> object and its related translations
/// as well as its children.
/// </summary>
/// <param name="dictionaryItem"><see cref="IDictionaryItem"/> to delete</param>
void Delete(IDictionaryItem dictionaryItem);
/// <param name="userId">Optional id of the user deleting the dictionary item</param>
void Delete(IDictionaryItem dictionaryItem, int userId = -1);
/// <summary>
/// Gets a <see cref="ILanguage"/> by its id
@@ -93,12 +95,14 @@ namespace Umbraco.Core.Services
/// Saves a <see cref="ILanguage"/> object
/// </summary>
/// <param name="language"><see cref="ILanguage"/> to save</param>
void Save(ILanguage language);
/// <param name="userId">Optional id of the user saving the language</param>
void Save(ILanguage language, int userId = -1);
/// <summary>
/// Deletes a <see cref="ILanguage"/> by removing it and its usages from the db
/// </summary>
/// <param name="language"><see cref="ILanguage"/> to delete</param>
void Delete(ILanguage language);
/// <param name="userId">Optional id of the user deleting the language</param>
void Delete(ILanguage language, int userId = -1);
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Auditing;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Querying;
@@ -119,12 +120,24 @@ namespace Umbraco.Core.Services
/// Saves a <see cref="IDictionaryItem"/> object
/// </summary>
/// <param name="dictionaryItem"><see cref="IDictionaryItem"/> to save</param>
public void Save(IDictionaryItem dictionaryItem)
/// <param name="userId">Optional id of the user saving the dictionary item</param>
public void Save(IDictionaryItem dictionaryItem, int userId = -1)
{
var repository = _dictionaryRepository;
var e = new SaveEventArgs();
if (Saving != null)
Saving(dictionaryItem, e);
repository.AddOrUpdate(dictionaryItem);
_unitOfWork.Commit();
if (!e.Cancel)
{
_dictionaryRepository.AddOrUpdate(dictionaryItem);
_unitOfWork.Commit();
if (Saved != null)
Saved(dictionaryItem, e);
Audit.Add(AuditTypes.Save, "Save DictionaryItem performed by user", userId == -1 ? 0 : userId,
dictionaryItem.Id);
}
}
/// <summary>
@@ -132,13 +145,24 @@ namespace Umbraco.Core.Services
/// as well as its children.
/// </summary>
/// <param name="dictionaryItem"><see cref="IDictionaryItem"/> to delete</param>
public void Delete(IDictionaryItem dictionaryItem)
/// <param name="userId">Optional id of the user deleting the dictionary item</param>
public void Delete(IDictionaryItem dictionaryItem, int userId = -1)
{
var repository = _dictionaryRepository;
var e = new DeleteEventArgs { Id = dictionaryItem.Id };
if (Deleting != null)
Deleting(dictionaryItem, e);
//NOTE: The recursive delete is done in the repository
repository.Delete(dictionaryItem);
_unitOfWork.Commit();
if (!e.Cancel)
{
//NOTE: The recursive delete is done in the repository
_dictionaryRepository.Delete(dictionaryItem);
_unitOfWork.Commit();
if (Deleted != null)
Deleted(dictionaryItem, e);
Audit.Add(AuditTypes.Delete, "Delete DictionaryItem performed by user", userId == -1 ? 0 : userId, dictionaryItem.Id);
}
}
/// <summary>
@@ -182,25 +206,69 @@ namespace Umbraco.Core.Services
/// Saves a <see cref="ILanguage"/> object
/// </summary>
/// <param name="language"><see cref="ILanguage"/> to save</param>
public void Save(ILanguage language)
/// <param name="userId">Optional id of the user saving the language</param>
public void Save(ILanguage language, int userId = -1)
{
var repository = _languageRepository;
var e = new SaveEventArgs();
if (Saving != null)
Saving(language, e);
repository.AddOrUpdate(language);
_unitOfWork.Commit();
if (!e.Cancel)
{
_languageRepository.AddOrUpdate(language);
_unitOfWork.Commit();
if (Saved != null)
Saved(language, e);
Audit.Add(AuditTypes.Save, "Save Language performed by user", userId == -1 ? 0 : userId, language.Id);
}
}
/// <summary>
/// Deletes a <see cref="ILanguage"/> by removing it (but not its usages) from the db
/// </summary>
/// <param name="language"><see cref="ILanguage"/> to delete</param>
public void Delete(ILanguage language)
/// <param name="userId">Optional id of the user deleting the language</param>
public void Delete(ILanguage language, int userId = -1)
{
var repository = _languageRepository;
var e = new DeleteEventArgs { Id = language.Id };
if (Deleting != null)
Deleting(language, e);
//NOTE: There isn't any constraints in the db, so possible references aren't deleted
repository.Delete(language);
_unitOfWork.Commit();
if (!e.Cancel)
{
//NOTE: There isn't any constraints in the db, so possible references aren't deleted
_languageRepository.Delete(language);
_unitOfWork.Commit();
if (Deleted != null)
Deleted(language, e);
Audit.Add(AuditTypes.Delete, "Delete Language performed by user", userId == -1 ? 0 : userId, language.Id);
}
}
#region Event Handlers
/// <summary>
/// Occurs before Delete
/// </summary>
public static event EventHandler<DeleteEventArgs> Deleting;
/// <summary>
/// Occurs after Delete
/// </summary>
public static event EventHandler<DeleteEventArgs> Deleted;
/// <summary>
/// Occurs before Save
/// </summary>
public static event EventHandler<SaveEventArgs> Saving;
/// <summary>
/// Occurs after Save
/// </summary>
public static event EventHandler<SaveEventArgs> Saved;
#endregion
}
}

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Auditing;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Repositories;
@@ -75,6 +76,8 @@ namespace Umbraco.Core.Services
var repository = _macroRepository;
repository.Delete(macro);
_unitOfWork.Commit();
Audit.Add(AuditTypes.Delete, "Delete Macro performed by user", userId > -1 ? userId : 0, -1);
}
/// <summary>
@@ -84,9 +87,10 @@ namespace Umbraco.Core.Services
/// <param name="userId">Optional Id of the user deleting the macro</param>
public void Save(IMacro macro, int userId = -1)
{
var repository = _macroRepository;
repository.AddOrUpdate(macro);
_macroRepository.AddOrUpdate(macro);
_unitOfWork.Commit();
Audit.Add(AuditTypes.Save, "Save Macro performed by user", userId > -1 ? userId : 0, -1);
}
/// <summary>

View File

@@ -189,7 +189,7 @@ namespace Umbraco.Core.Services
if (Moved != null)
Moved(media, e);
Audit.Add(AuditTypes.Move, "Move Media issued by user", userId == -1 ? 0 : userId, media.Id);
Audit.Add(AuditTypes.Move, "Move Media performed by user", userId == -1 ? 0 : userId, media.Id);
}
}
@@ -216,7 +216,7 @@ namespace Umbraco.Core.Services
if (Trashed != null)
Trashed(media, e);
Audit.Add(AuditTypes.Move, "Move Media to Recycle Bin issued 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);
}
}
@@ -236,7 +236,7 @@ namespace Umbraco.Core.Services
}
_unitOfWork.Commit();
Audit.Add(AuditTypes.Delete, "Empty Recycle Bin issued by user", 0, -20);
Audit.Add(AuditTypes.Delete, "Empty Recycle Bin performed by user", 0, -20);
}
/// <summary>
@@ -272,7 +272,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(contents, e);
Audit.Add(AuditTypes.Delete, "Delete Media items by Type issued by user", userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Delete, "Delete Media items by Type performed by user", userId == -1 ? 0 : userId, -1);
}
}
@@ -299,7 +299,7 @@ namespace Umbraco.Core.Services
if (Deleted != null)
Deleted(media, e);
Audit.Add(AuditTypes.Delete, "Delete Media issued by user", userId == -1 ? 0 : userId, media.Id);
Audit.Add(AuditTypes.Delete, "Delete Media performed by user", userId == -1 ? 0 : userId, media.Id);
}
}
@@ -323,7 +323,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(media, e);
Audit.Add(AuditTypes.Save, "Save Media issued by user", media.CreatorId, media.Id);
Audit.Add(AuditTypes.Save, "Save Media performed by user", media.CreatorId, media.Id);
}
}
@@ -350,7 +350,7 @@ namespace Umbraco.Core.Services
if (Saved != null)
Saved(medias, e);
Audit.Add(AuditTypes.Save, "Save Media items issued by user", userId == -1 ? 0 : userId, -1);
Audit.Add(AuditTypes.Save, "Save Media items performed by user", userId == -1 ? 0 : userId, -1);
}
}