From 4762b1d3f6906d04dd5416a5d64bf5afb277b59d Mon Sep 17 00:00:00 2001 From: Dave Reed Date: Thu, 2 Dec 2010 12:32:15 -0800 Subject: [PATCH] #16906: You can no longer add fields with an empty name --HG-- branch : dev --- .../Controllers/AdminController.cs | 13 ++++++++++--- .../Services/ContentDefinitionService.cs | 8 +++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs index 8956266f8..4617215a7 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs @@ -326,8 +326,8 @@ namespace Orchard.ContentTypes.Controllers { if (partViewModel == null) { //id passed in might be that of a type w/ no implicit field if (typeViewModel != null) { - partViewModel = new EditPartViewModel { Name = typeViewModel.Name }; - _contentDefinitionService.AddPart(new CreatePartViewModel { Name = partViewModel.Name }); + partViewModel = new EditPartViewModel {Name = typeViewModel.Name}; + _contentDefinitionService.AddPart(new CreatePartViewModel {Name = partViewModel.Name}); _contentDefinitionService.AddPartToType(partViewModel.Name, typeViewModel.Name); } else { @@ -341,7 +341,14 @@ namespace Orchard.ContentTypes.Controllers { return AddFieldTo(id); } - _contentDefinitionService.AddFieldToPart(viewModel.DisplayName, viewModel.FieldTypeName, partViewModel.Name); + try { + _contentDefinitionService.AddFieldToPart(viewModel.DisplayName, viewModel.FieldTypeName, partViewModel.Name); + } + catch (Exception ex) { + Services.Notifier.Information(T("The \"{0}\" field was not added. {1}", viewModel.DisplayName, ex.Message)); + Services.TransactionManager.Cancel(); + return AddFieldTo(id); + } if (!ModelState.IsValid) { Services.TransactionManager.Cancel(); diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Services/ContentDefinitionService.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/Services/ContentDefinitionService.cs index 39fe4567a..d00d99d7b 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Services/ContentDefinitionService.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Services/ContentDefinitionService.cs @@ -210,9 +210,11 @@ namespace Orchard.ContentTypes.Services { public void AddFieldToPart(string fieldName, string fieldTypeName, string partName) { fieldName = SafeName(fieldName); - _contentDefinitionManager.AlterPartDefinition(partName, partBuilder => - partBuilder.WithField(fieldName, fieldBuilder => fieldBuilder.OfType(fieldTypeName)) - ); + if (string.IsNullOrEmpty(fieldName)) { + throw new OrchardException(T("Fields must have a name containing no spaces or symbols.")); + } + _contentDefinitionManager.AlterPartDefinition(partName, + partBuilder => partBuilder.WithField(fieldName, fieldBuilder => fieldBuilder.OfType(fieldTypeName))); } public void RemoveFieldFromPart(string fieldName, string partName) {