From 80b93e412a64aac36f318a2b057e7cd439dc1688 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Wed, 9 Sep 2015 15:44:53 -0700 Subject: [PATCH] Supporting custom display type for search results --- .../Modules/Orchard.Search/Controllers/SearchController.cs | 2 +- .../Orchard.Search/Drivers/SearchSettingsPartDriver.cs | 3 +++ .../Modules/Orchard.Search/Models/SearchSettingsPart.cs | 5 +++++ .../Orchard.Search/ViewModels/SearchSettingsViewModel.cs | 1 + .../Views/EditorTemplates/Parts/Search.SiteSettings.cshtml | 6 +++++- 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs b/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs index 17226947c..410ccf968 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs @@ -73,7 +73,7 @@ namespace Orchard.Search.Controllers { // ignore search results which content item has been removed or unpublished var foundItems = _contentManager.GetMany(foundIds, VersionOptions.Published, new QueryHints()).ToList(); foreach (var contentItem in foundItems) { - list.Add(_contentManager.BuildDisplay(contentItem, "Summary")); + list.Add(_contentManager.BuildDisplay(contentItem, searchSettingPart.DisplayType)); } searchHits.TotalItemCount -= foundIds.Count() - foundItems.Count(); diff --git a/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs index b928c4272..e6a1d93e6 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs @@ -34,11 +34,14 @@ namespace Orchard.Search.Drivers { var model = new SearchSettingsViewModel(); var searchFields = part.SearchFields; + model.DisplayType = part.DisplayType; + if (updater != null) { if (updater.TryUpdateModel(model, Prefix, null, null)) { part.SearchIndex = model.SelectedIndex; 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()) { diff --git a/src/Orchard.Web/Modules/Orchard.Search/Models/SearchSettingsPart.cs b/src/Orchard.Web/Modules/Orchard.Search/Models/SearchSettingsPart.cs index bee81e330..a98c40977 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Models/SearchSettingsPart.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/Models/SearchSettingsPart.cs @@ -24,5 +24,10 @@ namespace Orchard.Search.Models { get { return this.Retrieve(x => x.SearchIndex); } set { this.Store(x => x.SearchIndex, value); } } + + public string DisplayType { + get { return this.Retrieve(x => x.DisplayType, "Summary"); } + set { this.Store(x => x.DisplayType, value); } + } } } diff --git a/src/Orchard.Web/Modules/Orchard.Search/ViewModels/SearchSettingsViewModel.cs b/src/Orchard.Web/Modules/Orchard.Search/ViewModels/SearchSettingsViewModel.cs index d5541734c..45c3bb422 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/ViewModels/SearchSettingsViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/ViewModels/SearchSettingsViewModel.cs @@ -9,6 +9,7 @@ namespace Orchard.Search.ViewModels { public string SelectedIndex { get; set; } public IList Entries { get; set; } public bool FilterCulture { get; set; } + public string DisplayType { get; set; } } public class IndexSettingsEntry { diff --git a/src/Orchard.Web/Modules/Orchard.Search/Views/EditorTemplates/Parts/Search.SiteSettings.cshtml b/src/Orchard.Web/Modules/Orchard.Search/Views/EditorTemplates/Parts/Search.SiteSettings.cshtml index 1fe2c6321..ac8adb6e6 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Views/EditorTemplates/Parts/Search.SiteSettings.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Search/Views/EditorTemplates/Parts/Search.SiteSettings.cshtml @@ -57,5 +57,9 @@ @T("If checked, search results will only include content items localized in the current culture of the request.") - +
+ + @Html.TextBoxFor(m => m.DisplayType, new { @class = "text single-line" }) + @T("The display type to use for content items in the search results page.") +
\ No newline at end of file