diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs index 308c2a4c9..d7239a282 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs @@ -139,6 +139,41 @@ namespace Orchard.ContentTypes.Controllers { typeBuilder.WithPart(entry.part.PartDefinition.Name, typePartBuilder => { partViewModel.Templates = _extendViewModels.TypePartEditorUpdate(typePartBuilder, updater); }); + + if (!partViewModel.PartDefinition.Fields.Any()) + continue; + + _contentDefinitionManager.AlterPartDefinition(partViewModel.PartDefinition.Name, partBuilder => { + foreach (var fieldEntry in partViewModel.PartDefinition.Fields.Select((field, index) => new { field, index })) { + var fieldViewModel = fieldEntry.field; + + // enable updater to be aware of changing field prefix + var firstHalfFieldName = "Fields[" + fieldEntry.index + "]."; + updater._prefix = secondHalf => firstHalfFieldName + secondHalf; + + // allow extensions to alter partField configuration + partBuilder.WithField(fieldViewModel.Name, partFieldBuilder => { + fieldViewModel.Templates = _extendViewModels.PartFieldEditorUpdate(partFieldBuilder, updater); + }); + } + }); + } + + if (viewModel.Fields.Any()) { + _contentDefinitionManager.AlterPartDefinition(viewModel.Name, partBuilder => { + foreach (var fieldEntry in viewModel.Fields.Select((field, index) => new { field, index })) { + var fieldViewModel = fieldEntry.field; + + // enable updater to be aware of changing field prefix + var firstHalfFieldName = "Fields[" + fieldEntry.index + "]."; + updater._prefix = secondHalf => firstHalfFieldName + secondHalf; + + // allow extensions to alter partField configuration + partBuilder.WithField(fieldViewModel.Name, partFieldBuilder => { + fieldViewModel.Templates = _extendViewModels.PartFieldEditorUpdate(partFieldBuilder, updater); + }); + } + }); } }); diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Settings/IndexingSettings.cs b/src/Orchard.Web/Modules/Orchard.Indexing/Settings/IndexingSettings.cs index 1a1146b5b..8b703a92e 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Settings/IndexingSettings.cs +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Settings/IndexingSettings.cs @@ -16,7 +16,7 @@ namespace Orchard.Indexing.Settings { yield return DefinitionTemplate(model); } - public override IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel) { + public override IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder.FieldConfigurer builder, IUpdateModel updateModel) { var model = new IndexingSettings(); updateModel.TryUpdateModel(model, "IndexingSettings", null, null); builder.WithSetting("IndexingSettings.IncludeInIndex", model.IncludeInIndex ? true.ToString() : null); diff --git a/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs b/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs index f7e5cac93..6fea8af3b 100644 --- a/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs +++ b/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs @@ -15,7 +15,7 @@ namespace Orchard.ContentManagement.MetaData { IEnumerable TypeEditorUpdate(ContentTypeDefinitionBuilder builder, IUpdateModel updateModel); IEnumerable TypePartEditorUpdate(ContentTypeDefinitionBuilder.PartConfigurer builder, IUpdateModel updateModel); IEnumerable PartEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel); - IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel); + IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder.FieldConfigurer builder, IUpdateModel updateModel); } public abstract class ContentDefinitionEditorEventsBase : IContentDefinitionEditorEvents { @@ -47,7 +47,7 @@ namespace Orchard.ContentManagement.MetaData { return Enumerable.Empty(); } - public virtual IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel) { + public virtual IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder.FieldConfigurer builder, IUpdateModel updateModel) { return Enumerable.Empty(); }