From f57e5b2ded5ab8148faa7beb1f2144d012945eb5 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Sat, 22 Sep 2018 02:10:33 +0300 Subject: [PATCH] Fixed showing images... --- .../Docs/Documents/ContentWithDetailsDto.cs | 4 ++ .../Volo/Docs/Documents/Document.cs | 4 ++ .../Volo/Docs/Documents/DocumentAppService.cs | 48 +++---------------- .../Docs/Documents/GithubDocumentStore.cs | 12 ++++- .../Pages/Documents/Project/HtmlNormalizer.cs | 39 +++++++++++++++ .../Pages/Documents/Project/Index.cshtml.cs | 7 ++- .../src/Volo.Docs.Web/compilerconfig.json | 4 -- 7 files changed, 71 insertions(+), 47 deletions(-) create mode 100644 modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/HtmlNormalizer.cs diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs index 7e25fa76b1..9d9dcc63ba 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs @@ -21,6 +21,10 @@ namespace Volo.Docs.Documents public string Version { get; set; } + public string LocalDirectory { get; set; } + + public string FileName { get; set; } + public ProjectDto Project { get; set; } } diff --git a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/Document.cs b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/Document.cs index dfc29a7fb6..c8ad716607 100644 --- a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/Document.cs +++ b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/Document.cs @@ -15,5 +15,9 @@ namespace Volo.Docs.Documents public string RawRootUrl { get; set; } public string Version { get; set; } + + public string LocalDirectory { get; set; } + + public string FileName { get; set; } } } \ No newline at end of file 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 e2d338c094..838db2ab0c 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 @@ -54,17 +54,17 @@ namespace Volo.Docs.Documents } IDocumentStore documentStore = _documentStoreFactory.Create(project); - var document = await documentStore.FindDocumentByNameAsync(project, documentName, version); + Document document = await documentStore.FindDocumentByNameAsync(project, documentName, version); var dto = ObjectMapper.Map(document); dto.Project = ObjectMapper.Map(project); - if (normalize) - { - dto.Content = NormalizeLinks(dto.Content, project.ShortName, version); - dto.Content = NormalizeImages(dto.Content, dto.RawRootUrl); - } + //if (normalize) + //{ + // dto.Content = NormalizeLinks(dto.Content, project.ShortName, version); + // dto.Content = NormalizeImages(dto.Content, dto.RawRootUrl); + //} return dto; } @@ -107,40 +107,6 @@ namespace Volo.Docs.Documents await _distributedCache.SetAsync(projectShortName, versions, options); } - private static string NormalizeLinks(string content, string projectShortName, string version) - { - var linkRegex = new Regex(@"\(([^)]+.md)\)", RegexOptions.Multiline); - var matches = linkRegex.Matches(content); - foreach (Match match in matches) - { - var mdFile = match.Value; - content = content.Replace(mdFile, "(/documents/" + projectShortName + "/" + version + "/" + mdFile.Replace("(", "").Replace(")", "").Replace(".md", "") + ")"); - } - - return content; - } - - private static string NormalizeImages(string content, string documentRootAddress) - { - content = Regex.Replace(content, @"(]*)src=""([^""]*)""([^>]*>)", delegate (Match match) - { - var newImageSource = documentRootAddress.EnsureEndsWith('/') + match.Groups[1].Value.TrimStart('/'); - return match.Groups[1] + "src=\"" + newImageSource + "\"" + match.Groups[3]; - - }, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline); - - //var baseImageUrl = documentRootAddress; - - //if (content.Contains("images/")) - //{ - // Console.Write(""); - //} - - //var newSrcAttribute = "src=\"" + baseImageUrl + "images/\" data-src=\"" + baseImageUrl + "images/"; - - //return content.Replace("src=\"images/", newSrcAttribute) - // .Replace("src=\"../images/", newSrcAttribute); - return content; - } + } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs index ac32f3085e..29aa3eb900 100644 --- a/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs +++ b/modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs @@ -23,6 +23,14 @@ namespace Volo.Docs.Documents var rawRootUrl = rootUrl.Replace("github.com", token + "raw.githubusercontent.com").Replace("/tree/", "/"); var rawUrl = rawRootUrl + documentName; var editLink = rootUrl.Replace("/tree/", "/blob/") + documentName; + string localDirectory = ""; + string fileName = documentName; + + if (documentName.Contains("/")) + { + localDirectory = documentName.Substring(0, documentName.LastIndexOf('/')); + fileName = documentName.Substring(documentName.LastIndexOf('/') + 1, documentName.Length - documentName.LastIndexOf('/') - 1); + } var content = DownloadWebContent(documentName, rawUrl); @@ -33,7 +41,9 @@ namespace Volo.Docs.Documents EditLink = editLink, RootUrl = rootUrl, RawRootUrl = rawRootUrl, - Format = project.Format + Format = project.Format, + LocalDirectory = localDirectory, + FileName = fileName }); } diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/HtmlNormalizer.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/HtmlNormalizer.cs new file mode 100644 index 0000000000..023381f048 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/HtmlNormalizer.cs @@ -0,0 +1,39 @@ +using System; +using System.Text.RegularExpressions; + +namespace Volo.Docs.Pages.Documents.Project +{ + public static class HtmlNormalizer + { + //todo: fix this for html content. + public static string NormalizeLinks(string content, string projectShortName, string version) + { + //var linkRegex = new Regex(@"\(([^)]+.md)\)", RegexOptions.Multiline); + //var matches = linkRegex.Matches(content); + //foreach (Match match in matches) + //{ + // var mdFile = match.Value; + // content = content.Replace(mdFile, "(/documents/" + projectShortName + "/" + version + "/" + mdFile.Replace("(", "").Replace(")", "").Replace(".md", "") + ")"); + //} + + //return content; + + return content; + } + + public static string NormalizeImages(string content, string documentRawRootUrl, string localDirectory) + { + content = Regex.Replace(content, @"(]*)src=""([^""]*)""([^>]*>)", delegate (Match match) + { + var newImageSource = documentRawRootUrl.EnsureEndsWith('/') + + (localDirectory.IsNullOrEmpty() ? "" : localDirectory.TrimStart('/').EnsureEndsWith('/')) + + match.Groups[2].Value.TrimStart('/'); + return match.Groups[1] + " src=\"" + newImageSource + "\" " + match.Groups[3]; + + }, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline); + + + return content; + } + } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 40b18cb51d..61a215acac 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -69,7 +69,10 @@ namespace Volo.Docs.Pages.Documents.Project Document = await _documentAppService.GetByNameAsync(ProjectName, DocumentName, Version, true); var documentFormatting = _documentFormattingFactory.Create(Document.Format ?? "md"); - Document.Content = documentFormatting.Format(Document.Content); + var content = documentFormatting.Format(Document.Content); + content = HtmlNormalizer.NormalizeImages(content, Document.RawRootUrl, Document.LocalDirectory); + content = HtmlNormalizer.NormalizeLinks(content, Document.Project.ShortName, Document.Version); + Document.Content = content; Navigation = await _documentAppService.GetNavigationDocumentAsync(ProjectName, Version, false); Navigation.ConvertItems(); @@ -89,5 +92,7 @@ namespace Volo.Docs.Pages.Documents.Project Versions.Insert(0, DocsWebConsts.DefaultVersion); } + + } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Web/compilerconfig.json b/modules/docs/src/Volo.Docs.Web/compilerconfig.json index 9fc5cf113e..f338598359 100644 --- a/modules/docs/src/Volo.Docs.Web/compilerconfig.json +++ b/modules/docs/src/Volo.Docs.Web/compilerconfig.json @@ -7,10 +7,6 @@ "outputFile": "Pages/Documents/_docs.css", "inputFile": "Pages/Documents/_docs.scss" }, - { - "outputFile": "Pages/Documents/Project/vs.css", - "inputFile": "Pages/Documents/Project/vs.scss" - }, { "outputFile": "Pages/Documents/_responsive.css", "inputFile": "Pages/Documents/_responsive.scss"