render mode integration

This commit is contained in:
sbwalker
2024-01-31 15:22:21 -05:00
parent 764e1ac35f
commit 8e499d164a
23 changed files with 145 additions and 116 deletions

View File

@ -8,7 +8,7 @@
@using Microsoft.Net.Http.Headers
@using Microsoft.Extensions.Primitives
@using Oqtane.Client
@using Oqtane.Client.Utilities
@using Oqtane.UI
@using Oqtane.Repository
@using Oqtane.Infrastructure
@using Oqtane.Security
@ -47,26 +47,26 @@
@((MarkupString)_styleSheets)
<link id="app-stylesheet-page" />
<link id="app-stylesheet-module" />
@if (_renderMode == "Interactive")
@if (_renderMode == RenderModes.StaticServer)
{
<Head @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender.Contains("Prerendered"))" />
<Head />
}
else
{
<Head />
<Head @rendermode="@RenderMode.GetInteractiveRenderMode((_renderMode), _prerender)" />
}
@((MarkupString)_headResources)
</head>
<body>
@if (string.IsNullOrEmpty(_message))
{
@if (_renderMode == "Interactive")
@if (_renderMode == RenderModes.StaticServer)
{
<Routes AntiForgeryToken="@_antiForgeryToken" Runtime="@_interactiveRenderMode" RenderMode="@_prerender" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="@_authorizationToken" @rendermode="@RenderModes.GetInteractiveRenderMode((_renderMode + _interactiveRenderMode), _prerender.Contains("Prerendered"))" />
<Routes AntiForgeryToken="@_antiForgeryToken" RenderMode="@_renderMode" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="@_authorizationToken" />
}
else
{
<Routes AntiForgeryToken="@_antiForgeryToken" Runtime="@_interactiveRenderMode" RenderMode="@_prerender" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="@_authorizationToken" />
<Routes AntiForgeryToken="@_antiForgeryToken" RenderMode="@_renderMode" VisitorId="@_visitorId" RemoteIPAddress="@_remoteIPAddress" AuthorizationToken="@_authorizationToken" @rendermode="@RenderMode.GetInteractiveRenderMode((_renderMode), _prerender)" />
}
<script src="js/interop.js"></script>
@ -90,9 +90,8 @@
</html>
@code {
private string _renderMode = "Interactive";
private string _interactiveRenderMode = "Server";
private string _prerender = "Prerendered";
private string _renderMode = RenderModes.InteractiveServer;
private bool _prerender = true;
private int _visitorId = -1;
private string _remoteIPAddress = "";
private string _authorizationToken = "";
@ -128,16 +127,10 @@
}
var site = SiteRepository.GetSite(alias.SiteId);
if (site != null && (!site.IsDeleted || url.Contains("admin/site")) && site.Runtime != "Hybrid")
if (site != null && (!site.IsDeleted || url.Contains("admin/site")) && !site.Hybrid)
{
if (!string.IsNullOrEmpty(site.Runtime))
{
_interactiveRenderMode = site.Runtime;
}
if (!string.IsNullOrEmpty(site.RenderMode))
{
_prerender = site.RenderMode;
}
_renderMode = site.RenderMode;
_prerender = site.Prerender;
Route route = new Route(url, alias.Path);
var page = PageRepository.GetPage(route.PagePath, site.SiteId);
@ -186,7 +179,7 @@
ManageStyleSheets(resources, alias, theme.ThemeName);
// scripts
if (_interactiveRenderMode == "InteractiveServer")
if (_renderMode == RenderModes.InteractiveServer)
{
_reconnectScript = CreateReconnectScript();
}

View File

@ -119,7 +119,7 @@ namespace Oqtane.Controllers
var assemblyList = new List<ClientAssembly>();
var site = _sites.GetSite(alias.SiteId);
if (site != null && (site.Runtime == "WebAssembly" || site.HybridEnabled))
if (site != null && (site.RenderMode == "InteractiveWebAssembly" || site.Hybrid))
{
var binFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
@ -201,7 +201,7 @@ namespace Oqtane.Controllers
private byte[] GetZIP(string list, Alias alias)
{
var site = _sites.GetSite(alias.SiteId);
if (site != null && (site.Runtime == "WebAssembly" || site.HybridEnabled))
if (site != null && (site.RenderMode == "InteractiveWebAssembly" || site.Hybrid))
{
var binFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

View File

@ -212,7 +212,7 @@ namespace Oqtane.Controllers
site = _sites.UpdateSite(site);
_syncManager.AddSyncEvent(_alias.TenantId, EntityNames.Site, site.SiteId, SyncEventActions.Update);
string action = SyncEventActions.Refresh;
if (current.Runtime != site.Runtime || current.RenderMode != site.RenderMode)
if (current.RenderMode != site.RenderMode)
{
action = SyncEventActions.Reload;
}

View File

@ -556,9 +556,9 @@ namespace Oqtane.Infrastructure
DefaultContainerType = (!string.IsNullOrEmpty(install.DefaultContainer)) ? install.DefaultContainer : Constants.DefaultContainer,
AdminContainerType = (!string.IsNullOrEmpty(install.DefaultAdminContainer)) ? install.DefaultAdminContainer : Constants.DefaultAdminContainer,
SiteTemplateType = install.SiteTemplate,
Runtime = (!string.IsNullOrEmpty(install.Runtime)) ? install.Runtime : _configManager.GetSection("Runtime").Value,
RenderMode = (!string.IsNullOrEmpty(install.RenderMode)) ? install.RenderMode : _configManager.GetSection("RenderMode").Value,
HybridEnabled = false
Prerender = true,
Hybrid = false
};
site = sites.AddSite(site);

View File

@ -8,6 +8,7 @@ using Oqtane.Repository;
namespace Oqtane.Migrations.Tenant
{
[DbContext(typeof(TenantDBContext))]
// note that the following migration was actually for version 5.0.2 (ie. "Tenant.05.00.02.01")
[Migration("Tenant.05.01.00.01")]
public class AddPageEffectiveExpiryDate : MultiDatabaseMigration
{

View File

@ -8,6 +8,7 @@ using Oqtane.Repository;
namespace Oqtane.Migrations.Tenant
{
[DbContext(typeof(TenantDBContext))]
// note that the following migration was actually for version 5.0.2 (ie. "Tenant.05.00.02.02")
[Migration("Tenant.05.01.00.02")]
public class AddPageModuleEffectiveExpiryDate : MultiDatabaseMigration
{

View File

@ -7,6 +7,7 @@ using Oqtane.Repository;
namespace Oqtane.Migrations.Tenant
{
[DbContext(typeof(TenantDBContext))]
// note that the following migration was actually for version 5.0.2 (ie. "Tenant.05.00.02.03")
[Migration("Tenant.05.01.00.03")]
public class AddProfileAutocomplete : MultiDatabaseMigration
{

View File

@ -0,0 +1,39 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations.EntityBuilders;
using Oqtane.Repository;
using Oqtane.Shared;
namespace Oqtane.Migrations.Tenant
{
[DbContext(typeof(TenantDBContext))]
[Migration("Tenant.05.01.00.04")]
public class AddSitePrerender : MultiDatabaseMigration
{
public AddSitePrerender(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase);
siteEntityBuilder.UpdateColumn("RenderMode", $"'{RenderModes.InteractiveServer}'");
siteEntityBuilder.AddBooleanColumn("Prerender", true);
siteEntityBuilder.UpdateColumn("Prerender", "1", "bool", "");
siteEntityBuilder.AddBooleanColumn("Hybrid", true);
siteEntityBuilder.UpdateColumn("Hybrid", "0", "bool", "");
siteEntityBuilder.DropColumn("Runtime");
siteEntityBuilder.DropColumn("HybridEnabled");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
// not implemented
}
}
}