mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-04-24 19:08:18 +08:00
- Readding Orchard.Search
--HG-- branch : dev
This commit is contained in:
parent
10e8cdff67
commit
a0175b5129
@ -1,15 +1,20 @@
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Mvc.Filters;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Search.ViewModels;
|
||||
|
||||
namespace Orchard.Search.Filters {
|
||||
public class SearchFilter : FilterProvider, IResultFilter {
|
||||
public void OnResultExecuting(ResultExecutingContext filterContext) {
|
||||
var viewModel = filterContext.Controller.ViewData.Model as BaseViewModel;
|
||||
private readonly IWorkContextAccessor _workContextAccessor;
|
||||
|
||||
if (viewModel != null)
|
||||
viewModel.Zones.AddRenderPartial("search", "SearchForm", viewModel is SearchViewModel ? viewModel : new SearchViewModel());
|
||||
public SearchFilter(IWorkContextAccessor workContextAccessor) {
|
||||
_workContextAccessor = workContextAccessor;
|
||||
}
|
||||
|
||||
public void OnResultExecuting(ResultExecutingContext filterContext) {
|
||||
dynamic search = filterContext.Controller.ViewData.Model;
|
||||
var workContext = _workContextAccessor.GetContext(filterContext);
|
||||
|
||||
if (search != null)
|
||||
workContext.Page.Search.Add(search);
|
||||
}
|
||||
|
||||
public void OnResultExecuted(ResultExecutedContext filterContext) {
|
||||
|
@ -49,7 +49,7 @@
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
@ -90,14 +90,16 @@
|
||||
<Content Include="Module.txt" />
|
||||
<Content Include="Styles\admin.css" />
|
||||
<Content Include="Styles\search.css" />
|
||||
<Content Include="Views\EditorTemplates\Parts\Search.SiteSettings.ascx" />
|
||||
<Content Include="Views\SearchForm.ascx" />
|
||||
<Content Include="Views\Search\Index.ascx" />
|
||||
<Content Include="Views\Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Views\EditorTemplates\Parts\Search.SiteSettings.cshtml" />
|
||||
<None Include="Views\SearchForm.cshtml" />
|
||||
<None Include="Views\Search\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
@ -1,9 +1,9 @@
|
||||
using Orchard.Indexing;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Indexing;
|
||||
|
||||
namespace Orchard.Search.ViewModels {
|
||||
public class SearchResultViewModel {
|
||||
public ISearchHit SearchHit { get; set; }
|
||||
public ContentItemViewModel Content { get; set; }
|
||||
public IContent Content { get; set; }
|
||||
}
|
||||
}
|
@ -1,8 +1,7 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Orchard.Search.ViewModels {
|
||||
public class SearchSettingsViewModel : BaseViewModel {
|
||||
public class SearchSettingsViewModel {
|
||||
public IList<SearchSettingsEntry> Entries { get; set; }
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
using Orchard.Collections;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Search.ViewModels {
|
||||
public class SearchViewModel : BaseViewModel {
|
||||
public class SearchViewModel {
|
||||
public string Query { get; set; }
|
||||
public int DefaultPageSize { get; set; }
|
||||
public IPageOfItems<SearchResultViewModel> PageOfResults { get; set; }
|
||||
|
@ -1,23 +0,0 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<SearchSettingsViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Search.ViewModels"%>
|
||||
<fieldset>
|
||||
<legend><%: T("Search")%></legend>
|
||||
<%-- TODO: (sebros) Implementation details after Alpha
|
||||
<div>
|
||||
<%: Html.EditorFor(m => m.FilterCulture) %>
|
||||
<label class="forcheckbox" for="SearchSettings_FilterCulture"><%: T("Search results must be filtered with current culture")%></label>
|
||||
<%: Html.ValidationMessage("FilterCulture", "*")%>
|
||||
</div>
|
||||
--%>
|
||||
<div>
|
||||
<%
|
||||
for(var i=0; i<Model.Entries.Count; i++) {
|
||||
var j = i;%>
|
||||
<input type="checkbox" value="true" <% if(Model.Entries[j].Selected ) { %> checked="checked" <% } %>
|
||||
name="<%:Html.FieldNameFor(m => m.Entries[j].Selected)%>" id="<%:Html.FieldIdFor(m => m.Entries[j].Selected)%>"/>
|
||||
<%: Html.HiddenFor(m => m.Entries[j].Field)%>
|
||||
<label class="forcheckbox" for="<%:Html.FieldIdFor(m => m.Entries[j].Selected)%>"><%: Model.Entries[j].Field%></label>
|
||||
<%
|
||||
}%>
|
||||
</div>
|
||||
</fieldset>
|
@ -0,0 +1,22 @@
|
||||
@model Orchard.Search.ViewModels.SearchSettingsViewModel
|
||||
@using Orchard.Search.ViewModels
|
||||
|
||||
<fieldset>
|
||||
<legend>@T("Search")</legend>
|
||||
<div>
|
||||
@{var entryIndex = 0;}
|
||||
@if (Model.Entries != null) {
|
||||
foreach(var modelEntry in Model.Entries) {
|
||||
if(Model.Entries[entryIndex].Selected) {
|
||||
<input type="checkbox" value="true" checked="checked" name="@Html.FieldNameFor(m => m.Entries[entryIndex].Selected)" id="@Html.FieldIdFor(m => m.Entries[entryIndex].Selected)"/>
|
||||
}
|
||||
else {
|
||||
<input type="checkbox" value="true" name="@Html.FieldNameFor(m => m.Entries[entryIndex].Selected)" id="@Html.FieldIdFor(m => m.Entries[entryIndex].Selected)"/>
|
||||
}
|
||||
@Html.HiddenFor(m => m.Entries[entryIndex].Field)
|
||||
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.Entries[entryIndex].Selected)">@Model.Entries[entryIndex].Field</label>
|
||||
entryIndex = entryIndex + 1;
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</fieldset>
|
@ -1,17 +0,0 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Search.ViewModels.SearchViewModel>" %>
|
||||
|
||||
<% Html.RegisterStyle("search.css"); %>
|
||||
<h1><%:Html.TitleForPage(T("Search").Text)%></h1><%
|
||||
Html.Zone("search");
|
||||
if (!string.IsNullOrWhiteSpace(Model.Query)) {
|
||||
if (Model.PageOfResults.Count() == 0) { %>
|
||||
<p class="search-summary"><%=T.Plural("the <em>one</em> result", "<em>zero</em> results", Model.PageOfResults.Count()) %></p><%
|
||||
}
|
||||
else { %>
|
||||
<p class="search-summary"><%=T.Plural("the <em>one</em> result", "<em>{1} - {2}</em> of <em>{0}</em> results", Model.PageOfResults.TotalItemCount, Model.PageOfResults.StartPosition, Model.PageOfResults.EndPosition)%></p><%
|
||||
}
|
||||
}
|
||||
if (Model.PageOfResults != null && Model.PageOfResults.Count() > 0) { %>
|
||||
<%=Html.UnorderedList(Model.PageOfResults.Where(hit => hit.Content != null), (r, i) => Html.DisplayForItem(r.Content), "search-results contentItems")%>
|
||||
<%=Html.Pager(Model.PageOfResults, Model.PageOfResults.PageNumber, Model.DefaultPageSize, new {q = Model.Query}) %><%
|
||||
} %>
|
@ -0,0 +1,15 @@
|
||||
@model Orchard.Search.ViewModels.SearchViewModel
|
||||
|
||||
<h1>@Html.TitleForPage(T("Search").Text)</h1>
|
||||
@Html.Zone("search")
|
||||
@if (!string.IsNullOrWhiteSpace(Model.Query)) {
|
||||
@if (Model.PageOfResults.Count() == 0) {
|
||||
<p class="search-summary">@T.Plural("the <em>one</em> result", "<em>zero</em> results", Model.PageOfResults.Count())</p>
|
||||
} else {
|
||||
<p class="search-summary">@T.Plural("the <em>one</em> result", "<em>{1} - {2}</em> of <em>{0}</em> results", Model.PageOfResults.TotalItemCount, Model.PageOfResults.StartPosition, Model.PageOfResults.EndPosition)</p>
|
||||
}
|
||||
}
|
||||
@if (Model.PageOfResults != null && Model.PageOfResults.Count() > 0) {
|
||||
@Html.UnorderedList(Model.PageOfResults.Where(hit => hit.Content != null), (r, i) => Html.DisplayForItem(r.Content), "search-results contentItems")
|
||||
@Html.Pager(Model.PageOfResults, Model.PageOfResults.PageNumber, Model.DefaultPageSize, new {q = Model.Query})
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<SearchViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Search.ViewModels" %><%
|
||||
using(Html.BeginForm("index", "search", new { area = "Orchard.Search" }, FormMethod.Get, new { @class = "search" })) { %>
|
||||
<fieldset>
|
||||
<%: Html.TextBox("q", Model.Query) %>
|
||||
<button type="submit"><%: T("Search") %></button>
|
||||
</fieldset><%
|
||||
} %>
|
@ -0,0 +1,9 @@
|
||||
@model Orchard.Search.ViewModels.SearchViewModel
|
||||
@using Orchard.Search.ViewModels
|
||||
|
||||
@using(Html.BeginForm("index", "search", new { area = "Orchard.Search" }, FormMethod.Get, new { @class = "search" })) {
|
||||
<fieldset>
|
||||
@Html.TextBox("q", Model.Query)
|
||||
<button type="submit">@T("Search")</button>
|
||||
</fieldset>
|
||||
}
|
@ -74,6 +74,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.ArchiveLater", "Orc
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Indexing", "Orchard.Web\Modules\Orchard.Indexing\Orchard.Indexing.csproj", "{EA2B9121-EF54-40A6-A53E-6593C86EE696}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Search", "Orchard.Web\Modules\Orchard.Search\Orchard.Search.csproj", "{4BE4EB01-AC56-4048-924E-2CA77F509ABA}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
CodeCoverage|Any CPU = CodeCoverage|Any CPU
|
||||
@ -383,6 +385,16 @@ Global
|
||||
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.FxCop|Any CPU.Build.0 = Release|Any CPU
|
||||
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EA2B9121-EF54-40A6-A53E-6593C86EE696}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Coverage|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Coverage|Any CPU.Build.0 = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.FxCop|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.FxCop|Any CPU.Build.0 = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@ -404,6 +416,7 @@ Global
|
||||
{14C049FD-B35B-415A-A824-87F26B26E7FD} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5}
|
||||
{1C981BB3-26F7-494C-9005-CC27A5144233} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5}
|
||||
{EA2B9121-EF54-40A6-A53E-6593C86EE696} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5}
|
||||
{4BE4EB01-AC56-4048-924E-2CA77F509ABA} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5}
|
||||
{ABC826D4-2FA1-4F2F-87DE-E6095F653810} = {74E681ED-FECC-4034-B9BD-01B0BB1BDECA}
|
||||
{F112851D-B023-4746-B6B1-8D2E5AD8F7AA} = {74E681ED-FECC-4034-B9BD-01B0BB1BDECA}
|
||||
{6CB3EB30-F725-45C0-9742-42599BA8E8D2} = {74E681ED-FECC-4034-B9BD-01B0BB1BDECA}
|
||||
|
Loading…
Reference in New Issue
Block a user