From 77fef984b88373a6cb650d3cf8ac36ef17cac76f Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 30 May 2019 08:33:20 +0300 Subject: [PATCH] multi language on docs refactor --- .../Docs/Documents/ContentWithDetailsDto.cs | 2 ++ .../Docs/DocsApplicationAutoMapperProfile.cs | 2 +- .../Volo/Docs/Documents/DocumentAppService.cs | 9 ++++--- .../Volo/Docs/Documents/LanguageConfig.cs | 6 ++--- ...nguageConfigElement.cs => LanguageInfo.cs} | 2 +- .../Documents/TagHelpers/TreeTagHelper.cs | 9 ++++--- .../Pages/Documents/Project/Index.cshtml | 25 +++++++++++-------- .../Pages/Documents/Project/Index.cshtml.cs | 5 ++++ .../Pages/Documents/Project/index.js | 13 ---------- 9 files changed, 37 insertions(+), 36 deletions(-) rename modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/{LanguageConfigElement.cs => LanguageInfo.cs} (82%) 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 44b2ef6861..43fab40c0c 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 @@ -25,6 +25,8 @@ namespace Volo.Docs.Documents public string FileName { get; set; } + public string CurrentLanguageCode { get; set; } + public ProjectDto Project { get; set; } public List Contributors { get; set; } diff --git a/modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs b/modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs index 320dbe49c3..2f029f3a39 100644 --- a/modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs +++ b/modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs @@ -12,7 +12,7 @@ namespace Volo.Docs CreateMap().Ignore(x=>x.Languages); CreateMap(); CreateMap() - .Ignore(x => x.Project).Ignore(x => x.Contributors); + .Ignore(x => x.Project).Ignore(x => x.Contributors).Ignore(x => x.CurrentLanguageCode); CreateMap(); CreateMap(); } 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 4b214547f5..6bfe9b40ee 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 @@ -115,7 +115,7 @@ namespace Volo.Docs.Documents var language = GetLanguageByCode(languages, languageCode); var document = await store.GetDocumentAsync(project, documentName, language.Code, version); Logger.LogInformation($"Document retrieved: {documentName}"); - return CreateDocumentWithDetailsDto(project, document, languages); + return CreateDocumentWithDetailsDto(project, document, languages, language.Code); } if (Debugger.IsAttached) @@ -135,7 +135,7 @@ namespace Volo.Docs.Documents ); } - protected virtual LanguageConfigElement GetLanguageByCode(LanguageConfig languageCodes, string languageCode) + protected virtual LanguageInfo GetLanguageByCode(LanguageConfig languageCodes, string languageCode) { var language = languageCodes.Languages.FirstOrDefault(l => l.Code == languageCode); @@ -159,16 +159,19 @@ namespace Volo.Docs.Documents ); } - protected virtual DocumentWithDetailsDto CreateDocumentWithDetailsDto(Project project, Document document, LanguageConfig languages) + protected virtual DocumentWithDetailsDto CreateDocumentWithDetailsDto(Project project, Document document, LanguageConfig languages, string languageCode) { var documentDto = ObjectMapper.Map(document); documentDto.Project = ObjectMapper.Map(project); documentDto.Contributors = ObjectMapper.Map, List>(document.Contributors); + documentDto.Project.Languages = new Dictionary(); foreach (var language in languages.Languages) { documentDto.Project.Languages.Add(language.Code,language.DisplayName); } + + documentDto.CurrentLanguageCode = languageCode; return documentDto; } } diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfig.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfig.cs index b53497a948..d98444386f 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfig.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfig.cs @@ -1,11 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; namespace Volo.Docs.Documents { public class LanguageConfig { - public List Languages { get; set; } + public List Languages { get; set; } } } diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfigElement.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageInfo.cs similarity index 82% rename from modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfigElement.cs rename to modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageInfo.cs index 25525394ca..f384dcaa76 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfigElement.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageInfo.cs @@ -1,6 +1,6 @@ namespace Volo.Docs.Documents { - public class LanguageConfigElement + public class LanguageInfo { public string DisplayName { get; set; } diff --git a/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs b/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs index 38e95a6e93..2e8ec8bde0 100644 --- a/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs +++ b/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs @@ -35,6 +35,9 @@ namespace Volo.Docs.Areas.Documents.TagHelpers [HtmlAttributeName("project-format")] public string ProjectFormat { get; set; } + [HtmlAttributeName("language")] + public string LanguageCode { get; set; } + public override void Process(TagHelperContext context, TagHelperOutput output) { var content = new StringBuilder(); @@ -107,7 +110,7 @@ namespace Volo.Docs.Areas.Documents.TagHelpers } else { - listInnerItem = string.Format(ListItemAnchor, NormalizePath(node.Path, node.HasChildItems), textCss, node.Text.IsNullOrEmpty() ? "?" : node.Text); + listInnerItem = string.Format(ListItemAnchor, NormalizePath(node.Path), textCss, node.Text.IsNullOrEmpty() ? "?" : node.Text); } return string.Format(LiItemTemplateWithLink, @@ -117,7 +120,7 @@ namespace Volo.Docs.Areas.Documents.TagHelpers content); } - private string NormalizePath(string path, bool hasChildItems) + private string NormalizePath(string path) { if (UrlHelper.IsExternalLink(path)) { @@ -131,7 +134,7 @@ namespace Volo.Docs.Areas.Documents.TagHelpers return "javascript:;"; } - return "/documents/" + ProjectName + "/" + Version + "/" + pathWithoutFileExtension; + return "/documents/" + LanguageCode + "/" + ProjectName + "/" + Version + "/" + pathWithoutFileExtension; } private string RemoveFileExtensionFromPath(string path) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml index 3e6a8dda35..9dd8b484d7 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml @@ -107,7 +107,7 @@ } -
+
@@ -116,7 +116,7 @@
-
+
@if (Model.Navigation == null || Model.Navigation.Content.IsNullOrEmpty()) @@ -132,6 +132,7 @@ project-name="@Model.ProjectName" project-format="@Model.Project.Format" selected-document-name="@Model.DocumentNameWithExtension" + language="@Model.LanguageCode" id="sidebar-scroll" class="nav nav-list"> } @@ -158,15 +159,17 @@
- @if (Model.LanguageSelectListItems.Count > 1) - { - - } +
+ @if (Model.LanguageSelectListItems.Count > 1) + { + + } - @if (!string.IsNullOrEmpty(Model.Document.EditLink)) - { - @L["Edit"] - } + @if (!string.IsNullOrEmpty(Model.Document.EditLink)) + { + @L["Edit"] + } +
@@ -227,4 +230,4 @@
- \ No newline at end of file + \ 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 744ad1d7b9..a50340294b 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 @@ -153,6 +153,8 @@ namespace Volo.Docs.Pages.Documents.Project return; } + LanguageCode = Document.CurrentLanguageCode; + Navigation.ConvertItems(); } @@ -219,6 +221,7 @@ namespace Volo.Docs.Pages.Documents.Project } ); } + } catch (DocumentNotFoundException) { @@ -232,6 +235,8 @@ namespace Volo.Docs.Pages.Documents.Project ); } + LanguageCode = Document.CurrentLanguageCode; + ConvertDocumentContentToHtml(); } diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.js b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.js index 5eeb579f43..8eb2083749 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.js +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.js @@ -1,17 +1,6 @@ (function ($) { $(function () { - - var addLanguageCodePrefixToLinks = function () { - var anchors = $('#sidebar-scroll a'); - - for (var i = 0; i < anchors.length; i++) { - var anchor = $(anchors[i]); - var newhref = anchor.attr('href').replace("/documents", "/documents/" + $('#LanguageCode').val()); - anchor.attr('href', newhref); - } - }; - var initNavigationFilter = function (navigationContainerId) { var $navigation = $("#" + navigationContainerId); @@ -119,8 +108,6 @@ initSocialShareLinks(); - addLanguageCodePrefixToLinks(); - }); })(jQuery);