/// <inheritdocs /> public override async Task <IDisplayResult> UpdateAsync(LocalizationSettings section, BuildEditorContext context) { if (context.GroupId == GroupId) { var model = new LocalizationSettingsViewModel(); await context.Updater.TryUpdateModelAsync(model, Prefix); var supportedCulture = JsonConvert.DeserializeObject <string[]>(model.SupportedCultures); if (!supportedCulture.Any()) { context.Updater.ModelState.AddModelError("SupportedCultures", S["A culture is required"]); } if (context.Updater.ModelState.IsValid) { // Invariant culture name is empty so a null value is bound. section.DefaultCulture = model.DefaultCulture ?? ""; section.SupportedCultures = supportedCulture; if (!section.SupportedCultures.Contains(section.DefaultCulture)) { section.DefaultCulture = section.SupportedCultures[0]; } // We always release the tenant for the default culture and also supported cultures to take effect await _shellHost.ReleaseShellContextAsync(_shellSettings); _notifier.Warning(H["The site has been restarted for the settings to take effect"]); } } return(await EditAsync(section, context)); }
/// <inheritdocs /> public override async Task <IDisplayResult> UpdateAsync(LocalizationSettings section, BuildEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; if (!await _authorizationService.AuthorizeAsync(user, Permissions.ManageCultures)) { return(null); } if (context.GroupId == GroupId) { var model = new LocalizationSettingsViewModel(); await context.Updater.TryUpdateModelAsync(model, Prefix); var supportedCulture = JsonConvert.DeserializeObject <string[]>(model.SupportedCultures); if (!supportedCulture.Any()) { context.Updater.ModelState.AddModelError("SupportedCultures", S["A culture is required"]); } if (context.Updater.ModelState.IsValid) { // Invariant culture name is empty so a null value is bound. section.DefaultCulture = model.DefaultCulture ?? ""; section.SupportedCultures = supportedCulture; if (!section.SupportedCultures.Contains(section.DefaultCulture)) { section.DefaultCulture = section.SupportedCultures[0]; } // We always release the tenant for the default culture and also supported cultures to take effect await _shellHost.ReleaseShellContextAsync(_shellSettings); // We create a transient scope with the newly selected culture to create a notification that will use it instead of the previous culture using (CultureScope.Create(section.DefaultCulture)) { await _notifier.WarningAsync(H["The site has been restarted for the settings to take effect."]); } } } return(await EditAsync(section, context)); }