From 09f8c563774fce47c4afbbccf9e270592189d148 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Wed, 20 Feb 2013 13:01:09 -0800 Subject: [PATCH] Fixing Content Picker when Search is the only tab --HG-- branch : 1.x --- .../Controllers/AdminController.cs | 15 +++++++++++++-- .../Controllers/ContentPickerController.cs | 2 +- .../Modules/Orchard.Search/Orchard.Search.csproj | 3 +++ .../Views/ContentPicker/NoIndex.cshtml | 1 + .../Orchard.Search/Views/Search/Index.cshtml | 4 ++-- 5 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Search/Views/ContentPicker/NoIndex.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.ContentPicker/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.ContentPicker/Controllers/AdminController.cs index b1dc21f31..63367009a 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentPicker/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentPicker/Controllers/AdminController.cs @@ -51,11 +51,22 @@ namespace Orchard.ContentPicker.Controllers { if (contentPickerMenuItem.Items.All(x => x.Text.ToString() != T("Recent Content").Text)) { // the default tab should not be displayed, redirect to the next one + var root = menuItems.FirstOrDefault(); + if (root == null) { + return HttpNotFound(); + } - var routeData = new RouteValueDictionary(menuItems.First().RouteValues); + var firstChild = root.Items.First(); + if (firstChild == null) { + return HttpNotFound(); + } + + var routeData = new RouteValueDictionary(firstChild.RouteValues); var queryString = Request.QueryString; foreach (var key in queryString.AllKeys) { - routeData[key] = queryString[key]; + if (!String.IsNullOrEmpty(key)) { + routeData[key] = queryString[key]; + } } return RedirectToRoute(routeData); diff --git a/src/Orchard.Web/Modules/Orchard.Search/Controllers/ContentPickerController.cs b/src/Orchard.Web/Modules/Orchard.Search/Controllers/ContentPickerController.cs index b8415dff3..ccaf3a580 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Controllers/ContentPickerController.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/Controllers/ContentPickerController.cs @@ -61,7 +61,7 @@ namespace Orchard.Search.Controllers { } if (!_indexManager.HasIndexProvider()) { - return HttpNotFound(); + return View("NoIndex"); } var builder = _indexManager.GetSearchIndexProvider().CreateSearchBuilder("Search"); diff --git a/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj b/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj index 4bb7f1d58..d49cdf83e 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj +++ b/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj @@ -118,6 +118,9 @@ + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/src/Orchard.Web/Modules/Orchard.Search/Views/ContentPicker/NoIndex.cshtml b/src/Orchard.Web/Modules/Orchard.Search/Views/ContentPicker/NoIndex.cshtml new file mode 100644 index 000000000..97fafe4d2 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Search/Views/ContentPicker/NoIndex.cshtml @@ -0,0 +1 @@ +@T("You need to enable a search index module.") \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Search/Views/Search/Index.cshtml b/src/Orchard.Web/Modules/Orchard.Search/Views/Search/Index.cshtml index 8567c40ae..1c1c4ab93 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Views/Search/Index.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Search/Views/Search/Index.cshtml @@ -9,13 +9,13 @@

@Html.TitleForPage(T("Search").Text)

@if (HasText(Model.Query)) { - if (searchResults.Count() == 0) { + if (!searchResults.Any()) {

@T.Plural("There is one result", "zero results", searchResults.Count())

} else {

@T.Plural("There is one result", "{1} - {2} of {0} results", Model.TotalItemCount, Model.StartPosition, Model.EndPosition)

} } -@if (searchResults != null && searchResults.Count() > 0) { +@if (searchResults != null && searchResults.Any()) { @Display(searchResults) @Display(Model.Pager) } \ No newline at end of file