@using Oqtane.Services @using System.Net @namespace Oqtane.Modules.Admin.SearchResults @inherits ModuleBase @inject NavigationManager NavigationManager @inject ISearchResultsService SearchResultsService @inject ISettingService SettingService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @attribute [StreamRendering] // attribute allows the progress indicator to be displayed
@Localizer["SearchLabel"] @SharedLocalizer["Reset"]
@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 string _includeEntities; private string _excludeEntities; private string _fromDate; private string _toDate; private string _pageSize; private string _sortField; private string _sortOrder; private string _bodyLength; private string _keywords; private SearchResults _searchResults; private bool _loading; [SupplyParameterFromForm(FormName = "SearchResultsForm")] public string KeyWords { get => ""; set => _keywords = value; } protected override async Task OnInitializedAsync() { _includeEntities = SettingService.GetSetting(ModuleState.Settings, "SearchResults_IncludeEntities", ""); _excludeEntities = SettingService.GetSetting(ModuleState.Settings, "SearchResults_ExcludeEntities", ""); _fromDate = SettingService.GetSetting(ModuleState.Settings, "SearchResults_FromDate", DateTime.MinValue.ToString()); _toDate = SettingService.GetSetting(ModuleState.Settings, "SearchResults_ToDate", DateTime.MaxValue.ToString()); _pageSize = SettingService.GetSetting(ModuleState.Settings, "SearchResults_PageSize", int.MaxValue.ToString()); _sortField = SettingService.GetSetting(ModuleState.Settings, "SearchResults_SortField", "Relevance"); _sortOrder = SettingService.GetSetting(ModuleState.Settings, "SearchResults_SortOrder", "Descending"); _bodyLength = SettingService.GetSetting(ModuleState.Settings, "SearchResults_BodyLength", "255"); if (_keywords == null && PageState.QueryString.ContainsKey("q")) { _keywords = WebUtility.UrlDecode(PageState.QueryString["q"]); await PerformSearch(); } } private void Search() { NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, $"page=1&q={WebUtility.UrlEncode(_keywords)}")); } private async Task PerformSearch() { _loading = true; StateHasChanged(); if (!string.IsNullOrEmpty(_keywords)) { var searchQuery = new SearchQuery { SiteId = PageState.Site.SiteId, Alias = PageState.Alias, Keywords = _keywords, IncludeEntities = _includeEntities, ExcludeEntities = _excludeEntities, FromDate = (!string.IsNullOrEmpty(_fromDate)) ? DateTime.Parse(_fromDate) : DateTime.MinValue, ToDate = (!string.IsNullOrEmpty(_toDate)) ? DateTime.Parse(_toDate) : DateTime.MaxValue, PageSize = (!string.IsNullOrEmpty(_pageSize)) ? int.Parse(_pageSize) : int.MaxValue, PageIndex = 0, SortField = (!string.IsNullOrEmpty(_sortField)) ? (SearchSortField)Enum.Parse(typeof(SearchSortField), _sortField) : SearchSortField.Relevance, SortOrder = (!string.IsNullOrEmpty(_sortOrder)) ? (SearchSortOrder)Enum.Parse(typeof(SearchSortOrder), _sortOrder) : SearchSortOrder.Descending, BodyLength = (!string.IsNullOrEmpty(_bodyLength)) ? int.Parse(_bodyLength) : 255 }; _searchResults = await SearchResultsService.GetSearchResultsAsync(searchQuery); } else { AddModuleMessage(Localizer["NoCriteria"], MessageType.Info, "bottom"); } _loading = false; StateHasChanged(); } }