diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MetaDataRecipeHandler.cs b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MetaDataRecipeHandler.cs
index ec48b039b..1dcf5ca99 100644
--- a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MetaDataRecipeHandler.cs
+++ b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MetaDataRecipeHandler.cs
@@ -1,4 +1,6 @@
using System;
+using System.Xml;
+using Orchard.ContentManagement.MetaData;
using Orchard.Localization;
using Orchard.Logging;
using Orchard.Recipes.Models;
@@ -6,7 +8,12 @@ using Orchard.Recipes.Services;
namespace Orchard.Recipes.RecipeHandlers {
public class MetadataRecipeHandler : IRecipeHandler {
- public MetadataRecipeHandler() {
+ private readonly IContentDefinitionManager _contentDefinitionManager;
+ private readonly IContentDefinitionReader _contentDefinitionReader;
+
+ public MetadataRecipeHandler(IContentDefinitionManager contentDefinitionManager, IContentDefinitionReader contentDefinitionReader) {
+ _contentDefinitionManager = contentDefinitionManager;
+ _contentDefinitionReader = contentDefinitionReader;
Logger = NullLogger.Instance;
T = NullLocalizer.Instance;
}
@@ -32,21 +39,29 @@ namespace Orchard.Recipes.RecipeHandlers {
return;
}
- foreach (var element in recipeContext.RecipeStep.Step.Elements()) {
- switch (element.Name.LocalName) {
+ foreach (var metadataElement in recipeContext.RecipeStep.Step.Elements()) {
+ switch (metadataElement.Name.LocalName) {
case "Types":
- // alter type's definition.
+ foreach (var element in metadataElement.Elements()) {
+ var typeElement = element;
+ var typeName = XmlConvert.DecodeName(element.Name.LocalName);
+ _contentDefinitionManager.AlterTypeDefinition(typeName, alteration => _contentDefinitionReader.Merge(typeElement, alteration));
+ }
break;
case "Parts":
// create dynamic part.
+ foreach (var element in metadataElement.Elements()) {
+ var partElement = element;
+ var partName = XmlConvert.DecodeName(element.Name.LocalName);
+ _contentDefinitionManager.AlterPartDefinition(partName, alteration => _contentDefinitionReader.Merge(partElement, alteration));
+ }
break;
default:
- Logger.Error("Unrecognized element {0} encountered in step Metadata. Skipping.", element.Name.LocalName);
+ Logger.Error("Unrecognized element {0} encountered in step Metadata. Skipping.", metadataElement.Name.LocalName);
break;
}
}
- // alter definitions.
recipeContext.Executed = true;
}
}
diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Recipes/blog.recipe.xml b/src/Orchard.Web/Modules/Orchard.Setup/Recipes/blog.recipe.xml
index d43197008..5dc5db4aa 100644
--- a/src/Orchard.Web/Modules/Orchard.Setup/Recipes/blog.recipe.xml
+++ b/src/Orchard.Web/Modules/Orchard.Setup/Recipes/blog.recipe.xml
@@ -8,4 +8,21 @@
1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs
index d9a3eddd4..be08206c2 100644
--- a/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs
@@ -4,10 +4,7 @@ using System.Linq;
using System.Security.Cryptography;
using System.Web;
using Orchard.ContentManagement;
-using Orchard.ContentManagement.MetaData;
using Orchard.Core.Common.Models;
-using Orchard.Core.Common.Settings;
-using Orchard.Core.Contents.Extensions;
using Orchard.Core.Navigation.Models;
using Orchard.Core.Routable.Models;
using Orchard.Core.Settings.Descriptor.Records;
@@ -21,7 +18,6 @@ using Orchard.Environment.Extensions;
using Orchard.Environment.ShellBuilders;
using Orchard.Environment.Descriptor;
using Orchard.Environment.Descriptor.Models;
-using Orchard.Indexing;
using Orchard.Localization;
using Orchard.Localization.Services;
using Orchard.Recipes.Models;
@@ -251,23 +247,10 @@ namespace Orchard.Setup.Services {
//var hackInstallationGenerator = environment.Resolve();
//hackInstallationGenerator.GenerateInstallEvents();
- var contentDefinitionManager = environment.Resolve();
- //todo: (heskew) pull these definitions (and initial content creation) out into a distribution configuration when we have that capability
- contentDefinitionManager.AlterTypeDefinition("BlogPost", cfg => cfg
- .WithPart("CommentsPart")
- .WithPart("TagsPart")
- .WithPart("LocalizationPart")
- .Draftable()
- .Indexed()
- );
- contentDefinitionManager.AlterTypeDefinition("Page", cfg => cfg
- .WithPart("TagsPart")
- .WithPart("LocalizationPart")
- .Draftable()
- .Indexed()
- );
- contentDefinitionManager.AlterPartDefinition("BodyPart", cfg => cfg
- .WithSetting("BodyPartSettings.FlavorDefault", BodyPartSettings.FlavorDefaultDefault));
+ var recipeManager = environment.Resolve();
+ if (context.Recipe != null) {
+ recipeManager.Execute(Recipes().Where(r => r.Name == context.Recipe).FirstOrDefault());
+ }
// If "Orchard.Widgets" is enabled, setup default layers and widgets
var extensionManager = environment.Resolve();
@@ -344,11 +327,6 @@ Modules are created by other users of Orchard just like you so if you feel up to
menuItem.As().OnMainMenu = true;
menuItem.As().Url = "";
- var recipeManager = environment.Resolve();
- if (context.Recipe != null) {
- recipeManager.Execute(Recipes().Where(r => r.Name == context.Recipe).FirstOrDefault());
- }
-
//null check: temporary fix for running setup in command line
if (HttpContext.Current != null) {
authenticationService.SignIn(user, true);