75 lines
2.2 KiB
Plaintext
75 lines
2.2 KiB
Plaintext
@namespace Oqtane.Modules.Admin.Themes
|
|
@inherits ModuleBase
|
|
@inject NavigationManager NavigationManager
|
|
@inject IFileService FileService
|
|
@inject IThemeService ThemeService
|
|
@inject IPackageService PackageService
|
|
|
|
<table class="table table-borderless">
|
|
<tr>
|
|
<td>
|
|
<Label For="theme" HelpText="Upload a theme from your system">Theme: </Label>
|
|
</td>
|
|
<td>
|
|
<FileManager Filter="nupkg" ShowFiles="false" Folder="Themes" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
@if (packages != null)
|
|
{
|
|
<hr class="app-rule" />
|
|
<div class="mx-auto text-center"><h2>Available Themes</h2></div>
|
|
|
|
<Pager Items="@packages">
|
|
<Header>
|
|
<th>Name</th>
|
|
<th>Version</th>
|
|
<th></th>
|
|
</Header>
|
|
<Row>
|
|
<td>@context.Name</td>
|
|
<td>@context.Version</td>
|
|
<td>
|
|
<button type="button" class="btn btn-primary" @onclick=@(async () => await DownloadTheme(context.PackageId, context.Version))>Download Theme</button>
|
|
</td>
|
|
</Row>
|
|
</Pager>
|
|
}
|
|
|
|
<button type="button" class="btn btn-success" @onclick="InstallThemes">Install</button>
|
|
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
|
|
|
|
@code {
|
|
private List<Package> packages;
|
|
|
|
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
var 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 InstallThemes()
|
|
{
|
|
await ThemeService.InstallThemesAsync();
|
|
NavigationManager.NavigateTo(NavigateUrl());
|
|
}
|
|
|
|
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);
|
|
StateHasChanged();
|
|
}
|
|
}
|