Browse Source

add single language mode

pull/19419/head
Salih 2 years ago
parent
commit
995d626883
  1. 19
      modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs
  2. 1
      modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs
  3. 2
      modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs
  4. 22
      modules/docs/src/Volo.Docs.Web/DocsWebModule.cs
  5. 2
      modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs
  6. 2
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
  7. 15
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

19
modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs

@ -27,10 +27,7 @@ namespace VoloDocs.Web.Pages
{
if (_urlUiOptions.SingleProjectMode.Enable)
{
return RedirectToPage("/Documents/Project/Index", new Dictionary<string, object> {
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.LanguageCode), "en" },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.Version), DocsAppConsts.Latest }
});
return Redirect(GetUrlForProject());
}
var projects = await _projectAppService.GetListAsync();
@ -53,18 +50,22 @@ namespace VoloDocs.Web.Pages
}
//Eg: "/en/abp/latest"
public string GetUrlForProject(ProjectDto project, string language = "en", string version = null)
public string GetUrlForProject(ProjectDto project = null, string language = "en", string version = null)
{
var routeValues = new Dictionary<string, object> {
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.LanguageCode), language },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.Version), version ?? DocsAppConsts.Latest },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.ProjectName), project.ShortName }
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.Version), version ?? DocsAppConsts.Latest }
};
if (!_urlUiOptions.SingleProjectMode.Enable)
{
routeValues.Add(nameof(Volo.Docs.Pages.Documents.Project.IndexModel.ProjectName), project.ShortName);
routeValues.Add(nameof(Volo.Docs.Pages.Documents.Project.IndexModel.ProjectName), project?.ShortName);
}
if(_urlUiOptions.MultiLanguageMode)
{
routeValues.Add(nameof(Volo.Docs.Pages.Documents.Project.IndexModel.LanguageCode), language);
}
return Url.Page("/Documents/Project/Index", routeValues);
}
}

1
modules/docs/app/VoloDocs.Web/VoloDocsWebModule.cs

@ -80,6 +80,7 @@ namespace VoloDocs.Web
options.RoutePrefix = null;
options.SingleProjectMode.Enable = true;
options.SingleProjectMode.ProjectName = "abp";
options.MultiLanguageMode = false;
});
Configure<DocsElasticSearchOptions>(options =>

2
modules/docs/src/Volo.Docs.Web/DocsUiOptions.cs

@ -33,6 +33,8 @@ namespace Volo.Docs
/// </summary>
public bool SectionRendering = true;
public bool MultiLanguageMode { get; set; } = true;
public SingleProjectModeOptions SingleProjectMode { get; } = new ();
public Func<DocsUrlNormalizerContext, string> UrlNormalizer { get; set; }

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

@ -60,6 +60,8 @@ namespace Volo.Docs
.Value.Value;
var routePrefix = docsOptions.RoutePrefix;
var languageCode = docsOptions.MultiLanguageMode ? "{languageCode}/" : string.Empty;
if (docsOptions.SingleProjectMode.Enable)
{
@ -67,16 +69,22 @@ namespace Volo.Docs
{
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix);
}
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}");
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{version}/{*documentName}");
options.Conventions.AddPageRoute("/Documents/Search", routePrefix + "search/{languageCode}/{version}");
if(routePrefix + languageCode != "/")
{
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + languageCode);
}
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + languageCode + "{version}/{*documentName}");
options.Conventions.AddPageRoute("/Documents/Search", routePrefix + "search/" + languageCode + "{version}");
}
else
{
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{projectName}");
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{projectName}");
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{projectName}/{version}/{*documentName}");
options.Conventions.AddPageRoute("/Documents/Search", routePrefix + "search/{languageCode}/{projectName}/{version}");
if(routePrefix + languageCode != "/")
{
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{projectName}");
}
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + languageCode + "{projectName}");
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + languageCode + "{projectName}/{version}/{*documentName}");
options.Conventions.AddPageRoute("/Documents/Search", routePrefix + "search/" + languageCode + "{projectName}/{version}");
}
});

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

@ -51,7 +51,7 @@ namespace Volo.Docs.Markdown
_uiOptions.SingleProjectMode.Enable ? projectShortName : projectShortName ?? project.ShortName,
version,
document.LocalDirectory,
languageCode
!_uiOptions.MultiLanguageMode ? languageCode : languageCode ?? document.LanguageCode
);
var html = _markdownConverter.ConvertToHtml(content);

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

@ -384,7 +384,7 @@
<div data-spy="scroll" data-bs-target="#docs-sticky-index" data-offset="0">
<article class="docs-body">
@if (Model.DocumentLanguageCode != Model.LanguageCode)
@if (Model.LanguageCode != null && Model.DocumentLanguageCode != Model.LanguageCode)
{
<abp-alert alert-type="Warning" dismissible="true" class="mb-0">
@L["DocumentNotFoundInSelectedLanguage"]

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

@ -165,13 +165,15 @@ namespace Volo.Docs.Pages.Documents.Project
{
return RedirectToDefaultDocument();
}
var usingSingleLanguageMode = !_uiOptions.MultiLanguageMode && LanguageCode.IsNullOrWhiteSpace();
if (!CheckLanguage())
if (!usingSingleLanguageMode && !CheckLanguage())
{
return RedirectToDefaultLanguage();
}
if (IsDocumentCultureDifferentThanCurrent())
if (!usingSingleLanguageMode && IsDocumentCultureDifferentThanCurrent())
{
return ReloadPageWithCulture();
}
@ -445,7 +447,7 @@ namespace Volo.Docs.Pages.Documents.Project
new GetNavigationDocumentInput
{
ProjectId = Project.Id,
LanguageCode = LanguageCode,
LanguageCode = DocumentLanguageCode,
Version = Version
}
);
@ -488,7 +490,7 @@ namespace Volo.Docs.Pages.Documents.Project
}
var documentNames = new[] { DocumentName, documentPath.EnsureEndsWith('/') + "Index", documentPath.EnsureEndsWith('/') + "index" }.Distinct().ToArray();
var languages = new[] { LanguageCode, DefaultLanguageCode }.Distinct().ToArray();
var languages = new[] { LanguageCode, DefaultLanguageCode }.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToArray();
var sb = new StringBuilder();
foreach (var documentName in documentNames)
{
@ -517,6 +519,11 @@ namespace Volo.Docs.Pages.Documents.Project
{
LanguageSelectListItems = new List<SelectListItem>();
if (!_uiOptions.MultiLanguageMode)
{
return;
}
foreach (var language in LanguageConfig.Languages)
{
LanguageSelectListItems.Add(

Loading…
Cancel
Save