@namespace Oqtane.Modules.Admin.ModuleDefinitions @inherits ModuleBase @using System.Globalization @using Microsoft.AspNetCore.Localization @inject IModuleDefinitionService ModuleDefinitionService @inject IPackageService PackageService @inject ILanguageService LanguageService @inject NavigationManager NavigationManager @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer

@SharedLocalizer["Cancel"]

@SharedLocalizer["Cancel"]
@if (_languages != null && _languages.Count > 0) {
@SharedLocalizer["Name"] @Localizer["Code"] @Localizer["Version"]  
@context.Name @context.Code @context.Version @if (context.IsDefault) { } else { if (UpgradeAvailable(_packagename + "." + context.Code, context.Version)) { } }
} else {
@Localizer["Search.NoResults"]

}
@if (_productname != "") {
} @code { private ElementReference form; private bool validated = false; private int _moduleDefinitionId; private string _name; private string _description = ""; private string _categories; private string _moduledefinitionname = ""; private string _version; private string _packagename = ""; private string _owner = ""; private string _url = ""; private string _contact = ""; private string _license = ""; private string _runtimes = ""; private string _permissions; private string _createdby; private DateTime _createdon; private string _modifiedby; private DateTime _modifiedon; #pragma warning disable 649 private PermissionGrid _permissionGrid; #pragma warning restore 649 private List _packages; private List _languages; private string _productname = ""; private string _packagelicense = ""; private string _packageid = ""; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnInitializedAsync() { try { _moduleDefinitionId = Int32.Parse(PageState.QueryString["id"]); var moduleDefinition = await ModuleDefinitionService.GetModuleDefinitionAsync(_moduleDefinitionId, ModuleState.SiteId); if (moduleDefinition != null) { _name = moduleDefinition.Name; _description = moduleDefinition.Description; _categories = moduleDefinition.Categories; _moduledefinitionname = moduleDefinition.ModuleDefinitionName; _version = moduleDefinition.Version; _packagename = moduleDefinition.PackageName; _owner = moduleDefinition.Owner; _url = moduleDefinition.Url; _contact = moduleDefinition.Contact; _license = moduleDefinition.License; _runtimes = moduleDefinition.Runtimes; _permissions = moduleDefinition.Permissions; _createdby = moduleDefinition.CreatedBy; _createdon = moduleDefinition.CreatedOn; _modifiedby = moduleDefinition.ModifiedBy; _modifiedon = moduleDefinition.ModifiedOn; if (!string.IsNullOrEmpty(_packagename)) { _packages = await PackageService.GetPackagesAsync("translation", "", "", _packagename); _languages = await LanguageService.GetLanguagesAsync(-1, _packagename); foreach (var package in _packages) { var code = package.PackageId.Split('.').Last(); if (!_languages.Any(item => item.Code == code)) { _languages.Add(new Language { Code = code, Name = CultureInfo.GetCultureInfo(code).DisplayName, Version = package.Version, IsDefault = true }); } } _languages = _languages.OrderBy(item => item.Name).ToList(); } } } catch (Exception ex) { await logger.LogError(ex, "Error Loading ModuleDefinition {ModuleDefinitionId} {Error}", _moduleDefinitionId, ex.Message); AddModuleMessage(Localizer["Error.Module.Load"], MessageType.Error); } } private async Task SaveModuleDefinition() { validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) { try { var moduledefinition = await ModuleDefinitionService.GetModuleDefinitionAsync(_moduleDefinitionId, ModuleState.SiteId); if (moduledefinition.Name != _name) { moduledefinition.Name = _name; } if (moduledefinition.Description != _description) { moduledefinition.Description = _description; } if (moduledefinition.Categories != _categories) { moduledefinition.Categories = _categories; } moduledefinition.Permissions = _permissionGrid.GetPermissions(); await ModuleDefinitionService.UpdateModuleDefinitionAsync(moduledefinition); await logger.LogInformation("ModuleDefinition Saved {ModuleDefinition}", moduledefinition); NavigationManager.NavigateTo(NavigateUrl()); } catch (Exception ex) { await logger.LogError(ex, "Error Saving ModuleDefinition {ModuleDefinitionId} {Error}", _moduleDefinitionId, ex.Message); AddModuleMessage(Localizer["Error.Module.Save"], MessageType.Error); } } else { AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } private void HideModal() { _productname = ""; _packagelicense = ""; StateHasChanged(); } private bool UpgradeAvailable(string packagename, string version) { var upgradeavailable = false; if (_packages != null) { var package = _packages.Where(item => item.PackageId == packagename).FirstOrDefault(); if (package != null) { upgradeavailable = (Version.Parse(package.Version).CompareTo(Version.Parse(version)) > 0); } } return upgradeavailable; } private async Task GetPackage(string packagename) { var version = _packages.Where(item => item.PackageId == packagename).FirstOrDefault().Version; try { var package = await PackageService.GetPackageAsync(packagename, version); if (package != null) { _productname = package.Name; if (!string.IsNullOrEmpty(package.License)) { _packagelicense = package.License.Replace("\n", "
"); } _packageid = package.PackageId; } StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Getting Package {PackageId} {Version}", packagename, version); AddModuleMessage(Localizer["Error.Translation.Download"], MessageType.Error); } } private async Task DownloadPackage(string packagename) { try { var version = _packages.Where(item => item.PackageId == packagename).FirstOrDefault().Version; await PackageService.DownloadPackageAsync(packagename, version, Constants.PackagesFolder); await logger.LogInformation("Package {PackageId} {Version} Downloaded Successfully", packagename, version); AddModuleMessage(Localizer["Success.Translation.Download"], MessageType.Success); _productname = ""; _packagelicense = ""; StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Downloading Package {PackageId} {Version}", _packagename, _version); AddModuleMessage(Localizer["Error.Translation.Download"], MessageType.Error); } } private async Task InstallTranslations() { try { await PackageService.InstallPackagesAsync(); AddModuleMessage(string.Format(Localizer["Success.Translation.Install"], NavigateUrl("admin/system")), MessageType.Success); } catch (Exception ex) { await logger.LogError(ex, "Error Installing Translations"); } } }