From aaa9662ed4fbd9d54d68b53daa4f2a108897d2a2 Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Fri, 21 May 2021 00:56:52 +0200 Subject: [PATCH 01/10] Update BreadCrumb.ascx.cs Invalid Breadcrumb Metadata for Disabled Pages Fixes #4667 Google Search Console complains about invalid metadata for disabled pages (Missing field "item"). The metadata for disabled pages should not be rendered as an "itemListElement". "itemListElement" lists need to have at least one "item", but there is no item getting rendered in case the page is disabled. Issue https://github.com/dnnsoftware/Dnn.Platform/issues/4667 --- .../Website/admin/Skins/BreadCrumb.ascx.cs | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index 6817d696359..11106e88fe9 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -175,18 +175,19 @@ protected override void OnLoad(EventArgs e) // Begin breadcrumb this._breadcrumb.Append(""); - // Is this tab disabled? If so, only render the text - if (tab.DisableLink) - { - this._breadcrumb.Append("" + tabName + ""); - } - else - { - this._breadcrumb.Append("" + tabName + ""); + // Is this tab disabled? If so, only render a span + if (tab.DisableLink) + { + this._breadcrumb.Append("" + tabName + ""); + } + else + { + // An enabled page, render the breadcrumb + this._breadcrumb.Append(""); + this._breadcrumb.Append("" + tabName + ""); + this._breadcrumb.Append(""); // Notice we post-increment the position variable + this._breadcrumb.Append(""); } - - this._breadcrumb.Append(""); // Notice we post-increment the position variable - this._breadcrumb.Append(""); } this._breadcrumb.Append(""); // End of BreadcrumbList From 8a26bf0d6196dd2b41083d79bdd391ca80851388 Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Fri, 21 May 2021 03:35:58 +0200 Subject: [PATCH 02/10] Update BreadCrumb.ascx.cs Removed duplicate line --- DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index 11106e88fe9..39ce29f80f7 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -172,9 +172,6 @@ protected override void OnLoad(EventArgs e) tabUrl = this._navigationManager.NavigateURL(tab.TabID, string.Empty, "GroupId=" + this.GroupId); } - // Begin breadcrumb - this._breadcrumb.Append(""); - // Is this tab disabled? If so, only render a span if (tab.DisableLink) { From c007ea26d3053b162eeacc8a930e6e8cb808ca9a Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Sat, 22 May 2021 16:09:55 +0200 Subject: [PATCH 03/10] Update BreadCrumb.ascx.cs Added an additional span to improve compatibility with existing skins expecting a wrapping span. --- DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index 39ce29f80f7..dbc75b0d5e6 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -175,7 +175,7 @@ protected override void OnLoad(EventArgs e) // Is this tab disabled? If so, only render a span if (tab.DisableLink) { - this._breadcrumb.Append("" + tabName + ""); + this._breadcrumb.Append("" + tabName + ""); } else { From 833c7c9f3558352c65cd84852a4a9371d96b565f Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Mon, 24 May 2021 11:22:58 +0200 Subject: [PATCH 04/10] Update BreadCrumb.ascx.cs Added LegacyMode for the skin object. The default (LegacyMode="True") will render the span wrapped in a span. If setting it to "False" it will not wrap the span for disabled pages. This is made to optionally not render unnecessary HTML, while providing skin compatibility with the default setting. --- .../Website/admin/Skins/BreadCrumb.ascx.cs | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index dbc75b0d5e6..96ddf4f8e23 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -31,7 +31,8 @@ public partial class BreadCrumb : SkinObjectBase public BreadCrumb() { - this._navigationManager = Globals.DependencyProvider.GetRequiredService(); + this._navigationManager = Globals.DependencyProvider.GetRequiredService(); + this.LegacyMode = true; } public int ProfileUserId @@ -89,7 +90,12 @@ public string RootLevel public bool UseTitle { get; set; } // Do not show when there is no breadcrumb (only has current tab) - public bool HideWithNoBreadCrumb { get; set; } + public bool HideWithNoBreadCrumb { get; set; } + + /// + /// Gets or sets a value indicating whether set this to false in the skin to take advantage of the enhanced markup. + /// + public bool LegacyMode { get; set; } protected override void OnLoad(EventArgs e) { @@ -172,18 +178,21 @@ protected override void OnLoad(EventArgs e) tabUrl = this._navigationManager.NavigateURL(tab.TabID, string.Empty, "GroupId=" + this.GroupId); } - // Is this tab disabled? If so, only render a span - if (tab.DisableLink) + // Is this tab disabled? If so, only render a span + if (tab.DisableLink) { - this._breadcrumb.Append("" + tabName + ""); - } - else + if (this.LegacyMode) + this._breadcrumb.Append("" + tabName + ""); + else + this._breadcrumb.Append("" + tabName + ""); + } + else { // An enabled page, render the breadcrumb - this._breadcrumb.Append(""); + this._breadcrumb.Append(""); this._breadcrumb.Append("" + tabName + ""); this._breadcrumb.Append(""); // Notice we post-increment the position variable - this._breadcrumb.Append(""); + this._breadcrumb.Append(""); } } From 901d850f326a3a9b69d2a3669bd5229ff61a31c8 Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Mon, 24 May 2021 17:36:39 +0200 Subject: [PATCH 05/10] Update BreadCrumb.xml Added new LegacyMode setting. --- DNN Platform/Website/admin/Skins/BreadCrumb.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.xml b/DNN Platform/Website/admin/Skins/BreadCrumb.xml index 7c06f9e70f2..358762eceeb 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.xml +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.xml @@ -23,4 +23,10 @@ Defines whether to use the page Name or the page Title True,False + + LegacyMode + Boolean + Defines whether to wrap span rendered for disabled pages in additional span for skin CSS compatibility (True) or not (False) + True,False + \ No newline at end of file From 7cb974f8c64d3824e3c6f71749903b8176b27a2a Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Mon, 24 May 2021 17:39:49 +0200 Subject: [PATCH 06/10] Update DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs Co-authored-by: Brian Dukes --- .../Website/admin/Skins/BreadCrumb.ascx.cs | 476 +++++++++--------- 1 file changed, 240 insertions(+), 236 deletions(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index 96ddf4f8e23..c56e22c68e7 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -1,253 +1,257 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information -namespace DotNetNuke.UI.Skins.Controls -{ - using System; - using System.Text; - using System.Text.RegularExpressions; - - using DotNetNuke.Abstractions; - using DotNetNuke.Common; - using DotNetNuke.Common.Utilities; +namespace DotNetNuke.UI.Skins.Controls +{ + using System; + using System.Text; + using System.Text.RegularExpressions; + + using DotNetNuke.Abstractions; + using DotNetNuke.Common; + using DotNetNuke.Common.Utilities; using DotNetNuke.Entities.Tabs; - using Microsoft.Extensions.DependencyInjection; - - /// ----------------------------------------------------------------------------- - /// - /// - /// - public partial class BreadCrumb : SkinObjectBase - { - private const string UrlRegex = "(href|src)=(\\\"|'|)(.[^\\\"']*)(\\\"|'|)"; - private readonly StringBuilder _breadcrumb = new StringBuilder(""); - private readonly INavigationManager _navigationManager; - private string _separator = "\"breadcrumb"; - private string _cssClass = "SkinObject"; - private int _rootLevel = 0; - private bool _showRoot = false; - private string _homeUrl = string.Empty; - private string _homeTabName = "Root"; - - public BreadCrumb() - { + using Microsoft.Extensions.DependencyInjection; + + /// ----------------------------------------------------------------------------- + /// + /// + /// + public partial class BreadCrumb : SkinObjectBase + { + private const string UrlRegex = "(href|src)=(\\\"|'|)(.[^\\\"']*)(\\\"|'|)"; + private readonly StringBuilder _breadcrumb = new StringBuilder(""); + private readonly INavigationManager _navigationManager; + private string _separator = "\"breadcrumb"; + private string _cssClass = "SkinObject"; + private int _rootLevel = 0; + private bool _showRoot = false; + private string _homeUrl = string.Empty; + private string _homeTabName = "Root"; + + public BreadCrumb() + { this._navigationManager = Globals.DependencyProvider.GetRequiredService(); - this.LegacyMode = true; - } - - public int ProfileUserId - { - get - { - return string.IsNullOrEmpty(this.Request.Params["UserId"]) - ? Null.NullInteger - : int.Parse(this.Request.Params["UserId"]); - } - } - - public int GroupId - { - get - { - return string.IsNullOrEmpty(this.Request.Params["GroupId"]) - ? Null.NullInteger - : int.Parse(this.Request.Params["GroupId"]); - } - } - - // Separator between breadcrumb elements - public string Separator - { - get { return this._separator; } - set { this._separator = value; } - } - - public string CssClass - { - get { return this._cssClass; } - set { this._cssClass = value; } - } - - // Level to begin processing breadcrumb at. - // -1 means show root breadcrumb - public string RootLevel - { - get { return this._rootLevel.ToString(); } - - set - { - this._rootLevel = int.Parse(value); - - if (this._rootLevel < 0) - { - this._showRoot = true; - this._rootLevel = 0; - } - } - } - - // Use the page title instead of page name - public bool UseTitle { get; set; } - - // Do not show when there is no breadcrumb (only has current tab) + this.LegacyMode = true; + } + + public int ProfileUserId + { + get + { + return string.IsNullOrEmpty(this.Request.Params["UserId"]) + ? Null.NullInteger + : int.Parse(this.Request.Params["UserId"]); + } + } + + public int GroupId + { + get + { + return string.IsNullOrEmpty(this.Request.Params["GroupId"]) + ? Null.NullInteger + : int.Parse(this.Request.Params["GroupId"]); + } + } + + // Separator between breadcrumb elements + public string Separator + { + get { return this._separator; } + set { this._separator = value; } + } + + public string CssClass + { + get { return this._cssClass; } + set { this._cssClass = value; } + } + + // Level to begin processing breadcrumb at. + // -1 means show root breadcrumb + public string RootLevel + { + get { return this._rootLevel.ToString(); } + + set + { + this._rootLevel = int.Parse(value); + + if (this._rootLevel < 0) + { + this._showRoot = true; + this._rootLevel = 0; + } + } + } + + // Use the page title instead of page name + public bool UseTitle { get; set; } + + // Do not show when there is no breadcrumb (only has current tab) public bool HideWithNoBreadCrumb { get; set; } /// /// Gets or sets a value indicating whether set this to false in the skin to take advantage of the enhanced markup. /// public bool LegacyMode { get; set; } - - protected override void OnLoad(EventArgs e) - { - base.OnLoad(e); - - // Position in breadcrumb list - var position = 1; - - // resolve image path in separator content - this.ResolveSeparatorPaths(); - - // If we have enabled hiding when there are no breadcrumbs, simply return - if (this.HideWithNoBreadCrumb && this.PortalSettings.ActiveTab.BreadCrumbs.Count == (this._rootLevel + 1)) - { - return; - } - - // Without checking if the current tab is the home tab, we would duplicate the root tab - if (this._showRoot && this.PortalSettings.ActiveTab.TabID != this.PortalSettings.HomeTabId) - { - // Add the current protocal to the current URL - this._homeUrl = Globals.AddHTTP(this.PortalSettings.PortalAlias.HTTPAlias); - - // Make sure we have a home tab ID set - if (this.PortalSettings.HomeTabId != -1) - { - this._homeUrl = this._navigationManager.NavigateURL(this.PortalSettings.HomeTabId); - - var tc = new TabController(); - var homeTab = tc.GetTab(this.PortalSettings.HomeTabId, this.PortalSettings.PortalId, false); - this._homeTabName = homeTab.LocalizedTabName; - - // Check if we should use the tab's title instead - if (this.UseTitle && !string.IsNullOrEmpty(homeTab.Title)) - { - this._homeTabName = homeTab.Title; - } - } - - // Append all of the HTML for the root breadcrumb - this._breadcrumb.Append(""); - this._breadcrumb.Append("" + this._homeTabName + ""); - this._breadcrumb.Append(""); // Notice we post-increment the position variable - this._breadcrumb.Append(""); - - // Add a separator - this._breadcrumb.Append(this._separator); - } - - // process bread crumbs - for (var i = this._rootLevel; i < this.PortalSettings.ActiveTab.BreadCrumbs.Count; ++i) - { - // Only add separators if we're past the root level - if (i > this._rootLevel) - { - this._breadcrumb.Append(this._separator); - } - - // Grab the current tab - var tab = (TabInfo)this.PortalSettings.ActiveTab.BreadCrumbs[i]; - - var tabName = tab.LocalizedTabName; - - // Determine if we should use the tab's title instead of tab name - if (this.UseTitle && !string.IsNullOrEmpty(tab.Title)) - { - tabName = tab.Title; - } - - // Get the absolute URL of the tab - var tabUrl = tab.FullUrl; - - if (this.ProfileUserId > -1) - { - tabUrl = this._navigationManager.NavigateURL(tab.TabID, string.Empty, "UserId=" + this.ProfileUserId); - } - - if (this.GroupId > -1) - { - tabUrl = this._navigationManager.NavigateURL(tab.TabID, string.Empty, "GroupId=" + this.GroupId); - } - - // Is this tab disabled? If so, only render a span - if (tab.DisableLink) + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + // Position in breadcrumb list + var position = 1; + + // resolve image path in separator content + this.ResolveSeparatorPaths(); + + // If we have enabled hiding when there are no breadcrumbs, simply return + if (this.HideWithNoBreadCrumb && this.PortalSettings.ActiveTab.BreadCrumbs.Count == (this._rootLevel + 1)) + { + return; + } + + // Without checking if the current tab is the home tab, we would duplicate the root tab + if (this._showRoot && this.PortalSettings.ActiveTab.TabID != this.PortalSettings.HomeTabId) + { + // Add the current protocal to the current URL + this._homeUrl = Globals.AddHTTP(this.PortalSettings.PortalAlias.HTTPAlias); + + // Make sure we have a home tab ID set + if (this.PortalSettings.HomeTabId != -1) { - if (this.LegacyMode) - this._breadcrumb.Append("" + tabName + ""); + this._homeUrl = this._navigationManager.NavigateURL(this.PortalSettings.HomeTabId); + + var tc = new TabController(); + var homeTab = tc.GetTab(this.PortalSettings.HomeTabId, this.PortalSettings.PortalId, false); + this._homeTabName = homeTab.LocalizedTabName; + + // Check if we should use the tab's title instead + if (this.UseTitle && !string.IsNullOrEmpty(homeTab.Title)) + { + this._homeTabName = homeTab.Title; + } + } + + // Append all of the HTML for the root breadcrumb + this._breadcrumb.Append(""); + this._breadcrumb.Append("" + this._homeTabName + ""); + this._breadcrumb.Append(""); // Notice we post-increment the position variable + this._breadcrumb.Append(""); + + // Add a separator + this._breadcrumb.Append(this._separator); + } + + // process bread crumbs + for (var i = this._rootLevel; i < this.PortalSettings.ActiveTab.BreadCrumbs.Count; ++i) + { + // Only add separators if we're past the root level + if (i > this._rootLevel) + { + this._breadcrumb.Append(this._separator); + } + + // Grab the current tab + var tab = (TabInfo)this.PortalSettings.ActiveTab.BreadCrumbs[i]; + + var tabName = tab.LocalizedTabName; + + // Determine if we should use the tab's title instead of tab name + if (this.UseTitle && !string.IsNullOrEmpty(tab.Title)) + { + tabName = tab.Title; + } + + // Get the absolute URL of the tab + var tabUrl = tab.FullUrl; + + if (this.ProfileUserId > -1) + { + tabUrl = this._navigationManager.NavigateURL(tab.TabID, string.Empty, "UserId=" + this.ProfileUserId); + } + + if (this.GroupId > -1) + { + tabUrl = this._navigationManager.NavigateURL(tab.TabID, string.Empty, "GroupId=" + this.GroupId); + } + + // Is this tab disabled? If so, only render a span + if (tab.DisableLink) + { + if (this.CleanerMarkup) + { + this._breadcrumb.Append("" + tabName + ""); + } else - this._breadcrumb.Append("" + tabName + ""); - } - else + { + this._breadcrumb.Append("" + tabName + ""); + } + } + else { // An enabled page, render the breadcrumb - this._breadcrumb.Append(""); + this._breadcrumb.Append(""); this._breadcrumb.Append("" + tabName + ""); this._breadcrumb.Append(""); // Notice we post-increment the position variable - this._breadcrumb.Append(""); - } - } - - this._breadcrumb.Append(""); // End of BreadcrumbList - - this.lblBreadCrumb.Text = this._breadcrumb.ToString(); - } - - private void ResolveSeparatorPaths() - { - if (string.IsNullOrEmpty(this._separator)) - { - return; - } - - var urlMatches = Regex.Matches(this._separator, UrlRegex, RegexOptions.IgnoreCase); - if (urlMatches.Count > 0) - { - foreach (Match match in urlMatches) - { - var url = match.Groups[3].Value; - var changed = false; - - if (url.StartsWith("/")) - { - if (!string.IsNullOrEmpty(Globals.ApplicationPath)) - { - url = string.Format("{0}{1}", Globals.ApplicationPath, url); - changed = true; - } - } - else if (url.StartsWith("~/")) - { - url = Globals.ResolveUrl(url); - changed = true; - } - else - { - url = string.Format("{0}{1}", this.PortalSettings.ActiveTab.SkinPath, url); - changed = true; - } - - if (changed) - { - var newMatch = string.Format( - "{0}={1}{2}{3}", - match.Groups[1].Value, - match.Groups[2].Value, - url, - match.Groups[4].Value); - - this._separator = this._separator.Replace(match.Value, newMatch); - } - } - } - } - } -} + this._breadcrumb.Append(""); + } + } + + this._breadcrumb.Append(""); // End of BreadcrumbList + + this.lblBreadCrumb.Text = this._breadcrumb.ToString(); + } + + private void ResolveSeparatorPaths() + { + if (string.IsNullOrEmpty(this._separator)) + { + return; + } + + var urlMatches = Regex.Matches(this._separator, UrlRegex, RegexOptions.IgnoreCase); + if (urlMatches.Count > 0) + { + foreach (Match match in urlMatches) + { + var url = match.Groups[3].Value; + var changed = false; + + if (url.StartsWith("/")) + { + if (!string.IsNullOrEmpty(Globals.ApplicationPath)) + { + url = string.Format("{0}{1}", Globals.ApplicationPath, url); + changed = true; + } + } + else if (url.StartsWith("~/")) + { + url = Globals.ResolveUrl(url); + changed = true; + } + else + { + url = string.Format("{0}{1}", this.PortalSettings.ActiveTab.SkinPath, url); + changed = true; + } + + if (changed) + { + var newMatch = string.Format( + "{0}={1}{2}{3}", + match.Groups[1].Value, + match.Groups[2].Value, + url, + match.Groups[4].Value); + + this._separator = this._separator.Replace(match.Value, newMatch); + } + } + } + } + } +} From d2e40d037a73f3ba095c1c57bdc9b1aec271c67c Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Mon, 24 May 2021 17:41:37 +0200 Subject: [PATCH 07/10] Update DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs Co-authored-by: Brian Dukes --- DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index c56e22c68e7..2ff13a4ab1f 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -93,9 +93,9 @@ public string RootLevel public bool HideWithNoBreadCrumb { get; set; } /// - /// Gets or sets a value indicating whether set this to false in the skin to take advantage of the enhanced markup. + /// Gets or sets a value indicating whether to take advantage of the enhanced markup (remove extra wrapping elements). /// - public bool LegacyMode { get; set; } + public bool CleanerMarkup { get; set; } protected override void OnLoad(EventArgs e) { From e1af637eb52df8e506511e2c78b122311b8d7b36 Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Mon, 24 May 2021 17:49:41 +0200 Subject: [PATCH 08/10] Renamed LegacyMode to CleanerMarkup and Improved Help Text Renamed LegacyMode to CleanerMarkup and improved help text for new setting. --- DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs | 2 +- DNN Platform/Website/admin/Skins/BreadCrumb.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index 2ff13a4ab1f..909267ac929 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -32,7 +32,7 @@ public partial class BreadCrumb : SkinObjectBase public BreadCrumb() { this._navigationManager = Globals.DependencyProvider.GetRequiredService(); - this.LegacyMode = true; + this.CleanerMarkup = true; } public int ProfileUserId diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.xml b/DNN Platform/Website/admin/Skins/BreadCrumb.xml index 358762eceeb..031dc66794f 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.xml +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.xml @@ -24,9 +24,9 @@ True,False - LegacyMode + CleanerMarkup Boolean - Defines whether to wrap span rendered for disabled pages in additional span for skin CSS compatibility (True) or not (False) + Defines whether to take advantage of the enhanced markup (remove extra wrapping elements).) True,False \ No newline at end of file From d0fc63b29b87149945729bd0431d1cb53c0fa20d Mon Sep 17 00:00:00 2001 From: Brian Dukes Date: Mon, 24 May 2021 10:57:30 -0500 Subject: [PATCH 09/10] Fix CleanerMarkup default --- DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index 909267ac929..fe9fa592149 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -32,7 +32,7 @@ public partial class BreadCrumb : SkinObjectBase public BreadCrumb() { this._navigationManager = Globals.DependencyProvider.GetRequiredService(); - this.CleanerMarkup = true; + this.CleanerMarkup = false; } public int ProfileUserId From afa1de840af19b13a226b29b287c8f64bdca5a30 Mon Sep 17 00:00:00 2001 From: Andy9999 Date: Mon, 24 May 2021 17:58:10 +0200 Subject: [PATCH 10/10] Update BreadCrumb.ascx.cs Set new "CleanerMarkup" setting to false by default. ;) --- DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs index 909267ac929..fe9fa592149 100644 --- a/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs +++ b/DNN Platform/Website/admin/Skins/BreadCrumb.ascx.cs @@ -32,7 +32,7 @@ public partial class BreadCrumb : SkinObjectBase public BreadCrumb() { this._navigationManager = Globals.DependencyProvider.GetRequiredService(); - this.CleanerMarkup = true; + this.CleanerMarkup = false; } public int ProfileUserId