mirror of https://github.com/abpframework/abp.git
csharpabpc-sharpframeworkblazoraspnet-coredotnet-coreaspnetcorearchitecturesaasdomain-driven-designangularmulti-tenancy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.1 KiB
31 lines
1.1 KiB
using System.Collections.Generic;
|
|
using System.Net;
|
|
using Microsoft.AspNetCore.Routing;
|
|
using Volo.Abp.DependencyInjection;
|
|
using Volo.Docs.Pages.Documents.Project;
|
|
|
|
namespace Volo.Docs.Utils;
|
|
|
|
public class DefaultDocsLinkGenerator : IDocsLinkGenerator, ITransientDependency
|
|
{
|
|
protected LinkGenerator LinkGenerator { get; }
|
|
|
|
public DefaultDocsLinkGenerator(LinkGenerator linkGenerator)
|
|
{
|
|
LinkGenerator = linkGenerator;
|
|
}
|
|
|
|
|
|
public string GenerateLink(string projectName, string languageCode, string version, string documentName)
|
|
{
|
|
var routeValues = new Dictionary<string, object> {
|
|
{ nameof(IndexModel.LanguageCode), languageCode },
|
|
{ nameof(IndexModel.Version), version },
|
|
{ nameof(IndexModel.DocumentName), documentName },
|
|
{ nameof(IndexModel.ProjectName), projectName }
|
|
};
|
|
|
|
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.
|
|
}
|
|
}
|