Browse Source

Add DocumentLinksNormalizer

pull/22088/head
liangshiwei 1 year ago
parent
commit
24b0f91d5b
  1. 10
      modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs
  2. 9
      modules/docs/src/Volo.Docs.Web/Utils/DefaultDocsLinkGenerator.cs

10
modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs

@ -38,6 +38,16 @@ namespace Volo.Docs
public SingleProjectModeOptions SingleProjectMode { get; } = new ();
public bool EnableEnlargeImage { get; set; } = true;
public Func<string, string> DocumentLinksNormalizer { get; set; } = link =>
{
if (!link.EndsWith("/Index", StringComparison.OrdinalIgnoreCase))
{
return link;
}
return link.Substring(0, link.LastIndexOf("/Index", StringComparison.OrdinalIgnoreCase));
};
public Func<string, string?> RedirectUrlResolver { get; set; } = url =>
{

9
modules/docs/src/Volo.Docs.Web/Utils/DefaultDocsLinkGenerator.cs

@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Net;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
using Volo.Docs.Pages.Documents.Project;
@ -9,10 +10,13 @@ namespace Volo.Docs.Utils;
public class DefaultDocsLinkGenerator : IDocsLinkGenerator, ITransientDependency
{
protected LinkGenerator LinkGenerator { get; }
protected IOptions<DocsUiOptions> DocsUiOptions { get; }
public DefaultDocsLinkGenerator(LinkGenerator linkGenerator)
public DefaultDocsLinkGenerator(LinkGenerator linkGenerator, IOptions<DocsUiOptions> docsUiOptions)
{
LinkGenerator = linkGenerator;
DocsUiOptions = docsUiOptions;
}
@ -26,6 +30,7 @@ public class DefaultDocsLinkGenerator : IDocsLinkGenerator, ITransientDependency
};
var encodedUrl = LinkGenerator.GetPathByPage("/Documents/Project/Index", values: routeValues);
return encodedUrl?.Replace("%2F", "/"); //Document name can contain path separator(/), so we need to decode it.
var url = encodedUrl?.Replace("%2F", "/"); //Document name can contain path separator(/), so we need to decode it.
return DocsUiOptions.Value.DocumentLinksNormalizer?.Invoke(url);
}
}
Loading…
Cancel
Save