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:
Shaun Walker 2020-12-01 19:36:02 -05:00
parent a875a5ad32
commit fd60b40c53
8 changed files with 29 additions and 48 deletions

View File

@ -24,7 +24,7 @@
private string _content = string.Empty;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
public override string Title => "Export Module";
public override string Title => "Export Content";
private async Task ExportModule()

View File

@ -24,7 +24,7 @@
private string _content = string.Empty;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
public override string Title => "Import Module";
public override string Title => "Import Content";
private async Task ImportModule()
{

View File

@ -121,7 +121,7 @@
_permissionNames = ModuleState.ModuleDefinition.PermissionNames;
_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)
{
var moduleobject = Activator.CreateInstance(_settingsModuleType) as IModuleControl;

View File

@ -9,21 +9,15 @@
@code {
private string title = "";
protected override Task OnParametersSetAsync()
protected override void OnParametersSet()
{
title = ModuleState.Title;
// check for core module actions component
if (Constants.DefaultModuleActions.Contains(PageState.Action))
if (!string.IsNullOrEmpty(ModuleState.ControlTitle))
{
title = PageState.Action;
title = ModuleState.ControlTitle;
}
else
{
if (!string.IsNullOrEmpty(ModuleState.ControlTitle))
{
title = ModuleState.ControlTitle;
}
title = ModuleState.Title;
}
return Task.CompletedTask;
}
}

View File

@ -1,4 +1,4 @@
@namespace Oqtane.UI
@namespace Oqtane.UI
<ModuleMessage Message="@_message" Type="@_messagetype" />
<CascadingValue Value="this">
@ -28,17 +28,10 @@
{
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;
if (typename != null)
if (!string.IsNullOrEmpty(ModuleState.ModuleType))
{
moduleType = Type.GetType(typename);
moduleType = Type.GetType(ModuleState.ModuleType);
if (moduleType != null)
{
@ -48,13 +41,13 @@
else
{
// 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;
}
}
else
{
_message = "Something is wrong with moduletype";
_message = "Module Type Is Invalid For " + ModuleState.ModuleDefinitionName;
_messagetype = MessageType.Error;
}

View File

@ -52,14 +52,7 @@ else
Module module = PageState.Modules.FirstOrDefault(item => item.ModuleId == PageState.ModuleId);
if (module != null && !module.IsDeleted)
{
var typename = 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);
var moduleType = Type.GetType(module.ModuleType);
if (moduleType != null)
{
bool authorized = false;
@ -96,7 +89,7 @@ else
}
else
{
// module control does not exist with name specified
// module type does not exist
}
}
}

View File

@ -230,7 +230,7 @@
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
{
@ -465,22 +465,23 @@
}
}
module.ModuleType = typename.Replace(Constants.ActionToken, action);
// get additional metadata from IModuleControl interface
typename = module.ModuleType;
if (Constants.DefaultModuleActions.Contains(action))
// ensure component exists and implements IModuleControl
module.ModuleType = "";
if (Constants.DefaultModuleActions.Contains(action, StringComparer.OrdinalIgnoreCase))
{
// core framework module action components
typename = Constants.DefaultModuleActionsTemplate.Replace(Constants.ActionToken, action);
}
Type moduletype = Type.GetType(typename);
// ensure component implements IModuleControl
if (moduletype != null && !moduletype.GetInterfaces().Contains(typeof(IModuleControl)))
else
{
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 != "")
{
var moduleobject = Activator.CreateInstance(moduletype) as IModuleControl;

View File

@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using Oqtane.Models;
@ -62,7 +62,7 @@ namespace Oqtane.Controllers
for (int i = segments.Length; i > 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)
{
break; // found a matching alias