From c33b586726841f8c7a607f800a8610bbe2fbfb1f Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 28 Jun 2019 18:03:09 +0800 Subject: [PATCH] Resolve #1397 ContentLayout supports html lang. --- .../Themes/Basic/Layouts/Application.cshtml | 10 ++++++++-- .../Themes/Basic/Layouts/Empty.cshtml | 10 ++++++++-- .../Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs | 2 ++ .../VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs | 11 +++++------ .../Localization/Resources/VoloDocs/Web/en.json | 1 + .../Localization/Resources/VoloDocs/Web/zh-Hans.json | 1 + modules/docs/app/VoloDocs.Web/appsettings.json | 1 - .../Docs/GitHub/Documents/GithubRepositoryManager.cs | 10 ++++++++-- .../Pages/Documents/Project/Index.cshtml | 1 + 9 files changed, 34 insertions(+), 13 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml index db8f8e1a6b..d473a5b5d2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml +++ b/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.Layout @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling @@ -25,11 +25,17 @@ pageTitle = PageLayout.Content.Title + pageTitle; } + + var pageLang = ViewBag.Lang == null ? "" : $" lang={ViewBag.Lang}"; + if (PageLayout.Content.Lang != null) + { + pageLang = $" lang={PageLayout.Content.Lang}"; + } } - +<@($"html{pageLang}")> @await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Application) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml index da7c119de4..439a75f044 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml +++ b/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.Layout @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling @@ -24,11 +24,17 @@ pageTitle = PageLayout.Content.Title + pageTitle; } + + var pageLang = ViewBag.Lang == null ? "" : $" lang={ViewBag.Lang}"; + if (PageLayout.Content.Lang != null) + { + pageLang = $" lang={PageLayout.Content.Lang}"; + } } - +<@($"html{pageLang}")> @await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Empty) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs index bd54aef4d9..c9c1cafc99 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Layout/ContentLayout.cs +++ b/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 string Lang { get; set; } + public string Title { get; set; } public BreadCrumb BreadCrumb { get; } diff --git a/modules/docs/app/VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs b/modules/docs/app/VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs index 88eff01063..c4fd5ecb66 100644 --- a/modules/docs/app/VoloDocs.Web/Branding/VoloDocsBrandingProvider.cs +++ b/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.DependencyInjection; +using Volo.Docs.Localization; namespace VoloDocs.Web.Branding { [Dependency(ReplaceServices = true)] public class VoloDocsBrandingProvider : DefaultBrandingProvider { - public VoloDocsBrandingProvider(IConfigurationAccessor configurationAccessor) + public VoloDocsBrandingProvider(IConfigurationAccessor configurationAccessor, IStringLocalizer localizer) { var configuration = configurationAccessor.Configuration; - if (configuration["Title"] != null) - { - AppName = configuration["Title"]; - } + AppName = localizer["DocsTitle"]; if (configuration["LogoUrl"] != null) { diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json index cd8eb98149..cf51cfe5a5 100644 --- a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json +++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/en.json @@ -1,6 +1,7 @@ { "culture": "en", "texts": { + "DocsTitle": "VoloDocs", "WelcomeVoloDocs": "Welcome to the VoloDocs!", "NoProjectWarning": "There`s no defined project yet!", "CreateYourFirstProject": "Click here to start your first project", diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json index c0a5d398ae..c3a0146555 100644 --- a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json +++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json @@ -1,6 +1,7 @@ { "culture": "zh-Hans", "texts": { + "DocsTitle": "Volo文档", "WelcomeVoloDocs": "欢迎使用VoloDocs!", "NoProjectWarning": "当前没有定义的项目!", "CreateYourFirstProject": "点击这里开始你的第一个项目", diff --git a/modules/docs/app/VoloDocs.Web/appsettings.json b/modules/docs/app/VoloDocs.Web/appsettings.json index 2b71262885..3d89a0a1e3 100644 --- a/modules/docs/app/VoloDocs.Web/appsettings.json +++ b/modules/docs/app/VoloDocs.Web/appsettings.json @@ -1,5 +1,4 @@ { "ConnectionString": "Server=localhost;Database=VoloDocs;Trusted_Connection=True;MultipleActiveResultSets=true", - "Title": "VoloDocs", "LogoUrl": "/assets/images/Logo.png" } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs index be71fd4772..8aca0c885b 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs +++ b/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.Add("User-Agent", userAgent ?? ""); + if (!userAgent.IsNullOrWhiteSpace()) + { + httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent); + } 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.Add("User-Agent", userAgent ?? ""); + if (!userAgent.IsNullOrWhiteSpace()) + { + httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent); + } return await httpClient.GetByteArrayAsync(new Uri(rawUrl)); } 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 23c46063cc..6bef4a3959 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 @@ -17,6 +17,7 @@ @{ ViewBag.FluidLayout = true; Layout = ThemeManager.CurrentTheme.GetEmptyLayout(); + PageLayout.Content.Lang = Model.LanguageCode; PageLayout.Content.Title = Model.DocumentName?.Replace("-", " "); } @section styles {