Browse Source

Resolve #1397 ContentLayout supports html lang.

pull/1402/head
maliming 7 years ago
parent
commit
c33b586726
  1. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml
  2. 10
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml
  3. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs
  4. 11
      modules/docs/app/VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs
  5. 1
      modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json
  6. 1
      modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json
  7. 1
      modules/docs/app/VoloDocs.Web/appsettings.json
  8. 10
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs
  9. 1
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml

@ -1,4 +1,4 @@
@using Volo.Abp.AspNetCore.Mvc.AntiForgery @using Volo.Abp.AspNetCore.Mvc.AntiForgery
@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook @using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook
@using Volo.Abp.AspNetCore.Mvc.UI.Layout @using Volo.Abp.AspNetCore.Mvc.UI.Layout
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling
@ -25,11 +25,17 @@
pageTitle = PageLayout.Content.Title + pageTitle; pageTitle = PageLayout.Content.Title + pageTitle;
} }
var pageLang = ViewBag.Lang == null ? "" : $" lang={ViewBag.Lang}";
if (PageLayout.Content.Lang != null)
{
pageLang = $" lang={PageLayout.Content.Lang}";
}
} }
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <@($"html{pageLang}")>
<head> <head>
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Application) @await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Application)

10
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml

@ -1,4 +1,4 @@
@using Volo.Abp.AspNetCore.Mvc.AntiForgery @using Volo.Abp.AspNetCore.Mvc.AntiForgery
@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook @using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook
@using Volo.Abp.AspNetCore.Mvc.UI.Layout @using Volo.Abp.AspNetCore.Mvc.UI.Layout
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling
@ -24,11 +24,17 @@
pageTitle = PageLayout.Content.Title + pageTitle; pageTitle = PageLayout.Content.Title + pageTitle;
} }
var pageLang = ViewBag.Lang == null ? "" : $" lang={ViewBag.Lang}";
if (PageLayout.Content.Lang != null)
{
pageLang = $" lang={PageLayout.Content.Lang}";
}
} }
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <@($"html{pageLang}")>
<head> <head>
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Empty) @await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Empty)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs

@ -5,6 +5,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Layout
{ {
public class ContentLayout public class ContentLayout
{ {
public string Lang { get; set; }
public string Title { get; set; } public string Title { get; set; }
public BreadCrumb BreadCrumb { get; } public BreadCrumb BreadCrumb { get; }

11
modules/docs/app/VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs

@ -1,20 +1,19 @@
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Components; using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Components;
using Volo.Abp.Configuration; using Volo.Abp.Configuration;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Docs.Localization;
namespace VoloDocs.Web.Branding namespace VoloDocs.Web.Branding
{ {
[Dependency(ReplaceServices = true)] [Dependency(ReplaceServices = true)]
public class VoloDocsBrandingProvider : DefaultBrandingProvider public class VoloDocsBrandingProvider : DefaultBrandingProvider
{ {
public VoloDocsBrandingProvider(IConfigurationAccessor configurationAccessor) public VoloDocsBrandingProvider(IConfigurationAccessor configurationAccessor, IStringLocalizer<DocsResource> localizer)
{ {
var configuration = configurationAccessor.Configuration; var configuration = configurationAccessor.Configuration;
if (configuration["Title"] != null) AppName = localizer["DocsTitle"];
{
AppName = configuration["Title"];
}
if (configuration["LogoUrl"] != null) if (configuration["LogoUrl"] != null)
{ {

1
modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json

@ -1,6 +1,7 @@
{ {
"culture": "en", "culture": "en",
"texts": { "texts": {
"DocsTitle": "VoloDocs",
"WelcomeVoloDocs": "Welcome to the VoloDocs!", "WelcomeVoloDocs": "Welcome to the VoloDocs!",
"NoProjectWarning": "There`s no defined project yet!", "NoProjectWarning": "There`s no defined project yet!",
"CreateYourFirstProject": "Click here to start your first project", "CreateYourFirstProject": "Click here to start your first project",

1
modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json

@ -1,6 +1,7 @@
{ {
"culture": "zh-Hans", "culture": "zh-Hans",
"texts": { "texts": {
"DocsTitle": "Volo文档",
"WelcomeVoloDocs": "欢迎使用VoloDocs!", "WelcomeVoloDocs": "欢迎使用VoloDocs!",
"NoProjectWarning": "当前没有定义的项目!", "NoProjectWarning": "当前没有定义的项目!",
"CreateYourFirstProject": "点击这里开始你的第一个项目", "CreateYourFirstProject": "点击这里开始你的第一个项目",

1
modules/docs/app/VoloDocs.Web/appsettings.json

@ -1,5 +1,4 @@
{ {
"ConnectionString": "Server=localhost;Database=VoloDocs;Trusted_Connection=True;MultipleActiveResultSets=true", "ConnectionString": "Server=localhost;Database=VoloDocs;Trusted_Connection=True;MultipleActiveResultSets=true",
"Title": "VoloDocs",
"LogoUrl": "/assets/images/Logo.png" "LogoUrl": "/assets/images/Logo.png"
} }

10
modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs

@ -30,7 +30,10 @@ namespace Volo.Docs.GitHub.Documents
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token);
} }
httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent ?? ""); if (!userAgent.IsNullOrWhiteSpace())
{
httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent);
}
return await httpClient.GetStringAsync(new Uri(rawUrl)); return await httpClient.GetStringAsync(new Uri(rawUrl));
} }
@ -43,7 +46,10 @@ namespace Volo.Docs.GitHub.Documents
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token);
} }
httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent ?? ""); if (!userAgent.IsNullOrWhiteSpace())
{
httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent);
}
return await httpClient.GetByteArrayAsync(new Uri(rawUrl)); return await httpClient.GetByteArrayAsync(new Uri(rawUrl));
} }

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

@ -17,6 +17,7 @@
@{ @{
ViewBag.FluidLayout = true; ViewBag.FluidLayout = true;
Layout = ThemeManager.CurrentTheme.GetEmptyLayout(); Layout = ThemeManager.CurrentTheme.GetEmptyLayout();
PageLayout.Content.Lang = Model.LanguageCode;
PageLayout.Content.Title = Model.DocumentName?.Replace("-", " "); PageLayout.Content.Title = Model.DocumentName?.Replace("-", " ");
} }
@section styles { @section styles {

Loading…
Cancel
Save