diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs index cb6443d268..c6758127cf 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Logging; using Volo.Abp; +using Volo.Abp.Uow; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Caching; @@ -100,14 +102,21 @@ namespace Volo.Docs.Admin.Documents foreach (var leaf in leafs) { if (leaf.Path.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || - leaf.Path.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) + leaf.Path.StartsWith("https://", StringComparison.OrdinalIgnoreCase) || + (leaf.Path.StartsWith("{{") && leaf.Path.EndsWith("}}"))) { continue; } - var sourceDocument = - await source.GetDocumentAsync(project, leaf.Path, input.LanguageCode, input.Version); - documents.Add(sourceDocument); + try + { + var sourceDocument = await source.GetDocumentAsync(project, leaf.Path, input.LanguageCode, input.Version); + documents.Add(sourceDocument); + } + catch (Exception e) + { + Logger.LogException(e); + } } foreach (var document in documents) diff --git a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs index 02bb535f50..6cacf9d3e3 100644 --- a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs +++ b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs @@ -176,7 +176,7 @@ namespace Volo.Docs.Documents Version = esDoc.Version, LanguageCode = esDoc.LanguageCode, Highlight = esDoc.Highlight - }).ToList(); + }).Where(x => x.FileName != project.NavigationDocumentName && x.FileName != project.ParametersDocumentName).ToList(); } public async Task FullSearchEnabledAsync() @@ -338,4 +338,4 @@ namespace Volo.Docs.Documents return TimeSpan.Parse(value); } } -} \ No newline at end of file +} diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/ElasticDocumentFullSearch.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/ElasticDocumentFullSearch.cs index cbe5905d3a..05a3f1c4c8 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/ElasticDocumentFullSearch.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/ElasticDocumentFullSearch.cs @@ -72,7 +72,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic Name = document.Name, FileName = document.FileName, Content = document.Content, - LanguageCode = document.LanguageCode, + LanguageCode = ConvertLanguageCode(document.LanguageCode), Version = document.Version }; @@ -178,7 +178,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic new TermQuery { Field = "languageCode", - Value = languageCode + Value = ConvertLanguageCode(languageCode) } } } @@ -232,5 +232,10 @@ namespace Volo.Docs.Documents.FullSearch.Elastic throw new BusinessException(DocsDomainErrorCodes.ElasticSearchNotEnabled); } } + + protected string ConvertLanguageCode(string languageCode) + { + return languageCode.Replace("-", "").ToLower(); + } } } diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs index 702141bc1e..1e4e797e73 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Encodings.Web; using System.Threading.Tasks; +using System.Web; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Volo.Docs.Documents; @@ -29,12 +31,15 @@ namespace Volo.Docs.Pages.Documents private readonly IProjectAppService _projectAppService; private readonly IDocumentAppService _documentAppService; + private readonly HtmlEncoder _encoder; - public SearchModel(IProjectAppService projectAppService, - IDocumentAppService documentAppService) + public SearchModel(IProjectAppService projectAppService, + IDocumentAppService documentAppService, + HtmlEncoder encoder) { _projectAppService = projectAppService; _documentAppService = documentAppService; + _encoder = encoder; } public List SearchOutputs { get; set; } = new List(); @@ -45,7 +50,7 @@ namespace Volo.Docs.Pages.Documents { return RedirectToPage("Index"); } - + KeyWord = keyword; Project = await _projectAppService.GetAsync(ProjectName); @@ -67,7 +72,19 @@ namespace Volo.Docs.Pages.Documents Version = Version }); + var highlightTag1 = Guid.NewGuid().ToString(); + var highlightTag2 = Guid.NewGuid().ToString(); + foreach (var searchOutput in SearchOutputs) + { + for (var i = 0; i < searchOutput.Highlight.Count; i++) + { + searchOutput.Highlight[i] = _encoder + .Encode(searchOutput.Highlight[i].Replace("", highlightTag1).Replace("", highlightTag2)) + .Replace(highlightTag1, "").Replace(highlightTag2, ""); + } + } + return Page(); } } -} \ No newline at end of file +}