Beginning some content type edit refactoring/cleanup

--HG--
branch : dev
This commit is contained in:
Nathan Heskew
2010-07-02 17:15:59 -07:00
parent d892e88d09
commit d89eeb7985
2 changed files with 19 additions and 36 deletions

View File

@@ -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);

View File

@@ -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<TemplateViewModel> 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<TemplateViewModel> Templates { get; set; }
public IEnumerable<EditPartFieldViewModel> 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; }
}
}