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