From d89eeb79855954c1f759c1e36eae13080feea93d Mon Sep 17 00:00:00 2001 From: Nathan Heskew Date: Fri, 2 Jul 2010 17:15:59 -0700 Subject: [PATCH] Beginning some content type edit refactoring/cleanup --HG-- branch : dev --- .../Controllers/AdminController.cs | 43 +++++-------------- .../ViewModels/EditTypeViewModel.cs | 12 ++++-- 2 files changed, 19 insertions(+), 36 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs index 10e125ccb..70d10e341 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs @@ -71,42 +71,19 @@ namespace Orchard.ContentTypes.Controllers { if (contentTypeDefinition == null) return new NotFoundResult(); - var viewModel = new EditTypeViewModel(contentTypeDefinition); - viewModel.Parts = viewModel.Parts.ToArray(); - viewModel.Templates = _extendViewModels.TypeEditor(contentTypeDefinition); + var viewModel = new EditTypeViewModel(contentTypeDefinition) { + Templates = _extendViewModels.TypeEditor(contentTypeDefinition) + }; - var entries = viewModel.Parts.Join(contentTypeDefinition.Parts, - m => m.PartDefinition.Name, - d => d.PartDefinition.Name, - (model, definition) => new {model, definition}); - foreach (var entry in entries) { - entry.model.PartDefinition.Fields = entry.model.PartDefinition.Fields.ToArray(); - entry.model.Templates = _extendViewModels.TypePartEditor(entry.definition); - - var fields = entry.model.PartDefinition.Fields.Join(entry.definition.PartDefinition.Fields, - m => m.Name, - d => d.Name, - (model, definition) => new { model, definition }); - - foreach (var field in fields) { - field.model.Templates = _extendViewModels.PartFieldEditor(field.definition); - } + foreach (var part in viewModel.Parts) { + part.Templates = _extendViewModels.TypePartEditor(new ContentTypeDefinition.Part(part.PartDefinition.Definition, part.Settings)); + foreach (var field in part.PartDefinition.Fields) + field.Templates = _extendViewModels.PartFieldEditor(new ContentPartDefinition.Field(field.FieldDefinition.Definition, field.Name, field.Settings)); } - - //Oy, this action is getting massive :( - //todo: put this action on a diet - var contentPartDefinition = _contentDefinitionService.GetPartDefinition(id); - if (contentPartDefinition != null) { - viewModel.Fields = viewModel.Fields.ToArray(); - var fields = viewModel.Fields.Join(contentPartDefinition.Fields, - m => m.Name, - d => d.Name, - (model, definition) => new { model, definition }); - - foreach (var field in fields) { - field.model.Templates = _extendViewModels.PartFieldEditor(field.definition); - } + if (viewModel.Fields.Any()) { + foreach (var field in viewModel.Fields) + field.Templates = _extendViewModels.PartFieldEditor(new ContentPartDefinition.Field(field.FieldDefinition.Definition, field.Name, field.Settings)); } return View(viewModel); diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/ViewModels/EditTypeViewModel.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/ViewModels/EditTypeViewModel.cs index 95086f18d..53a1ff8a7 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/ViewModels/EditTypeViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/ViewModels/EditTypeViewModel.cs @@ -15,12 +15,14 @@ namespace Orchard.ContentTypes.ViewModels { Name = contentTypeDefinition.Name; DisplayName = contentTypeDefinition.DisplayName; Settings = contentTypeDefinition.Settings; - Fields = GetTypeFields(contentTypeDefinition); - Parts = GetTypeParts(contentTypeDefinition); + Fields = GetTypeFields(contentTypeDefinition).ToList(); + Parts = GetTypeParts(contentTypeDefinition).ToList(); + Definition = contentTypeDefinition; } public string Name { get; set; } public string DisplayName { get; set; } + public ContentTypeDefinition Definition { get; private set; } public IEnumerable Templates { get; set; } public SettingsDictionary Settings { get; set; } @@ -62,13 +64,15 @@ namespace Orchard.ContentTypes.ViewModels { } public EditPartViewModel(ContentPartDefinition contentPartDefinition) { Name = contentPartDefinition.Name; - Fields = contentPartDefinition.Fields.Select(f => new EditPartFieldViewModel(f) { Part = this }); + Fields = contentPartDefinition.Fields.Select(f => new EditPartFieldViewModel(f) { Part = this }).ToList(); Settings = contentPartDefinition.Settings; + Definition = contentPartDefinition; } public string Name { get; set; } public IEnumerable Templates { get; set; } public IEnumerable Fields { get; set; } + public ContentPartDefinition Definition { get; private set; } public SettingsDictionary Settings { get; set; } } @@ -93,8 +97,10 @@ namespace Orchard.ContentTypes.ViewModels { public EditFieldViewModel() { } public EditFieldViewModel(ContentFieldDefinition contentFieldDefinition) { Name = contentFieldDefinition.Name; + Definition = contentFieldDefinition; } public string Name { get; set; } + public ContentFieldDefinition Definition { get; private set; } } }