diff --git a/Oqtane.Client/Modules/Admin/Modules/Export.razor b/Oqtane.Client/Modules/Admin/Modules/Export.razor
index 80010036..fd1aa71c 100644
--- a/Oqtane.Client/Modules/Admin/Modules/Export.razor
+++ b/Oqtane.Client/Modules/Admin/Modules/Export.razor
@@ -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()
diff --git a/Oqtane.Client/Modules/Admin/Modules/Import.razor b/Oqtane.Client/Modules/Admin/Modules/Import.razor
index b3ace332..585aeeda 100644
--- a/Oqtane.Client/Modules/Admin/Modules/Import.razor
+++ b/Oqtane.Client/Modules/Admin/Modules/Import.razor
@@ -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()
{
diff --git a/Oqtane.Client/Modules/Admin/Modules/Settings.razor b/Oqtane.Client/Modules/Admin/Modules/Settings.razor
index 95bb5cec..a4bd4188 100644
--- a/Oqtane.Client/Modules/Admin/Modules/Settings.razor
+++ b/Oqtane.Client/Modules/Admin/Modules/Settings.razor
@@ -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;
diff --git a/Oqtane.Client/Themes/Controls/ModuleTitle.razor b/Oqtane.Client/Themes/Controls/ModuleTitle.razor
index 0dd706ee..24a5da86 100644
--- a/Oqtane.Client/Themes/Controls/ModuleTitle.razor
+++ b/Oqtane.Client/Themes/Controls/ModuleTitle.razor
@@ -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;
}
}
diff --git a/Oqtane.Client/UI/ModuleInstance.razor b/Oqtane.Client/UI/ModuleInstance.razor
index 80af124d..c619f268 100644
--- a/Oqtane.Client/UI/ModuleInstance.razor
+++ b/Oqtane.Client/UI/ModuleInstance.razor
@@ -1,4 +1,4 @@
-@namespace Oqtane.UI
+@namespace Oqtane.UI
@@ -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;
}
diff --git a/Oqtane.Client/UI/Pane.razor b/Oqtane.Client/UI/Pane.razor
index 028fca3f..0c04ff94 100644
--- a/Oqtane.Client/UI/Pane.razor
+++ b/Oqtane.Client/UI/Pane.razor
@@ -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
}
}
}
diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor
index f8406a13..082e04ee 100644
--- a/Oqtane.Client/UI/SiteRouter.razor
+++ b/Oqtane.Client/UI/SiteRouter.razor
@@ -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;
diff --git a/Oqtane.Server/Controllers/AliasController.cs b/Oqtane.Server/Controllers/AliasController.cs
index 188160a0..8956bac7 100644
--- a/Oqtane.Server/Controllers/AliasController.cs
+++ b/Oqtane.Server/Controllers/AliasController.cs
@@ -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