Browse Source

multi language on docs refactor

pull/1180/head
Yunus Emre Kalkan 7 years ago
parent
commit
77fef984b8
  1. 2
      modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs
  2. 2
      modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs
  3. 9
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs
  4. 6
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfig.cs
  5. 2
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageInfo.cs
  6. 9
      modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs
  7. 25
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
  8. 5
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs
  9. 13
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.js

2
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<DocumentContributorDto> Contributors { get; set; }

2
modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs

@ -12,7 +12,7 @@ namespace Volo.Docs
CreateMap<Project, ProjectDto>().Ignore(x=>x.Languages);
CreateMap<VersionInfo, VersionInfoDto>();
CreateMap<Document, DocumentWithDetailsDto>()
.Ignore(x => x.Project).Ignore(x => x.Contributors);
.Ignore(x => x.Project).Ignore(x => x.Contributors).Ignore(x => x.CurrentLanguageCode);
CreateMap<DocumentContributor, DocumentContributorDto>();
CreateMap<DocumentResource, DocumentResourceDto>();
}

9
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, DocumentWithDetailsDto>(document);
documentDto.Project = ObjectMapper.Map<Project, ProjectDto>(project);
documentDto.Contributors = ObjectMapper.Map<List<DocumentContributor>, List<DocumentContributorDto>>(document.Contributors);
documentDto.Project.Languages = new Dictionary<string, string>();
foreach (var language in languages.Languages)
{
documentDto.Project.Languages.Add(language.Code,language.DisplayName);
}
documentDto.CurrentLanguageCode = languageCode;
return documentDto;
}
}

6
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<LanguageConfigElement> Languages { get; set; }
public List<LanguageInfo> Languages { get; set; }
}
}

2
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/LanguageConfigElement.cs → 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; }

9
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)

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

@ -107,7 +107,7 @@
</div>
}
<div class="docs-version">
<div class="docs-version">
<div class="version-select">
<div class="input-group">
<div class="input-group-prepend">
@ -116,7 +116,7 @@
<input class="form-control" type="search" placeholder="Filter topics" aria-label="Filter">
</div>
</div>
</div>
</div>
@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"></ul>
}
@ -158,15 +159,17 @@
</a>
</div>
@if (Model.LanguageSelectListItems.Count > 1)
{
<select asp-items="Model.LanguageSelectListItems" class="form-control" onchange="window.location.replace(this.value)"></select>
}
<div class="float-right">
@if (Model.LanguageSelectListItems.Count > 1)
{
<select asp-items="Model.LanguageSelectListItems" class="mr-2" onchange="window.location.replace(this.value)"></select>
}
@if (!string.IsNullOrEmpty(Model.Document.EditLink))
{
<a href="@Model.Document.EditLink" target="_blank"> <i class="fa fa-edit"></i> @L["Edit"]</a>
}
@if (!string.IsNullOrEmpty(Model.Document.EditLink))
{
<a href="@Model.Document.EditLink" target="_blank"> <i class="fa fa-edit"></i> @L["Edit"]</a>
}
</div>
</div>
<div class="docs-content-field">
@ -227,4 +230,4 @@
</div>
</div>
<input hidden id="LanguageCode" value="@Model.LanguageCode"/>
<input hidden id="LanguageCode" value="@Model.LanguageCode" />

5
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();
}

13
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);

Loading…
Cancel
Save