diff --git a/Oqtane.Client/Modules/Controls/ModuleMessage.razor b/Oqtane.Client/Modules/Controls/ModuleMessage.razor index 283b890a..b51038d9 100644 --- a/Oqtane.Client/Modules/Controls/ModuleMessage.razor +++ b/Oqtane.Client/Modules/Controls/ModuleMessage.razor @@ -1,11 +1,10 @@ @namespace Oqtane.Modules.Controls @inherits ModuleBase -@if (Message != "") +@if (!string.IsNullOrEmpty(message)) { -
@Message
-
-
+ +

} @code { @@ -15,24 +14,39 @@ [Parameter] public MessageType Type { get; set; } - string type = "alert alert-danger"; + string message = ""; + string classname = "alert alert-danger"; - protected override void OnInitialized() + protected override void OnParametersSet() { - switch (Type) + message = Message; + classname = GetMessageType(Type); + } + + public void SetModuleMessage(string message, MessageType type) + { + this.message = message; + classname = GetMessageType(type); + } + + private string GetMessageType(MessageType type) + { + string classname = ""; + switch (type) { case MessageType.Success: - type = "alert alert-success"; + classname = "alert alert-success"; break; case MessageType.Info: - type = "alert alert-info"; + classname = "alert alert-info"; break; case MessageType.Warning: - type = "alert alert-warning"; + classname = "alert alert-warning"; break; case MessageType.Error: - type = "alert alert-danger"; + classname = "alert alert-danger"; break; } + return classname; } } diff --git a/Oqtane.Client/Modules/HtmlText/Index.razor b/Oqtane.Client/Modules/HtmlText/Index.razor index 24639b22..df8b8ce4 100644 --- a/Oqtane.Client/Modules/HtmlText/Index.razor +++ b/Oqtane.Client/Modules/HtmlText/Index.razor @@ -6,17 +6,13 @@ @inject HttpClient http @inject SiteState sitestate - - @((MarkupString)content)
-
-
+

@code { - string message = ""; string content; protected override async Task OnParametersSetAsync() @@ -32,7 +28,7 @@ } catch (Exception ex) { - message = ex.Message; + ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); } } } \ No newline at end of file diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index 24d04354..0654801f 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -17,6 +17,9 @@ namespace Oqtane.Modules [CascadingParameter] protected Module ModuleState { get; set; } + [CascadingParameter] + protected ModuleInstance ModuleInstance { get; set; } + public virtual SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.View; } set { } } // default security public virtual string Title { get { return ""; } } diff --git a/Oqtane.Client/Shared/ModuleInstance.razor b/Oqtane.Client/Shared/ModuleInstance.razor index 3e31897a..51dcae06 100644 --- a/Oqtane.Client/Shared/ModuleInstance.razor +++ b/Oqtane.Client/Shared/ModuleInstance.razor @@ -1,6 +1,9 @@ @namespace Oqtane.Shared -@DynamicComponent + + + @DynamicComponent + @code { [CascadingParameter] @@ -9,6 +12,8 @@ [CascadingParameter] private Module ModuleState { get; set; } + private ModuleMessage modulemessage { get; set; } + RenderFragment DynamicComponent { get; set; } protected override void OnParametersSet() @@ -32,11 +37,14 @@ } else { - // module does not exist with typename specified - builder.OpenComponent(0, Type.GetType(Constants.ModuleMessageControl)); - builder.AddAttribute(1, "Message", "Error Loading Component For Module " + ModuleState.ModuleDefinitionName); - builder.CloseComponent(); + // module does not exist with typename specified + modulemessage.SetModuleMessage("Error Loading Component For Module " + ModuleState.ModuleDefinitionName, MessageType.Error); } }; } + + public void AddModuleMessage(string message, MessageType type) + { + modulemessage.SetModuleMessage(message, type); + } } diff --git a/Oqtane.Server/Startup.cs b/Oqtane.Server/Startup.cs index ed9b1c39..026bc3ca 100644 --- a/Oqtane.Server/Startup.cs +++ b/Oqtane.Server/Startup.cs @@ -33,6 +33,7 @@ namespace Oqtane.Server public class Startup { public IConfigurationRoot Configuration { get; } + public Startup(IWebHostEnvironment env) { var builder = new ConfigurationBuilder() @@ -329,6 +330,8 @@ namespace Oqtane.Server // register custom claims principal factory for role claims services.AddTransient, ClaimsPrincipalFactory>(); + // register singleton scoped core services + services.AddSingleton(Configuration); services.AddSingleton(); // install any modules or themes