Browse Source

refactor docs routing

pull/19419/head
Salih 3 years ago
parent
commit
8838480eec
  1. 2
      modules/docs/src/Volo.Docs.Web/HtmlConverting/IDocumentToHtmlConverter.cs
  2. 4
      modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs
  3. 5
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
  4. 2
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs
  5. 9
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml
  6. 29
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs

2
modules/docs/src/Volo.Docs.Web/HtmlConverting/IDocumentToHtmlConverter.cs

@ -5,6 +5,6 @@ namespace Volo.Docs.HtmlConverting
{
public interface IDocumentToHtmlConverter
{
string Convert(ProjectDto project, DocumentWithDetailsDto document, string version, string languageCode);
string Convert(ProjectDto project, DocumentWithDetailsDto document, string version, string languageCode, string projectShortName = null);
}
}

4
modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs

@ -33,7 +33,7 @@ namespace Volo.Docs.Markdown
private const string AnchorLinkRegExp = @"<a[^>]+href=\""(.*?)\""[^>]*>(.*)?</a>";
public virtual string Convert(ProjectDto project, DocumentWithDetailsDto document, string version,
string languageCode)
string languageCode, string projectShortName = null)
{
if (document.Content.IsNullOrEmpty())
{
@ -42,7 +42,7 @@ namespace Volo.Docs.Markdown
var content = NormalizeLinks(
document.Content,
project.ShortName,
_uiOptions.SingleProjectMode.Enable ? projectShortName : projectShortName ?? project.ShortName,
version,
document.LocalDirectory,
languageCode

5
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml

@ -262,7 +262,10 @@
<input class="form-control"
id="fullsearch"
type="search"
data-fullsearch-url="/search/@Model.LanguageCode/@Model.ProjectName/@Model.Version/"
data-fullsearch-url="@Url.Page("/Documents/Search", new Dictionary<string, object> {
{ nameof(Model.LanguageCode), Model.LanguageCode },
{ nameof(Model.Version), Model.Version },
{ nameof(Model.ProjectName), Model.ProjectName }})"
placeholder="@L["FullSearch"].Value"
aria-label="Filter">
</div>

2
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

@ -549,7 +549,7 @@ namespace Volo.Docs.Pages.Documents.Project
}
var converter = _documentToHtmlConverterFactory.Create(Document.Format ?? Project.Format);
var content = converter.Convert(Project, Document, GetSpecificVersionOrLatest(), LanguageCode);
var content = converter.Convert(Project, Document, GetSpecificVersionOrLatest(), LanguageCode, ProjectName);
content = HtmlNormalizer.ReplaceImageSources(
content,

9
modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml

@ -29,7 +29,7 @@
<div class="container mb-5">
<form method="get" action="/search/@Model.LanguageCode/@Model.ProjectName/@Model.Version/" class="mt-4">
<form method="get" action="@Url.Page("/Documents/Search", new Dictionary<string, object> { { nameof(Model.LanguageCode), Model.LanguageCode }, { nameof(Model.Version), Model.Version }, { nameof(Model.ProjectName), Model.ProjectName } })" class="mt-4">
<h4 class="text-center my-3">@L["FullSearch"]</h4>
<div class="card rounded">
<div class="p-3 bg-white">
@ -68,7 +68,12 @@
}
}
<h5 class="mb-3">
<a href="/@Model.LanguageCode/@Model.ProjectName/@Model.Version/@RemoveFileExtensionFromPath(docs.Name)">
<a href="@Url.Page("/Documents/Project/Index", new Dictionary<string, object> {
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.LanguageCode), Model.LanguageCode },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.Version), Model.Version },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.ProjectName), Model.ProjectName },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.DocumentName), RemoveFileExtensionFromPath(docs.Name) }
})">
@RemoveFileExtensionFromPath(docs.Name)
</a>
</h5>

29
modules/docs/src/Volo.Docs.Web/Pages/Documents/Search.cshtml.cs

@ -6,6 +6,7 @@ using System.Threading.Tasks;
using System.Web;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Pagination;
using Volo.Docs.Documents;
using Volo.Docs.GitHub.Documents.Version;
@ -35,14 +36,16 @@ namespace Volo.Docs.Pages.Documents
private readonly IProjectAppService _projectAppService;
private readonly IDocumentAppService _documentAppService;
private readonly HtmlEncoder _encoder;
private readonly DocsUiOptions _uiOptions;
public SearchModel(IProjectAppService projectAppService,
IDocumentAppService documentAppService,
HtmlEncoder encoder)
HtmlEncoder encoder, IOptions<DocsUiOptions> uiOptions)
{
_projectAppService = projectAppService;
_documentAppService = documentAppService;
_encoder = encoder;
_uiOptions = uiOptions.Value;
}
public List<DocumentSearchOutput> SearchOutputs { get; set; } = new List<DocumentSearchOutput>();
@ -61,7 +64,7 @@ namespace Volo.Docs.Pages.Documents
KeyWord = keyword;
Project = await _projectAppService.GetAsync(ProjectName);
await SetProjectAsync();
var output = await _projectAppService.GetVersionsAsync(Project.ShortName);
@ -117,5 +120,27 @@ namespace Volo.Docs.Pages.Documents
return Page();
}
private async Task SetProjectAsync()
{
if (!_uiOptions.SingleProjectMode.Enable)
{
Project = await _projectAppService.GetAsync(ProjectName);
return;
}
var singleProjectName = ProjectName ?? _uiOptions.SingleProjectMode.ProjectName;
if (!singleProjectName.IsNullOrWhiteSpace())
{
Project = await _projectAppService.GetAsync(singleProjectName);
return;
}
var listResult = await _projectAppService.GetListAsync();
if (listResult.Items.Count == 1)
{
Project = listResult.Items[0];
}
}
}
}

Loading…
Cancel
Save