diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Drivers/AuditTrailSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Drivers/AuditTrailSettingsPartDriver.cs index 1041a131a..b5a211314 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Drivers/AuditTrailSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Drivers/AuditTrailSettingsPartDriver.cs @@ -39,13 +39,14 @@ namespace Orchard.AuditTrail.Drivers { Event = eventDescriptor.Event, Name = eventDescriptor.Name, Description = eventDescriptor.Description, - IsEnabled = eventSetting != null ? eventSetting.IsEnabled : eventDescriptor.IsEnabledByDefault + IsEnabled = eventDescriptor.IsMandatory || (eventSetting != null ? eventSetting.IsEnabled : eventDescriptor.IsEnabledByDefault), + IsMandatory = eventDescriptor.IsMandatory }).ToList() }).ToList() }; if (updater != null) { - if (updater.TryUpdateModel(viewModel, Prefix, null, null)) { + if (updater.TryUpdateModel(viewModel, Prefix, new[] { "IsEnabled" }, null)) { foreach (var eventSettingViewModel in viewModel.Categories.SelectMany(x => x.Events)) { var eventSetting = eventSettings.FirstOrDefault(x => x.EventName == eventSettingViewModel.Event); @@ -54,7 +55,7 @@ namespace Orchard.AuditTrail.Drivers { eventSettings.Add(eventSetting); } - eventSetting.IsEnabled = eventSettingViewModel.IsEnabled; + eventSetting.IsEnabled = eventSettingViewModel.IsEnabled || eventSettingViewModel.IsMandatory; } part.EventSettings = eventSettings; } diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/AuditTrail/SettingsAuditTrailEventProvider.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/AuditTrail/SettingsAuditTrailEventProvider.cs index c77d6b6b3..deeab756c 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/AuditTrail/SettingsAuditTrailEventProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Providers/AuditTrail/SettingsAuditTrailEventProvider.cs @@ -8,7 +8,7 @@ namespace Orchard.AuditTrail.Providers.AuditTrail { public override void Describe(DescribeContext context) { context.For("AuditTrailSettings", T("Audit Trail Settings")) - .Event(this, EventsChanged, T("Events Changed"), T("Audit Trail event settings were changed."), enableByDefault: true); + .Event(this, EventsChanged, T("Events Changed"), T("Audit Trail event settings were changed."), enableByDefault: true, isMandatory: true); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Scripts/audit-trail-admin.js b/src/Orchard.Web/Modules/Orchard.AuditTrail/Scripts/audit-trail-admin.js index e33cd27ba..519fa06df 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Scripts/audit-trail-admin.js +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Scripts/audit-trail-admin.js @@ -14,7 +14,7 @@ $("table.check-all").each(function() { var table = $(this); var controller = table.find("thead input[type=\"checkbox\"]"); - var checkboxes = table.find("tbody input[type=\"checkbox\"]"); + var checkboxes = table.find("tbody input[type=\"checkbox\"]:not(:disabled)"); var updateController = function () { var allChecked = checkboxes.filter(":not(:checked)").length == 0; diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs index 1c384dc08..844324fbd 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs @@ -160,6 +160,9 @@ namespace Orchard.AuditTrail.Services { } private bool IsEventEnabled(AuditTrailEventDescriptor eventDescriptor) { + if(eventDescriptor.IsMandatory) + return true; + var settingsDictionary = _cacheManager.Get("AuditTrail.EventSettings", context => { context.Monitor(_signals.When("AuditTrail.EventSettings")); return _siteService.GetSiteSettings().As().EventSettings.ToDictionary(x => x.EventName); diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/AuditTrailEventDescriptor.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/AuditTrailEventDescriptor.cs index 7bfb11200..e5e83a3fb 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/AuditTrailEventDescriptor.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/AuditTrailEventDescriptor.cs @@ -7,5 +7,10 @@ namespace Orchard.AuditTrail.Services.Models { public LocalizedString Name { get; set; } public LocalizedString Description { get; set; } public bool IsEnabledByDefault { get; set; } + + /// + /// Wether the event can be disabled or not. + /// + public bool IsMandatory { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/DescribeFor.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/DescribeFor.cs index 81a7e7fa7..7d360a0a9 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/DescribeFor.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/Models/DescribeFor.cs @@ -18,7 +18,14 @@ namespace Orchard.AuditTrail.Services.Models { public string Category { get; private set; } public LocalizedString Name { get; private set; } - public DescribeFor Event(IAuditTrailEventProvider provider, string eventName, LocalizedString name, LocalizedString description, bool enableByDefault = false) { + public DescribeFor Event( + IAuditTrailEventProvider provider, + string eventName, + LocalizedString name, + LocalizedString description, + bool enableByDefault = false, + bool isMandatory = false) { + _events.Add(new AuditTrailEventDescriptor { CategoryDescriptor = new AuditTrailCategoryDescriptor { Category = Category, @@ -28,7 +35,8 @@ namespace Orchard.AuditTrail.Services.Models { Event = EventNameHelper.GetFullyQualifiedEventName(provider.GetType(), eventName), Name = name, Description = description, - IsEnabledByDefault = enableByDefault + IsEnabledByDefault = enableByDefault, + IsMandatory = isMandatory }); return this; } diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/ViewModels/AuditTrailEventSettingsViewModel.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/ViewModels/AuditTrailEventSettingsViewModel.cs index ce652ced7..ff79dff28 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/ViewModels/AuditTrailEventSettingsViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/ViewModels/AuditTrailEventSettingsViewModel.cs @@ -7,5 +7,6 @@ namespace Orchard.AuditTrail.ViewModels { public LocalizedString Name { get; set; } public LocalizedString Description { get; set; } public bool IsEnabled { get; set; } + public bool IsMandatory { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/EditorTemplates/Parts.AuditTrailSettings.cshtml b/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/EditorTemplates/Parts.AuditTrailSettings.cshtml index afc62e66a..f1051e37b 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/EditorTemplates/Parts.AuditTrailSettings.cshtml +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Views/EditorTemplates/Parts.AuditTrailSettings.cshtml @@ -38,7 +38,7 @@ @evnt.Description - checked="checked"} /> + checked="checked"} @if(evnt.IsMandatory){disabled="disabled"}/> j++;