Generating the export file name based on whether it's a setup recipe and its name.

This commit is contained in:
Sipke Schoorstra
2015-07-15 10:37:37 +01:00
parent db6248f682
commit f57bf5485f

View File

@@ -7,24 +7,29 @@ using Orchard.ContentManagement;
using Orchard.ImportExport.Services; using Orchard.ImportExport.Services;
using Orchard.ImportExport.ViewModels; using Orchard.ImportExport.ViewModels;
using Orchard.Localization; using Orchard.Localization;
using Orchard.Recipes.Models;
using Orchard.Recipes.Services; using Orchard.Recipes.Services;
using Orchard.UI.Notify; using Orchard.UI.Notify;
using Orchard.Utility.Extensions;
namespace Orchard.ImportExport.Controllers { namespace Orchard.ImportExport.Controllers {
public class AdminController : Controller, IUpdateModel { public class AdminController : Controller, IUpdateModel {
private readonly IImportExportService _importExportService; private readonly IImportExportService _importExportService;
private readonly IRecipeResultAccessor _recipeResultAccessor; private readonly IRecipeResultAccessor _recipeResultAccessor;
private readonly IEnumerable<IRecipeBuilderStep> _exportStepProviders; private readonly IEnumerable<IRecipeBuilderStep> _exportStepProviders;
private readonly IRecipeParser _recipeParser;
public AdminController( public AdminController(
IOrchardServices services, IOrchardServices services,
IImportExportService importExportService, IImportExportService importExportService,
IRecipeResultAccessor recipeResultAccessor, IRecipeResultAccessor recipeResultAccessor,
IEnumerable<IRecipeBuilderStep> exportStepProviders) { IEnumerable<IRecipeBuilderStep> exportStepProviders,
IRecipeParser recipeParser) {
_importExportService = importExportService; _importExportService = importExportService;
_recipeResultAccessor = recipeResultAccessor; _recipeResultAccessor = recipeResultAccessor;
_exportStepProviders = exportStepProviders; _exportStepProviders = exportStepProviders;
_recipeParser = recipeParser;
Services = services; Services = services;
T = NullLocalizer.Instance; T = NullLocalizer.Instance;
} }
@@ -97,12 +102,22 @@ namespace Orchard.ImportExport.Controllers {
exportStep.UpdateEditor(Services.New, this); exportStep.UpdateEditor(Services.New, this);
} }
var exportFilePath = _importExportService.Export(exportSteps); var recipeDocument = _importExportService.ExportXml(exportSteps);
var exportFileName = "export.xml"; var recipe = _recipeParser.ParseRecipe(recipeDocument);
var exportFileName = GetExportFileName(recipe);
var exportFilePath = _importExportService.WriteExportFile(recipeDocument);
return File(exportFilePath, "text/xml", exportFileName); return File(exportFilePath, "text/xml", exportFileName);
} }
private string GetExportFileName(Recipe recipe) {
return String.IsNullOrWhiteSpace(recipe.Name)
? "export.xml"
: String.Format(recipe.IsSetupRecipe
? "{0}.recipe.xml"
: "{0}.export.xml", recipe.Name.HtmlClassify());
}
bool IUpdateModel.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) { bool IUpdateModel.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
return TryUpdateModel(model, prefix, includeProperties, excludeProperties); return TryUpdateModel(model, prefix, includeProperties, excludeProperties);
} }