@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 { if (await FileService.UploadFilesAsync("Themes", files, "")) { AddModuleMessage("Theme Uploaded Successfully. Click Install To Complete Installation.", MessageType.Success); uploaded = true; StateHasChanged(); } else { AddModuleMessage("Theme Upload Failed.", MessageType.Error); } } catch (Exception ex) { AddModuleMessage("Theme Upload Failed. " + ex.Message, MessageType.Error); } } else { 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(); } }