From 2ae120c87889622e0c7510b2a207e489a32fa3a8 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Thu, 9 May 2024 14:42:54 -0400 Subject: [PATCH] add support for Auto Prerendering --- Oqtane.Client/Modules/Admin/Site/Index.razor | 2 +- Oqtane.Client/Modules/ModuleBase.cs | 2 +- .../Resources/Modules/Admin/Site/Index.resx | 2 +- Oqtane.Client/Resources/SharedResources.resx | 3 ++ .../Controls/Container/ModuleActions.razor | 2 +- .../Themes/Controls/Theme/ControlPanel.razor | 2 +- Oqtane.Client/UI/ModuleInstance.razor | 34 +++++++++++++++---- Oqtane.Client/UI/RenderModeBoundary.razor | 1 - Oqtane.Server/Components/App.razor | 2 +- 9 files changed, 37 insertions(+), 13 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 56df0b3e..633760e7 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -340,7 +340,7 @@
diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index 46fd01db..4c5bb670 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -52,7 +52,7 @@ namespace Oqtane.Modules public virtual string RenderMode { get { return RenderModes.Interactive; } } // interactive by default - public virtual bool? Prerender { get { return null; } } // prerender at server by default + public virtual bool? Prerender { get { return null; } } // allows the Site Prerender property to be overridden // url parameters public virtual string UrlParametersTemplate { get; set; } diff --git a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx index 4617bd91..a6b10f64 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx @@ -277,7 +277,7 @@ UI Component Settings - Specifies if interactive components should prerender their output + Specifies if interactive components should prerender their output. The default is Auto which determines if a component should be prerendered at runtime based on the environment. Prerender? diff --git a/Oqtane.Client/Resources/SharedResources.resx b/Oqtane.Client/Resources/SharedResources.resx index dd4bc841..fd26490e 100644 --- a/Oqtane.Client/Resources/SharedResources.resx +++ b/Oqtane.Client/Resources/SharedResources.resx @@ -453,4 +453,7 @@ Static + + Auto + \ No newline at end of file diff --git a/Oqtane.Client/Themes/Controls/Container/ModuleActions.razor b/Oqtane.Client/Themes/Controls/Container/ModuleActions.razor index 749519a6..d2c7f6a1 100644 --- a/Oqtane.Client/Themes/Controls/Container/ModuleActions.razor +++ b/Oqtane.Client/Themes/Controls/Container/ModuleActions.razor @@ -10,6 +10,6 @@ } else { - + } } diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor index 119f7690..c453117b 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor @@ -36,7 +36,7 @@ } else { - + } } diff --git a/Oqtane.Client/UI/ModuleInstance.razor b/Oqtane.Client/UI/ModuleInstance.razor index 37dd6d20..f501523d 100644 --- a/Oqtane.Client/UI/ModuleInstance.razor +++ b/Oqtane.Client/UI/ModuleInstance.razor @@ -1,13 +1,17 @@ @namespace Oqtane.UI @inject SiteState SiteState -@if (PageState.RenderMode == RenderModes.Interactive || ModuleState.RenderMode == RenderModes.Static) +@if (_comment != null) { - -} -else -{ - + @((MarkupString)_comment) + @if (PageState.RenderMode == RenderModes.Interactive || ModuleState.RenderMode == RenderModes.Static) + { + + } + else + { + + } } @code { @@ -20,6 +24,24 @@ else [CascadingParameter] private Module ModuleState { get; set; } + private bool _prerender; + private string _comment; + + protected override void OnParametersSet() + { + _prerender = ModuleState.Prerender ?? (PageState.Site.Prerender && PageState.User == null); + _comment = ""; + } + [Obsolete("AddModuleMessage is deprecated. Use AddModuleMessage in ModuleBase instead.", false)] public void AddModuleMessage(string message, MessageType type) diff --git a/Oqtane.Client/UI/RenderModeBoundary.razor b/Oqtane.Client/UI/RenderModeBoundary.razor index 2d9c8e07..b1f56793 100644 --- a/Oqtane.Client/UI/RenderModeBoundary.razor +++ b/Oqtane.Client/UI/RenderModeBoundary.razor @@ -10,7 +10,6 @@ { @if (ModuleType != null) { - @((MarkupString)$"") @DynamicComponent @if (_progressIndicator) diff --git a/Oqtane.Server/Components/App.razor b/Oqtane.Server/Components/App.razor index 541d08e4..61aad936 100644 --- a/Oqtane.Server/Components/App.razor +++ b/Oqtane.Server/Components/App.razor @@ -139,7 +139,7 @@ { _renderMode = site.RenderMode; _runtime = site.Runtime; - _prerender = site.Prerender; + _prerender = site.Prerender && !Context.User.Identity.IsAuthenticated; Route route = new Route(url, alias.Path); var page = site.Pages.FirstOrDefault(item => item.Path.Equals(route.PagePath, StringComparison.OrdinalIgnoreCase));