diff --git a/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeExportHandler.cs b/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeExportHandler.cs deleted file mode 100644 index 3d4ebd0d6..000000000 --- a/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeExportHandler.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Xml.Linq; -using Orchard.Environment.Extensions; -using Orchard.Events; -using Orchard.Themes.Services; - -namespace Orchard.Themes.ImportExport { - public interface IExportEventHandler : IEventHandler { - void Exporting(dynamic context); - void Exported(dynamic context); - } - - [OrchardFeature("Orchard.Themes.ImportExportCurrentTheme")] - public class CurrentThemeExportHandler : IExportEventHandler { - private readonly ISiteThemeService _siteThemeService; - - public CurrentThemeExportHandler(ISiteThemeService siteThemeService) { - _siteThemeService = siteThemeService; - } - - public void Exporting(dynamic context) { } - - public void Exported(dynamic context) { - if (!((IEnumerable)context.ExportOptions.CustomSteps).Contains("CurrentTheme")) { - return; - } - - var currentThemeId = _siteThemeService.GetCurrentThemeName(); - var root = new XElement("CurrentTheme", new XAttribute("id", currentThemeId)); - context.Document.Element("Orchard").Add(root); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeStep.cs b/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeStep.cs deleted file mode 100644 index bd08d06c7..000000000 --- a/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeStep.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections.Generic; -using Orchard.Environment.Extensions; -using Orchard.Events; - -namespace Orchard.Themes.ImportExport { - public interface ICustomExportStep : IEventHandler { - void Register(IList steps); - } - - [OrchardFeature("Orchard.Themes.ImportExportCurrentTheme")] - public class CurrentThemeStep : ICustomExportStep { - - void ICustomExportStep.Register(IList steps) { - steps.Add("CurrentTheme"); - } - } -} - diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Module.txt b/src/Orchard.Web/Modules/Orchard.Themes/Module.txt index daa6f8a08..39eeee66f 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/Module.txt +++ b/src/Orchard.Web/Modules/Orchard.Themes/Module.txt @@ -16,4 +16,3 @@ Features: Name: Import Export Current Theme Description: Provides the capability to import and export the current theme. Category: Deployment - Dependencies: Orchard.ImportExport diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj b/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj index 9c7f2965d..070b1756f 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj +++ b/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj @@ -69,12 +69,11 @@ - - - + + diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Recipes/Builders/CurrentThemeStep.cs b/src/Orchard.Web/Modules/Orchard.Themes/Recipes/Builders/CurrentThemeStep.cs new file mode 100644 index 000000000..995346355 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Themes/Recipes/Builders/CurrentThemeStep.cs @@ -0,0 +1,34 @@ +using System.Xml.Linq; +using Orchard.Environment.Extensions; +using Orchard.Localization; +using Orchard.Recipes.Services; +using Orchard.Themes.Services; + +namespace Orchard.Themes.Recipes.Builders { + [OrchardFeature("Orchard.Themes.ImportExportCurrentTheme")] + public class CurrentThemeStep : RecipeBuilderStep { + private readonly ISiteThemeService _siteThemeService; + + public CurrentThemeStep(ISiteThemeService siteThemeService) { + _siteThemeService = siteThemeService; + } + + public override string Name { + get { return "CurrentTheme"; } + } + + public override LocalizedString DisplayName { + get { return T("Current Theme"); } + } + + public override LocalizedString Description { + get { return T("Adds information to the recipe that indicates the current theme."); } + } + + public override void Build(BuildContext context) { + var currentThemeId = _siteThemeService.GetCurrentThemeName(); + var root = new XElement("CurrentTheme", new XAttribute("id", currentThemeId)); + context.RecipeDocument.Element("Orchard").Add(root); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeRecipeHandler.cs b/src/Orchard.Web/Modules/Orchard.Themes/Recipes/Executors/CurrentThemeStep.cs similarity index 50% rename from src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeRecipeHandler.cs rename to src/Orchard.Web/Modules/Orchard.Themes/Recipes/Executors/CurrentThemeStep.cs index 139a1d3b3..d29c87e1b 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/ImportExport/CurrentThemeRecipeHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Themes/Recipes/Executors/CurrentThemeStep.cs @@ -1,27 +1,25 @@ -using System; using Orchard.Environment.Extensions; using Orchard.Recipes.Models; using Orchard.Recipes.Services; using Orchard.Themes.Services; -namespace Orchard.Themes.ImportExport { +namespace Orchard.Themes.Recipes.Executors { [OrchardFeature("Orchard.Themes.ImportExportCurrentTheme")] - public class CurrentThemeRecipeHandler : IRecipeHandler { + public class CurrentThemeStep : RecipeExecutionStep { private readonly ISiteThemeService _siteThemeService; - - public CurrentThemeRecipeHandler(ISiteThemeService siteThemeService) { + + public override string Name { + get { return "CurrentTheme"; } + } + + public CurrentThemeStep(ISiteThemeService siteThemeService) { _siteThemeService = siteThemeService; } - public void ExecuteRecipeStep(RecipeContext context) { - if (!String.Equals(context.RecipeStep.Name, "CurrentTheme", StringComparison.OrdinalIgnoreCase)) { - return; - } - + public override void Execute(RecipeExecutionContext context) { var themeId = context.RecipeStep.Step.Attribute("id").Value; _siteThemeService.SetSiteTheme(themeId); - context.Executed = true; } } } \ No newline at end of file