diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor index c7122339..91ed5b0a 100644 --- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor +++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor @@ -11,7 +11,7 @@ - + @@ -50,18 +50,55 @@ bool uploaded = false; List packages; + FileUpload fileupload; protected override async Task OnInitializedAsync() { + List moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); packages = await PackageService.GetPackagesAsync("module"); + foreach(Package package in packages.ToArray()) + { + if (moduledefinitions.Exists(item => Utilities.GetTypeName(item.ModuleDefinitionName) == package.PackageId)) + { + packages.Remove(package); + } + } } private async Task UploadFile() { - await FileService.UploadFilesAsync("Modules"); - ModuleInstance.AddModuleMessage("Module Uploaded Successfully. Click Install To Complete Installation.", MessageType.Success); - uploaded = true; - StateHasChanged(); + string[] files = await fileupload.GetFiles(); + if (files.Length > 0) + { + if (files[0].Contains(".Module.")) + { + try + { + if (await FileService.UploadFilesAsync("Modules", files, "")) + { + ModuleInstance.AddModuleMessage("Module Uploaded Successfully. Click Install To Complete Installation.", MessageType.Success); + uploaded = true; + StateHasChanged(); + } + else + { + ModuleInstance.AddModuleMessage("Module Upload Failed.", MessageType.Error); + } + } + catch (Exception ex) + { + ModuleInstance.AddModuleMessage("Module Upload Failed. " + ex.Message, MessageType.Error); + } + } + else + { + ModuleInstance.AddModuleMessage("Invalid Module Package", MessageType.Error); + } + } + else + { + ModuleInstance.AddModuleMessage("You Must Select A Module To Upload", MessageType.Warning); + } } private async Task InstallModules() diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor index 26e480f2..ad7a803f 100644 --- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor +++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor @@ -1,6 +1,8 @@ @namespace Oqtane.Modules.Admin.ModuleDefinitions @inherits ModuleBase +@inject NavigationManager NavigationManager @inject IModuleDefinitionService ModuleDefinitionService +@inject IPackageService PackageService @if (moduledefinitions == null) { @@ -16,12 +18,19 @@ else Version     +   @context.Name @context.Version + + @if (UpgradeAvailable(context.ModuleDefinitionName, context.Version)) + { + + } + } @@ -30,9 +39,29 @@ else public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Host; } } List moduledefinitions; + List packages; protected override async Task OnInitializedAsync() { moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); + packages = await PackageService.GetPackagesAsync("module"); + } + + private bool UpgradeAvailable(string moduledefinitionname, string version) + { + bool upgradeavailable = false; + Package package = packages.Where(item => item.PackageId == Utilities.GetTypeName(moduledefinitionname)).FirstOrDefault(); + if (package != null) + { + upgradeavailable = (Version.Parse(package.Version).CompareTo(Version.Parse(version)) > 0); + } + return upgradeavailable; + } + + private async Task DownloadModule(string moduledefinitionname, string version) + { + await PackageService.DownloadPackageAsync(moduledefinitionname, version, "Modules"); + await ModuleDefinitionService.InstallModulesAsync(); + NavigationManager.NavigateTo(NavigateUrl(Reload.Application)); } } \ No newline at end of file diff --git a/Oqtane.Client/Modules/Admin/Modules/Export.razor b/Oqtane.Client/Modules/Admin/Modules/Export.razor new file mode 100644 index 00000000..c8368d40 --- /dev/null +++ b/Oqtane.Client/Modules/Admin/Modules/Export.razor @@ -0,0 +1,32 @@ +@namespace Oqtane.Modules.Admin.Modules +@inherits ModuleBase +@inject NavigationManager NavigationManager +@inject IModuleService ModuleService + + + + + +
+ + +