mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Refactored AuditTrail import/export.
This commit is contained in:
@@ -1,12 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using Orchard.Environment.Extensions;
|
|
||||||
using Orchard.ImportExport.Services;
|
|
||||||
|
|
||||||
namespace Orchard.AuditTrail.ImportExport {
|
|
||||||
[OrchardFeature("Orchard.AuditTrail.ImportExport")]
|
|
||||||
public class AuditTrailExportStep : ICustomExportStep {
|
|
||||||
public void Register(IList<string> steps) {
|
|
||||||
steps.Add("AuditTrail");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -194,6 +194,8 @@
|
|||||||
<Compile Include="Menus\RecycleBinAdminMenu.cs" />
|
<Compile Include="Menus\RecycleBinAdminMenu.cs" />
|
||||||
<Compile Include="Providers\AuditTrail\AuditTrailEventSettingEventData.cs" />
|
<Compile Include="Providers\AuditTrail\AuditTrailEventSettingEventData.cs" />
|
||||||
<Compile Include="Providers\AuditTrail\AuditTrailManagerExtensions.cs" />
|
<Compile Include="Providers\AuditTrail\AuditTrailManagerExtensions.cs" />
|
||||||
|
<Compile Include="Recipes\Builders\AuditTrailStep.cs" />
|
||||||
|
<Compile Include="Recipes\Executors\AuditTrailStep.cs" />
|
||||||
<Compile Include="ViewModels\RecycleBinCommand.cs" />
|
<Compile Include="ViewModels\RecycleBinCommand.cs" />
|
||||||
<Compile Include="Controllers\RecycleBinController.cs" />
|
<Compile Include="Controllers\RecycleBinController.cs" />
|
||||||
<Compile Include="Controllers\ContentController.cs" />
|
<Compile Include="Controllers\ContentController.cs" />
|
||||||
@@ -212,9 +214,6 @@
|
|||||||
<Compile Include="Helpers\HtmlExtensions.cs" />
|
<Compile Include="Helpers\HtmlExtensions.cs" />
|
||||||
<Compile Include="Helpers\XmlHelper.cs" />
|
<Compile Include="Helpers\XmlHelper.cs" />
|
||||||
<Compile Include="Helpers\StringExtensions.cs" />
|
<Compile Include="Helpers\StringExtensions.cs" />
|
||||||
<Compile Include="ImportExport\AuditTrailExportStep.cs" />
|
|
||||||
<Compile Include="ImportExport\AuditTrailExportHandler.cs" />
|
|
||||||
<Compile Include="ImportExport\AuditTrailImportHandler.cs" />
|
|
||||||
<Compile Include="Models\AuditTrailEventRecordResult.cs" />
|
<Compile Include="Models\AuditTrailEventRecordResult.cs" />
|
||||||
<Compile Include="Models\AuditTrailTrimmingSettingsPart.cs" />
|
<Compile Include="Models\AuditTrailTrimmingSettingsPart.cs" />
|
||||||
<Compile Include="Providers\AuditTrail\AuditTrailTrimmingSettingsEventProvider.cs" />
|
<Compile Include="Providers\AuditTrail\AuditTrailTrimmingSettingsEventProvider.cs" />
|
||||||
@@ -329,6 +328,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\AuditTrailEvent-Content-Restored.SummaryAdmin.cshtml" />
|
<Content Include="Views\AuditTrailEvent-Content-Restored.SummaryAdmin.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||||
|
|||||||
@@ -4,26 +4,31 @@ using System.Xml.Linq;
|
|||||||
using Orchard.AuditTrail.Models;
|
using Orchard.AuditTrail.Models;
|
||||||
using Orchard.Data;
|
using Orchard.Data;
|
||||||
using Orchard.Environment.Extensions;
|
using Orchard.Environment.Extensions;
|
||||||
using Orchard.ImportExport.Services;
|
using Orchard.Localization;
|
||||||
|
using Orchard.Recipes.Services;
|
||||||
|
|
||||||
namespace Orchard.AuditTrail.ImportExport {
|
namespace Orchard.AuditTrail.Recipes.Builders {
|
||||||
[OrchardFeature("Orchard.AuditTrail.ImportExport")]
|
[OrchardFeature("Orchard.AuditTrail.ImportExport")]
|
||||||
public class AuditTrailExportEventHandler : IExportEventHandler {
|
public class AuditTrailExportEventHandler : RecipeBuilderStep {
|
||||||
private readonly IRepository<AuditTrailEventRecord> _auditTrailEventRepository;
|
private readonly IRepository<AuditTrailEventRecord> _auditTrailEventRepository;
|
||||||
|
|
||||||
public AuditTrailExportEventHandler(IRepository<AuditTrailEventRecord> auditTrailEventRepository) {
|
public AuditTrailExportEventHandler(IRepository<AuditTrailEventRecord> auditTrailEventRepository) {
|
||||||
_auditTrailEventRepository = auditTrailEventRepository;
|
_auditTrailEventRepository = auditTrailEventRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Exporting(ExportContext context) {
|
public override string Name {
|
||||||
|
get { return "AuditTrail"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Exported(ExportContext context) {
|
public override LocalizedString DisplayName {
|
||||||
|
get { return T("AuditTrail"); }
|
||||||
if (!context.ExportOptions.CustomSteps.Contains("AuditTrail")) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override LocalizedString Description {
|
||||||
|
get { return T("Exports audit trail events."); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Build(BuildContext context) {
|
||||||
var records = _auditTrailEventRepository.Table.ToList();
|
var records = _auditTrailEventRepository.Table.ToList();
|
||||||
|
|
||||||
if (!records.Any()) {
|
if (!records.Any()) {
|
||||||
@@ -31,7 +36,7 @@ namespace Orchard.AuditTrail.ImportExport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var root = new XElement("AuditTrail");
|
var root = new XElement("AuditTrail");
|
||||||
context.Document.Element("Orchard").Add(root);
|
context.RecipeDocument.Element("Orchard").Add(root);
|
||||||
|
|
||||||
foreach (var record in records) {
|
foreach (var record in records) {
|
||||||
root.Add(new XElement("Event",
|
root.Add(new XElement("Event",
|
||||||
@@ -8,31 +8,31 @@ using Orchard.Recipes.Models;
|
|||||||
using Orchard.Recipes.Services;
|
using Orchard.Recipes.Services;
|
||||||
using Orchard.Security;
|
using Orchard.Security;
|
||||||
|
|
||||||
namespace Orchard.AuditTrail.ImportExport {
|
namespace Orchard.AuditTrail.Recipes.Executors {
|
||||||
[OrchardFeature("Orchard.AuditTrail.ImportExport")]
|
[OrchardFeature("Orchard.AuditTrail.ImportExport")]
|
||||||
public class AuditTrailImportHandler : Component, IRecipeHandler {
|
public class AuditTrailStep : RecipeExecutionStep {
|
||||||
private readonly IRepository<AuditTrailEventRecord> _auditTrailEventRepository;
|
private readonly IRepository<AuditTrailEventRecord> _auditTrailEventRepository;
|
||||||
private readonly IAuthorizer _authorizer;
|
private readonly IAuthorizer _authorizer;
|
||||||
private readonly IWorkContextAccessor _wca;
|
private readonly IWorkContextAccessor _wca;
|
||||||
|
|
||||||
public AuditTrailImportHandler(IRepository<AuditTrailEventRecord> auditTrailEventRepository, IAuthorizer authorizer, IWorkContextAccessor wca) {
|
public AuditTrailStep(IRepository<AuditTrailEventRecord> auditTrailEventRepository, IAuthorizer authorizer, IWorkContextAccessor wca) {
|
||||||
_auditTrailEventRepository = auditTrailEventRepository;
|
_auditTrailEventRepository = auditTrailEventRepository;
|
||||||
_authorizer = authorizer;
|
_authorizer = authorizer;
|
||||||
_wca = wca;
|
_wca = wca;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteRecipeStep(RecipeContext recipeContext) {
|
public override string Name
|
||||||
if (!String.Equals(recipeContext.RecipeStep.Name, "AuditTrail", StringComparison.OrdinalIgnoreCase)) {
|
{
|
||||||
return;
|
get { return "AuditTrail"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Execute(RecipeExecutionContext context) {
|
||||||
if (!_authorizer.Authorize(Permissions.ImportAuditTrail)) {
|
if (!_authorizer.Authorize(Permissions.ImportAuditTrail)) {
|
||||||
Logger.Warning("Blocked {0} from importing an audit trail because this user does not have the ImportauditTrail permission.", _wca.GetContext().CurrentUser.UserName);
|
Logger.Warning("Blocked {0} from importing an audit trail because this user does not have the ImportauditTrail permission.", _wca.GetContext().CurrentUser.UserName);
|
||||||
recipeContext.Executed = false;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var eventElement in recipeContext.RecipeStep.Step.Elements()) {
|
foreach (var eventElement in context.RecipeStep.Step.Elements()) {
|
||||||
var record = new AuditTrailEventRecord {
|
var record = new AuditTrailEventRecord {
|
||||||
EventName = eventElement.Attr<string>("Name"),
|
EventName = eventElement.Attr<string>("Name"),
|
||||||
FullEventName = eventElement.Attr<string>("FullName"),
|
FullEventName = eventElement.Attr<string>("FullName"),
|
||||||
@@ -47,8 +47,6 @@ namespace Orchard.AuditTrail.ImportExport {
|
|||||||
|
|
||||||
_auditTrailEventRepository.Create(record);
|
_auditTrailEventRepository.Create(record);
|
||||||
}
|
}
|
||||||
|
|
||||||
recipeContext.Executed = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user