@@ -43,10 +61,12 @@
@if (!_isSystem)
{
+ @((MarkupString)" ")
}
@Localizer["Cancel"]
@if (!_isSystem && PageState.QueryString.ContainsKey("id"))
{
+ @((MarkupString)" ")
}
@@ -60,8 +80,9 @@
@code {
private List _folders;
private int _folderId = -1;
- private string _name;
private int _parentId = -1;
+ private string _name;
+ private string _type = FolderTypes.Private;
private bool _isSystem;
private string _permissions = string.Empty;
private string _createdBy;
@@ -91,6 +112,7 @@
{
_parentId = folder.ParentId ?? -1;
_name = folder.Name;
+ _type = folder.Type;
_isSystem = folder.IsSystem;
_permissions = folder.Permissions;
_createdBy = folder.CreatedBy;
@@ -150,6 +172,7 @@
}
folder.Name = _name;
+ folder.Type = _type;
folder.IsSystem = _isSystem;
folder.Permissions = _permissionGrid.GetPermissions();
diff --git a/Oqtane.Client/Modules/Admin/Files/Index.razor b/Oqtane.Client/Modules/Admin/Files/Index.razor
index 58990804..bd670d21 100644
--- a/Oqtane.Client/Modules/Admin/Files/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Files/Index.razor
@@ -39,7 +39,7 @@
|
|
- @context.Name |
+ @context.Name |
@context.ModifiedOn |
@context.Extension.ToUpper() @Localizer["File"] |
@string.Format("{0:0.00}", ((decimal)context.Size / 1000)) KB |
diff --git a/Oqtane.Client/Modules/Admin/Languages/Add.razor b/Oqtane.Client/Modules/Admin/Languages/Add.razor
index 7efbcf85..aecb372c 100644
--- a/Oqtane.Client/Modules/Admin/Languages/Add.razor
+++ b/Oqtane.Client/Modules/Admin/Languages/Add.razor
@@ -5,6 +5,7 @@
@inject NavigationManager NavigationManager
@inject ILocalizationService LocalizationService
@inject ILanguageService LanguageService
+@inject IPackageService PackageService
@inject IStringLocalizer Localizer
@if (_supportedCultures == null)
@@ -13,53 +14,114 @@
}
else
{
- @if (_supportedCultures?.Count() > 1)
- {
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
- }
- @Localizer["Cancel"]
+
+
+ @if (_availableCultures.Count() == 0)
+ {
+
+ }
+ else
+ {
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+ }
+ @Localizer["Cancel"]
+
+
+ @if (_packages != null && _packages.Count > 0)
+ {
+
+
+
+ @Localizer["Name"] |
+ @Localizer["Version"] |
+ |
+
+
+ @context.Name |
+ @context.Version |
+
+
+ |
+
+
+
+ @Localizer["Cancel"]
+ }
+ else
+ {
+
+ }
+
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+ @Localizer["Cancel"]
+
+
}
@code {
private string _code = string.Empty;
private string _isDefault = "False";
+ private string _message;
+ private IEnumerable _supportedCultures;
+ private IEnumerable _availableCultures;
+ private List _packages;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
- private IEnumerable _supportedCultures;
-
protected override async Task OnParametersSetAsync()
{
+ var languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId);
+ var languagesCodes = languages.Select(l => l.Code).ToList();
+
_supportedCultures = await LocalizationService.GetCulturesAsync();
- if (_supportedCultures.Count() <= 1)
+ _availableCultures = _supportedCultures
+ .Where(c => !c.Name.Equals(Constants.DefaultCulture) && !languagesCodes.Contains(c.Name));
+ _packages = await PackageService.GetPackagesAsync("language");
+
+ if (_supportedCultures.Count() == 1)
{
- AddModuleMessage(Localizer["The Only Supported Culture That Has Been Defined Is English"], MessageType.Warning);
+ _message = Localizer["The Only Installed Language Is English"];
+ }
+ else if (_availableCultures.Count() == 0)
+ {
+ _message = Localizer["All The Installed Languages Have Been Added."];
}
}
@@ -93,6 +155,35 @@ else
}
}
+ private async Task InstallLanguages()
+ {
+ try
+ {
+ await PackageService.InstallPackagesAsync();
+ AddModuleMessage(Localizer["Language Packages Installed Successfully. You Must Restart Your Application To Apply These Changes.", NavigateUrl("admin/system")], MessageType.Success);
+ }
+ catch (Exception ex)
+ {
+ await logger.LogError(ex, "Error Installing Language Package");
+ }
+ }
+
+ private async Task DownloadLanguage(string packageid, string version)
+ {
+ try
+ {
+ await PackageService.DownloadPackageAsync(packageid, version, "Packages");
+ await logger.LogInformation("Language Paclage {Name} {Version} Downloaded Successfully", packageid, version);
+ AddModuleMessage(Localizer["Language Package Downloaded Successfully. Click Install To Complete Installation."], MessageType.Success);
+ StateHasChanged();
+ }
+ catch (Exception ex)
+ {
+ await logger.LogError(ex, "Error Downloading Language Package {Name} {Version}", packageid, version);
+ AddModuleMessage(Localizer["Error Downloading Language Package"], MessageType.Error);
+ }
+ }
+
private async Task SetCultureAsync(string culture)
{
if (culture != CultureInfo.CurrentUICulture.Name)
diff --git a/Oqtane.Client/Modules/Admin/Languages/Index.razor b/Oqtane.Client/Modules/Admin/Languages/Index.razor
index 748c875b..eef0c6af 100644
--- a/Oqtane.Client/Modules/Admin/Languages/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Languages/Index.razor
@@ -1,6 +1,8 @@
@namespace Oqtane.Modules.Admin.Languages
@inherits ModuleBase
@inject ILanguageService LanguageService
+@inject ILocalizationService LocalizationService
+@inject IPackageService PackageService
@inject IStringLocalizer Localizer
@if (_languages == null)
@@ -17,24 +19,43 @@ 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;
protected override async Task OnParametersSetAsync()
{
_languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId);
+
+ var cultures = await LocalizationService.GetCulturesAsync();
+ var culture = cultures.First(c => c.Name.Equals(Constants.DefaultCulture));
+
+ // Adds English as default language
+ _languages.Insert(0, new Language { Name = culture.DisplayName, Code = culture.Name, IsDefault = !_languages.Any(l => l.IsDefault) });
+
+ if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
+ {
+ _packages = await PackageService.GetPackagesAsync("language");
+ }
}
private async Task DeleteLanguage(Language language)
@@ -53,4 +74,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);
+ }
+ }
}
diff --git a/Oqtane.Client/Modules/Admin/Login/Index.razor b/Oqtane.Client/Modules/Admin/Login/Index.razor
index 86ec7b0a..45f4e246 100644
--- a/Oqtane.Client/Modules/Admin/Login/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Login/Index.razor
@@ -3,13 +3,20 @@
@inject NavigationManager NavigationManager
@inject IUserService UserService
@inject IServiceProvider ServiceProvider
+@inject SiteState SiteState
@inject IStringLocalizer Localizer
@if (_message != string.Empty)
{
}
-
+
+
+ ...
+
+
+
+
|