|
- @if (context.AssemblyName != "Oqtane.Client")
+ @if (context.AssemblyName != Constants.ClientId)
{
}
@@ -58,7 +58,7 @@ else
| @context.Name |
@context.Version |
- @if(context.AssemblyName == "Oqtane.Client" || PageState.Modules.Where(m => m.ModuleDefinition?.ModuleDefinitionId == context.ModuleDefinitionId).FirstOrDefault() != null)
+ @if (context.AssemblyName == Constants.ClientId || PageState.Modules.Where(m => m.ModuleDefinition?.ModuleDefinitionId == context.ModuleDefinitionId).FirstOrDefault() != null)
{
@SharedLocalizer["Yes"]
}
diff --git a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor
index 34a46b6c..51752e84 100644
--- a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor
+++ b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor
@@ -7,75 +7,77 @@
@inject IStringLocalizer Localizer
@inject IStringLocalizer SharedLocalizer
-
-
- @if (_pages == null)
- {
-
- @Localizer["NoPage.Deleted"]
- }
- else
- {
-
-
- |
- |
- @SharedLocalizer["Name"] |
- @Localizer["DeletedBy"] |
- @Localizer["DeletedOn"] |
-
-
- |
- |
- @context.Name |
- @context.DeletedBy |
- @context.DeletedOn |
-
-
- @if (_pages.Any())
- {
-
- }
- }
-
-
- @if (_modules == null)
- {
-
- @Localizer["NoModule.Deleted"]
- }
- else
- {
-
-
- |
- |
- @Localizer["Page"] |
- @Localizer["Module"] |
- @Localizer["DeletedBy"] |
- @Localizer["DeletedOn"] |
-
-
- |
- |
- @_pages.Find(item => item.PageId == context.PageId).Name |
- @context.Title |
- @context.DeletedBy |
- @context.DeletedOn |
-
-
- @if (_modules.Any())
- {
-
- }
-
- }
-
-
+@if (_pages == null || _modules == null)
+{
+ @SharedLocalizer["Loading"]
+}
+else
+{
+
+
+ @if (!_pages.Where(item => item.IsDeleted).Any())
+ {
+
+ @Localizer["NoPage.Deleted"]
+ }
+ else
+ {
+
+
+ |
+ |
+ @SharedLocalizer["Name"] |
+ @Localizer["DeletedBy"] |
+ @Localizer["DeletedOn"] |
+
+
+ |
+ |
+ @context.Name |
+ @context.DeletedBy |
+ @context.DeletedOn |
+
+
+
+
+ }
+
+
+ @if (!_modules.Where(item => item.IsDeleted).Any())
+ {
+
+ @Localizer["NoModule.Deleted"]
+ }
+ else
+ {
+
+
+ |
+ |
+ @Localizer["Page"] |
+ @Localizer["Module"] |
+ @Localizer["DeletedBy"] |
+ @Localizer["DeletedOn"] |
+
+
+ |
+ |
+ @_pages.Find(item => item.PageId == context.PageId).Name |
+ @context.Title |
+ @context.DeletedBy |
+ @context.DeletedOn |
+
+
+
+
+ }
+
+
+}
@code {
- private List _pages;
- private List _modules;
+ private List _pages;
+ private List _modules;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
@@ -95,10 +97,7 @@
private async Task Load()
{
_pages = await PageService.GetPagesAsync(PageState.Site.SiteId);
- _pages = _pages.Where(item => item.IsDeleted).ToList();
-
_modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId);
- _modules = _modules.Where(item => item.IsDeleted).ToList();
}
private async Task RestorePage(Page page)
@@ -141,7 +140,7 @@
try
{
ModuleInstance.ShowProgressIndicator();
- foreach (Page page in _pages)
+ foreach (Page page in _pages.Where(item => item.IsDeleted))
{
await PageService.DeletePageAsync(page.PageId);
await logger.LogInformation("Page Permanently Deleted {Page}", page);
@@ -184,9 +183,8 @@
try
{
await PageModuleService.DeletePageModuleAsync(module.PageModuleId);
- // check if there are any remaining module instances in the site
- _modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId);
+ // check if there are any remaining module instances in the site
if (!_modules.Exists(item => item.ModuleId == module.ModuleId))
{
await ModuleService.DeleteModuleAsync(module.ModuleId);
@@ -208,12 +206,11 @@
try
{
ModuleInstance.ShowProgressIndicator();
- foreach (Module module in _modules)
+ foreach (Module module in _modules.Where(item => item.IsDeleted))
{
await PageModuleService.DeletePageModuleAsync(module.PageModuleId);
- // check if there are any remaining module instances in the site
- _modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId);
+ // check if there are any remaining module instances in the site
if (!_modules.Exists(item => item.ModuleId == module.ModuleId))
{
await ModuleService.DeleteModuleAsync(module.ModuleId);
diff --git a/Oqtane.Client/Modules/Admin/Themes/Index.razor b/Oqtane.Client/Modules/Admin/Themes/Index.razor
index 90213b9e..e613f553 100644
--- a/Oqtane.Client/Modules/Admin/Themes/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Themes/Index.razor
@@ -29,7 +29,7 @@ else
|
- @if (context.AssemblyName != "Oqtane.Client")
+ @if (context.AssemblyName != Constants.ClientId)
{
}
diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor
index a8f38030..13d67f4f 100644
--- a/Oqtane.Client/Modules/Admin/Users/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Users/Index.razor
@@ -286,6 +286,15 @@ else
+ @if (_providertype == AuthenticationProviderTypes.OpenIDConnect)
+ {
+
+ }
@@ -385,6 +394,7 @@ else
private string _redirecturl;
private string _identifierclaimtype;
private string _emailclaimtype;
+ private string _roleclaimtype;
private string _domainfilter;
private string _createusers;
@@ -436,8 +446,9 @@ else
_parameters = SettingService.GetSetting(settings, "ExternalLogin:Parameters", "");
_pkce = SettingService.GetSetting(settings, "ExternalLogin:PKCE", "false");
_redirecturl = PageState.Uri.Scheme + "://" + PageState.Alias.Name + "/signin-" + _providertype;
- _identifierclaimtype = SettingService.GetSetting(settings, "ExternalLogin:IdentifierClaimType", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier");
- _emailclaimtype = SettingService.GetSetting(settings, "ExternalLogin:EmailClaimType", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress");
+ _identifierclaimtype = SettingService.GetSetting(settings, "ExternalLogin:IdentifierClaimType", "sub");
+ _emailclaimtype = SettingService.GetSetting(settings, "ExternalLogin:EmailClaimType", "email");
+ _roleclaimtype = SettingService.GetSetting(settings, "ExternalLogin:RoleClaimType", "");
_domainfilter = SettingService.GetSetting(settings, "ExternalLogin:DomainFilter", "");
_createusers = SettingService.GetSetting(settings, "ExternalLogin:CreateUsers", "true");
@@ -555,6 +566,7 @@ else
settings = SettingService.SetSetting(settings, "ExternalLogin:PKCE", _pkce, true);
settings = SettingService.SetSetting(settings, "ExternalLogin:IdentifierClaimType", _identifierclaimtype, true);
settings = SettingService.SetSetting(settings, "ExternalLogin:EmailClaimType", _emailclaimtype, true);
+ settings = SettingService.SetSetting(settings, "ExternalLogin:RoleClaimType", _roleclaimtype, true);
settings = SettingService.SetSetting(settings, "ExternalLogin:DomainFilter", _domainfilter, true);
settings = SettingService.SetSetting(settings, "ExternalLogin:CreateUsers", _createusers, true);
@@ -590,14 +602,10 @@ else
if (_providertype == AuthenticationProviderTypes.OpenIDConnect)
{
_scopes = "openid,profile,email";
- _identifierclaimtype = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier";
- _emailclaimtype = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
}
else
{
_scopes = "";
- _identifierclaimtype = "sub";
- _emailclaimtype = "email";
}
}
_redirecturl = PageState.Uri.Scheme + "://" + PageState.Alias.Name + "/signin-" + _providertype;
diff --git a/Oqtane.Client/Modules/Controls/Pager.razor b/Oqtane.Client/Modules/Controls/Pager.razor
index e317f38b..1f2ce31c 100644
--- a/Oqtane.Client/Modules/Controls/Pager.razor
+++ b/Oqtane.Client/Modules/Controls/Pager.razor
@@ -70,6 +70,9 @@
}
}
+
+ @Footer
+
}
@@ -185,6 +188,9 @@
[Parameter]
public RenderFragment Row { get; set; } = null; // required
+ [Parameter]
+ public RenderFragment Footer { get; set; } = null; // only applicable to Table layouts
+
[Parameter]
public RenderFragment Detail { get; set; } = null; // only applicable to Table layouts
@@ -293,6 +299,7 @@
{
_page = 1;
}
+ if (_page < 1) _page = 1;
_startPage = 0;
_endPage = 0;
diff --git a/Oqtane.Client/Modules/Controls/RichTextEditor.razor b/Oqtane.Client/Modules/Controls/RichTextEditor.razor
index a67eb421..2231b02f 100644
--- a/Oqtane.Client/Modules/Controls/RichTextEditor.razor
+++ b/Oqtane.Client/Modules/Controls/RichTextEditor.razor
@@ -262,7 +262,7 @@
{
var interop = new Interop(JSRuntime);
int pos = await interop.GetCaretPosition("rawhtmleditor");
- var image = " ";
+ var image = " ";
_rawhtml = _rawhtml.Substring(0, pos) + image + _rawhtml.Substring(pos);
_rawfilemanager = false;
}
diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs
index be2c9d12..0d0b0eec 100644
--- a/Oqtane.Client/Modules/ModuleBase.cs
+++ b/Oqtane.Client/Modules/ModuleBase.cs
@@ -75,7 +75,7 @@ namespace Oqtane.Modules
var scripts = new List | |