diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs index 88c6810cb..308c2a4c9 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Controllers/AdminController.cs @@ -78,9 +78,35 @@ namespace Orchard.ContentTypes.Controllers { m => m.PartDefinition.Name, d => d.PartDefinition.Name, (model, definition) => new {model, definition}); - foreach (var entry in entries) + foreach (var entry in entries) { entry.model.Templates = _extendViewModels.TypePartEditor(entry.definition); + var fields = entry.model.PartDefinition.Fields.Join(entry.definition.PartDefinition.Fields, + m => m.FieldDefinition.Name, + d => d.FieldDefinition.Name, + (model, definition) => new { model, definition }); + + foreach (var field in fields) { + field.model.Templates = _extendViewModels.PartFieldEditor(field.definition); + } + } + + + //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.FieldDefinition.Name, + d => d.FieldDefinition.Name, + (model, definition) => new { model, definition }); + + foreach (var field in fields) { + field.model.Templates = _extendViewModels.PartFieldEditor(field.definition); + } + } + 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 f3f4d9e86..f912eb7f1 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/ViewModels/EditTypeViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/ViewModels/EditTypeViewModel.cs @@ -82,6 +82,7 @@ namespace Orchard.ContentTypes.ViewModels { } public string Name { get; set; } + public IEnumerable Templates { get; set; } public EditFieldViewModel FieldDefinition { get; set; } public SettingsDictionary Settings { get; set; } } diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Views/EditorTemplates/Field.ascx b/src/Orchard.Web/Modules/Orchard.ContentTypes/Views/EditorTemplates/Field.ascx index fba1ccaf2..af061a2a1 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Views/EditorTemplates/Field.ascx +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Views/EditorTemplates/Field.ascx @@ -10,7 +10,7 @@ <% } %> --%> - <%:Html.EditorFor(m => m.Settings, "Settings", "") %> + <% Html.RenderTemplates(Model.Templates); %> <%:Html.HiddenFor(m => m.Name) %> <%:Html.HiddenFor(m => m.FieldDefinition.Name) %> \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj b/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj index 179e2bb84..85e922562 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj @@ -56,6 +56,7 @@ + @@ -77,6 +78,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Settings/IndexingSettings.cs b/src/Orchard.Web/Modules/Orchard.Indexing/Settings/IndexingSettings.cs new file mode 100644 index 000000000..1a1146b5b --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Settings/IndexingSettings.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using Orchard.ContentManagement; +using Orchard.ContentManagement.MetaData; +using Orchard.ContentManagement.MetaData.Builders; +using Orchard.ContentManagement.MetaData.Models; +using Orchard.ContentManagement.ViewModels; + +namespace Orchard.Indexing.Settings { + public class IndexingSettings { + public bool IncludeInIndex { get; set; } + } + + public class IndexingSettingsHooks : ContentDefinitionEditorEventsBase { + public override IEnumerable PartFieldEditor(ContentPartDefinition.Field definition) { + var model = definition.Settings.GetModel(); + yield return DefinitionTemplate(model); + } + + public override IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel) { + var model = new IndexingSettings(); + updateModel.TryUpdateModel(model, "IndexingSettings", null, null); + builder.WithSetting("IndexingSettings.IncludeInIndex", model.IncludeInIndex ? true.ToString() : null); + yield return DefinitionTemplate(model); + } + } +} diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Views/DefinitionTemplates/IndexingSettings.ascx b/src/Orchard.Web/Modules/Orchard.Indexing/Views/DefinitionTemplates/IndexingSettings.ascx new file mode 100644 index 000000000..b68c8f08c --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Views/DefinitionTemplates/IndexingSettings.ascx @@ -0,0 +1,7 @@ +<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> +<%@ Import Namespace="Orchard.Mvc.Html" %> +
+ <%:Html.EditorFor(m=>m.IncludeInIndex) %> + + <%:Html.ValidationMessageFor(m => m.IncludeInIndex)%> +
diff --git a/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs b/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs index 7c25981d4..f7e5cac93 100644 --- a/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs +++ b/src/Orchard/ContentManagement/MetaData/IContentDefinitionEditorEvents.cs @@ -10,10 +10,12 @@ namespace Orchard.ContentManagement.MetaData { IEnumerable TypeEditor(ContentTypeDefinition definition); IEnumerable TypePartEditor(ContentTypeDefinition.Part definition); IEnumerable PartEditor(ContentPartDefinition definition); + IEnumerable PartFieldEditor(ContentPartDefinition.Field definition); 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); } public abstract class ContentDefinitionEditorEventsBase : IContentDefinitionEditorEvents { @@ -29,6 +31,10 @@ namespace Orchard.ContentManagement.MetaData { return Enumerable.Empty(); } + public virtual IEnumerable PartFieldEditor(ContentPartDefinition.Field definition) { + return Enumerable.Empty(); + } + public virtual IEnumerable TypeEditorUpdate(ContentTypeDefinitionBuilder builder, IUpdateModel updateModel) { return Enumerable.Empty(); } @@ -41,6 +47,10 @@ namespace Orchard.ContentManagement.MetaData { return Enumerable.Empty(); } + public virtual IEnumerable PartFieldEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel) { + return Enumerable.Empty(); + } + protected static TemplateViewModel DefinitionTemplate(TModel model) { return new TemplateViewModel(model, typeof(TModel).Name) { TemplateName = "DefinitionTemplates/" + typeof(TModel).Name