From 39ccc306805f72a6f6262fd0b8e8d5696762b4eb Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Thu, 26 Aug 2021 18:20:58 -0400 Subject: [PATCH] fix Type label in Add Folder UI, make Profile description required, fix misc Bootstrap 5 cosmetic issues, fix #1618 Alias case sensitivity in router, fix File add and update methods so they return Url, fix UrlCombine helper method to use proper slash, enhance package installation to support commercial options --- Oqtane.Client/Modules/Admin/Files/Edit.razor | 2 +- .../Modules/Admin/Languages/Add.razor | 25 ++- .../Modules/Admin/ModuleDefinitions/Add.razor | 21 ++- .../Modules/Admin/Profiles/Edit.razor | 2 +- Oqtane.Client/Modules/Admin/Themes/Add.razor | 21 ++- .../Modules/Controls/FileManager.razor | 9 +- .../Modules/Controls/ModuleMessage.razor | 3 +- .../Modules/Controls/PermissionGrid.razor | 147 ++++++++++-------- .../Resources/Modules/Admin/Files/Edit.resx | 6 + Oqtane.Client/UI/ModuleInstance.razor | 2 + Oqtane.Client/UI/SiteRouter.razor | 2 +- Oqtane.Server/Controllers/AliasController.cs | 1 - .../Controllers/PackageController.cs | 1 - Oqtane.Server/Controllers/RoleController.cs | 4 +- Oqtane.Server/Repository/FileRepository.cs | 2 + Oqtane.Shared/Models/Package.cs | 5 + Oqtane.Shared/Shared/Utilities.cs | 4 + 17 files changed, 168 insertions(+), 89 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Files/Edit.razor b/Oqtane.Client/Modules/Admin/Files/Edit.razor index b11f4bab..56692be3 100644 --- a/Oqtane.Client/Modules/Admin/Files/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Files/Edit.razor @@ -32,7 +32,7 @@
- +
@if (PageState.QueryString.ContainsKey("id")) { diff --git a/Oqtane.Client/Modules/Admin/Languages/Add.razor b/Oqtane.Client/Modules/Admin/Languages/Add.razor index 5d635b5b..3befe0fd 100644 --- a/Oqtane.Client/Modules/Admin/Languages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Languages/Add.razor @@ -79,12 +79,23 @@ else @(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  |   - @SharedLocalizer["Search.Price"]: @((context.Price == 0) ? "FREE" : context.Price.ToString("$#,##0.00") ) + @SharedLocalizer["Search.Version"]: @context.Version - - + + @if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl)) + { + + } + + + @if (context.Price > 0 && !string.IsNullOrEmpty(context.PaymentUrl)) + { + @context.Price.ToString("$#,##0.00") + } + else + { + + } @@ -105,7 +116,7 @@ else
- +
@@ -278,7 +289,7 @@ else StateHasChanged(); } - private async Task GetLanguage(string packageid, string version) + private async Task GetPackage(string packageid, string version) { try { diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor index 73626c53..9b922552 100644 --- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor +++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor @@ -36,12 +36,23 @@ @(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  |   - @SharedLocalizer["Search.Price"]: @((context.Price == 0) ? "FREE" : context.Price.ToString("$#,##0.00") ) + @SharedLocalizer["Search.Version"]: @context.Version - - + + @if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl)) + { + + } + + + @if (context.Price > 0 && !string.IsNullOrEmpty(context.PaymentUrl)) + { + @context.Price.ToString("$#,##0.00") + } + else + { + + } diff --git a/Oqtane.Client/Modules/Admin/Profiles/Edit.razor b/Oqtane.Client/Modules/Admin/Profiles/Edit.razor index 047608d7..4280b053 100644 --- a/Oqtane.Client/Modules/Admin/Profiles/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Profiles/Edit.razor @@ -22,7 +22,7 @@
- +
diff --git a/Oqtane.Client/Modules/Admin/Themes/Add.razor b/Oqtane.Client/Modules/Admin/Themes/Add.razor index e127f852..771fda7a 100644 --- a/Oqtane.Client/Modules/Admin/Themes/Add.razor +++ b/Oqtane.Client/Modules/Admin/Themes/Add.razor @@ -36,12 +36,23 @@ @(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  |   - @SharedLocalizer["Search.Price"]: @((context.Price == 0) ? "FREE" : context.Price.ToString("$#,##0.00") ) + @SharedLocalizer["Search.Version"]: @context.Version - - + + @if (context.Price > 0 && !string.IsNullOrEmpty(context.PackageUrl)) + { + + } + + + @if (context.Price > 0 && !string.IsNullOrEmpty(context.PaymentUrl)) + { + @context.Price.ToString("$#,##0.00") + } + else + { + + } diff --git a/Oqtane.Client/Modules/Controls/FileManager.razor b/Oqtane.Client/Modules/Controls/FileManager.razor index 9628ff48..5aa5c428 100644 --- a/Oqtane.Client/Modules/Controls/FileManager.razor +++ b/Oqtane.Client/Modules/Controls/FileManager.razor @@ -58,7 +58,6 @@
} -
@if (_image != string.Empty) { @@ -67,6 +66,14 @@ } + @if (!string.IsNullOrEmpty(_message)) + { +
+
+ +
+
+ } } diff --git a/Oqtane.Client/Modules/Controls/ModuleMessage.razor b/Oqtane.Client/Modules/Controls/ModuleMessage.razor index 976b1aa8..f4f00027 100644 --- a/Oqtane.Client/Modules/Controls/ModuleMessage.razor +++ b/Oqtane.Client/Modules/Controls/ModuleMessage.razor @@ -4,7 +4,7 @@ @if (!string.IsNullOrEmpty(_message)) { - + +
+
+ @if (_users.Count != 0) + { +
+
+
+
+ + + + + @foreach (PermissionString permission in _permissions) + { + + } + + + + @foreach (User user in _users) + { + string userid = "[" + user.UserId.ToString() + "]"; + + + @foreach (PermissionString permission in _permissions) + { + var p = permission; + + } + + } + +
@Localizer["User"]@Localizer[permission.PermissionName]
@user.DisplayName + +
+
+ } +
+
+
+
+ + + + + + +
+ + +
+
+
+
+
+
+ +
+
+ } @code { diff --git a/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx index ec757e5e..b2740256 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx @@ -165,4 +165,10 @@ Are You Sure You Wish To Delete This Folder? + + Select the folder type. Private folders are only accessible by authorized users. Public folders can be accessed by all users + + + Type: + \ No newline at end of file diff --git a/Oqtane.Client/UI/ModuleInstance.razor b/Oqtane.Client/UI/ModuleInstance.razor index 0dec5413..d63ef4b6 100644 --- a/Oqtane.Client/UI/ModuleInstance.razor +++ b/Oqtane.Client/UI/ModuleInstance.razor @@ -27,6 +27,8 @@ protected override void OnParametersSet() { + _message = ""; + DynamicComponent = builder => { Type moduleType = null; diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index 3714eeb9..0c4217b7 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -89,7 +89,7 @@ else { // reload the client application if the user navigated to a site with a different alias or there is a forced reload - if ((!path.StartsWith(SiteState.Alias.Path) && SiteState.Alias.Path != "") || querystring.ContainsKey("reload")) + if ((!path.ToLower().StartsWith(SiteState.Alias.Path.ToLower()) && !string.IsNullOrEmpty(SiteState.Alias.Path)) || querystring.ContainsKey("reload")) { NavigationManager.NavigateTo(_absoluteUri.Replace("?reload", ""), true); return; diff --git a/Oqtane.Server/Controllers/AliasController.cs b/Oqtane.Server/Controllers/AliasController.cs index 644fa278..01673f10 100644 --- a/Oqtane.Server/Controllers/AliasController.cs +++ b/Oqtane.Server/Controllers/AliasController.cs @@ -8,7 +8,6 @@ using Oqtane.Enums; using Oqtane.Infrastructure; using Oqtane.Repository; using Microsoft.AspNetCore.Http; -using Oqtane.Themes.Controls; using System.Linq; namespace Oqtane.Controllers diff --git a/Oqtane.Server/Controllers/PackageController.cs b/Oqtane.Server/Controllers/PackageController.cs index 87a5f699..d290d60b 100644 --- a/Oqtane.Server/Controllers/PackageController.cs +++ b/Oqtane.Server/Controllers/PackageController.cs @@ -34,7 +34,6 @@ namespace Oqtane.Controllers // 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, string package) { // get packages diff --git a/Oqtane.Server/Controllers/RoleController.cs b/Oqtane.Server/Controllers/RoleController.cs index 169c9014..b79723ae 100644 --- a/Oqtane.Server/Controllers/RoleController.cs +++ b/Oqtane.Server/Controllers/RoleController.cs @@ -26,7 +26,7 @@ namespace Oqtane.Controllers // GET: api/?siteid=x&global=true/false [HttpGet] - [Authorize(Roles = RoleNames.Admin)] + [Authorize(Roles = RoleNames.Registered)] public IEnumerable Get(string siteid, string global) { int SiteId; @@ -48,7 +48,7 @@ namespace Oqtane.Controllers // GET api//5 [HttpGet("{id}")] - [Authorize(Roles = RoleNames.Admin)] + [Authorize(Roles = RoleNames.Registered)] public Role Get(int id) { var role = _roles.GetRole(id); diff --git a/Oqtane.Server/Repository/FileRepository.cs b/Oqtane.Server/Repository/FileRepository.cs index 1c6179f6..78f36c72 100644 --- a/Oqtane.Server/Repository/FileRepository.cs +++ b/Oqtane.Server/Repository/FileRepository.cs @@ -42,6 +42,7 @@ namespace Oqtane.Repository { _db.File.Add(file); _db.SaveChanges(); + file.Url = GetFileUrl(file, _tenants.GetAlias()); return file; } @@ -49,6 +50,7 @@ namespace Oqtane.Repository { _db.Entry(file).State = EntityState.Modified; _db.SaveChanges(); + file.Url = GetFileUrl(file, _tenants.GetAlias()); return file; } diff --git a/Oqtane.Shared/Models/Package.cs b/Oqtane.Shared/Models/Package.cs index 7e0faa22..447346e7 100644 --- a/Oqtane.Shared/Models/Package.cs +++ b/Oqtane.Shared/Models/Package.cs @@ -71,5 +71,10 @@ namespace Oqtane.Models /// The price of the package /// public decimal Price { get; set; } + + /// + /// The Url for purchasing the package ( if commercial ) + /// + public string PaymentUrl { get; set; } } } diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs index 946b3dc1..db4e3e94 100644 --- a/Oqtane.Shared/Shared/Utilities.cs +++ b/Oqtane.Shared/Shared/Utilities.cs @@ -344,6 +344,10 @@ namespace Oqtane.Shared public static string UrlCombine(params string[] segments) { + for (int i = 1; i < segments.Length; i++) + { + segments[i] = segments[i].Replace("\\", "/"); + } return string.Join("/", segments); }