mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Some quick changes after call with Daniel.
This commit is contained in:
@@ -28,6 +28,7 @@ namespace Orchard.AuditTrail.Controllers {
|
||||
public dynamic New { get; private set; }
|
||||
|
||||
public ActionResult Index(PagerParameters pagerParameters, AuditTrailFilterViewModel filterParameters) {
|
||||
|
||||
if(!_authorizer.Authorize(Permissions.ViewAuditTrail))
|
||||
return new HttpUnauthorizedResult();
|
||||
|
||||
@@ -40,19 +41,21 @@ namespace Orchard.AuditTrail.Controllers {
|
||||
To = _dateServices.ConvertFromLocalString(filterParameters.To.Date, filterParameters.To.Time),
|
||||
}, filterParameters.OrderBy);
|
||||
var pagerShape = New.Pager(pager).TotalItemCount(pageOfData.TotalItemCount);
|
||||
var eventDescriptorsQuery = from c in _auditTrailManager.Describe()
|
||||
from e in c.Events
|
||||
select e;
|
||||
var eventDescriptorsQuery =
|
||||
from c in _auditTrailManager.DescribeCategories()
|
||||
from e in c.Events
|
||||
select e;
|
||||
var eventDescriptors = eventDescriptorsQuery.ToDictionary(x => x.Event);
|
||||
var recordViewModelsQuery = from record in pageOfData
|
||||
let descriptor = eventDescriptors.ContainsKey(record.Event) ? eventDescriptors[record.Event] : default(AuditTrailEventDescriptor)
|
||||
where descriptor != null
|
||||
select new AuditTrailEventSummaryViewModel {
|
||||
Record = record,
|
||||
EventDescriptor = descriptor,
|
||||
CategoryDescriptor = descriptor.CategoryDescriptor,
|
||||
SummaryShape = _displayBuilder.BuildDisplay(record, "SummaryAdmin")
|
||||
};
|
||||
var recordViewModelsQuery =
|
||||
from record in pageOfData
|
||||
let descriptor = eventDescriptors.ContainsKey(record.Event) ? eventDescriptors[record.Event] : default(AuditTrailEventDescriptor)
|
||||
where descriptor != null
|
||||
select new AuditTrailEventSummaryViewModel {
|
||||
Record = record,
|
||||
EventDescriptor = descriptor,
|
||||
CategoryDescriptor = descriptor.CategoryDescriptor,
|
||||
SummaryShape = _displayBuilder.BuildDisplay(record, "SummaryAdmin")
|
||||
};
|
||||
|
||||
var viewModel = new AuditTrailViewModel {
|
||||
Records = recordViewModelsQuery.ToArray(),
|
||||
@@ -68,7 +71,7 @@ namespace Orchard.AuditTrail.Controllers {
|
||||
return new HttpUnauthorizedResult();
|
||||
|
||||
var record = _auditTrailManager.GetRecord(id);
|
||||
var descriptor = _auditTrailManager.Describe(record.Event);
|
||||
var descriptor = _auditTrailManager.DescribeEvent(record.Event);
|
||||
var detailsShape = _displayBuilder.BuildDisplay(record, "Detail");
|
||||
var viewModel = new AuditTrailDetailsViewModel {
|
||||
Record = record,
|
||||
|
@@ -50,7 +50,7 @@ namespace Orchard.AuditTrail.Drivers {
|
||||
FilterValue = part.Id.ToString(CultureInfo.InvariantCulture)
|
||||
});
|
||||
var pagerShape = shapeHelper.Pager(pager).TotalItemCount(pageOfData.TotalItemCount);
|
||||
var eventDescriptors = from c in _auditTrailManager.Describe()
|
||||
var eventDescriptors = from c in _auditTrailManager.DescribeCategories()
|
||||
from e in c.Events
|
||||
select e;
|
||||
var recordViewModels = from record in pageOfData
|
||||
|
@@ -25,14 +25,15 @@ namespace Orchard.AuditTrail.Drivers {
|
||||
return null;
|
||||
|
||||
return ContentShape("Parts_AuditTrailSettings_Edit", () => {
|
||||
var descriptors = _auditTrailManager.Describe();
|
||||
var descriptors = _auditTrailManager.DescribeCategories();
|
||||
var eventSettings = part.EventSettings.ToList();
|
||||
var viewModel = new AuditTrailSettingsViewModel {
|
||||
Categories = (from categoryDescriptor in descriptors
|
||||
select new AuditTrailCategorySettingsViewModel {
|
||||
Category = categoryDescriptor.Category,
|
||||
Name = categoryDescriptor.Name,
|
||||
Events = (from eventDescriptor in categoryDescriptor.Events
|
||||
Events =
|
||||
(from eventDescriptor in categoryDescriptor.Events
|
||||
let eventSetting = eventSettings.FirstOrDefault(x => x.EventName == eventDescriptor.Event)
|
||||
select new AuditTrailEventSettingsViewModel {
|
||||
Event = eventDescriptor.Event,
|
||||
|
@@ -8,7 +8,7 @@ namespace Orchard.AuditTrail.Helpers {
|
||||
}
|
||||
|
||||
public static string GetFullyQualifiedEventName(Type providerType, string eventName) {
|
||||
return String.Concat(providerType.FullName, ".", eventName);
|
||||
return String.Format("{0}.{1}", providerType.FullName, eventName);
|
||||
}
|
||||
}
|
||||
}
|
@@ -191,7 +191,7 @@
|
||||
<Compile Include="ViewModels\AuditTrailDetailsViewModel.cs" />
|
||||
<Compile Include="Providers\Content\GlobalContentHandler.cs" />
|
||||
<Compile Include="Models\AuditTrailEventDescriptor.cs" />
|
||||
<Compile Include="Models\AuditTrailCategoryDescriptor.cs" />
|
||||
<Compile Include="Services\Models\AuditTrailCategoryDescriptor.cs" />
|
||||
<Compile Include="Models\DescribeContext.cs" />
|
||||
<Compile Include="Models\DescribeFor.cs" />
|
||||
<Compile Include="Models\AuditTrailContext.cs" />
|
||||
|
@@ -18,27 +18,27 @@ namespace Orchard.AuditTrail.Providers.Content {
|
||||
}
|
||||
|
||||
protected override void Created(CreateContentContext context) {
|
||||
RecordAuditTrail(ContentAuditTrailEventProvider.Created, context.ContentItem);
|
||||
RecordAuditTrailEvent(ContentAuditTrailEventProvider.Created, context.ContentItem);
|
||||
}
|
||||
|
||||
protected override void Updated(UpdateContentContext context) {
|
||||
RecordAuditTrail(ContentAuditTrailEventProvider.Saved, context.ContentItem);
|
||||
RecordAuditTrailEvent(ContentAuditTrailEventProvider.Saved, context.ContentItem);
|
||||
}
|
||||
|
||||
protected override void Published(PublishContentContext context) {
|
||||
var previousVersion = context.PreviousItemVersionRecord;
|
||||
RecordAuditTrail(ContentAuditTrailEventProvider.Published, context.ContentItem, previousVersion);
|
||||
RecordAuditTrailEvent(ContentAuditTrailEventProvider.Published, context.ContentItem, previousVersion);
|
||||
}
|
||||
|
||||
protected override void Unpublished(PublishContentContext context) {
|
||||
RecordAuditTrail(ContentAuditTrailEventProvider.Unpublished, context.ContentItem);
|
||||
RecordAuditTrailEvent(ContentAuditTrailEventProvider.Unpublished, context.ContentItem);
|
||||
}
|
||||
|
||||
protected override void Removed(RemoveContentContext context) {
|
||||
RecordAuditTrail(ContentAuditTrailEventProvider.Removed, context.ContentItem);
|
||||
RecordAuditTrailEvent(ContentAuditTrailEventProvider.Removed, context.ContentItem);
|
||||
}
|
||||
|
||||
private void RecordAuditTrail(string eventName, IContent content, ContentItemVersionRecord previousContentItemVersion = null) {
|
||||
private void RecordAuditTrailEvent(string eventName, IContent content, ContentItemVersionRecord previousContentItemVersion = null) {
|
||||
var title = _contentManager.GetItemMetadata(content).DisplayText;
|
||||
|
||||
var properties = new Dictionary<string, object> {
|
||||
@@ -56,7 +56,7 @@ namespace Orchard.AuditTrail.Providers.Content {
|
||||
eventData["PreviousContentItemVersionId"] = previousContentItemVersion.Id;
|
||||
}
|
||||
|
||||
_auditTrailManager.Record<ContentAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "content", eventFilterData: content.Id.ToString(CultureInfo.InvariantCulture));
|
||||
_auditTrailManager.CreateRecord<ContentAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "content", eventFilterData: content.Id.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
}
|
||||
}
|
@@ -13,27 +13,27 @@ namespace Orchard.AuditTrail.Providers.ContentDefinition {
|
||||
}
|
||||
|
||||
public void ContentTypeCreated(dynamic context) {
|
||||
RecordContentTypeAuditTrail(ContentTypeAuditTrailEventProvider.Created, context.ContentTypeDefinition);
|
||||
RecordContentTypeAuditTrailEvent(ContentTypeAuditTrailEventProvider.Created, context.ContentTypeDefinition);
|
||||
}
|
||||
|
||||
public void ContentTypeRemoved(dynamic context) {
|
||||
RecordContentTypeAuditTrail(ContentTypeAuditTrailEventProvider.Removed, context.ContentTypeDefinition);
|
||||
RecordContentTypeAuditTrailEvent(ContentTypeAuditTrailEventProvider.Removed, context.ContentTypeDefinition);
|
||||
}
|
||||
|
||||
public void ContentPartCreated(dynamic context) {
|
||||
RecordContentPartAuditTrail(ContentPartAuditTrailEventProvider.Created, context.ContentPartDefinition);
|
||||
RecordContentPartAuditTrailEvent(ContentPartAuditTrailEventProvider.Created, context.ContentPartDefinition);
|
||||
}
|
||||
|
||||
public void ContentPartRemoved(dynamic context) {
|
||||
RecordContentPartAuditTrail(ContentPartAuditTrailEventProvider.Removed, context.ContentPartDefinition);
|
||||
RecordContentPartAuditTrailEvent(ContentPartAuditTrailEventProvider.Removed, context.ContentPartDefinition);
|
||||
}
|
||||
|
||||
public void ContentPartAttached(dynamic context) {
|
||||
RecordContentTypePartAuditTrail(ContentTypeAuditTrailEventProvider.PartAdded, context.ContentTypeName, context.ContentPartName);
|
||||
RecordContentTypePartAuditTrailEvent(ContentTypeAuditTrailEventProvider.PartAdded, context.ContentTypeName, context.ContentPartName);
|
||||
}
|
||||
|
||||
public void ContentPartDetached(dynamic context) {
|
||||
RecordContentTypePartAuditTrail(ContentTypeAuditTrailEventProvider.PartRemoved, context.ContentTypeName, context.ContentPartName);
|
||||
RecordContentTypePartAuditTrailEvent(ContentTypeAuditTrailEventProvider.PartRemoved, context.ContentTypeName, context.ContentPartName);
|
||||
}
|
||||
|
||||
public void ContentFieldAttached(dynamic context) {
|
||||
@@ -43,7 +43,7 @@ namespace Orchard.AuditTrail.Providers.ContentDefinition {
|
||||
{"ContentFieldTypeName", context.ContentFieldTypeName},
|
||||
{"ContentFieldDisplayName", context.ContentFieldDisplayName}
|
||||
};
|
||||
_auditTrailManager.Record<ContentPartAuditTrailEventProvider>(ContentPartAuditTrailEventProvider.FieldAdded, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: context.ContentPartName);
|
||||
_auditTrailManager.CreateRecord<ContentPartAuditTrailEventProvider>(ContentPartAuditTrailEventProvider.FieldAdded, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: context.ContentPartName);
|
||||
}
|
||||
|
||||
public void ContentFieldDetached(dynamic context) {
|
||||
@@ -51,30 +51,30 @@ namespace Orchard.AuditTrail.Providers.ContentDefinition {
|
||||
{"ContentPartName", context.ContentPartName},
|
||||
{"ContentFieldName", context.ContentFieldName}
|
||||
};
|
||||
_auditTrailManager.Record<ContentPartAuditTrailEventProvider>(ContentPartAuditTrailEventProvider.FieldRemoved, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: context.ContentPartName);
|
||||
_auditTrailManager.CreateRecord<ContentPartAuditTrailEventProvider>(ContentPartAuditTrailEventProvider.FieldRemoved, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: context.ContentPartName);
|
||||
}
|
||||
|
||||
private void RecordContentTypeAuditTrail(string eventName, ContentTypeDefinition contentTypeDefinition) {
|
||||
private void RecordContentTypeAuditTrailEvent(string eventName, ContentTypeDefinition contentTypeDefinition) {
|
||||
var eventData = new Dictionary<string, object> {
|
||||
{"ContentTypeName", contentTypeDefinition.Name},
|
||||
{"ContentTypeDisplayName", contentTypeDefinition.DisplayName},
|
||||
};
|
||||
_auditTrailManager.Record<ContentTypeAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contenttype", eventFilterData: contentTypeDefinition.Name);
|
||||
_auditTrailManager.CreateRecord<ContentTypeAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contenttype", eventFilterData: contentTypeDefinition.Name);
|
||||
}
|
||||
|
||||
private void RecordContentPartAuditTrail(string eventName, ContentPartDefinition contentPartDefinition) {
|
||||
private void RecordContentPartAuditTrailEvent(string eventName, ContentPartDefinition contentPartDefinition) {
|
||||
var eventData = new Dictionary<string, object> {
|
||||
{"ContentPartName", contentPartDefinition.Name}
|
||||
};
|
||||
_auditTrailManager.Record<ContentPartAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: contentPartDefinition.Name);
|
||||
_auditTrailManager.CreateRecord<ContentPartAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: contentPartDefinition.Name);
|
||||
}
|
||||
|
||||
private void RecordContentTypePartAuditTrail(string eventName, string contentTypeName, string contentPartName) {
|
||||
private void RecordContentTypePartAuditTrailEvent(string eventName, string contentTypeName, string contentPartName) {
|
||||
var eventData = new Dictionary<string, object> {
|
||||
{"ContentTypeName", contentTypeName},
|
||||
{"ContentPartName", contentPartName}
|
||||
};
|
||||
_auditTrailManager.Record<ContentTypeAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contenttype", eventFilterData: contentTypeName);
|
||||
_auditTrailManager.CreateRecord<ContentTypeAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contenttype", eventFilterData: contentTypeName);
|
||||
}
|
||||
}
|
||||
}
|
@@ -51,11 +51,11 @@ namespace Orchard.AuditTrail.Providers.ContentDefinition {
|
||||
}
|
||||
|
||||
private void RecordContentTypeAuditTrail(string eventName, IDictionary<string, object> eventData, string contentTypeName) {
|
||||
_auditTrailManager.Record<ContentTypeAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contenttype", eventFilterData: contentTypeName);
|
||||
_auditTrailManager.CreateRecord<ContentTypeAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contenttype", eventFilterData: contentTypeName);
|
||||
}
|
||||
|
||||
private void RecordContentPartAuditTrail(string eventName, IDictionary<string, object> eventData, string contentPartName) {
|
||||
_auditTrailManager.Record<ContentPartAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: contentPartName);
|
||||
_auditTrailManager.CreateRecord<ContentPartAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "contentpart", eventFilterData: contentPartName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -13,11 +13,11 @@ namespace Orchard.AuditTrail.Providers.Role {
|
||||
}
|
||||
|
||||
public void Created(dynamic context) {
|
||||
RecordAuditTrail(RoleAuditTrailEventProvider.Created, context.Role.Name);
|
||||
RecordAuditTrailEvent(RoleAuditTrailEventProvider.Created, context.Role.Name);
|
||||
}
|
||||
|
||||
public void Removed(dynamic context) {
|
||||
RecordAuditTrail(RoleAuditTrailEventProvider.Removed, context.Role.Name);
|
||||
RecordAuditTrailEvent(RoleAuditTrailEventProvider.Removed, context.Role.Name);
|
||||
}
|
||||
|
||||
public void Renamed(dynamic context) {
|
||||
@@ -27,44 +27,35 @@ namespace Orchard.AuditTrail.Providers.Role {
|
||||
{"NewRoleName", (string)context.NewRoleName},
|
||||
};
|
||||
|
||||
RecordAuditTrail(RoleAuditTrailEventProvider.Renamed, context.Role.Name, properties: null, eventData:eventData);
|
||||
RecordAuditTrailEvent(RoleAuditTrailEventProvider.Renamed, context.Role.Name, properties: null, eventData:eventData);
|
||||
}
|
||||
|
||||
public void PermissionAdded(dynamic context) {
|
||||
RecordAuditTrail(RoleAuditTrailEventProvider.PermissionAdded, context.Role.Name, context.Permission.Name);
|
||||
RecordAuditTrailEvent(RoleAuditTrailEventProvider.PermissionAdded, (string) context.Role.Name, (IUser) context.Permission.Name);
|
||||
}
|
||||
|
||||
public void PermissionRemoved(dynamic context) {
|
||||
RecordAuditTrail(RoleAuditTrailEventProvider.PermissionRemoved, context.Role.Name, context.Permission.Name);
|
||||
RecordAuditTrailEvent(RoleAuditTrailEventProvider.PermissionRemoved, (string) context.Role.Name, (IUser) context.Permission.Name);
|
||||
}
|
||||
|
||||
public void UserAdded(dynamic context) {
|
||||
RecordAuditTrail(RoleAuditTrailEventProvider.UserAdded, context.Role.Name, context.User);
|
||||
RecordAuditTrailEvent(RoleAuditTrailEventProvider.UserAdded, (string) context.Role.Name, (IUser) context.User);
|
||||
}
|
||||
|
||||
public void UserRemoved(dynamic context) {
|
||||
RecordAuditTrail(RoleAuditTrailEventProvider.UserRemoved, context.Role.Name, context.User);
|
||||
RecordAuditTrailEvent(RoleAuditTrailEventProvider.UserRemoved, (string) context.Role.Name, (IUser) context.User);
|
||||
}
|
||||
|
||||
private void RecordAuditTrail(string eventName, string roleName) {
|
||||
private void RecordAuditTrailEvent(string eventName, string roleName) {
|
||||
var eventData = new Dictionary<string, object> {
|
||||
{"RoleName", roleName}
|
||||
};
|
||||
|
||||
RecordAuditTrail(eventName, roleName, properties: null, eventData: eventData);
|
||||
}
|
||||
|
||||
private void RecordAuditTrail(string eventName, string roleName, string permissionName) {
|
||||
var eventData = new Dictionary<string, object> {
|
||||
{"RoleName", roleName},
|
||||
{"PermissionName", permissionName}
|
||||
};
|
||||
|
||||
RecordAuditTrail(eventName, roleName, properties: null, eventData: eventData);
|
||||
RecordAuditTrailEvent(eventName, roleName, properties: null, eventData: eventData);
|
||||
}
|
||||
|
||||
|
||||
private void RecordAuditTrail(string eventName, string roleName, IUser user) {
|
||||
private void RecordAuditTrailEvent(string eventName, string roleName, IUser user) {
|
||||
|
||||
var properties = new Dictionary<string, object> {
|
||||
{"User", user}
|
||||
@@ -75,11 +66,11 @@ namespace Orchard.AuditTrail.Providers.Role {
|
||||
{"UserName", user.UserName}
|
||||
};
|
||||
|
||||
RecordAuditTrail(eventName, roleName, properties, eventData);
|
||||
RecordAuditTrailEvent(eventName, roleName, properties, eventData);
|
||||
}
|
||||
|
||||
private void RecordAuditTrail(string eventName, string roleName, IDictionary<string, object> properties, IDictionary<string, object> eventData) {
|
||||
_auditTrailManager.Record<RoleAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "role", eventFilterData: roleName);
|
||||
private void RecordAuditTrailEvent(string eventName, string roleName, IDictionary<string, object> properties, IDictionary<string, object> eventData) {
|
||||
_auditTrailManager.CreateRecord<RoleAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "role", eventFilterData: roleName);
|
||||
}
|
||||
}
|
||||
}
|
@@ -25,7 +25,7 @@ namespace Orchard.AuditTrail.Providers.User {
|
||||
{"UserName", userNameOrEmail}
|
||||
};
|
||||
|
||||
_auditTrailManager.Record<UserAuditTrailEventProvider>(UserAuditTrailEventProvider.LogInFailed, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "user", eventFilterData: userNameOrEmail);
|
||||
_auditTrailManager.CreateRecord<UserAuditTrailEventProvider>(UserAuditTrailEventProvider.LogInFailed, _wca.GetContext().CurrentUser, properties: null, eventData: eventData, eventFilterKey: "user", eventFilterData: userNameOrEmail);
|
||||
}
|
||||
|
||||
public void ChangedPassword(IUser user) {
|
||||
@@ -43,7 +43,7 @@ namespace Orchard.AuditTrail.Providers.User {
|
||||
{"UserName", user.UserName}
|
||||
};
|
||||
|
||||
_auditTrailManager.Record<UserAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "user", eventFilterData: user.UserName);
|
||||
_auditTrailManager.CreateRecord<UserAuditTrailEventProvider>(eventName, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "user", eventFilterData: user.UserName);
|
||||
}
|
||||
}
|
||||
}
|
@@ -18,7 +18,7 @@ namespace Orchard.AuditTrail.Services {
|
||||
|
||||
public dynamic BuildDisplay(AuditTrailEventRecord record, string displayType) {
|
||||
var eventData = _serializer.Deserialize(record.EventData);
|
||||
var descriptor = _auditTrailManager.Describe(record.Event);
|
||||
var descriptor = _auditTrailManager.DescribeEvent(record.Event);
|
||||
var auditTrailEventShape = New.AuditTrailEvent(Record: record, EventData: eventData, Descriptor: descriptor);
|
||||
var metaData = (ShapeMetadata)auditTrailEventShape.Metadata;
|
||||
metaData.DisplayType = displayType;
|
||||
|
@@ -56,12 +56,12 @@ namespace Orchard.AuditTrail.Services {
|
||||
}
|
||||
|
||||
switch (orderBy) {
|
||||
default:
|
||||
query = query.OrderByDescending(x => x.CreatedUtc).ThenByDescending(x => x.Id);
|
||||
break;
|
||||
case AuditTrailOrderBy.EventAscending:
|
||||
query = query.OrderBy(x => x.Event).ThenByDescending(x => x.Id);
|
||||
break;
|
||||
default:
|
||||
query = query.OrderByDescending(x => x.CreatedUtc).ThenByDescending(x => x.Id);
|
||||
break;
|
||||
}
|
||||
|
||||
var totalItemCount = query.Count();
|
||||
@@ -79,9 +79,9 @@ namespace Orchard.AuditTrail.Services {
|
||||
return _auditTrailRepository.Get(id);
|
||||
}
|
||||
|
||||
public AuditTrailEventRecordResult Record<T>(string eventName, IUser user, IDictionary<string, object> properties = null, IDictionary<string, object> eventData = null, string eventFilterKey = null, string eventFilterData = null) where T:IAuditTrailEventProvider {
|
||||
var eventDescriptor = Describe<T>(eventName);
|
||||
if(!IsEnabled(eventDescriptor))
|
||||
public AuditTrailEventRecordResult CreateRecord<T>(string eventName, IUser user, IDictionary<string, object> properties = null, IDictionary<string, object> eventData = null, string eventFilterKey = null, string eventFilterData = null) where T:IAuditTrailEventProvider {
|
||||
var eventDescriptor = DescribeEvent<T>(eventName);
|
||||
if(!IsEventEnabled(eventDescriptor))
|
||||
return new AuditTrailEventRecordResult {
|
||||
Record = null,
|
||||
IsDisabled = true
|
||||
@@ -119,7 +119,7 @@ namespace Orchard.AuditTrail.Services {
|
||||
};
|
||||
}
|
||||
|
||||
private bool IsEnabled(AuditTrailEventDescriptor eventDescriptor) {
|
||||
private bool IsEventEnabled(AuditTrailEventDescriptor eventDescriptor) {
|
||||
var settingsDictionary = _cacheManager.Get("AuditTrail.EventSettings", context => {
|
||||
context.Monitor(_signals.When("AuditTrail.EventSettings"));
|
||||
return _siteService.GetSiteSettings().As<AuditTrailSettingsPart>().EventSettings.ToDictionary(x => x.EventName);
|
||||
@@ -128,19 +128,19 @@ namespace Orchard.AuditTrail.Services {
|
||||
return setting != null ? setting.IsEnabled : eventDescriptor.IsEnabledByDefault;
|
||||
}
|
||||
|
||||
public IEnumerable<AuditTrailCategoryDescriptor> Describe() {
|
||||
public IEnumerable<AuditTrailCategoryDescriptor> DescribeCategories() {
|
||||
var context = new DescribeContext();
|
||||
_providers.Describe(context);
|
||||
return context.Describe();
|
||||
}
|
||||
|
||||
public AuditTrailEventDescriptor Describe<T>(string eventName) where T:IAuditTrailEventProvider {
|
||||
public AuditTrailEventDescriptor DescribeEvent<T>(string eventName) where T:IAuditTrailEventProvider {
|
||||
var fullyQualifiedEventName = EventNameHelper.GetFullyQualifiedEventName<T>(eventName);
|
||||
return Describe(fullyQualifiedEventName);
|
||||
return DescribeEvent(fullyQualifiedEventName);
|
||||
}
|
||||
|
||||
public AuditTrailEventDescriptor Describe(string fullyQualifiedEventName) {
|
||||
var categoryDescriptors = Describe();
|
||||
public AuditTrailEventDescriptor DescribeEvent(string fullyQualifiedEventName) {
|
||||
var categoryDescriptors = DescribeCategories();
|
||||
var eventDescriptorQuery = from c in categoryDescriptors
|
||||
from e in c.Events
|
||||
where e.Event == fullyQualifiedEventName
|
||||
@@ -148,7 +148,7 @@ namespace Orchard.AuditTrail.Services {
|
||||
var eventDescriptors = eventDescriptorQuery.ToArray();
|
||||
|
||||
if (!eventDescriptors.Any()) {
|
||||
throw new ArgumentException(String.Format("No event named '{0}' exists.", fullyQualifiedEventName));
|
||||
throw new ArgumentException(String.Format("No event named '{0}' exists.", fullyQualifiedEventName), "fullyQualifiedEventName");
|
||||
}
|
||||
|
||||
return eventDescriptors.First();
|
||||
|
@@ -38,7 +38,7 @@ namespace Orchard.AuditTrail.Services {
|
||||
|
||||
Logger.Debug("Starting audit trail trimming operation.");
|
||||
var deletedRecords = _auditTrailManager.Trim(TimeSpan.FromDays(Settings.Threshold));
|
||||
Logger.Debug("Audit trail trimming operation completed. {0} Records were deleted.", deletedRecords.Count());
|
||||
Logger.Debug("Audit trail trimming operation completed. {0} records were deleted.", deletedRecords.Count());
|
||||
Settings.LastRunUtc = _clock.UtcNow;
|
||||
}
|
||||
catch (Exception ex) {
|
||||
|
@@ -13,7 +13,7 @@ namespace Orchard.AuditTrail.Services {
|
||||
return xml.ToString(SaveOptions.DisableFormatting);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
Logger.Error(ex, "Error during serialization of eventData");
|
||||
Logger.Error(ex, "Error during serialization of event data.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -28,7 +28,7 @@ namespace Orchard.AuditTrail.Services {
|
||||
return JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
Logger.Error(ex, "Error during deserialization of eventData");
|
||||
Logger.Error(ex, "Error during deserialization of event data.");
|
||||
}
|
||||
return new Dictionary<string, object>();
|
||||
}
|
||||
|
@@ -34,13 +34,13 @@ namespace Orchard.AuditTrail.Services {
|
||||
/// <param name="eventFilterKey">The name of a custom key to use when filtering events.</param>
|
||||
/// <param name="eventFilterData">The value of a custom filter key to filter on.</param>
|
||||
/// <returns>Returns the created audit trail event record if the specified event was not disabled.</returns>
|
||||
AuditTrailEventRecordResult Record<T>(string eventName, IUser user, IDictionary<string, object> properties = null, IDictionary<string, object> eventData = null, string eventFilterKey = null, string eventFilterData = null) where T : IAuditTrailEventProvider;
|
||||
AuditTrailEventRecordResult CreateRecord<T>(string eventName, IUser user, IDictionary<string, object> properties = null, IDictionary<string, object> eventData = null, string eventFilterKey = null, string eventFilterData = null) where T : IAuditTrailEventProvider;
|
||||
|
||||
/// <summary>
|
||||
/// Describes all audit trail events provided by the system.
|
||||
/// </summary>
|
||||
/// <returns>Returns a list of audit trail category descriptors.</returns>
|
||||
IEnumerable<AuditTrailCategoryDescriptor> Describe();
|
||||
IEnumerable<AuditTrailCategoryDescriptor> DescribeCategories();
|
||||
|
||||
/// <summary>
|
||||
/// Describes a single audit trail event.
|
||||
@@ -48,14 +48,14 @@ namespace Orchard.AuditTrail.Services {
|
||||
/// <typeparam name="T">The scope of the specified event name.</typeparam>
|
||||
/// <param name="eventName">The shorthand name of the event.</param>
|
||||
/// <returns>Returns a single audit trail event descriptor.</returns>
|
||||
AuditTrailEventDescriptor Describe<T>(string eventName) where T : IAuditTrailEventProvider;
|
||||
AuditTrailEventDescriptor DescribeEvent<T>(string eventName) where T : IAuditTrailEventProvider;
|
||||
|
||||
/// <summary>
|
||||
/// Describes a single audit trail event.
|
||||
/// </summary>
|
||||
/// <param name="fullyQualifiedEventName">The fully qualified event name to describe.</param>
|
||||
/// <returns>Returns a single audit trail event descriptor.</returns>
|
||||
AuditTrailEventDescriptor Describe(string fullyQualifiedEventName);
|
||||
AuditTrailEventDescriptor DescribeEvent(string fullyQualifiedEventName);
|
||||
|
||||
/// <summary>
|
||||
/// Trims the audit trail by deleting all records older than the specified threshold.
|
||||
|
Reference in New Issue
Block a user