diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj b/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj index 3031cbf75..41526d5e3 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj @@ -139,6 +139,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/ContentDefinition/GlobalContentDefinitionEditorEvents.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/ContentDefinition/GlobalContentDefinitionEditorEvents.cs index c790fb513..cacd0e0bc 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/ContentDefinition/GlobalContentDefinitionEditorEvents.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/ContentDefinition/GlobalContentDefinitionEditorEvents.cs @@ -15,6 +15,7 @@ using Orchard.Environment.Extensions; namespace Orchard.AuditTrail.Providers.ContentDefinition { [OrchardFeature("Orchard.AuditTrail.ContentDefinition")] public class GlobalContentDefinitionEditorEvents : ContentDefinitionEditorEventsBase { + private const string _contentPartSettingsDescriptionName = "ContentPartSettings.Description"; private readonly IAuditTrailManager _auditTrailManager; private readonly IWorkContextAccessor _wca; private readonly IContentDefinitionService _contentDefinitionService; @@ -118,13 +119,30 @@ namespace Orchard.AuditTrail.Providers.ContentDefinition { public override void PartEditorUpdated(ContentPartDefinitionBuilder builder) { var contentPartDefinition = builder.Build(); - var newSettings = contentPartDefinition.Settings; + var newPartSettings = contentPartDefinition.Settings; - if (!AreEqual(newSettings, _oldPartSettings)) { + if (newPartSettings.ContainsKey(_contentPartSettingsDescriptionName)) { + var oldDescription = _oldPartSettings.Get(_contentPartSettingsDescriptionName); + var newDescription = newPartSettings.Get(_contentPartSettingsDescriptionName); + if (oldDescription != newDescription) { + var eventData = new Dictionary { + {"ContentPartName", builder.Name}, + {"OldDescription", oldDescription}, + {"NewDescription", newDescription} + }; + RecordContentPartAuditTrail(ContentPartAuditTrailEventProvider.DescriptionChanged, eventData, builder.Name); + } + } + + // Description change should not be re-recorded as general settings change. + var remainingOldPartSettings = new SettingsDictionary(_oldPartSettings.Where(item => item.Key != _contentPartSettingsDescriptionName).ToDictionary(item => item.Key, item => item.Value)); + var remainingNewPartSettings = new SettingsDictionary(newPartSettings.Where(item => item.Key != _contentPartSettingsDescriptionName).ToDictionary(item => item.Key, item => item.Value)); + + if (!AreEqual(remainingNewPartSettings, remainingOldPartSettings)) { var eventData = new Dictionary { {"ContentPartName", builder.Name}, - {"OldSettings", ToXml(_oldPartSettings)}, - {"NewSettings", ToXml(newSettings)} + {"OldSettings", ToXml(remainingOldPartSettings)}, + {"NewSettings", ToXml(remainingNewPartSettings)} }; RecordContentPartAuditTrail(ContentPartAuditTrailEventProvider.PartSettingsUpdated, eventData, builder.Name); } diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/AuditTrailEvent-ContentPart-DescriptionChanged.cshtml b/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/AuditTrailEvent-ContentPart-DescriptionChanged.cshtml new file mode 100644 index 000000000..491d67dc7 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/AuditTrailEvent-ContentPart-DescriptionChanged.cshtml @@ -0,0 +1,11 @@ +@using Orchard.AuditTrail.Helpers +@{ + var eventData = (IDictionary) Model.EventData; + var contentPartName = eventData.Get("ContentPartName"); + var oldDescription = eventData.Get("OldDescription"); + var newDescription = eventData.Get("NewDescription"); +} + +
+ @T("The description of content part {0} was changed from {1} to {2}.", contentPartName, oldDescription.OrIfEmpty(T("[Empty]")), newDescription.OrIfEmpty(T("[Empty]"))) +
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/AuditTrailEvent-ContentType-TypeDisplayNameUpdated.cshtml b/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/AuditTrailEvent-ContentType-TypeDisplayNameUpdated.cshtml index 4905d2a8f..cb1a3dbb8 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/AuditTrailEvent-ContentType-TypeDisplayNameUpdated.cshtml +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/AuditTrailEvent-ContentType-TypeDisplayNameUpdated.cshtml @@ -7,5 +7,5 @@ }
- @T("The display name for the content type {0} was changed from {1} to {2}.", contentTypeName, oldDisplayName, newDisplayName) + @T("The display name for the content type {0} was changed from {1} to {2}.", contentTypeName, oldDisplayName.OrIfEmpty(T("[Empty]")), newDisplayName.OrIfEmpty(T("[Empty]")))
\ No newline at end of file