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) if (_urlUiOptions.SingleProjectMode.Enable)
{ {
return RedirectToPage("/Documents/Project/Index", new Dictionary<string, object> { return Redirect(GetUrlForProject());
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.LanguageCode), "en" },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.Version), DocsAppConsts.Latest }
});
} }
var projects = await _projectAppService.GetListAsync(); var projects = await _projectAppService.GetListAsync();
@ -53,18 +50,22 @@ namespace VoloDocs.Web.Pages
} }
//Eg: "/en/abp/latest" //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> { 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.Version), version ?? DocsAppConsts.Latest },
{ nameof(Volo.Docs.Pages.Documents.Project.IndexModel.ProjectName), project.ShortName }
}; };
if (!_urlUiOptions.SingleProjectMode.Enable) 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); 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.RoutePrefix = null;
options.SingleProjectMode.Enable = true; options.SingleProjectMode.Enable = true;
options.SingleProjectMode.ProjectName = "abp"; options.SingleProjectMode.ProjectName = "abp";
options.MultiLanguageMode = false;
}); });
Configure<DocsElasticSearchOptions>(options => Configure<DocsElasticSearchOptions>(options =>

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

@ -33,6 +33,8 @@ namespace Volo.Docs
/// </summary> /// </summary>
public bool SectionRendering = true; public bool SectionRendering = true;
public bool MultiLanguageMode { get; set; } = true;
public SingleProjectModeOptions SingleProjectMode { get; } = new (); public SingleProjectModeOptions SingleProjectMode { get; } = new ();
public Func<DocsUrlNormalizerContext, string> UrlNormalizer { get; set; } 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; .Value.Value;
var routePrefix = docsOptions.RoutePrefix; var routePrefix = docsOptions.RoutePrefix;
var languageCode = docsOptions.MultiLanguageMode ? "{languageCode}/" : string.Empty;
if (docsOptions.SingleProjectMode.Enable) 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);
} }
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}"); if(routePrefix + languageCode != "/")
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{version}/{*documentName}"); {
options.Conventions.AddPageRoute("/Documents/Search", routePrefix + "search/{languageCode}/{version}"); 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 else
{ {
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{projectName}"); if(routePrefix + languageCode != "/")
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{projectName}"); {
options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{languageCode}/{projectName}/{version}/{*documentName}"); options.Conventions.AddPageRoute("/Documents/Project/Index", routePrefix + "{projectName}");
options.Conventions.AddPageRoute("/Documents/Search", routePrefix + "search/{languageCode}/{projectName}/{version}"); }
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, _uiOptions.SingleProjectMode.Enable ? projectShortName : projectShortName ?? project.ShortName,
version, version,
document.LocalDirectory, document.LocalDirectory,
languageCode !_uiOptions.MultiLanguageMode ? languageCode : languageCode ?? document.LanguageCode
); );
var html = _markdownConverter.ConvertToHtml(content); 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"> <div data-spy="scroll" data-bs-target="#docs-sticky-index" data-offset="0">
<article class="docs-body"> <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"> <abp-alert alert-type="Warning" dismissible="true" class="mb-0">
@L["DocumentNotFoundInSelectedLanguage"] @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(); return RedirectToDefaultDocument();
} }
var usingSingleLanguageMode = !_uiOptions.MultiLanguageMode && LanguageCode.IsNullOrWhiteSpace();
if (!CheckLanguage()) if (!usingSingleLanguageMode && !CheckLanguage())
{ {
return RedirectToDefaultLanguage(); return RedirectToDefaultLanguage();
} }
if (IsDocumentCultureDifferentThanCurrent()) if (!usingSingleLanguageMode && IsDocumentCultureDifferentThanCurrent())
{ {
return ReloadPageWithCulture(); return ReloadPageWithCulture();
} }
@ -445,7 +447,7 @@ namespace Volo.Docs.Pages.Documents.Project
new GetNavigationDocumentInput new GetNavigationDocumentInput
{ {
ProjectId = Project.Id, ProjectId = Project.Id,
LanguageCode = LanguageCode, LanguageCode = DocumentLanguageCode,
Version = Version 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 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(); var sb = new StringBuilder();
foreach (var documentName in documentNames) foreach (var documentName in documentNames)
{ {
@ -517,6 +519,11 @@ namespace Volo.Docs.Pages.Documents.Project
{ {
LanguageSelectListItems = new List<SelectListItem>(); LanguageSelectListItems = new List<SelectListItem>();
if (!_uiOptions.MultiLanguageMode)
{
return;
}
foreach (var language in LanguageConfig.Languages) foreach (var language in LanguageConfig.Languages)
{ {
LanguageSelectListItems.Add( LanguageSelectListItems.Add(

Loading…
Cancel
Save