@namespace Oqtane.Modules.Admin.Themes @inherits ModuleBase @inject NavigationManager NavigationManager @inject IFileService FileService @inject IThemeService ThemeService @inject IPackageService PackageService
@if (packages != null) {

Available Themes

Name Version
@context.Name @context.Version
} @if (uploaded) { } Cancel @code { public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Host; } } bool uploaded = false; List packages; FileUpload fileupload; protected override async Task OnInitializedAsync() { List themes = await ThemeService.GetThemesAsync(); packages = await PackageService.GetPackagesAsync("theme"); foreach(Package package in packages.ToArray()) { if (themes.Exists(item => Utilities.GetTypeName(item.ThemeName) == package.PackageId)) { packages.Remove(package); } } } private async Task UploadTheme() { string[] files = await fileupload.GetFiles(); if (files.Length > 0) { if (files[0].Contains(".Theme.")) { try { string result = await FileService.UploadFilesAsync("Themes", files, ""); if (result == "") { await logger.LogInformation("Theme Uploaded {Package}", files[0]); AddModuleMessage("Theme Uploaded Successfully. Click Install To Complete Installation.", MessageType.Success); uploaded = true; StateHasChanged(); } else { await logger.LogInformation("Theme Upload Failed For {Package}", result.Replace(",",", ")); AddModuleMessage("Upload Failed For " + result.Replace(",",", ") + ". This Could Be Due To A Network Error Or Because A File Type Is Restricted.", MessageType.Error); } } catch (Exception ex) { await logger.LogError(ex, "Theme Upload Failed {Package} {Error}", files[0], ex.Message); AddModuleMessage("Theme Upload Failed", MessageType.Error); } } else { await logger.LogError("Invalid Theme Package {Package}", files[0]); AddModuleMessage("Invalid Theme Package", MessageType.Error); } } else { AddModuleMessage("You Must Select A Theme To Upload", MessageType.Warning); } } private async Task InstallThemes() { await ThemeService.InstallThemesAsync(); NavigationManager.NavigateTo(NavigateUrl(Reload.Application)); } private async Task DownloadTheme(string packageid, string version) { await PackageService.DownloadPackageAsync(packageid, version, "Themes"); AddModuleMessage("Theme Downloaded Successfully. Click Install To Complete Installation.", MessageType.Success); uploaded = true; StateHasChanged(); } }