diff --git a/Oqtane.Client/Modules/Controls/Section.razor b/Oqtane.Client/Modules/Controls/Section.razor index 115e352d..928f1edc 100644 --- a/Oqtane.Client/Modules/Controls/Section.razor +++ b/Oqtane.Client/Modules/Controls/Section.razor @@ -17,7 +17,10 @@
- @ChildContent + @if (ChildContent != null) + { + @ChildContent + }
@code { @@ -26,7 +29,7 @@ private string _show = string.Empty; [Parameter] - public RenderFragment ChildContent { get; set; } + public RenderFragment ChildContent { get; set; } = null; [Parameter] public string Name { get; set; } // required - the name of the section diff --git a/Oqtane.Client/Services/Interfaces/IPackageService.cs b/Oqtane.Client/Services/Interfaces/IPackageService.cs index f8617439..4ace8cc8 100644 --- a/Oqtane.Client/Services/Interfaces/IPackageService.cs +++ b/Oqtane.Client/Services/Interfaces/IPackageService.cs @@ -27,6 +27,17 @@ namespace Oqtane.Services /// Task> GetPackagesAsync(string type, string search, string price, string package); + /// + /// Returns a list of packages matching the given parameters + /// + /// + /// + /// + /// + /// + /// + Task> GetPackagesAsync(string type, string search, string price, string package, string sort); + /// /// Returns a specific package /// diff --git a/Oqtane.Client/Services/PackageService.cs b/Oqtane.Client/Services/PackageService.cs index a45c73e6..78752d38 100644 --- a/Oqtane.Client/Services/PackageService.cs +++ b/Oqtane.Client/Services/PackageService.cs @@ -23,7 +23,12 @@ namespace Oqtane.Services public async Task> GetPackagesAsync(string type, string search, string price, string package) { - return await GetJsonAsync>($"{Apiurl}?type={type}&search={WebUtility.UrlEncode(search)}&price={price}&package={package}"); + return await GetPackagesAsync(type, search, price, package, ""); + } + + public async Task> GetPackagesAsync(string type, string search, string price, string package, string sort) + { + return await GetJsonAsync>($"{Apiurl}?type={type}&search={WebUtility.UrlEncode(search)}&price={price}&package={package}&sort={sort}"); } public async Task GetPackageAsync(string packageId, string version) diff --git a/Oqtane.Server/Controllers/FolderController.cs b/Oqtane.Server/Controllers/FolderController.cs index 6914aac7..b95f97f8 100644 --- a/Oqtane.Server/Controllers/FolderController.cs +++ b/Oqtane.Server/Controllers/FolderController.cs @@ -80,7 +80,7 @@ namespace Oqtane.Controllers public Folder GetByPath(int siteId, string path) { var folderPath = WebUtility.UrlDecode(path).Replace("\\", "/"); - if (!folderPath.EndsWith("/")) + if (!folderPath.EndsWith("/") && folderPath != "") { folderPath += "/"; } diff --git a/Oqtane.Server/Controllers/PackageController.cs b/Oqtane.Server/Controllers/PackageController.cs index d4ba5c21..fe2ad700 100644 --- a/Oqtane.Server/Controllers/PackageController.cs +++ b/Oqtane.Server/Controllers/PackageController.cs @@ -34,7 +34,7 @@ namespace Oqtane.Controllers // GET: api/?type=x&search=y&price=z&package=a [HttpGet] - public async Task> Get(string type, string search, string price, string package) + public async Task> Get(string type, string search, string price, string package, string sort) { // get packages List packages = new List(); @@ -44,7 +44,7 @@ namespace Oqtane.Controllers { client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value); client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version)); - packages = await GetJson>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}&price={price}&package={package}"); + packages = await GetJson>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}&price={price}&package={package}&sort={sort}"); } } return packages; diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs index f22f7467..73bacb34 100644 --- a/Oqtane.Server/Controllers/PageController.cs +++ b/Oqtane.Server/Controllers/PageController.cs @@ -7,14 +7,8 @@ using System.Linq; using Oqtane.Security; using System.Net; using Oqtane.Enums; -using Oqtane.Extensions; using Oqtane.Infrastructure; using Oqtane.Repository; -using Oqtane.Modules.Admin.Users; -using System.IO; -using Oqtane.Services; -using Oqtane.UI; -using System; namespace Oqtane.Controllers { diff --git a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs index a82cce99..93d0f7f4 100644 --- a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs +++ b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs @@ -101,6 +101,7 @@ namespace Oqtane.Repository ModuleDefinition.IsPortable = moduleDefinition.IsPortable; ModuleDefinition.Resources = moduleDefinition.Resources; ModuleDefinition.IsEnabled = moduleDefinition.IsEnabled; + ModuleDefinition.PackageName = moduleDefinition.PackageName; } return ModuleDefinition; diff --git a/Oqtane.Server/Repository/ThemeRepository.cs b/Oqtane.Server/Repository/ThemeRepository.cs index 02e4a9c0..d34d2f31 100644 --- a/Oqtane.Server/Repository/ThemeRepository.cs +++ b/Oqtane.Server/Repository/ThemeRepository.cs @@ -89,6 +89,7 @@ namespace Oqtane.Repository Theme.Containers = theme.Containers; Theme.ThemeSettingsType = theme.ThemeSettingsType; Theme.ContainerSettingsType = theme.ContainerSettingsType; + Theme.PackageName = theme.PackageName; Themes.Add(Theme); } diff --git a/Oqtane.Shared/Models/Package.cs b/Oqtane.Shared/Models/Package.cs index 1a57e7bc..1e424744 100644 --- a/Oqtane.Shared/Models/Package.cs +++ b/Oqtane.Shared/Models/Package.cs @@ -32,6 +32,11 @@ namespace Oqtane.Models /// public string Description { get; set; } + /// + /// logo + /// + public int? LogoFileId { get; set; } + /// /// License for the Package. /// @@ -62,6 +67,11 @@ namespace Oqtane.Models /// public string PackageUrl { get; set; } + /// + /// The direct Url for getting support for the product + /// + public string SupportUrl { get; set; } + /// /// Indicates if any known security vulnerabilities exist ///