mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 11:44:58 +08:00
Getting field setting editors displayed in the content type editor (still need to hook up update...and refactor relevant actions)
--HG-- branch : dev
This commit is contained in:
@@ -78,9 +78,35 @@ namespace Orchard.ContentTypes.Controllers {
|
|||||||
m => m.PartDefinition.Name,
|
m => m.PartDefinition.Name,
|
||||||
d => d.PartDefinition.Name,
|
d => d.PartDefinition.Name,
|
||||||
(model, definition) => new {model, definition});
|
(model, definition) => new {model, definition});
|
||||||
foreach (var entry in entries)
|
foreach (var entry in entries) {
|
||||||
entry.model.Templates = _extendViewModels.TypePartEditor(entry.definition);
|
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);
|
return View(viewModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -82,6 +82,7 @@ namespace Orchard.ContentTypes.ViewModels {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
public IEnumerable<TemplateViewModel> Templates { get; set; }
|
||||||
public EditFieldViewModel FieldDefinition { get; set; }
|
public EditFieldViewModel FieldDefinition { get; set; }
|
||||||
public SettingsDictionary Settings { get; set; }
|
public SettingsDictionary Settings { get; set; }
|
||||||
}
|
}
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
<button type="submit" title="<%:T("Remove") %>"><%:T("Remove") %></button>
|
<button type="submit" title="<%:T("Remove") %>"><%:T("Remove") %></button>
|
||||||
<% } %> --%>
|
<% } %> --%>
|
||||||
</div>
|
</div>
|
||||||
<%:Html.EditorFor(m => m.Settings, "Settings", "") %>
|
<% Html.RenderTemplates(Model.Templates); %>
|
||||||
<%:Html.HiddenFor(m => m.Name) %>
|
<%:Html.HiddenFor(m => m.Name) %>
|
||||||
<%:Html.HiddenFor(m => m.FieldDefinition.Name) %>
|
<%:Html.HiddenFor(m => m.FieldDefinition.Name) %>
|
||||||
</fieldset>
|
</fieldset>
|
@@ -56,6 +56,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Module.txt" />
|
<Content Include="Module.txt" />
|
||||||
<Content Include="Views\Admin\Index.ascx" />
|
<Content Include="Views\Admin\Index.ascx" />
|
||||||
|
<Content Include="Views\DefinitionTemplates\IndexingSettings.ascx" />
|
||||||
<Content Include="Web.config" />
|
<Content Include="Web.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -77,6 +78,7 @@
|
|||||||
<Compile Include="Models\LuceneSearchHit.cs" />
|
<Compile Include="Models\LuceneSearchHit.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Services\IndexService.cs" />
|
<Compile Include="Services\IndexService.cs" />
|
||||||
|
<Compile Include="Settings\IndexingSettings.cs" />
|
||||||
<Compile Include="ViewModels\IndexViewModel.cs" />
|
<Compile Include="ViewModels\IndexViewModel.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@@ -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<TemplateViewModel> PartFieldEditor(ContentPartDefinition.Field definition) {
|
||||||
|
var model = definition.Settings.GetModel<IndexingSettings>();
|
||||||
|
yield return DefinitionTemplate(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IEnumerable<TemplateViewModel> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Indexing.Settings.IndexingSettings>" %>
|
||||||
|
<%@ Import Namespace="Orchard.Mvc.Html" %>
|
||||||
|
<fieldset>
|
||||||
|
<%:Html.EditorFor(m=>m.IncludeInIndex) %>
|
||||||
|
<label for="<%:Html.FieldIdFor(m => m.IncludeInIndex) %>" class="forcheckbox"><%:T("Include in the index") %></label>
|
||||||
|
<%:Html.ValidationMessageFor(m => m.IncludeInIndex)%>
|
||||||
|
</fieldset>
|
@@ -10,10 +10,12 @@ namespace Orchard.ContentManagement.MetaData {
|
|||||||
IEnumerable<TemplateViewModel> TypeEditor(ContentTypeDefinition definition);
|
IEnumerable<TemplateViewModel> TypeEditor(ContentTypeDefinition definition);
|
||||||
IEnumerable<TemplateViewModel> TypePartEditor(ContentTypeDefinition.Part definition);
|
IEnumerable<TemplateViewModel> TypePartEditor(ContentTypeDefinition.Part definition);
|
||||||
IEnumerable<TemplateViewModel> PartEditor(ContentPartDefinition definition);
|
IEnumerable<TemplateViewModel> PartEditor(ContentPartDefinition definition);
|
||||||
|
IEnumerable<TemplateViewModel> PartFieldEditor(ContentPartDefinition.Field definition);
|
||||||
|
|
||||||
IEnumerable<TemplateViewModel> TypeEditorUpdate(ContentTypeDefinitionBuilder builder, IUpdateModel updateModel);
|
IEnumerable<TemplateViewModel> TypeEditorUpdate(ContentTypeDefinitionBuilder builder, IUpdateModel updateModel);
|
||||||
IEnumerable<TemplateViewModel> TypePartEditorUpdate(ContentTypeDefinitionBuilder.PartConfigurer builder, IUpdateModel updateModel);
|
IEnumerable<TemplateViewModel> TypePartEditorUpdate(ContentTypeDefinitionBuilder.PartConfigurer builder, IUpdateModel updateModel);
|
||||||
IEnumerable<TemplateViewModel> PartEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel);
|
IEnumerable<TemplateViewModel> PartEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel);
|
||||||
|
IEnumerable<TemplateViewModel> PartFieldEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class ContentDefinitionEditorEventsBase : IContentDefinitionEditorEvents {
|
public abstract class ContentDefinitionEditorEventsBase : IContentDefinitionEditorEvents {
|
||||||
@@ -29,6 +31,10 @@ namespace Orchard.ContentManagement.MetaData {
|
|||||||
return Enumerable.Empty<TemplateViewModel>();
|
return Enumerable.Empty<TemplateViewModel>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IEnumerable<TemplateViewModel> PartFieldEditor(ContentPartDefinition.Field definition) {
|
||||||
|
return Enumerable.Empty<TemplateViewModel>();
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IEnumerable<TemplateViewModel> TypeEditorUpdate(ContentTypeDefinitionBuilder builder, IUpdateModel updateModel) {
|
public virtual IEnumerable<TemplateViewModel> TypeEditorUpdate(ContentTypeDefinitionBuilder builder, IUpdateModel updateModel) {
|
||||||
return Enumerable.Empty<TemplateViewModel>();
|
return Enumerable.Empty<TemplateViewModel>();
|
||||||
}
|
}
|
||||||
@@ -41,6 +47,10 @@ namespace Orchard.ContentManagement.MetaData {
|
|||||||
return Enumerable.Empty<TemplateViewModel>();
|
return Enumerable.Empty<TemplateViewModel>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IEnumerable<TemplateViewModel> PartFieldEditorUpdate(ContentPartDefinitionBuilder builder, IUpdateModel updateModel) {
|
||||||
|
return Enumerable.Empty<TemplateViewModel>();
|
||||||
|
}
|
||||||
|
|
||||||
protected static TemplateViewModel DefinitionTemplate<TModel>(TModel model) {
|
protected static TemplateViewModel DefinitionTemplate<TModel>(TModel model) {
|
||||||
return new TemplateViewModel(model, typeof(TModel).Name) {
|
return new TemplateViewModel(model, typeof(TModel).Name) {
|
||||||
TemplateName = "DefinitionTemplates/" + typeof(TModel).Name
|
TemplateName = "DefinitionTemplates/" + typeof(TModel).Name
|
||||||
|
Reference in New Issue
Block a user