Browse Source

docsurl refactor

pull/1192/head
Yunus Emre Kalkan 7 years ago
parent
commit
ddf25fde0d
  1. 4
      modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs
  2. 14
      modules/docs/src/Volo.Docs.Web/DocsUrlOptions.cs
  3. 4
      modules/docs/src/Volo.Docs.Web/DocsWebModule.cs
  4. 2
      modules/docs/src/Volo.Docs.Web/HtmlConverting/IDocumentToHtmlConverter.cs
  5. 21
      modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs
  6. 4
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml.cs
  7. 14
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

4
modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs

@ -142,9 +142,7 @@ namespace Volo.Docs.Areas.Documents.TagHelpers
return "javascript:;";
}
var prefix = _urlOptions.RoutePrefix.IsNullOrEmpty()
? ""
: _urlOptions.RoutePrefix.EnsureEndsWith('/');
var prefix = _urlOptions.GetFormattedRoutePrefix();
return "/" + prefix + LanguageCode + "/" + ProjectName + "/" + Version + "/" + pathWithoutFileExtension;
}

14
modules/docs/src/Volo.Docs.Web/DocsUrlOptions.cs

@ -1,4 +1,6 @@
namespace Volo.Docs
using System;
namespace Volo.Docs
{
public class DocsUrlOptions
{
@ -6,5 +8,15 @@
/// Default value: "documents";
/// </summary>
public string RoutePrefix { get; set; } = "documents";
public string GetFormattedRoutePrefix()
{
if (string.IsNullOrWhiteSpace(RoutePrefix))
{
return "";
}
return RoutePrefix.Trim('/').EnsureEndsWith('/');
}
}
}

4
modules/docs/src/Volo.Docs.Web/DocsWebModule.cs

@ -45,9 +45,7 @@ namespace Volo.Docs
.GetRequiredServiceLazy<IOptions<DocsUrlOptions>>()
.Value;
var routePrefix = urlOptions.Value.RoutePrefix.IsNullOrEmpty()
? ""
: urlOptions.Value.RoutePrefix.EnsureEndsWith('/');
var routePrefix = urlOptions.Value.GetFormattedRoutePrefix();
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{projectName}");
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{projectName}");

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 Convert(ProjectDto project, DocumentWithDetailsDto document, string version, string languageCode);
}
}

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

@ -1,5 +1,6 @@
using System;
using System.Text.RegularExpressions;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
using Volo.Docs.Documents;
using Volo.Docs.HtmlConverting;
@ -13,17 +14,21 @@ namespace Volo.Docs.Markdown
public const string Type = "md";
private readonly IMarkdownConverter _markdownConverter;
private readonly DocsUrlOptions _urlOptions;
public MarkdownDocumentToHtmlConverter(IMarkdownConverter markdownConverter)
public MarkdownDocumentToHtmlConverter(IMarkdownConverter markdownConverter,
IOptions<DocsUrlOptions> urlOptions)
{
_markdownConverter = markdownConverter;
_urlOptions = urlOptions.Value;
}
private const string MdLinkFormat = "[{0}](/documents/{1}/{2}{3}/{4})";
private const string MdLinkFormat = "[{0}](/{1}{2}/{3}/{4}{5}/{6})";
private const string MarkdownLinkRegExp = @"\[(.*)\]\((.*\.md)\)";
private const string AnchorLinkRegExp = @"<a[^>]+href=\""(.*?)\""[^>]*>(.*)?</a>";
public virtual string Convert(ProjectDto project, DocumentWithDetailsDto document, string version)
public virtual string Convert(ProjectDto project, DocumentWithDetailsDto document, string version,
string languageCode)
{
if (document.Content.IsNullOrEmpty())
{
@ -34,7 +39,8 @@ namespace Volo.Docs.Markdown
document.Content,
project.ShortName,
version,
document.LocalDirectory
document.LocalDirectory,
languageCode
);
return _markdownConverter.ConvertToHtml(content);
@ -44,7 +50,8 @@ namespace Volo.Docs.Markdown
string content,
string projectShortName,
string version,
string documentLocalDirectory)
string documentLocalDirectory,
string languageCode)
{
var normalized = Regex.Replace(content, MarkdownLinkRegExp, delegate (Match match)
{
@ -66,6 +73,8 @@ namespace Volo.Docs.Markdown
return string.Format(
MdLinkFormat,
displayText,
_urlOptions.GetFormattedRoutePrefix(),
languageCode,
projectShortName,
version,
documentLocalDirectoryNormalized,
@ -92,6 +101,8 @@ namespace Volo.Docs.Markdown
return string.Format(
MdLinkFormat,
displayText,
_urlOptions.GetFormattedRoutePrefix(),
languageCode,
projectShortName,
version,
documentLocalDirectoryNormalized,

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

@ -27,9 +27,7 @@ namespace Volo.Docs.Pages.Documents
public async Task<IActionResult> OnGetAsync()
{
DocumentsUrlPrefix = _urlOptions.RoutePrefix.IsNullOrEmpty()
? ""
: _urlOptions.RoutePrefix.EnsureEndsWith('/');
DocumentsUrlPrefix = _urlOptions.GetFormattedRoutePrefix();
var listResult = await _projectAppService.GetListAsync();

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

@ -70,9 +70,7 @@ namespace Volo.Docs.Pages.Documents.Project
public async Task<IActionResult> OnGetAsync()
{
DocumentsUrlPrefix = _options.RoutePrefix.IsNullOrEmpty()
? ""
: _options.RoutePrefix.EnsureEndsWith('/');
DocumentsUrlPrefix = _options.GetFormattedRoutePrefix();
await SetProjectAsync();
await SetProjectsAsync();
@ -92,7 +90,6 @@ namespace Volo.Docs.Pages.Documents.Project
await SetDocumentAsync();
await SetNavigationAsync();
SetLanguageSelectListItems();
AddLanguageCodePrefixToLinks();
return Page();
}
@ -234,7 +231,7 @@ namespace Volo.Docs.Pages.Documents.Project
version = DocsAppConsts.Latest;
}
var link = DocumentsUrlPrefix.EnsureStartsWith('/') + LanguageCode + "/" + ProjectName + "/" + version;
var link = DocumentsUrlPrefix + LanguageCode + "/" + ProjectName + "/" + version;
if (documentName != null)
{
@ -330,7 +327,7 @@ namespace Volo.Docs.Pages.Documents.Project
private void ConvertDocumentContentToHtml()
{
var converter = _documentToHtmlConverterFactory.Create(Document.Format ?? Project.Format);
var content = converter.Convert(Project, Document, GetSpecificVersionOrLatest());
var content = converter.Convert(Project, Document, GetSpecificVersionOrLatest(), LanguageCode);
content = HtmlNormalizer.ReplaceImageSources(
content,
@ -347,10 +344,5 @@ namespace Volo.Docs.Pages.Documents.Project
Document.Content = content;
}
private void AddLanguageCodePrefixToLinks()
{
Document.Content = Document.Content.Replace("href=\"/documents", "href=\"/" + DocumentsUrlPrefix + LanguageCode);
}
}
}
Loading…
Cancel
Save