@namespace Oqtane.Modules.Admin.ModuleDefinitions @inherits ModuleBase @inject NavigationManager NavigationManager @inject IFileService FileService @inject IModuleDefinitionService ModuleDefinitionService @inject IPackageService PackageService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer
@Localizer["Product"]
@if (_initialized) {

@((_packages != null) ? _packages.Count : 0) @SharedLocalizer["Search.Results"]

 
@if (context.LogoFileId != null) { @context.Name } else { @context.Name }
@SharedLocalizer["Search.Version"]: @context.Version
@SharedLocalizer["Search.Downloads"]: @(String.Format("{0:n0}", context.Downloads))
@SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MM/dd/yyyy") @if (!string.IsNullOrEmpty(context.PackageUrl)) {
@SharedLocalizer["Search.Source"]: @(new Uri(context.PackageUrl).Host) }

@context.Name


@SharedLocalizer["Search.By"]: @context.Owner
@(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
@if (context.Price != null && !string.IsNullOrEmpty(context.PaymentUrl)) { @SharedLocalizer["Search.Price"]: @context.Price.Value.ToString("$#,##0.00") @((MarkupString)(context.TrialPeriod > 0 ? " (" + context.TrialPeriod + " Day Trial)" : "")) }
@if (!string.IsNullOrEmpty(context.PackageUrl)) { } @if (context.Price != null && !string.IsNullOrEmpty(context.PaymentUrl)) { @SharedLocalizer["Buy"] }
}

@if (_productname != "") {
} @SharedLocalizer["Cancel"] @code { private bool _initialized = false; private List _packages; private string _price = "free"; private string _sort = "popularity"; private string _search = ""; private string _productname = ""; private string _packageid = ""; private string _packagelicense = ""; private string _packageversion = ""; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; protected override async Task OnInitializedAsync() { try { await LoadModuleDefinitions(); _initialized = true; } catch (Exception ex) { await logger.LogError(ex, "Error Loading Packages {Error}", ex.Message); AddModuleMessage(Localizer["Error.Package.Load"], MessageType.Error); } } private async Task LoadModuleDefinitions() { ShowProgressIndicator(); var moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); _packages = await PackageService.GetPackagesAsync("module", _search, _price, "", _sort); if (_packages != null) { foreach (Package package in _packages.ToArray()) { if (moduledefinitions.Exists(item => item.PackageName == package.PackageId)) { _packages.Remove(package); } } } HideProgressIndicator(); } private string GetLogo(int fileid) { var url = ImageUrl(fileid, 100, 100); url = (!string.IsNullOrEmpty(PageState.Alias.Path)) ? url.Substring(PageState.Alias.Path.Length + 1) : url; return Constants.PackageRegistryUrl + url; } private async void PriceChanged(string price) { _price = price; await LoadModuleDefinitions(); StateHasChanged(); } private async Task Search() { try { await LoadModuleDefinitions(); } catch (Exception ex) { await logger.LogError(ex, "Error On Search"); } } private async Task Reset() { try { _search = ""; await LoadModuleDefinitions(); } catch (Exception ex) { await logger.LogError(ex, "Error On Reset"); } } private async void SortChanged(ChangeEventArgs e) { _sort = (string)e.Value; await LoadModuleDefinitions(); } private void HideModal() { _productname = ""; _packagelicense = ""; StateHasChanged(); } private async Task GetPackage(string packageid, string version) { try { var package = await PackageService.GetPackageAsync(packageid, version); if (package != null) { _productname = package.Name; _packageid = package.PackageId; if (!string.IsNullOrEmpty(package.License)) { _packagelicense = package.License.Replace("\n", "
"); } _packageversion = package.Version; StateHasChanged(); } else { await logger.LogError("Error Getting Package {PackageId} {Version}", packageid, version); AddModuleMessage(Localizer["Error.Module.Download"], MessageType.Error); } } catch (Exception ex) { await logger.LogError(ex, "Error Getting Package {PackageId} {Version}", packageid, version); AddModuleMessage(Localizer["Error.Module.Download"], MessageType.Error); } } private async Task DownloadPackage() { try { await PackageService.DownloadPackageAsync(_packageid, _packageversion, Constants.PackagesFolder); await logger.LogInformation("Package {PackageId} {Version} Downloaded Successfully", _packageid, _packageversion); AddModuleMessage(string.Format(Localizer["Success.Module.Download"], NavigateUrl("admin/system")), MessageType.Success); _productname = ""; _packagelicense = ""; StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Downloading Package {PackageId} {Version}", _packageid, _packageversion); AddModuleMessage(Localizer["Error.Module.Download"], MessageType.Error); } } private void OnUpload() { AddModuleMessage(string.Format(Localizer["Success.Module.Download"], NavigateUrl("admin/system")), MessageType.Success); } }