diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 525f45df..59e10be5 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -411,6 +411,18 @@ + @if (_rendermode == RenderModes.Static) + { +
+ +
+ +
+
+ }
@@ -537,6 +549,7 @@ private string _defaultalias; private string _rendermode = RenderModes.Interactive; + private string _enhancednavigation = "True"; private string _runtime = Runtimes.Server; private string _prerender = "True"; private string _hybrid = "False"; @@ -660,6 +673,7 @@ // hosting model _rendermode = site.RenderMode; + _enhancednavigation = site.EnhancedNavigation.ToString(); _runtime = site.Runtime; _prerender = site.Prerender.ToString(); _hybrid = site.Hybrid.ToString(); @@ -807,13 +821,11 @@ // hosting model if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { - if (site.RenderMode != _rendermode || site.Runtime != _runtime || site.Prerender != bool.Parse(_prerender) || site.Hybrid != bool.Parse(_hybrid)) - { - site.RenderMode = _rendermode; - site.Runtime = _runtime; - site.Prerender = bool.Parse(_prerender); - site.Hybrid = bool.Parse(_hybrid); - } + site.RenderMode = _rendermode; + site.EnhancedNavigation = bool.Parse(_enhancednavigation); + site.Runtime = _runtime; + site.Prerender = bool.Parse(_prerender); + site.Hybrid = bool.Parse(_hybrid); } site = await SiteService.UpdateSiteAsync(site); diff --git a/Oqtane.Server/Components/App.razor b/Oqtane.Server/Components/App.razor index 333ed42f..0082e669 100644 --- a/Oqtane.Server/Components/App.razor +++ b/Oqtane.Server/Components/App.razor @@ -60,7 +60,7 @@ } @((MarkupString)_headResources) - + @if (string.IsNullOrEmpty(_message)) { @if (_renderMode == RenderModes.Static) @@ -97,6 +97,7 @@ private string _renderMode = RenderModes.Interactive; private string _runtime = Runtimes.Server; private bool _prerender = true; + private bool _enhancedNavigation = true; private string _fingerprint = ""; private int _visitorId = -1; private string _antiForgeryToken = ""; @@ -141,6 +142,7 @@ _renderMode = site.RenderMode; _runtime = site.Runtime; _prerender = site.Prerender; + _enhancedNavigation = site.EnhancedNavigation; _fingerprint = site.Fingerprint; var cookieConsentSettings = SettingService.GetSetting(site.Settings, "CookieConsent", string.Empty); diff --git a/Oqtane.Server/Migrations/Tenant/10000101_AddSiteEnhancedNavigation.cs b/Oqtane.Server/Migrations/Tenant/10000101_AddSiteEnhancedNavigation.cs new file mode 100644 index 00000000..b119c2ee --- /dev/null +++ b/Oqtane.Server/Migrations/Tenant/10000101_AddSiteEnhancedNavigation.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Oqtane.Databases.Interfaces; +using Oqtane.Migrations.EntityBuilders; +using Oqtane.Repository; + +namespace Oqtane.Migrations.Tenant +{ + [DbContext(typeof(TenantDBContext))] + [Migration("Tenant.10.00.01.01")] + public class AddSiteEnhancedNavigation : MultiDatabaseMigration + { + public AddSiteEnhancedNavigation(IDatabase database) : base(database) + { + } + + protected override void Up(MigrationBuilder migrationBuilder) + { + var siteEntityBuilder = new SiteEntityBuilder(migrationBuilder, ActiveDatabase); + siteEntityBuilder.AddBooleanColumn("EnhancedNavigation", true); + siteEntityBuilder.UpdateData("EnhancedNavigation", true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + // not implemented + } + } +} diff --git a/Oqtane.Shared/Models/Site.cs b/Oqtane.Shared/Models/Site.cs index e674be2e..a00fa5b1 100644 --- a/Oqtane.Shared/Models/Site.cs +++ b/Oqtane.Shared/Models/Site.cs @@ -115,6 +115,11 @@ namespace Oqtane.Models /// public bool Hybrid { get; set; } + /// + /// Indicates if enhanced navigation should be used with static rendering + /// + public bool EnhancedNavigation { get; set; } + /// /// Keeps track of site configuration changes and is used by the ISiteMigration interface /// @@ -222,6 +227,7 @@ namespace Oqtane.Models Runtime = Runtime, Prerender = Prerender, Hybrid = Hybrid, + EnhancedNavigation = EnhancedNavigation, Version = Version, HomePageId = HomePageId, HeadContent = HeadContent,