Implemented RebuildIndex plus UpdateIndex signal to backgroung tasks. Adapted UI.

--HG--
branch : dev
This commit is contained in:
Sebastien Ros
2010-06-04 17:42:20 -07:00
parent d93c9274c8
commit 9eebb483ae
12 changed files with 193 additions and 74 deletions

View File

@@ -1,4 +1,5 @@
using System.Web.Mvc;
using System;
using System.Web.Mvc;
using Orchard.Localization;
using Orchard.Search.Services;
using Orchard.Search.ViewModels;
@@ -18,7 +19,7 @@ namespace Orchard.Search.Controllers {
public Localizer T { get; set; }
public ActionResult Index() {
var viewModel = new SearchIndexViewModel {HasIndexToManage = _searchService.HasIndexToManage};
var viewModel = new SearchIndexViewModel {HasIndexToManage = _searchService.HasIndexToManage, IndexUpdatedUtc = _searchService.GetIndexUpdatedUtc()};
if (!viewModel.HasIndexToManage)
Services.Notifier.Information(T("There is not search index to manage for this site."));

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using Orchard.Indexing;
namespace Orchard.Search.Services {
@@ -7,5 +8,6 @@ namespace Orchard.Search.Services {
IEnumerable<ISearchHit> Query(string term);
void RebuildIndex();
void UpdateIndex();
DateTime GetIndexUpdatedUtc();
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using Orchard.Indexing;
using Orchard.Localization;
@@ -8,12 +9,14 @@ namespace Orchard.Search.Services
{
public class SearchService : ISearchService
{
private const string SearchIndexName = "search";
private const string SearchIndexName = "Search";
private readonly IIndexManager _indexManager;
private readonly IEnumerable<IIndexNotifierHandler> _indexNotifierHandlers;
public SearchService(IOrchardServices services, IIndexManager indexManager) {
public SearchService(IOrchardServices services, IIndexManager indexManager, IEnumerable<IIndexNotifierHandler> indexNotifierHandlers) {
Services = services;
_indexManager = indexManager;
_indexNotifierHandlers = indexNotifierHandlers;
T = NullLocalizer.Instance;
}
@@ -49,10 +52,20 @@ namespace Orchard.Search.Services
}
public void UpdateIndex() {
//todo: this
//if (_indexManager.HasIndexProvider())
// _indexManager.GetSearchIndexProvider().UpdateIndex(SearchIndexName);
foreach(var handler in _indexNotifierHandlers) {
handler.UpdateIndex(SearchIndexName);
}
Services.Notifier.Information(T("The search index has been updated."));
}
public DateTime GetIndexUpdatedUtc() {
if(!HasIndexToManage) {
return DateTime.MinValue;
}
return _indexManager.GetSearchIndexProvider().GetLastIndexUtc(SearchIndexName);
}
}
}

View File

@@ -10,7 +10,7 @@ using (Html.BeginForm("update", "admin", FormMethod.Post, new {area = "Orchard.S
}
using (Html.BeginForm("rebuild", "admin", FormMethod.Post, new {area = "Orchard.Search"})) { %>
<fieldset>
<p><%=T("Rebuild the search index for a fresh start. <button type=\"submit\" title=\"Rebuild the search index.\">Rebuld</button>") %></p>
<p><%=T("Rebuild the search index for a fresh start. <button type=\"submit\" title=\"Rebuild the search index.\">Rebuild</button>") %></p>
<%=Html.AntiForgeryTokenOrchard() %>
</fieldset><%
} %>