diff --git a/Oqtane.Client/Modules/Admin/Languages/Add.razor b/Oqtane.Client/Modules/Admin/Languages/Add.razor
index d3385ff8..5d635b5b 100644
--- a/Oqtane.Client/Modules/Admin/Languages/Add.razor
+++ b/Oqtane.Client/Modules/Admin/Languages/Add.razor
@@ -77,7 +77,11 @@ else
by: @context.Owner
@(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
- @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"] | @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy") | @SharedLocalizer["Search.Version"]: @context.Version | @SharedLocalizer["Search.Source"]: @context.PackageUrl
+ @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"] |
+ @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy") |
+ @SharedLocalizer["Search.Version"]: @context.Version |
+ @SharedLocalizer["Search.Source"]: @context.PackageUrl |
+ @SharedLocalizer["Search.Price"]: @((context.Price == 0) ? "FREE" : context.Price.ToString("$#,##0.00") )
|
@@ -184,7 +188,7 @@ else
private async Task LoadTranslations()
{
- _packages = await PackageService.GetPackagesAsync("translation", _search, _price);
+ _packages = await PackageService.GetPackagesAsync("translation", _search, _price, "");
}
private async void PriceChanged(ChangeEventArgs e)
diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor
index 035732f3..73626c53 100644
--- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor
+++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor
@@ -129,7 +129,7 @@
private async Task LoadModuleDefinitions()
{
var moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId);
- _packages = await PackageService.GetPackagesAsync("module", _search, _price);
+ _packages = await PackageService.GetPackagesAsync("module", _search, _price, "");
if (_packages != null)
{
diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
index 70a3abba..b5d23a21 100644
--- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
+++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
@@ -70,7 +70,7 @@ else
private bool UpgradeAvailable(string packagename, string version)
{
var upgradeavailable = false;
- if (_packages != null)
+ if (!string.IsNullOrEmpty(packagename) && _packages != null)
{
var package = _packages.Where(item => item.PackageId == packagename).FirstOrDefault();
if (package != null)
diff --git a/Oqtane.Client/Modules/Admin/Themes/Add.razor b/Oqtane.Client/Modules/Admin/Themes/Add.razor
index a7a81da2..e127f852 100644
--- a/Oqtane.Client/Modules/Admin/Themes/Add.razor
+++ b/Oqtane.Client/Modules/Admin/Themes/Add.razor
@@ -34,7 +34,11 @@
|
@SharedLocalizer["Search.By"]: @context.Owner
@(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
- @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"] | @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy") | @SharedLocalizer["Search.Version"]: @context.Version | @SharedLocalizer["Search.Source"]: @context.PackageUrl
+ @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"] |
+ @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy") |
+ @SharedLocalizer["Search.Version"]: @context.Version |
+ @SharedLocalizer["Search.Source"]: @context.PackageUrl |
+ @SharedLocalizer["Search.Price"]: @((context.Price == 0) ? "FREE" : context.Price.ToString("$#,##0.00") )
|
@@ -126,7 +130,7 @@
private async Task LoadThemes()
{
var themes = await ThemeService.GetThemesAsync();
- _packages = await PackageService.GetPackagesAsync("theme", _search, _price);
+ _packages = await PackageService.GetPackagesAsync("theme", _search, _price, "");
if (_packages != null)
{
diff --git a/Oqtane.Client/Modules/Admin/Themes/Index.razor b/Oqtane.Client/Modules/Admin/Themes/Index.razor
index a2a3932e..5346704e 100644
--- a/Oqtane.Client/Modules/Admin/Themes/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Themes/Index.razor
@@ -72,7 +72,7 @@ else
private bool UpgradeAvailable(string packagename, string version)
{
var upgradeavailable = false;
- if (_packages != null)
+ if (!string.IsNullOrEmpty(packagename) && _packages != null)
{
var package = _packages.Where(item => item.PackageId == packagename).FirstOrDefault();
if (package != null)
diff --git a/Oqtane.Client/Modules/Admin/Upgrade/Index.razor b/Oqtane.Client/Modules/Admin/Upgrade/Index.razor
index 7c90b014..52e6f01f 100644
--- a/Oqtane.Client/Modules/Admin/Upgrade/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Upgrade/Index.razor
@@ -44,7 +44,7 @@
{
try
{
- List packages = await PackageService.GetPackagesAsync("framework");
+ List packages = await PackageService.GetPackagesAsync("framework", "", "", "");
if (packages != null)
{
_package = packages.Where(item => item.PackageId.StartsWith(Constants.PackageId)).FirstOrDefault();
diff --git a/Oqtane.Client/Services/Interfaces/IPackageService.cs b/Oqtane.Client/Services/Interfaces/IPackageService.cs
index e6cf5e62..e09f89f9 100644
--- a/Oqtane.Client/Services/Interfaces/IPackageService.cs
+++ b/Oqtane.Client/Services/Interfaces/IPackageService.cs
@@ -7,7 +7,7 @@ namespace Oqtane.Services
public interface IPackageService
{
Task> GetPackagesAsync(string type);
- Task> GetPackagesAsync(string type, string search, string price);
+ Task> GetPackagesAsync(string type, string search, string price, string package);
Task GetPackageAsync(string packageId, string version);
Task DownloadPackageAsync(string packageId, string version, string folder);
Task InstallPackagesAsync();
diff --git a/Oqtane.Client/Services/PackageService.cs b/Oqtane.Client/Services/PackageService.cs
index 122e6311..e0dad5b0 100644
--- a/Oqtane.Client/Services/PackageService.cs
+++ b/Oqtane.Client/Services/PackageService.cs
@@ -22,12 +22,12 @@ namespace Oqtane.Services
public async Task> GetPackagesAsync(string type)
{
- return await GetPackagesAsync(type, "", "");
+ return await GetPackagesAsync(type, "", "", "");
}
- public async Task> GetPackagesAsync(string type, string search, string price)
+ public async Task> GetPackagesAsync(string type, string search, string price, string package)
{
- return await GetJsonAsync>($"{Apiurl}?type={type}&search={WebUtility.UrlEncode(search)}&price={price}");
+ return await GetJsonAsync>($"{Apiurl}?type={type}&search={WebUtility.UrlEncode(search)}&price={price}&package={package}");
}
public async Task GetPackageAsync(string packageId, string version)
diff --git a/Oqtane.Server/Controllers/PackageController.cs b/Oqtane.Server/Controllers/PackageController.cs
index 4a85428e..87a5f699 100644
--- a/Oqtane.Server/Controllers/PackageController.cs
+++ b/Oqtane.Server/Controllers/PackageController.cs
@@ -32,10 +32,10 @@ namespace Oqtane.Controllers
_logger = logger;
}
- // GET: api/?type=x&search=y&license=z
+ // GET: api/?type=x&search=y&price=z&package=a
[HttpGet]
[Authorize(Roles = RoleNames.Host)]
- public async Task> Get(string type, string search, string price)
+ public async Task> Get(string type, string search, string price, string package)
{
// get packages
List packages = new List();
@@ -45,7 +45,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}");
+ packages = await GetJson>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}&price={price}&package={package}");
}
}
return packages;
diff --git a/Oqtane.Server/Infrastructure/InstallationManager.cs b/Oqtane.Server/Infrastructure/InstallationManager.cs
index fd63c7e7..cd5d5963 100644
--- a/Oqtane.Server/Infrastructure/InstallationManager.cs
+++ b/Oqtane.Server/Infrastructure/InstallationManager.cs
@@ -186,41 +186,45 @@ namespace Oqtane.Infrastructure
public bool UninstallPackage(string PackageName)
{
- // get manifest with highest version
- string packagename = "";
- string[] packages = Directory.GetFiles(Path.Combine(_environment.ContentRootPath, "Packages"), PackageName + "*.log");
- if (packages.Length > 0)
+ if (!string.IsNullOrEmpty(PackageName))
{
- packagename = packages[packages.Length - 1]; // use highest version
- }
-
- if (!string.IsNullOrEmpty(packagename))
- {
- // use manifest to clean up file resources
- List assets = JsonSerializer.Deserialize>(File.ReadAllText(packagename));
- assets.Reverse();
- foreach (string asset in assets)
+ // get manifest with highest version
+ string packagename = "";
+ string[] packages = Directory.GetFiles(Path.Combine(_environment.ContentRootPath, "Packages"), PackageName + "*.log");
+ if (packages.Length > 0)
{
- // legacy support for assets that were stored as absolute paths
- string filepath = asset.StartsWith("\\") ? Path.Combine(_environment.ContentRootPath, asset.Substring(1)) : asset;
- if (File.Exists(filepath))
+ packagename = packages[packages.Length - 1]; // use highest version
+ }
+
+ if (!string.IsNullOrEmpty(packagename))
+ {
+ // use manifest to clean up file resources
+ List assets = JsonSerializer.Deserialize>(File.ReadAllText(packagename));
+ assets.Reverse();
+ foreach (string asset in assets)
{
- File.Delete(filepath);
- if (!Directory.EnumerateFiles(Path.GetDirectoryName(filepath)).Any())
+ // legacy support for assets that were stored as absolute paths
+ string filepath = asset.StartsWith("\\") ? Path.Combine(_environment.ContentRootPath, asset.Substring(1)) : asset;
+ if (File.Exists(filepath))
{
- Directory.Delete(Path.GetDirectoryName(filepath));
+ File.Delete(filepath);
+ if (!Directory.EnumerateFiles(Path.GetDirectoryName(filepath)).Any())
+ {
+ Directory.Delete(Path.GetDirectoryName(filepath));
+ }
}
}
- }
- // clean up package asset manifests
- foreach(string asset in packages)
- {
- File.Delete(asset);
- }
+ // clean up package asset manifests
+ foreach (string asset in packages)
+ {
+ File.Delete(asset);
+ }
- return true;
+ return true;
+ }
}
+
return false;
}
diff --git a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs
index 62566b19..7086e4e9 100644
--- a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs
+++ b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs
@@ -241,10 +241,6 @@ namespace Oqtane.Repository
moduledefinition.ModuleDefinitionName = qualifiedModuleType;
moduledefinition.ControlTypeTemplate = modulecontroltype.Namespace + "." + Constants.ActionToken + ", " + modulecontroltype.Assembly.GetName().Name;
moduledefinition.AssemblyName = assembly.GetName().Name;
- if (string.IsNullOrEmpty(moduledefinition.PackageName))
- {
- moduledefinition.PackageName = Utilities.GetTypeName(moduledefinition.ModuleDefinitionName);
- }
if (string.IsNullOrEmpty(moduledefinition.Categories))
{
diff --git a/Oqtane.Server/Repository/ThemeRepository.cs b/Oqtane.Server/Repository/ThemeRepository.cs
index e5943cbe..1b3b4e77 100644
--- a/Oqtane.Server/Repository/ThemeRepository.cs
+++ b/Oqtane.Server/Repository/ThemeRepository.cs
@@ -101,10 +101,6 @@ namespace Oqtane.Repository
theme.Themes = new List();
theme.Containers = new List();
theme.AssemblyName = assembly.FullName.Split(",")[0];
- if (string.IsNullOrEmpty(theme.PackageName))
- {
- theme.PackageName = Utilities.GetTypeName(theme.ThemeName);
- }
Debug.WriteLine($"Oqtane Info: Registering Theme {theme.ThemeName}");
themes.Add(theme);
diff --git a/Oqtane.Server/wwwroot/Modules/Templates/External/Client/Modules/[Owner].[Module]/ModuleInfo.cs b/Oqtane.Server/wwwroot/Modules/Templates/External/Client/Modules/[Owner].[Module]/ModuleInfo.cs
index af85489c..25e15558 100644
--- a/Oqtane.Server/wwwroot/Modules/Templates/External/Client/Modules/[Owner].[Module]/ModuleInfo.cs
+++ b/Oqtane.Server/wwwroot/Modules/Templates/External/Client/Modules/[Owner].[Module]/ModuleInfo.cs
@@ -12,7 +12,8 @@ namespace [Owner].[Module]
Version = "1.0.0",
ServerManagerType = "[ServerManagerType]",
ReleaseVersions = "1.0.0",
- Dependencies = "[Owner].[Module].Shared.Oqtane"
+ Dependencies = "[Owner].[Module].Shared.Oqtane",
+ PackageName = "[Owner].[Module]"
};
}
}
diff --git a/Oqtane.Server/wwwroot/Themes/Templates/External/Client/ThemeInfo.cs b/Oqtane.Server/wwwroot/Themes/Templates/External/Client/ThemeInfo.cs
index 3f543b38..f2aa8771 100644
--- a/Oqtane.Server/wwwroot/Themes/Templates/External/Client/ThemeInfo.cs
+++ b/Oqtane.Server/wwwroot/Themes/Templates/External/Client/ThemeInfo.cs
@@ -8,7 +8,8 @@ namespace [Owner].[Theme]
public Theme Theme => new Theme
{
Name = "[Theme]",
- Version = "1.0.0"
+ Version = "1.0.0",
+ PackageName = "[Owner].[Theme]"
};
}
|