Fixes to make site alias, page path, and module action Url resolutions case insensitive. Optimized logic for Settings component which fixed localization rendering issue.
This commit is contained in:
parent
a875a5ad32
commit
fd60b40c53
|
@ -24,7 +24,7 @@
|
||||||
private string _content = string.Empty;
|
private string _content = string.Empty;
|
||||||
|
|
||||||
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
|
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
|
||||||
public override string Title => "Export Module";
|
public override string Title => "Export Content";
|
||||||
|
|
||||||
|
|
||||||
private async Task ExportModule()
|
private async Task ExportModule()
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
private string _content = string.Empty;
|
private string _content = string.Empty;
|
||||||
|
|
||||||
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
|
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
|
||||||
public override string Title => "Import Module";
|
public override string Title => "Import Content";
|
||||||
|
|
||||||
private async Task ImportModule()
|
private async Task ImportModule()
|
||||||
{
|
{
|
||||||
|
|
|
@ -121,7 +121,7 @@
|
||||||
_permissionNames = ModuleState.ModuleDefinition.PermissionNames;
|
_permissionNames = ModuleState.ModuleDefinition.PermissionNames;
|
||||||
_pageId = ModuleState.PageId.ToString();
|
_pageId = ModuleState.PageId.ToString();
|
||||||
|
|
||||||
_settingsModuleType = Type.GetType(ModuleState.ModuleType);
|
_settingsModuleType = Type.GetType(ModuleState.ModuleDefinition.ControlTypeTemplate.Replace(Constants.ActionToken, PageState.Action), false, true);
|
||||||
if (_settingsModuleType != null)
|
if (_settingsModuleType != null)
|
||||||
{
|
{
|
||||||
var moduleobject = Activator.CreateInstance(_settingsModuleType) as IModuleControl;
|
var moduleobject = Activator.CreateInstance(_settingsModuleType) as IModuleControl;
|
||||||
|
|
|
@ -9,21 +9,15 @@
|
||||||
@code {
|
@code {
|
||||||
private string title = "";
|
private string title = "";
|
||||||
|
|
||||||
protected override Task OnParametersSetAsync()
|
protected override void OnParametersSet()
|
||||||
{
|
{
|
||||||
title = ModuleState.Title;
|
if (!string.IsNullOrEmpty(ModuleState.ControlTitle))
|
||||||
// check for core module actions component
|
|
||||||
if (Constants.DefaultModuleActions.Contains(PageState.Action))
|
|
||||||
{
|
{
|
||||||
title = PageState.Action;
|
title = ModuleState.ControlTitle;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(ModuleState.ControlTitle))
|
title = ModuleState.Title;
|
||||||
{
|
|
||||||
title = ModuleState.ControlTitle;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
@namespace Oqtane.UI
|
@namespace Oqtane.UI
|
||||||
|
|
||||||
<ModuleMessage Message="@_message" Type="@_messagetype" />
|
<ModuleMessage Message="@_message" Type="@_messagetype" />
|
||||||
<CascadingValue Value="this">
|
<CascadingValue Value="this">
|
||||||
|
@ -28,17 +28,10 @@
|
||||||
{
|
{
|
||||||
DynamicComponent = builder =>
|
DynamicComponent = builder =>
|
||||||
{
|
{
|
||||||
string typename = ModuleState.ModuleType;
|
|
||||||
// check for core module actions component
|
|
||||||
if (Constants.DefaultModuleActions.Contains(PageState.Action))
|
|
||||||
{
|
|
||||||
typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, PageState.Action);
|
|
||||||
}
|
|
||||||
|
|
||||||
Type moduleType = null;
|
Type moduleType = null;
|
||||||
if (typename != null)
|
if (!string.IsNullOrEmpty(ModuleState.ModuleType))
|
||||||
{
|
{
|
||||||
moduleType = Type.GetType(typename);
|
moduleType = Type.GetType(ModuleState.ModuleType);
|
||||||
|
|
||||||
if (moduleType != null)
|
if (moduleType != null)
|
||||||
{
|
{
|
||||||
|
@ -48,13 +41,13 @@
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// module does not exist with typename specified
|
// module does not exist with typename specified
|
||||||
_message = "Module Does Not Have A Component Named " + Utilities.GetTypeNameLastSegment(typename, 0) + ".razor";
|
_message = "Module Does Not Have A Component Named " + Utilities.GetTypeNameLastSegment(ModuleState.ModuleType, 0) + ".razor";
|
||||||
_messagetype = MessageType.Error;
|
_messagetype = MessageType.Error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_message = "Something is wrong with moduletype";
|
_message = "Module Type Is Invalid For " + ModuleState.ModuleDefinitionName;
|
||||||
_messagetype = MessageType.Error;
|
_messagetype = MessageType.Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,14 +52,7 @@ else
|
||||||
Module module = PageState.Modules.FirstOrDefault(item => item.ModuleId == PageState.ModuleId);
|
Module module = PageState.Modules.FirstOrDefault(item => item.ModuleId == PageState.ModuleId);
|
||||||
if (module != null && !module.IsDeleted)
|
if (module != null && !module.IsDeleted)
|
||||||
{
|
{
|
||||||
var typename = module.ModuleType;
|
var moduleType = Type.GetType(module.ModuleType);
|
||||||
// check for core module actions component
|
|
||||||
if (Constants.DefaultModuleActions.Contains(PageState.Action))
|
|
||||||
{
|
|
||||||
typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, PageState.Action);
|
|
||||||
}
|
|
||||||
|
|
||||||
var moduleType = Type.GetType(typename);
|
|
||||||
if (moduleType != null)
|
if (moduleType != null)
|
||||||
{
|
{
|
||||||
bool authorized = false;
|
bool authorized = false;
|
||||||
|
@ -96,7 +89,7 @@ else
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// module control does not exist with name specified
|
// module type does not exist
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,7 +230,7 @@
|
||||||
|
|
||||||
if (PageState == null || reload == Reload.Site)
|
if (PageState == null || reload == Reload.Site)
|
||||||
{
|
{
|
||||||
page = pages.Where(item => item.Path == path).FirstOrDefault();
|
page = pages.FirstOrDefault(item => item.Path.Equals(path, StringComparison.OrdinalIgnoreCase));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -465,22 +465,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.ModuleType = typename.Replace(Constants.ActionToken, action);
|
// ensure component exists and implements IModuleControl
|
||||||
|
module.ModuleType = "";
|
||||||
// get additional metadata from IModuleControl interface
|
if (Constants.DefaultModuleActions.Contains(action, StringComparer.OrdinalIgnoreCase))
|
||||||
typename = module.ModuleType;
|
|
||||||
if (Constants.DefaultModuleActions.Contains(action))
|
|
||||||
{
|
{
|
||||||
// core framework module action components
|
|
||||||
typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, action);
|
typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, action);
|
||||||
}
|
}
|
||||||
Type moduletype = Type.GetType(typename);
|
else
|
||||||
|
|
||||||
// ensure component implements IModuleControl
|
|
||||||
if (moduletype != null && !moduletype.GetInterfaces().Contains(typeof(IModuleControl)))
|
|
||||||
{
|
{
|
||||||
module.ModuleType = "";
|
typename = typename.Replace(Constants.ActionToken, action);
|
||||||
}
|
}
|
||||||
|
Type moduletype = Type.GetType(typename, false, true); // case insensitive
|
||||||
|
if (moduletype != null && moduletype.GetInterfaces().Contains(typeof(IModuleControl)))
|
||||||
|
{
|
||||||
|
module.ModuleType = Utilities.GetFullTypeName(moduletype.AssemblyQualifiedName); // get actual type name
|
||||||
|
}
|
||||||
|
|
||||||
|
// get additional metadata from IModuleControl interface
|
||||||
if (moduletype != null && module.ModuleType != "")
|
if (moduletype != null && module.ModuleType != "")
|
||||||
{
|
{
|
||||||
var moduleobject = Activator.CreateInstance(moduletype) as IModuleControl;
|
var moduleobject = Activator.CreateInstance(moduletype) as IModuleControl;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Oqtane.Models;
|
using Oqtane.Models;
|
||||||
|
@ -62,7 +62,7 @@ namespace Oqtane.Controllers
|
||||||
for (int i = segments.Length; i > 0; i--)
|
for (int i = segments.Length; i > 0; i--)
|
||||||
{
|
{
|
||||||
name = string.Join("/", segments, 0, i);
|
name = string.Join("/", segments, 0, i);
|
||||||
alias = aliases.Find(item => item.Name == name);
|
alias = aliases.Find(item => item.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
|
||||||
if (alias != null)
|
if (alias != null)
|
||||||
{
|
{
|
||||||
break; // found a matching alias
|
break; // found a matching alias
|
||||||
|
|
Loading…
Reference in New Issue
Block a user