diff --git a/Oqtane.Client/Modules/Admin/Languages/Index.razor b/Oqtane.Client/Modules/Admin/Languages/Index.razor
index 9fffea60..b9b3d3f7 100644
--- a/Oqtane.Client/Modules/Admin/Languages/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Languages/Index.razor
@@ -22,7 +22,7 @@ else
@Localizer["Default"] |
@if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
{
- @Localizer["Translation"] |
+ @Localizer["Translation"] |
|
}
@@ -33,7 +33,7 @@ else
|
@if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host))
{
- @((string.IsNullOrEmpty(context.Version)) ? "---" : context.Version) |
+ @((string.IsNullOrEmpty(context.Version)) ? "---" : context.Version) |
@{
var translation = TranslationAvailable(context.Code, context.Version);
@@ -114,8 +114,8 @@ else
_packages = await PackageService.GetPackagesAsync("translation");
}
}
-
- private async Task GetLanguages()
+
+ private async Task GetLanguages()
{
_languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId, Constants.ClientId);
}
diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
index ff9a96cc..57380333 100644
--- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
+++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Index.razor
@@ -45,6 +45,7 @@ else
| @SharedLocalizer["Version"] |
@Localizer["Enabled"] |
@Localizer["InUse"] |
+ @SharedLocalizer["Support"] |
@SharedLocalizer["Expires"] |
|
@@ -78,6 +79,9 @@ else
@SharedLocalizer["No"]
}
+
+ @((MarkupString)SupportLink(context.PackageName))
+ |
@((MarkupString)PurchaseLink(context.PackageName))
|
@@ -130,7 +134,7 @@ else
{
if (package.ExpiryDate != null && package.ExpiryDate.Value.Date != DateTime.MaxValue.Date)
{
- link += "" + package.ExpiryDate.Value.Date.ToString("MMM dd, yyyy") + "";
+ link += "" + package.ExpiryDate.Value.Date.ToString("MMM dd, yyyy") + "
";
if (!string.IsNullOrEmpty(package.PaymentUrl))
{
link += " " + SharedLocalizer["Extend"] + "";
@@ -141,6 +145,20 @@ else
return link;
}
+ private string SupportLink(string packagename)
+ {
+ string link = "";
+ if (!string.IsNullOrEmpty(packagename) && _packages != null)
+ {
+ var package = _packages.Where(item => item.PackageId == packagename).FirstOrDefault();
+ if (package != null && !string.IsNullOrEmpty(package.SupportUrl))
+ {
+ link += "" + SharedLocalizer["Help"] + "";
+ }
+ }
+ return link;
+ }
+
private string UpgradeAvailable(string packagename, string version)
{
if (!string.IsNullOrEmpty(packagename) && _packages != null)
diff --git a/Oqtane.Client/Modules/Admin/Themes/Index.razor b/Oqtane.Client/Modules/Admin/Themes/Index.razor
index 08895c8f..4113ded9 100644
--- a/Oqtane.Client/Modules/Admin/Themes/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Themes/Index.razor
@@ -24,6 +24,7 @@ else
@SharedLocalizer["Name"] |
@SharedLocalizer["Version"] |
@Localizer["Enabled"] |
+ @SharedLocalizer["Support"] |
@SharedLocalizer["Expires"] |
|
@@ -47,6 +48,9 @@ else
@SharedLocalizer["No"]
}
+
+ @((MarkupString)SupportLink(context.PackageName))
+ |
@((MarkupString)PurchaseLink(context.PackageName))
|
@@ -97,7 +101,7 @@ else
{
if (package.ExpiryDate != null && package.ExpiryDate.Value.Date != DateTime.MaxValue.Date)
{
- link += "" + package.ExpiryDate.Value.Date.ToString("MMM dd, yyyy") + "";
+ link += "" + package.ExpiryDate.Value.Date.ToString("MMM dd, yyyy") + "
";
if (!string.IsNullOrEmpty(package.PaymentUrl))
{
link += " " + SharedLocalizer["Extend"] + "";
@@ -108,6 +112,20 @@ else
return link;
}
+ private string SupportLink(string packagename)
+ {
+ string link = "";
+ if (!string.IsNullOrEmpty(packagename) && _packages != null)
+ {
+ var package = _packages.Where(item => item.PackageId == packagename).FirstOrDefault();
+ if (package != null && !string.IsNullOrEmpty(package.SupportUrl))
+ {
+ link += "" + SharedLocalizer["Help"] + "";
+ }
+ }
+ return link;
+ }
+
private string UpgradeAvailable(string packagename, string version)
{
if (!string.IsNullOrEmpty(packagename) && _packages != null)
diff --git a/Oqtane.Client/Modules/Controls/FileManager.razor b/Oqtane.Client/Modules/Controls/FileManager.razor
index 2146ead7..6a1f4aa0 100644
--- a/Oqtane.Client/Modules/Controls/FileManager.razor
+++ b/Oqtane.Client/Modules/Controls/FileManager.razor
@@ -177,7 +177,6 @@
if (file != null)
{
FolderId = file.FolderId;
- await OnSelect.InvokeAsync(FileId);
}
else
{
diff --git a/Oqtane.Client/Resources/SharedResources.resx b/Oqtane.Client/Resources/SharedResources.resx
index b73cbdac..89823584 100644
--- a/Oqtane.Client/Resources/SharedResources.resx
+++ b/Oqtane.Client/Resources/SharedResources.resx
@@ -343,7 +343,7 @@
Please note that third party extensions are registered in the <a href="https://www.oqtane.net" target="_new">Oqtane Marketplace</a> which enables them to be seamlessly downloaded and installed into the framework.
- Home
+ Home
Close
@@ -384,4 +384,10 @@
Confirm
-
+
+ Help
+
+
+ Support
+
+
\ No newline at end of file
diff --git a/Oqtane.Server/Controllers/PackageController.cs b/Oqtane.Server/Controllers/PackageController.cs
index fe2ad700..66eaa8fd 100644
--- a/Oqtane.Server/Controllers/PackageController.cs
+++ b/Oqtane.Server/Controllers/PackageController.cs
@@ -45,6 +45,15 @@ 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}&sort={sort}");
+ if (packages != null)
+ {
+ var installationid = _configManager.GetInstallationId();
+ foreach (var _package in packages)
+ {
+ _package.PaymentUrl = _package.PaymentUrl.Replace("{InstallationId}", installationid);
+ _package.SupportUrl = _package.SupportUrl.Replace("{InstallationId}", installationid);
+ }
+ }
}
}
return packages;
@@ -64,6 +73,13 @@ namespace Oqtane.Controllers
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
package = await GetJson(client, Constants.PackageRegistryUrl + $"/api/registry/package/?id={_configManager.GetInstallationId()}&package={packageid}&version={version}&download={download}");
+ if (package != null)
+ {
+ var installationid = _configManager.GetInstallationId();
+ package.PaymentUrl = package.PaymentUrl.Replace("{InstallationId}", installationid);
+ package.SupportUrl = package.SupportUrl.Replace("{InstallationId}", installationid);
+
+ }
}
if (package != null)
diff --git a/Oqtane.Server/Controllers/UserController.cs b/Oqtane.Server/Controllers/UserController.cs
index 915fd44d..d6ef858b 100644
--- a/Oqtane.Server/Controllers/UserController.cs
+++ b/Oqtane.Server/Controllers/UserController.cs
@@ -14,6 +14,7 @@ using Oqtane.Infrastructure;
using Oqtane.Repository;
using Oqtane.Security;
using Oqtane.Extensions;
+using Oqtane.Managers;
namespace Oqtane.Controllers
{
diff --git a/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs b/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs
index e8daf17b..73c5d9dd 100644
--- a/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs
+++ b/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs
@@ -19,6 +19,7 @@ using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.OpenApi.Models;
using Oqtane.Infrastructure;
+using Oqtane.Managers;
using Oqtane.Models;
using Oqtane.Modules;
using Oqtane.Repository;
diff --git a/Oqtane.Server/Infrastructure/Interfaces/IUserManager.cs b/Oqtane.Server/Managers/Interfaces/IUserManager.cs
similarity index 96%
rename from Oqtane.Server/Infrastructure/Interfaces/IUserManager.cs
rename to Oqtane.Server/Managers/Interfaces/IUserManager.cs
index ff932a8f..ec58c091 100644
--- a/Oqtane.Server/Infrastructure/Interfaces/IUserManager.cs
+++ b/Oqtane.Server/Managers/Interfaces/IUserManager.cs
@@ -1,7 +1,7 @@
using System.Threading.Tasks;
using Oqtane.Models;
-namespace Oqtane.Infrastructure
+namespace Oqtane.Managers
{
public interface IUserManager
{
diff --git a/Oqtane.Server/Infrastructure/UserManager.cs b/Oqtane.Server/Managers/UserManager.cs
similarity index 99%
rename from Oqtane.Server/Infrastructure/UserManager.cs
rename to Oqtane.Server/Managers/UserManager.cs
index e23cd12d..92677c78 100644
--- a/Oqtane.Server/Infrastructure/UserManager.cs
+++ b/Oqtane.Server/Managers/UserManager.cs
@@ -4,16 +4,14 @@ using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
-using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
-using Microsoft.AspNetCore.Mvc;
using Oqtane.Enums;
+using Oqtane.Infrastructure;
using Oqtane.Models;
-using Oqtane.Modules.Admin.Roles;
using Oqtane.Repository;
using Oqtane.Shared;
-namespace Oqtane.Infrastructure
+namespace Oqtane.Managers
{
public class UserManager : IUserManager
{