@namespace Oqtane.Modules.Admin.Themes @inherits ModuleBase @inject NavigationManager NavigationManager @inject IFileService FileService @inject IThemeService ThemeService @inject IPackageService PackageService @inject IStringLocalizer Localizer @if (_packages != null) { @if (_packages.Count > 0) {

@context.Name

  by:  @context.Owner
@context.Downloads.ToString("###,###,##0") downloads  |   released: @context.ReleaseDate.ToString("MMM dd, yyyy")  |  version: @context.Version
@(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
}
@Localizer["Cancel"] } @code { private List _packages; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; protected override async Task OnInitializedAsync() { try { var themes = await ThemeService.GetThemesAsync(); _packages = await PackageService.GetPackagesAsync("theme"); foreach (Package package in _packages.ToArray()) { if (themes.Exists(item => item.PackageName == package.PackageId)) { _packages.Remove(package); } } } catch (Exception ex) { await logger.LogError(ex, "Error Loading Packages {Error}", ex.Message); AddModuleMessage(Localizer["Error.Package.Load"], MessageType.Error); } } private async Task InstallThemes() { try { await ThemeService.InstallThemesAsync(); AddModuleMessage(string.Format(Localizer["Success.Theme.Install"], NavigateUrl("admin/system")), MessageType.Success); } catch (Exception ex) { await logger.LogError(ex, "Error Installing Theme"); } } private async Task DownloadTheme(string packageid, string version) { try { await PackageService.DownloadPackageAsync(packageid, version, "Packages"); await logger.LogInformation("Theme {ThemeName} {Version} Downloaded Successfully", packageid, version); AddModuleMessage(Localizer["Success.Theme.Download"], MessageType.Success); StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Downloading Module {ThemeName} {Version}", packageid, version); AddModuleMessage(Localizer["Error.Theme.Download"], MessageType.Error); } } }