From 860282bb44866e4726573ae27634b91be2c52db3 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 17 Jul 2015 13:09:58 +0100 Subject: [PATCH] Refactored CustomElements import/export step. --- .../ImportExport/ElementsExportStep.cs | 14 ------- .../Orchard.Layouts/Orchard.Layouts.csproj | 5 +-- .../Builders/CustomElementsStep.cs} | 39 ++++++++++--------- .../Executors/CustomElementsStep.cs} | 26 +++++++------ 4 files changed, 37 insertions(+), 47 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsExportStep.cs rename src/Orchard.Web/Modules/Orchard.Layouts/{ImportExport/ElementsExportHandler.cs => Recipes/Builders/CustomElementsStep.cs} (56%) rename src/Orchard.Web/Modules/Orchard.Layouts/{ImportExport/ElementsImportHandler.cs => Recipes/Executors/CustomElementsStep.cs} (68%) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsExportStep.cs b/src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsExportStep.cs deleted file mode 100644 index 6b3829ed7..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsExportStep.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using Orchard.Events; - -namespace Orchard.Layouts.ImportExport { - public interface ICustomExportStep : IEventHandler { - void Register(IList steps); - } - - public class ElementsExportStep : ICustomExportStep { - public void Register(IList steps) { - steps.Add("LayoutElements"); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index dde2bdb57..eab27b371 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -367,9 +367,8 @@ - - - + + diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsExportHandler.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Recipes/Builders/CustomElementsStep.cs similarity index 56% rename from src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsExportHandler.cs rename to src/Orchard.Web/Modules/Orchard.Layouts/Recipes/Builders/CustomElementsStep.cs index c122f8745..6f450edbf 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsExportHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Recipes/Builders/CustomElementsStep.cs @@ -1,40 +1,43 @@ -using System.Collections.Generic; -using System.Linq; +using System.Linq; using System.Xml.Linq; using Orchard.Data; -using Orchard.Events; using Orchard.Layouts.Models; +using Orchard.Localization; +using Orchard.Recipes.Services; -namespace Orchard.Layouts.ImportExport { - public interface IExportEventHandler : IEventHandler { - void Exporting(dynamic context); - void Exported(dynamic context); - } - - public class ElementsExportHandler : IExportEventHandler { +namespace Orchard.Layouts.Recipes.Builders { + + public class CustomElementsStep : RecipeBuilderStep { private readonly IRepository _repository; - public ElementsExportHandler(IRepository repository) { + public CustomElementsStep(IRepository repository) { _repository = repository; } - public void Exporting(dynamic context) { + public override string Name + { + get { return "CustomElements"; } } - public void Exported(dynamic context) { + public override LocalizedString DisplayName + { + get { return T("Custom Elements"); } + } - if (!((IEnumerable)context.ExportOptions.CustomSteps).Contains("LayoutElements")) { - return; - } + public override LocalizedString Description + { + get { return T("Exports custom defined elements."); } + } + public override void Build(BuildContext context) { var elements = _repository.Table.OrderBy(x => x.ElementTypeName).ToList(); if (!elements.Any()) { return; } - var root = new XElement("LayoutElements"); - context.Document.Element("Orchard").Add(root); + var root = new XElement("CustomElements"); + context.RecipeDocument.Element("Orchard").Add(root); foreach (var element in elements) { root.Add(new XElement("Element", diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsImportHandler.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Recipes/Executors/CustomElementsStep.cs similarity index 68% rename from src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsImportHandler.cs rename to src/Orchard.Web/Modules/Orchard.Layouts/Recipes/Executors/CustomElementsStep.cs index 933f2e468..1106d2cad 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/ImportExport/ElementsImportHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Recipes/Executors/CustomElementsStep.cs @@ -1,23 +1,27 @@ -using System; +using System.Collections.Generic; using Orchard.Data; using Orchard.Layouts.Models; using Orchard.Recipes.Models; using Orchard.Recipes.Services; -namespace Orchard.Layouts.ImportExport { - public class ElementsImportHandler : Component, IRecipeHandler { +namespace Orchard.Layouts.Recipes.Executors { + public class CustomElementsStep : RecipeExecutionStep { private readonly IRepository _repository; - public ElementsImportHandler(IRepository repository) { + public CustomElementsStep(IRepository repository) { _repository = repository; } - public void ExecuteRecipeStep(RecipeContext recipeContext) { - if (!String.Equals(recipeContext.RecipeStep.Name, "LayoutElements", StringComparison.OrdinalIgnoreCase)) { - return; - } + public override string Name { + get { return "CustomElements"; } + } - foreach (var elementElement in recipeContext.RecipeStep.Step.Elements()) { + public override IEnumerable Names { + get { return new[] { Name, "LayoutElements" }; } + } + + public override void Execute(RecipeExecutionContext context) { + foreach (var elementElement in context.RecipeStep.Step.Elements()) { var typeName = elementElement.Attribute("ElementTypeName").Value; var element = GetOrCreateElement(typeName); @@ -27,10 +31,8 @@ namespace Orchard.Layouts.ImportExport { element.ElementCategory = elementElement.Attribute("ElementCategory").Value; element.BaseElementState = elementElement.Element("BaseElementState").Value; } - - recipeContext.Executed = true; } - + private ElementBlueprint GetOrCreateElement(string typeName) { var element = _repository.Get(x => x.ElementTypeName == typeName);