コード例 #1
0
        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")));
        }
コード例 #2
0
        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"));
        }