protected override DriverResult Editor(SearchSettingsPart part, IUpdateModel updater, dynamic shapeHelper) { return(Combined( ContentShape("Parts_Search_SiteSettings_Index", () => { var model = new SearchSettingsIndexViewModel { SelectedIndex = part.SearchIndex, AvailableIndexes = _indexManager.GetSearchIndexProvider().List().ToList() }; if (updater != null) { if (updater.TryUpdateModel(model, Prefix, null, null)) { part.SearchIndex = model.SelectedIndex; } } return shapeHelper.EditorTemplate(TemplateName: "Parts/Search.SiteSettings.Index", Model: model, Prefix: Prefix); }).OnGroup("search"), ContentShape("Parts_Search_SiteSettings_Fields", () => { var model = new SearchSettingsFieldsViewModel(); var searchFields = part.SearchFields; model.DisplayType = part.DisplayType; if (updater != null) { if (updater.TryUpdateModel(model, Prefix, null, null)) { part.SearchFields = model.Entries.ToDictionary(x => x.Index, x => x.Fields.Where(e => e.Selected).Select(e => e.Field).ToArray()); part.FilterCulture = model.FilterCulture; part.DisplayType = model.DisplayType; } } else if (_indexManager.HasIndexProvider()) { model.FilterCulture = part.FilterCulture; model.Entries = _indexManager.GetSearchIndexProvider().List().Select(x => { var indexSettings = new IndexSettingsEntry { Index = x, Fields = new List <SearchSettingsEntry>() }; foreach (var field in _indexManager.GetSearchIndexProvider().GetFields(x)) { indexSettings.Fields.Add(new SearchSettingsEntry { Field = field, Selected = (searchFields.ContainsKey(x) && searchFields[x].Contains(field)) }); } return indexSettings; }).ToList(); } return shapeHelper.EditorTemplate(TemplateName: "Parts/Search.SiteSettings.Fields", Model: model, Prefix: Prefix); }).OnGroup("search"))); }
protected override DriverResult Editor(SearchSettingsPart part, IUpdateModel updater, dynamic shapeHelper) { return(ContentShape("Parts_Search_SiteSettings", () => { var model = new SearchSettingsViewModel(); String[] searchedFields = part.SearchedFields; if (updater != null) { // submitting: rebuild model from form data if (updater.TryUpdateModel(model, Prefix, null, null)) { // update part if successful part.SearchIndex = model.SelectedIndex; part.SearchedFields = model.Entries.First(e => e.Index == model.SelectedIndex).Fields.Where(e => e.Selected).Select(e => e.Field).ToArray(); part.FilterCulture = model.FilterCulture; } } else if (_indexManager.HasIndexProvider()) { // viewing editor: build model from part model.FilterCulture = part.FilterCulture; model.SelectedIndex = part.SearchIndex; model.Entries = _indexManager.GetSearchIndexProvider().List().Select(x => { var indexSettings = new IndexSettingsEntry { Index = x, Fields = new List <SearchSettingsEntry>() }; foreach (var field in _indexManager.GetSearchIndexProvider().GetFields(x)) { indexSettings.Fields.Add(new SearchSettingsEntry { Field = field, Selected = (x == part.SearchIndex && searchedFields.Contains(field)) }); } return indexSettings; }).ToList(); } return shapeHelper.EditorTemplate(TemplateName: "Parts/Search.SiteSettings", Model: model, Prefix: Prefix); }).OnGroup("search")); }