@using Microsoft.AspNetCore.Http @using Oqtane.Services @using System.Net @namespace Oqtane.Modules.Admin.SearchResults @inherits ModuleBase @inject ISearchResultsService SearchResultsService @inject IStringLocalizer Localizer @inject IHttpContextAccessor HttpContext
@Localizer["SearchPrefix"]
@if (_loading) {
} else { @if (_searchResults != null && _searchResults.Results != null) { if (_searchResults.Results.Any()) {

@context.Title

@((MarkupString)context.Snippet)

} else { } }
}
@code { public override string RenderMode => RenderModes.Static; private const int SearchDefaultPageSize = 10; private SearchSortDirections _searchSortDirection = SearchSortDirections.Descending; //default sort by private SearchSortFields _searchSortField = SearchSortFields.Relevance; private string _keywords; private bool _loading; private SearchResults _searchResults; private int _currentPage = 0; private int _pageSize = SearchDefaultPageSize; private int _displayPages = 7; protected override async Task OnInitializedAsync() { if (ModuleState.Settings.ContainsKey("PageSize")) { _pageSize = int.Parse(ModuleState.Settings["PageSize"]); } if (PageState.QueryString.ContainsKey("q")) { _keywords = WebUtility.UrlDecode(PageState.QueryString["q"]); } if (!string.IsNullOrEmpty(_keywords)) { await PerformSearch(); } } private async Task Search() { _keywords = HttpContext.HttpContext.Request.Form["keywords"]; if (string.IsNullOrEmpty(_keywords)) { AddModuleMessage(Localizer["MissingKeywords"], MessageType.Warning); } else { ClearModuleMessage(); _currentPage = 0; await PerformSearch(); } } private async Task PerformSearch() { _loading = true; StateHasChanged(); var searchQuery = new SearchQuery { SiteId = PageState.Site.SiteId, Alias = PageState.Alias, User = PageState.User, Keywords = _keywords, SortDirection = _searchSortDirection, SortField = _searchSortField, PageIndex = 0, PageSize = int.MaxValue }; _searchResults = await SearchResultsService.SearchAsync(ModuleState.ModuleId, searchQuery); _loading = false; StateHasChanged(); } }