add support for Auto Prerendering
This commit is contained in:
parent
bf4052b550
commit
2ae120c878
@ -340,7 +340,7 @@
|
|||||||
<Label Class="col-sm-3" For="prerender" HelpText="Specifies if interactive components should prerender their output" ResourceKey="Prerender">Prerender? </Label>
|
<Label Class="col-sm-3" For="prerender" HelpText="Specifies if interactive components should prerender their output" ResourceKey="Prerender">Prerender? </Label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
<select id="prerender" class="form-select" @bind="@_prerender" required>
|
<select id="prerender" class="form-select" @bind="@_prerender" required>
|
||||||
<option value="True">@SharedLocalizer["Yes"]</option>
|
<option value="True">@SharedLocalizer["Auto"]</option>
|
||||||
<option value="False">@SharedLocalizer["No"]</option>
|
<option value="False">@SharedLocalizer["No"]</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
@ -52,7 +52,7 @@ 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 null; } } // prerender at server by default
|
public virtual bool? Prerender { get { return null; } } // allows the Site Prerender property to be overridden
|
||||||
|
|
||||||
// url parameters
|
// url parameters
|
||||||
public virtual string UrlParametersTemplate { get; set; }
|
public virtual string UrlParametersTemplate { get; set; }
|
||||||
|
@ -277,7 +277,7 @@
|
|||||||
<value>UI Component Settings</value>
|
<value>UI Component Settings</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Prerender.HelpText" xml:space="preserve">
|
<data name="Prerender.HelpText" xml:space="preserve">
|
||||||
<value>Specifies if interactive components should prerender their output</value>
|
<value>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.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Prerender.Text" xml:space="preserve">
|
<data name="Prerender.Text" xml:space="preserve">
|
||||||
<value>Prerender? </value>
|
<value>Prerender? </value>
|
||||||
|
@ -453,4 +453,7 @@
|
|||||||
<data name="RenderModeStatic" xml:space="preserve">
|
<data name="RenderModeStatic" xml:space="preserve">
|
||||||
<value>Static</value>
|
<value>Static</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Auto" xml:space="preserve">
|
||||||
|
<value>Auto</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
@ -10,6 +10,6 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<ModuleActionsInteractive PageState="@PageState" ModuleState="@ModuleState" @rendermode="@InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, PageState.Site.Prerender)" />
|
<ModuleActionsInteractive PageState="@PageState" ModuleState="@ModuleState" @rendermode="@InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, false)" />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<ControlPanelInteractive PageState="@PageState" SiteState="@SiteState" ButtonClass="@ButtonClass" ContainerClass="@ContainerClass" HeaderClass="@HeaderClass" BodyClass="@BodyClass" ShowLanguageSwitcher="@ShowLanguageSwitcher" LanguageDropdownAlignment="@LanguageDropdownAlignment" @rendermode="@InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, PageState.Site.Prerender)" />
|
<ControlPanelInteractive PageState="@PageState" SiteState="@SiteState" ButtonClass="@ButtonClass" ContainerClass="@ContainerClass" HeaderClass="@HeaderClass" BodyClass="@BodyClass" ShowLanguageSwitcher="@ShowLanguageSwitcher" LanguageDropdownAlignment="@LanguageDropdownAlignment" @rendermode="@InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, false)" />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
@namespace Oqtane.UI
|
@namespace Oqtane.UI
|
||||||
@inject SiteState SiteState
|
@inject SiteState SiteState
|
||||||
|
|
||||||
@if (PageState.RenderMode == RenderModes.Interactive || ModuleState.RenderMode == RenderModes.Static)
|
@if (_comment != null)
|
||||||
{
|
{
|
||||||
<RenderModeBoundary ModuleState="@ModuleState" PageState="@PageState" SiteState="@SiteState" />
|
@((MarkupString)_comment)
|
||||||
}
|
@if (PageState.RenderMode == RenderModes.Interactive || ModuleState.RenderMode == RenderModes.Static)
|
||||||
else
|
{
|
||||||
{
|
<RenderModeBoundary ModuleState="@ModuleState" PageState="@PageState" SiteState="@SiteState" />
|
||||||
<RenderModeBoundary ModuleState="@ModuleState" PageState="@PageState" SiteState="@SiteState" @rendermode="InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, ModuleState.Prerender ?? PageState.Site.Prerender)" />
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<RenderModeBoundary ModuleState="@ModuleState" PageState="@PageState" SiteState="@SiteState" @rendermode="InteractiveRenderMode.GetInteractiveRenderMode(PageState.Site.Runtime, _prerender)" />
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
@ -20,6 +24,24 @@ else
|
|||||||
[CascadingParameter]
|
[CascadingParameter]
|
||||||
private Module ModuleState { get; set; }
|
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 = "<!-- rendermode: ";
|
||||||
|
if (PageState.RenderMode == RenderModes.Static && ModuleState.RenderMode == RenderModes.Static)
|
||||||
|
{
|
||||||
|
_comment += RenderModes.Static;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_comment += $"{RenderModes.Interactive}:{PageState.Runtime} - prerender: {_prerender}";
|
||||||
|
}
|
||||||
|
_comment += " -->";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[Obsolete("AddModuleMessage is deprecated. Use AddModuleMessage in ModuleBase instead.", false)]
|
[Obsolete("AddModuleMessage is deprecated. Use AddModuleMessage in ModuleBase instead.", false)]
|
||||||
public void AddModuleMessage(string message, MessageType type)
|
public void AddModuleMessage(string message, MessageType type)
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
{
|
{
|
||||||
@if (ModuleType != null)
|
@if (ModuleType != null)
|
||||||
{
|
{
|
||||||
@((MarkupString)$"<!-- rendermode: {((PageState.RenderMode == RenderModes.Static && ModuleState.RenderMode == RenderModes.Static) ? RenderModes.Static : RenderModes.Interactive + ":" + PageState.Runtime)} - prerender: {ModuleState.Prerender ?? PageState.Site.Prerender} -->")
|
|
||||||
<ModuleMessage @ref="moduleMessageTop" Message="@_messageContent" Type="@_messageType" />
|
<ModuleMessage @ref="moduleMessageTop" Message="@_messageContent" Type="@_messageType" />
|
||||||
@DynamicComponent
|
@DynamicComponent
|
||||||
@if (_progressIndicator)
|
@if (_progressIndicator)
|
||||||
|
@ -139,7 +139,7 @@
|
|||||||
{
|
{
|
||||||
_renderMode = site.RenderMode;
|
_renderMode = site.RenderMode;
|
||||||
_runtime = site.Runtime;
|
_runtime = site.Runtime;
|
||||||
_prerender = site.Prerender;
|
_prerender = site.Prerender && !Context.User.Identity.IsAuthenticated;
|
||||||
|
|
||||||
Route route = new Route(url, alias.Path);
|
Route route = new Route(url, alias.Path);
|
||||||
var page = site.Pages.FirstOrDefault(item => item.Path.Equals(route.PagePath, StringComparison.OrdinalIgnoreCase));
|
var page = site.Pages.FirstOrDefault(item => item.Path.Equals(route.PagePath, StringComparison.OrdinalIgnoreCase));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user