mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Refactored Rules import/export step.
This commit is contained in:
@@ -1,14 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using Orchard.Events;
|
|
||||||
|
|
||||||
namespace Orchard.Rules.ImportExport {
|
|
||||||
public interface ICustomExportStep : IEventHandler {
|
|
||||||
void Register(IList<string> steps);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RulesCustomExportStep : ICustomExportStep {
|
|
||||||
public void Register(IList<string> steps) {
|
|
||||||
steps.Add("Rules");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -89,9 +89,8 @@
|
|||||||
<Content Include="Scripts\Web.config" />
|
<Content Include="Scripts\Web.config" />
|
||||||
<Content Include="Styles\Web.config" />
|
<Content Include="Styles\Web.config" />
|
||||||
<Compile Include="Handlers\ContentHandler.cs" />
|
<Compile Include="Handlers\ContentHandler.cs" />
|
||||||
<Compile Include="ImportExport\RulesExportEventHandler.cs" />
|
<Compile Include="Recipes\Builders\RulesStep.cs" />
|
||||||
<Compile Include="ImportExport\RulesCustomExportStep.cs" />
|
<Compile Include="Recipes\Executors\RulesStep.cs" />
|
||||||
<Compile Include="ImportExport\RulesRecipeHandler.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Content Include="Module.txt" />
|
<Content Include="Module.txt" />
|
||||||
<Content Include="Web.config">
|
<Content Include="Web.config">
|
||||||
|
|||||||
@@ -1,42 +1,42 @@
|
|||||||
using System.Collections.Generic;
|
using System.Globalization;
|
||||||
using System.Globalization;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using Orchard.Events;
|
using Orchard.Localization;
|
||||||
|
using Orchard.Recipes.Services;
|
||||||
using Orchard.Rules.Services;
|
using Orchard.Rules.Services;
|
||||||
|
|
||||||
namespace Orchard.Rules.ImportExport {
|
namespace Orchard.Rules.Recipes.Builders {
|
||||||
public interface IExportEventHandler : IEventHandler {
|
|
||||||
void Exporting(dynamic context);
|
|
||||||
void Exported(dynamic context);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RulesExportHandler : IExportEventHandler {
|
public class RulesStep : RecipeBuilderStep {
|
||||||
private readonly IRulesServices _rulesServices;
|
private readonly IRulesServices _rulesServices;
|
||||||
|
|
||||||
public RulesExportHandler(IRulesServices rulesServices) {
|
public RulesStep(IRulesServices rulesServices) {
|
||||||
_rulesServices = rulesServices;
|
_rulesServices = rulesServices;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Exporting(dynamic context) {
|
public override string Name {
|
||||||
|
get { return "Rules"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Exported(dynamic context) {
|
public override LocalizedString DisplayName {
|
||||||
|
get { return T("Rules"); }
|
||||||
if (!((IEnumerable<string>)context.ExportOptions.CustomSteps).Contains("Rules")) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override LocalizedString Description {
|
||||||
|
get { return T("Exports rules."); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Build(BuildContext context) {
|
||||||
var allRules = _rulesServices.GetRules().ToList();
|
var allRules = _rulesServices.GetRules().ToList();
|
||||||
|
|
||||||
if(!allRules.Any()) {
|
if (!allRules.Any()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var root = new XElement("Rules");
|
var root = new XElement("Rules");
|
||||||
context.Document.Element("Orchard").Add(root);
|
context.RecipeDocument.Element("Orchard").Add(root);
|
||||||
|
|
||||||
foreach(var rule in allRules) {
|
foreach (var rule in allRules) {
|
||||||
root.Add(new XElement("Rule",
|
root.Add(new XElement("Rule",
|
||||||
new XAttribute("Name", rule.Name),
|
new XAttribute("Name", rule.Name),
|
||||||
new XAttribute("Enabled", rule.Enabled.ToString(CultureInfo.InvariantCulture)),
|
new XAttribute("Enabled", rule.Enabled.ToString(CultureInfo.InvariantCulture)),
|
||||||
@@ -1,33 +1,24 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Orchard.Localization;
|
|
||||||
using Orchard.Logging;
|
|
||||||
using Orchard.Recipes.Models;
|
using Orchard.Recipes.Models;
|
||||||
using Orchard.Recipes.Services;
|
using Orchard.Recipes.Services;
|
||||||
using Orchard.Rules.Models;
|
using Orchard.Rules.Models;
|
||||||
using Orchard.Rules.Services;
|
using Orchard.Rules.Services;
|
||||||
|
|
||||||
namespace Orchard.Rules.ImportExport {
|
namespace Orchard.Rules.Recipes.Executors {
|
||||||
public class RulesRecipeHandler : IRecipeHandler {
|
public class RulesStep : RecipeExecutionStep {
|
||||||
private readonly IRulesServices _rulesServices;
|
private readonly IRulesServices _rulesServices;
|
||||||
|
|
||||||
public RulesRecipeHandler(IRulesServices rulesServices) {
|
public RulesStep(IRulesServices rulesServices) {
|
||||||
_rulesServices = rulesServices;
|
_rulesServices = rulesServices;
|
||||||
Logger = NullLogger.Instance;
|
|
||||||
T = NullLocalizer.Instance;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Localizer T { get; set; }
|
public override string Name {
|
||||||
public ILogger Logger { get; set; }
|
get { return "Rules"; }
|
||||||
|
|
||||||
// <Data />
|
|
||||||
// Import Data
|
|
||||||
public void ExecuteRecipeStep(RecipeContext recipeContext) {
|
|
||||||
if (!String.Equals(recipeContext.RecipeStep.Name, "Rules", StringComparison.OrdinalIgnoreCase)) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var rule in recipeContext.RecipeStep.Step.Elements()) {
|
public override void Execute(RecipeExecutionContext context) {
|
||||||
|
foreach (var rule in context.RecipeStep.Step.Elements()) {
|
||||||
|
|
||||||
var ruleRecord = _rulesServices.CreateRule(rule.Attribute("Name").Value);
|
var ruleRecord = _rulesServices.CreateRule(rule.Attribute("Name").Value);
|
||||||
ruleRecord.Enabled = bool.Parse(rule.Attribute("Enabled").Value);
|
ruleRecord.Enabled = bool.Parse(rule.Attribute("Enabled").Value);
|
||||||
@@ -50,8 +41,6 @@ namespace Orchard.Rules.ImportExport {
|
|||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
recipeContext.Executed = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user