[ENH] - Add Prerender IModuleControl property (similar to RenderMode) #4178

This commit is contained in:
vnetonline 2024-04-23 15:22:02 +10:00
parent 1e8e246ffb
commit cfb128acb8
6 changed files with 12 additions and 2 deletions

View File

@ -52,6 +52,8 @@ namespace Oqtane.Modules
public virtual string RenderMode { get { return RenderModes.Interactive; } } // interactive by default public virtual string RenderMode { get { return RenderModes.Interactive; } } // interactive by default
public virtual bool Prerender { get { return true; } } // prerender at server by default
// url parameters // url parameters
public virtual string UrlParametersTemplate { get; set; } public virtual string UrlParametersTemplate { get; set; }

View File

@ -7,7 +7,7 @@
} }
else else
{ {
<RenderModeBoundary ModuleState="@ModuleState" PageState="@PageState" SiteState="@SiteState" @rendermode="@InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, PageState.Site.Prerender)" /> <RenderModeBoundary ModuleState="@ModuleState" PageState="@PageState" SiteState="@SiteState" @rendermode="@InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, ModuleState.Prerender != false ? PageState.Site.Prerender : ModuleState.Prerender )" />
} }
@code { @code {

View File

@ -10,7 +10,7 @@
{ {
@if (ModuleType != null) @if (ModuleType != null)
{ {
@((MarkupString)$"<!-- rendermode: {ModuleState.RenderMode} -->") @((MarkupString)$"<!-- rendermode: {ModuleState.RenderMode} - prerender: {ModuleState.Prerender} -->")
<ModuleMessage @ref="moduleMessageTop" Message="@_messageContent" Type="@_messageType" /> <ModuleMessage @ref="moduleMessageTop" Message="@_messageContent" Type="@_messageType" />
@DynamicComponent @DynamicComponent
@if (_progressIndicator) @if (_progressIndicator)

View File

@ -476,6 +476,7 @@
// retrieve module component resources // retrieve module component resources
var moduleobject = Activator.CreateInstance(moduletype) as IModuleControl; var moduleobject = Activator.CreateInstance(moduletype) as IModuleControl;
module.RenderMode = moduleobject.RenderMode; module.RenderMode = moduleobject.RenderMode;
module.Prerender = moduleobject.Prerender;
page.Resources = ManagePageResources(page.Resources, moduleobject.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace); page.Resources = ManagePageResources(page.Resources, moduleobject.Resources, ResourceLevel.Module, alias, "Modules", moduletype.Namespace);
if (action.ToLower() == "settings" && module.ModuleDefinition != null) if (action.ToLower() == "settings" && module.ModuleDefinition != null)

View File

@ -35,5 +35,10 @@ namespace Oqtane.Modules
/// Specifies the required render mode for the module control ie. Static,Interactive /// Specifies the required render mode for the module control ie. Static,Interactive
/// </summary> /// </summary>
string RenderMode { get; } string RenderMode { get; }
/// <summary>
/// Specifies the prerender mode for the moudle control ie: true or false
/// </summary>
bool Prerender { get; }
} }
} }

View File

@ -117,6 +117,8 @@ namespace Oqtane.Models
public bool UseAdminContainer { get; set; } public bool UseAdminContainer { get; set; }
[NotMapped] [NotMapped]
public string RenderMode{ get; set; } public string RenderMode{ get; set; }
[NotMapped]
public bool Prerender { get; set; }
#endregion #endregion