mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-14 10:54:50 +08:00
Beginning some content type edit refactoring/cleanup
--HG-- branch : dev
This commit is contained in:
@@ -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);
|
||||
|
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user