From 33e285dc72f819bb83e0e1cbb94cef2ffdf6fc42 Mon Sep 17 00:00:00 2001 From: Elitsa Date: Thu, 21 Nov 2024 16:23:02 +0100 Subject: [PATCH 1/3] Inject and pass-in parameters to use the respective PublishedContentExtensions methods --- .../EmbeddedResources/Snippets/Breadcrumb.cshtml | 7 +++++-- .../Snippets/ListAncestorsFromCurrentPage.cshtml | 7 +++++-- .../Snippets/ListChildPagesFromCurrentPage.cshtml | 9 ++++++--- .../Snippets/ListChildPagesOrderedByDate.cshtml | 9 ++++++--- .../Snippets/ListChildPagesOrderedByName.cshtml | 9 ++++++--- .../Snippets/ListChildPagesWithDoctype.cshtml | 8 +++++--- .../EmbeddedResources/Snippets/Navigation.cshtml | 9 ++++++--- .../EmbeddedResources/Snippets/SiteMap.cshtml | 2 +- 8 files changed, 40 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml index 612c80948779..912bc1f3cfca 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml @@ -1,6 +1,9 @@ +@using Umbraco.Cms.Core.PublishedCache @using Umbraco.Cms.Core.Routing -@using Umbraco.Extensions +@using Umbraco.Cms.Core.Services.Navigation @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage +@inject IPublishedContentCache PublishedContentCache +@inject IDocumentNavigationQueryService DocumentNavigationQueryService @inject IPublishedUrlProvider PublishedUrlProvider @* This snippet makes a breadcrumb of parents using an unordered HTML list. @@ -10,7 +13,7 @@ - Finally it outputs the name of the current page (without a link) *@ -@{ var selection = Model?.Content.Ancestors().ToArray(); } +@{ var selection = Model?.Content.Ancestors(PublishedContentCache, DocumentNavigationQueryService).ToArray(); } @if (selection?.Length > 0) { diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml index a0056976666d..f5870600fa33 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml @@ -1,6 +1,9 @@ +@using Umbraco.Cms.Core.PublishedCache @using Umbraco.Cms.Core.Routing -@using Umbraco.Extensions +@using Umbraco.Cms.Core.Services.Navigation @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage +@inject IPublishedContentCache PublishedContentCache +@inject IDocumentNavigationQueryService DocumentNavigationQueryService @inject IPublishedUrlProvider PublishedUrlProvider @* This snippet makes a list of links to the of parents of the current page using an unordered HTML list. @@ -10,7 +13,7 @@ - Finally it outputs the name of the current page (without a link) *@ -@{ var selection = Model?.Content.Ancestors().ToArray(); } +@{ var selection = Model?.Content.Ancestors(PublishedContentCache, DocumentNavigationQueryService).ToArray(); } @if (selection?.Length > 0) { diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesFromCurrentPage.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesFromCurrentPage.cshtml index 2a88e4766047..39cd12665b51 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesFromCurrentPage.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesFromCurrentPage.cshtml @@ -1,8 +1,11 @@ -@using Umbraco.Cms.Core @using Umbraco.Cms.Core.Models.PublishedContent +@using Umbraco.Cms.Core.PublishedCache @using Umbraco.Cms.Core.Routing -@using Umbraco.Extensions +@using Umbraco.Cms.Core.Services.Navigation @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage +@inject IVariationContextAccessor VariationContextAccessor +@inject IPublishedContentCache PublishedContentCache +@inject IDocumentNavigationQueryService DocumentNavigationQueryService @inject IPublishedValueFallback PublishedValueFallback @inject IPublishedUrlProvider PublishedUrlProvider @* @@ -13,7 +16,7 @@ - It then generates links so the visitor can go to each page *@ -@{ var selection = Model?.Content.Children.Where(x => x.IsVisible(PublishedValueFallback)).ToArray(); } +@{ var selection = Model?.Content.Children(VariationContextAccessor, PublishedContentCache, DocumentNavigationQueryService).Where(x => x.IsVisible(PublishedValueFallback)).ToArray(); } @if (selection?.Length > 0) { diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByDate.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByDate.cshtml index 168e9b63acf0..9b6796096ca2 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByDate.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByDate.cshtml @@ -1,8 +1,11 @@ -@using Umbraco.Cms.Core @using Umbraco.Cms.Core.Models.PublishedContent +@using Umbraco.Cms.Core.PublishedCache @using Umbraco.Cms.Core.Routing -@using Umbraco.Extensions +@using Umbraco.Cms.Core.Services.Navigation @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage +@inject IVariationContextAccessor VariationContextAccessor +@inject IPublishedContentCache PublishedContentCache +@inject IDocumentNavigationQueryService DocumentNavigationQueryService @inject IPublishedValueFallback PublishedValueFallback @inject IPublishedUrlProvider PublishedUrlProvider @* @@ -14,7 +17,7 @@ - It then generates links so the visitor can go to each page *@ -@{ var selection = Model?.Content.Children.Where(x => x.IsVisible(PublishedValueFallback)).OrderByDescending(x => x.CreateDate).ToArray(); } +@{ var selection = Model?.Content.Children(VariationContextAccessor, PublishedContentCache, DocumentNavigationQueryService).Where(x => x.IsVisible(PublishedValueFallback)).OrderByDescending(x => x.CreateDate).ToArray(); } @if (selection?.Length > 0) { diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml index aed9085a76de..e002ea17cfce 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml @@ -1,8 +1,11 @@ -@using Umbraco.Cms.Core @using Umbraco.Cms.Core.Models.PublishedContent +@using Umbraco.Cms.Core.PublishedCache @using Umbraco.Cms.Core.Routing -@using Umbraco.Extensions +@using Umbraco.Cms.Core.Services.Navigation @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage +@inject IVariationContextAccessor VariationContextAccessor +@inject IPublishedContentCache PublishedContentCache +@inject IDocumentNavigationQueryService DocumentNavigationQueryService @inject IPublishedValueFallback PublishedValueFallback @inject IPublishedUrlProvider PublishedUrlProvider @* @@ -14,7 +17,7 @@ - It then generates links so the visitor can go to each page *@ -@{ var selection = Model?.Content.Children.Where(x => x.IsVisible(PublishedValueFallback)).OrderBy(x => x.Name).ToArray(); } +@{ var selection = Model?.Content.Children(VariationContextAccessor, PublishedContentCache, DocumentNavigationQueryService).Where(x => x.IsVisible(PublishedValueFallback)).OrderBy(x => x.Name).ToArray(); } @if (selection?.Length > 0) { diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesWithDoctype.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesWithDoctype.cshtml index 95a65d0af902..9b7b24abc000 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesWithDoctype.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesWithDoctype.cshtml @@ -1,9 +1,11 @@ -@using Umbraco.Cms.Core @using Umbraco.Cms.Core.Models.PublishedContent +@using Umbraco.Cms.Core.PublishedCache @using Umbraco.Cms.Core.Routing -@using Umbraco.Extensions +@using Umbraco.Cms.Core.Services.Navigation @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage @inject IVariationContextAccessor VariationContextAccessor +@inject IPublishedContentCache PublishedContentCache +@inject IDocumentNavigationQueryService DocumentNavigationQueryService @inject IPublishedValueFallback PublishedValueFallback @inject IPublishedUrlProvider PublishedUrlProvider @* @@ -13,7 +15,7 @@ (You can find the alias of your Document Type by editing it in the Settings section) *@ -@{ var selection = Model?.Content.Children(VariationContextAccessor).Where(x => x.IsVisible(PublishedValueFallback)).ToArray(); } +@{ var selection = Model?.Content.Children(VariationContextAccessor, PublishedContentCache, DocumentNavigationQueryService).Where(x => x.IsVisible(PublishedValueFallback)).ToArray(); } @if (selection?.Length > 0) { diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/Navigation.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/Navigation.cshtml index 75397076702e..3b737ad9b616 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/Navigation.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/Navigation.cshtml @@ -1,8 +1,11 @@ -@using Umbraco.Cms.Core @using Umbraco.Cms.Core.Models.PublishedContent +@using Umbraco.Cms.Core.PublishedCache @using Umbraco.Cms.Core.Routing -@using Umbraco.Extensions +@using Umbraco.Cms.Core.Services.Navigation @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage +@inject IVariationContextAccessor VariationContextAccessor +@inject IPublishedContentCache PublishedContentCache +@inject IDocumentNavigationQueryService DocumentNavigationQueryService @inject IPublishedValueFallback PublishedValueFallback @inject IPublishedUrlProvider PublishedUrlProvider @* @@ -11,7 +14,7 @@ It also highlights the current active page/section in the navigation with the CSS class "current". *@ -@{ var selection = Model?.Content.Root().Children.Where(x => x.IsVisible(PublishedValueFallback)).ToArray(); } +@{ var selection = Model?.Content.Root(PublishedContentCache, DocumentNavigationQueryService).Children(VariationContextAccessor, PublishedContentCache, DocumentNavigationQueryService).Where(x => x.IsVisible(PublishedValueFallback)).ToArray(); } @if (selection?.Length > 0) { diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml index 20b31b6dcbf8..ad87a17172b5 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml @@ -17,7 +17,7 @@ - It uses a local method called Traverse() to select and display the markup and links. *@ -@{ var selection = Model?.Content.Root(); } +@{ var selection = Model?.Content.Root(PublishedContentCache, DocumentNavigationQueryService); }
@* Render the sitemap by passing the root node to the traverse method, below *@ From a0785e7d0e17516382c0d647b943ee8c37345094 Mon Sep 17 00:00:00 2001 From: Elitsa Date: Thu, 21 Nov 2024 16:23:15 +0100 Subject: [PATCH 2/3] Fix view comments --- src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml | 2 +- .../Snippets/ListAncestorsFromCurrentPage.cshtml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml index 912bc1f3cfca..e609ac7c684a 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/Breadcrumb.cshtml @@ -9,7 +9,7 @@ This snippet makes a breadcrumb of parents using an unordered HTML list. How it works: - - It uses the Ancestors() method to get all parents and then generates links so the visitor can go back + - It uses the Ancestors method to get all parents and then generates links so the visitor can go back - Finally it outputs the name of the current page (without a link) *@ diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml index f5870600fa33..1ab6c7fb1d08 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/ListAncestorsFromCurrentPage.cshtml @@ -9,7 +9,7 @@ This snippet makes a list of links to the of parents of the current page using an unordered HTML list. How it works: - - It uses the Ancestors() method to get all parents and then generates links so the visitor can go back + - It uses the Ancestors method to get all parents and then generates links so the visitor can go back - Finally it outputs the name of the current page (without a link) *@ From b721ecd578d519633cf0f64c03ac01918f8f231b Mon Sep 17 00:00:00 2001 From: Elitsa Date: Thu, 21 Nov 2024 16:23:46 +0100 Subject: [PATCH 3/3] Other fixes --- .../Snippets/ListChildPagesOrderedByName.cshtml | 2 +- src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml | 4 ++-- .../Services/Importing/StandardMvc-Package.xml | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml index e002ea17cfce..575ecae74d3c 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/ListChildPagesOrderedByName.cshtml @@ -24,7 +24,7 @@ } diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml index ad87a17172b5..9f2c1c419382 100644 --- a/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml +++ b/src/Umbraco.Core/EmbeddedResources/Snippets/SiteMap.cshtml @@ -26,13 +26,13 @@ @* Helper method to traverse through all descendants *@ @{ - void Traverse(IPublishedContent? node) + void Traverse(IPublishedContent node) { //Update the level to reflect how deep you want the sitemap to go const int maxLevelForSitemap = 4; @* Select visible children *@ - var selection = node? + var selection = node .Children(VariationContextAccessor, PublishedContentCache, DocumentNavigationQueryService) .Where(x => x.IsVisible(PublishedValueFallback) && x.Level <= maxLevelForSitemap) .ToArray(); diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/Importing/StandardMvc-Package.xml b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/Importing/StandardMvc-Package.xml index 5bba7cfa4ec5..f3780e1df80f 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/Importing/StandardMvc-Package.xml +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/Importing/StandardMvc-Package.xml @@ -927,7 +927,7 @@ /* This is your basic query to select the nodes you want */ - var nodes = Model.Content.Children.Where(x => x.DocumentTypeAlias == "NewsArticle").OrderBy(x=>x.CreateDate); + var nodes = Model.Content.Children().Where(x => x.DocumentTypeAlias == "NewsArticle").OrderBy(x=>x.CreateDate); int totalNodes = nodes.Count(); int totalPages = (int)Math.Ceiling((double)totalNodes / (double)pageSize); @@ -1023,7 +1023,7 @@ x.IsVisible() && x.TemplateId > 0 && Umbraco.MemberHasAccess(x.Id, x.Path)); + var pages = Model.Content.Children().Where(x => x.IsVisible() && x.TemplateId > 0 && Umbraco.MemberHasAccess(x.Id, x.Path)); }
@@ -1347,7 +1347,7 @@ @helper traverse(IPublishedContent node) { - var cc = node.Children.Where(x=>x.IsVisible() && x.TemplateId > 0); + var cc = node.Children().Where(x=>x.IsVisible() && x.TemplateId > 0); if (cc.Count()>0) {