From be38d2cd7007f8286ae8d7a59e6724194a6b0441 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Thu, 6 May 2021 08:20:09 -0400 Subject: [PATCH] add upgrade support for language packages --- .../Modules/Admin/Languages/Index.razor | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/Oqtane.Client/Modules/Admin/Languages/Index.razor b/Oqtane.Client/Modules/Admin/Languages/Index.razor index 1249e78c..aacdd733 100644 --- a/Oqtane.Client/Modules/Admin/Languages/Index.razor +++ b/Oqtane.Client/Modules/Admin/Languages/Index.razor @@ -2,6 +2,7 @@ @inherits ModuleBase @inject ILanguageService LanguageService @inject ILocalizationService LocalizationService +@inject IPackageService PackageService @inject IStringLocalizer Localizer @if (_languages == null) @@ -18,18 +19,26 @@ else @Localizer["Name"] @Localizer["Code"] @Localizer["Default?"] +   @context.Name @context.Code + + @if (UpgradeAvailable(context.Code)) + { + + } + } @code { private List _languages; + private List _packages; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; @@ -42,6 +51,10 @@ else var culture = cultures.First(c => c.Name.Equals(Constants.DefaultCulture)); _languages.Add(new Language { Name = culture.DisplayName, Code = culture.Name, IsDefault = culture.IsDefault }); } + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) + { + _packages = await PackageService.GetPackagesAsync("language"); + } } private async Task DeleteLanguage(Language language) @@ -60,4 +73,38 @@ else AddModuleMessage(Localizer["Error Deleting Language"], MessageType.Error); } } + + private bool UpgradeAvailable(string code) + { + var upgradeavailable = false; + if (_packages != null) + { + var package = _packages.Where(item => item.PackageId == (Constants.PackageId + ".Client." + code)).FirstOrDefault(); + if (package != null) + { + upgradeavailable = (Version.Parse(package.Version).CompareTo(Version.Parse(Constants.Version)) > 0); + } + + } + return upgradeavailable; + } + + private async Task DownloadLanguage(string code) + { + try + { + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) + { + await PackageService.DownloadPackageAsync(Constants.PackageId + ".Client." + code, Constants.Version, "Packages"); + await logger.LogInformation("Language Package Downloaded {Code} {Version}", code, Constants.Version); + await PackageService.InstallPackagesAsync(); + AddModuleMessage(Localizer["Language Package Installed Successfully. You Must Restart Your Application To Apply These Changes.", NavigateUrl("admin/system")], MessageType.Success); + } + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Downloading Language Package {Code} {Version} {Error}", code, Constants.Version, ex.Message); + AddModuleMessage(Localizer["Error Downloading Language Package"], MessageType.Error); + } + } }