diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj b/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj index 4455c7cab..15d5ba0f8 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj @@ -159,7 +159,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Providers/ImportActions/UploadRecipeAction.cs b/src/Orchard.Web/Modules/Orchard.ImportExport/Providers/ImportActions/UploadRecipeAction.cs index efb892858..8f24eb71a 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Providers/ImportActions/UploadRecipeAction.cs +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Providers/ImportActions/UploadRecipeAction.cs @@ -65,39 +65,41 @@ namespace Orchard.ImportExport.Providers.ImportActions { // Validate and read uploaded recipe file. var request = _orchardServices.WorkContext.HttpContext.Request; var file = request.Files["RecipeFile"]; - var isInValid = false; + var isValid = true; ResetSite = viewModel.ResetSite; SuperUserPassword = viewModel.SuperUserPassword; if (file == null || file.ContentLength == 0) { updater.AddModelError("RecipeFile", T("No recipe file selected.")); - isInValid = true; + isValid = false; } if (ResetSite) { if (String.IsNullOrWhiteSpace(viewModel.SuperUserPassword)) { updater.AddModelError("SuperUserPassword", T("Please specify a new password for the super user.")); - isInValid = true; + isValid = false; } else if (!String.Equals(viewModel.SuperUserPassword, viewModel.SuperUserPasswordConfirmation)) { updater.AddModelError("SuperUserPassword", T("The passwords do not match.")); - isInValid = true; + isValid = false; } } var stepUpdater = new Updater(updater, secondHalf => String.Format("{0}.{1}", Prefix, secondHalf)); - // Update the view model with non-submitted values. + // Update the view model with non-roundtripped values. viewModel.SuperUserName = _orchardServices.WorkContext.CurrentSite.SuperUser; foreach (var stepViewModel in viewModel.RecipeExecutionSteps) { var step = _recipeExecutionSteps.Single(x => x.Name == stepViewModel.Name); stepViewModel.DisplayName = step.DisplayName; stepViewModel.Description = step.Description; + + // Update the step with posted values. stepViewModel.Editor = step.UpdateEditor(shapeFactory, stepUpdater); } - if (!isInValid) { + if (isValid) { // Read recipe file. RecipeDocument = XDocument.Parse(new StreamReader(file.InputStream).ReadToEnd()); var orchardElement = RecipeDocument.Element("Orchard"); @@ -116,6 +118,8 @@ namespace Orchard.ImportExport.Providers.ImportActions { RecipeDocument = RecipeDocument, Step = orchardElement.Element(executionStep.Name) }; + + // Give the execution step a chance to augment the recipe step before it will be scheduled. executionStep.UpdateStep(context); } } diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Recipes/Builders/CustomStepsStep.cs b/src/Orchard.Web/Modules/Orchard.ImportExport/Recipes/Builders/CustomStepsStep.cs index bf52546cd..954f2cf35 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Recipes/Builders/CustomStepsStep.cs +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Recipes/Builders/CustomStepsStep.cs @@ -50,7 +50,7 @@ namespace Orchard.ImportExport.Recipes.Builders { CustomSteps = viewModel.CustomSteps.Where(x => x.IsChecked).Select(x => x.CustomStep).ToList(); } - return shapeFactory.EditorTemplate(TemplateName: "ExportSteps/CustomSteps", Model: viewModel, Prefix: Prefix); + return shapeFactory.EditorTemplate(TemplateName: "BuilderSteps/CustomSteps", Model: viewModel, Prefix: Prefix); } public override void Build(BuildContext context) { diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/ExportSteps/CustomSteps.cshtml b/src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/BuilderSteps/CustomSteps.cshtml similarity index 100% rename from src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/ExportSteps/CustomSteps.cshtml rename to src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/BuilderSteps/CustomSteps.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Orchard.Recipes.csproj b/src/Orchard.Web/Modules/Orchard.Recipes/Orchard.Recipes.csproj index f0d5a95fe..44af641cf 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Orchard.Recipes.csproj +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Orchard.Recipes.csproj @@ -103,7 +103,7 @@ - + @@ -135,13 +135,13 @@ - + - + - + diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/ContentStep.cs b/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/ContentStep.cs index ff9c16a41..4a85eddd2 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/ContentStep.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/ContentStep.cs @@ -41,7 +41,6 @@ namespace Orchard.Recipes.Providers.Builders { public IList SchemaContentTypes { get; set; } public IList DataContentTypes { get; set; } - public int? ImportBatchSize { get; set; } public VersionHistoryOptions VersionHistoryOptions { get; set; } public override dynamic BuildEditor(dynamic shapeFactory) { @@ -54,7 +53,7 @@ namespace Orchard.Recipes.Providers.Builders { .Select(x => new ContentTypeEntry { Name = x.Name, DisplayName = x.DisplayName }) .ToList(); - var viewModel = new DataExportStepViewModel { + var viewModel = new ContentBuilderStepViewModel { ContentTypes = contentTypeViewModels }; @@ -64,7 +63,7 @@ namespace Orchard.Recipes.Providers.Builders { VersionHistoryOptions = viewModel.VersionHistoryOptions; } - return shapeFactory.EditorTemplate(TemplateName: "ExportSteps/Content", Model: viewModel, Prefix: Prefix); + return shapeFactory.EditorTemplate(TemplateName: "BuilderSteps/Content", Model: viewModel, Prefix: Prefix); } public override void Build(BuildContext context) { @@ -79,7 +78,7 @@ namespace Orchard.Recipes.Providers.Builders { context.RecipeDocument.Element("Orchard").Add(ExportMetadata(schemaContentTypes)); if(contentItems.Any()) - context.RecipeDocument.Element("Orchard").Add(ExportData(dataContentTypes, contentItems, ImportBatchSize)); + context.RecipeDocument.Element("Orchard").Add(ExportData(dataContentTypes, contentItems)); } private XElement ExportMetadata(IEnumerable contentTypes) { @@ -107,12 +106,9 @@ namespace Orchard.Recipes.Providers.Builders { return new XElement("ContentSchema", typesElement, partsElement); } - private XElement ExportData(IEnumerable contentTypes, IEnumerable contentItems, int? batchSize) { + private XElement ExportData(IEnumerable contentTypes, IEnumerable contentItems) { var data = new XElement("Content"); - - if (batchSize.HasValue && batchSize.Value > 0) - data.SetAttributeValue("BatchSize", batchSize); - + var orderedContentItemsQuery = from contentItem in contentItems let identity = _orchardServices.ContentManager.GetItemMetadata(contentItem).Identity.ToString() diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/RecipeMetadataStep.cs b/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/RecipeMetadataStep.cs index eab769d6b..403c8b364 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/RecipeMetadataStep.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/RecipeMetadataStep.cs @@ -51,7 +51,7 @@ namespace Orchard.Recipes.Providers.Builders { IsSetupRecipe = viewModel.IsSetupRecipe; } - return shapeFactory.EditorTemplate(TemplateName: "ExportSteps/RecipeMetadata", Model: viewModel, Prefix: Prefix); + return shapeFactory.EditorTemplate(TemplateName: "BuilderSteps/RecipeMetadata", Model: viewModel, Prefix: Prefix); } public override void Build(BuildContext context) { diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/SettingsStep.cs b/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/SettingsStep.cs index 21189f68c..df69dd996 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/SettingsStep.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Providers/Builders/SettingsStep.cs @@ -34,7 +34,7 @@ namespace Orchard.Recipes.Providers.Builders { public override dynamic UpdateEditor(dynamic shapeFactory, IUpdateModel updater) { var viewModel = new SiteSettingsStepViewModel(); - return shapeFactory.EditorTemplate(TemplateName: "ExportSteps/Settings", Model: viewModel, Prefix: Prefix); + return shapeFactory.EditorTemplate(TemplateName: "BuilderSteps/Settings", Model: viewModel, Prefix: Prefix); } public override void Build(BuildContext context) { diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/ViewModels/DataExportStepViewModel.cs b/src/Orchard.Web/Modules/Orchard.Recipes/ViewModels/ContentBuilderStepViewModel.cs similarity index 70% rename from src/Orchard.Web/Modules/Orchard.Recipes/ViewModels/DataExportStepViewModel.cs rename to src/Orchard.Web/Modules/Orchard.Recipes/ViewModels/ContentBuilderStepViewModel.cs index 5df42cd23..6c8e52470 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/ViewModels/DataExportStepViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/ViewModels/ContentBuilderStepViewModel.cs @@ -2,13 +2,12 @@ using System.Collections.Generic; using Orchard.Recipes.Models; namespace Orchard.Recipes.ViewModels { - public class DataExportStepViewModel { - public DataExportStepViewModel() { + public class ContentBuilderStepViewModel { + public ContentBuilderStepViewModel() { ContentTypes = new List(); } public IList ContentTypes { get; set; } public VersionHistoryOptions VersionHistoryOptions { get; set; } - public int? ImportBatchSize { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/ExportSteps/Content.cshtml b/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Content.cshtml similarity index 87% rename from src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/ExportSteps/Content.cshtml rename to src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Content.cshtml index d13465f9d..477cef4ac 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/ExportSteps/Content.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Content.cshtml @@ -1,4 +1,4 @@ -@model Orchard.Recipes.ViewModels.DataExportStepViewModel +@model Orchard.Recipes.ViewModels.ContentBuilderStepViewModel @{ Style.Include("recipebuilderstep-content.css"); Script.Require("jQuery"); @@ -40,12 +40,6 @@ @Html.Hint(T("Choose the types to include in the export file")) - -
- @Html.LabelFor(m => m.ImportBatchSize, T("Batch Size")) - @Html.TextBoxFor(m => m.ImportBatchSize, new { @class = "text small" }) - @Html.Hint(T("The batch size to use when importing the data. Leave empty to disable batched imports.")) -

@T("Version History")

@Html.RadioButtonFor(m => m.VersionHistoryOptions, "Published", new { id = "Published", Checked = "Checked" }) diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/ExportSteps/RecipeMetadata.cshtml b/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/RecipeMetadata.cshtml similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/ExportSteps/RecipeMetadata.cshtml rename to src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/RecipeMetadata.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/ExportSteps/Settings.cshtml b/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Settings.cshtml similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/ExportSteps/Settings.cshtml rename to src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Settings.cshtml