Merge pull request #81 from oqtane/dev

sync
This commit is contained in:
Shaun Walker 2021-02-08 07:58:37 -05:00 committed by GitHub
commit 05a98a9854
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,6 +5,7 @@ using Oqtane.Modules;
using Oqtane.Models; using Oqtane.Models;
using Oqtane.Themes; using Oqtane.Themes;
using System; using System;
using System.Globalization;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Http.Extensions;
@ -19,13 +20,20 @@ namespace Oqtane.Pages
private IConfiguration _configuration; private IConfiguration _configuration;
private readonly SiteState _state; private readonly SiteState _state;
private readonly IAliasRepository _aliases; private readonly IAliasRepository _aliases;
private readonly ILocalizationManager _localizationManager;
private readonly ILanguageRepository _languages; private readonly ILanguageRepository _languages;
public HostModel(IConfiguration configuration, SiteState state, IAliasRepository aliases, ILanguageRepository languages) public HostModel(
IConfiguration configuration,
SiteState state,
IAliasRepository aliases,
ILocalizationManager localizationManager,
ILanguageRepository languages)
{ {
_configuration = configuration; _configuration = configuration;
_state = state; _state = state;
_aliases = aliases; _aliases = aliases;
_localizationManager = localizationManager;
_languages = languages; _languages = languages;
} }
@ -45,25 +53,21 @@ namespace Oqtane.Pages
// if culture not specified and framework is installed // if culture not specified and framework is installed
if (HttpContext.Request.Cookies[CookieRequestCultureProvider.DefaultCookieName] == null && !string.IsNullOrEmpty(_configuration.GetConnectionString("DefaultConnection"))) if (HttpContext.Request.Cookies[CookieRequestCultureProvider.DefaultCookieName] == null && !string.IsNullOrEmpty(_configuration.GetConnectionString("DefaultConnection")))
{ {
Uri uri = new Uri(Request.GetDisplayUrl()); var uri = new Uri(Request.GetDisplayUrl());
var alias = _aliases.GetAlias(uri.Authority + "/" + uri.LocalPath.Substring(1)); var alias = _aliases.GetAlias(uri.Authority + "/" + uri.LocalPath.Substring(1));
_state.Alias = alias; _state.Alias = alias;
// set default language for site // set default language for site if the culture is not supported
var language = _languages.GetLanguages(alias.SiteId).Where(item => item.IsDefault).FirstOrDefault(); var languages = _languages.GetLanguages(alias.SiteId);
if (language != null) if (languages.All(l => l.Code != CultureInfo.CurrentUICulture.Name))
{ {
HttpContext.Response.Cookies.Append( var defaultLanguage = languages.Where(l => l.IsDefault).SingleOrDefault() ?? languages.First();
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue( SetLocalizationCookie(defaultLanguage.Code);
new RequestCulture(language.Code)));
} }
else else
{ {
HttpContext.Response.Cookies.Append( SetLocalizationCookie(_localizationManager.GetDefaultCulture());
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(
new RequestCulture(_configuration.GetSection("Localization").GetValue("DefaultCulture", Constants.DefaultCulture))));
} }
} }
} }
@ -176,5 +180,12 @@ namespace Oqtane.Pages
return ""; return "";
} }
} }
private void SetLocalizationCookie(string culture)
{
HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)));
}
} }
} }