diff --git a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs
index 86f84e08ab..c558557740 100644
--- a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs
+++ b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs
@@ -987,6 +987,7 @@ public static class PublishedContentExtensions
///
/// Variation context accessor.
///
+ ///
///
///
/// The specific culture to filter for. If null is used the current culture is used. (Default is
@@ -1002,9 +1003,69 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string docTypeAlias,
string? culture = null) => parentNodes.SelectMany(x =>
- x.DescendantsOrSelfOfType(variationContextAccessor, publishedCache, navigationQueryService, docTypeAlias, culture));
+ x.DescendantsOrSelfOfType(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, docTypeAlias, culture));
+
+ ///
+ /// Returns all DescendantsOrSelf of all content referenced
+ ///
+ ///
+ /// Variation context accessor.
+ ///
+ ///
+ ///
+ /// The specific culture to filter for. If null is used the current culture is used. (Default is
+ /// null)
+ ///
+ ///
+ ///
+ ///
+ /// This can be useful in order to return all nodes in an entire site by a type when combined with TypedContentAtRoot
+ ///
+ [Obsolete("Use the overload with IPublishStatusQueryService instead, scheduled for removal in v17")]
+ public static IEnumerable DescendantsOrSelfOfType(
+ this IEnumerable parentNodes,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string docTypeAlias,
+ string? culture = null) =>
+ DescendantsOrSelfOfType(
+ parentNodes,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ docTypeAlias,
+ culture);
+
+ ///
+ /// Returns all DescendantsOrSelf of all content referenced
+ ///
+ ///
+ /// Variation context accessor.
+ ///
+ ///
+ ///
+ /// The specific culture to filter for. If null is used the current culture is used. (Default is
+ /// null)
+ ///
+ ///
+ ///
+ ///
+ /// This can be useful in order to return all nodes in an entire site by a type when combined with TypedContentAtRoot
+ ///
+ public static IEnumerable DescendantsOrSelf(
+ this IEnumerable parentNodes,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ parentNodes.SelectMany(x => x.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture));
///
/// Returns all DescendantsOrSelf of all content referenced
@@ -1021,6 +1082,7 @@ public static class PublishedContentExtensions
///
/// This can be useful in order to return all nodes in an entire site by a type when combined with TypedContentAtRoot
///
+ [Obsolete("Use the overload with IPublishStatusQueryService instead, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IEnumerable parentNodes,
IVariationContextAccessor variationContextAccessor,
@@ -1028,7 +1090,13 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string? culture = null)
where T : class, IPublishedContent =>
- parentNodes.SelectMany(x => x.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, culture));
+ DescendantsOrSelf(
+ parentNodes,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
// as per XPath 1.0 specs �2.2,
// - the descendant axis contains the descendants of the context node; a descendant is a child or a child of a child and so on; thus
@@ -1053,9 +1121,43 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, false, null, culture);
+ content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, false, null, culture);
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string? culture = null) =>
+ Descendants(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null) =>
+ content.DescendantsOrSelf(
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ publishStatusQueryService,
+ false,
+ p => p.Level >= level,
+ culture);
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IEnumerable Descendants(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1063,8 +1165,33 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
int level,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, false, p => p.Level >= level, culture);
+ Descendants(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
+ public static IEnumerable DescendantsOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string contentTypeAlias,
+ string? culture = null) =>
+ content.EnumerateDescendantsOrSelfInternal(
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ publishStatusQueryService,
+ culture,
+ false,
+ contentTypeAlias);
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IEnumerable DescendantsOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1072,14 +1199,26 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string contentTypeAlias,
string? culture = null) =>
- content.EnumerateDescendantsOrSelfInternal(
+ DescendantsOfType(
+ content,
variationContextAccessor,
publishedCache,
navigationQueryService,
- culture,
- false,
- contentTypeAlias);
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Descendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IEnumerable Descendants(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1094,19 +1233,65 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.Descendants(variationContextAccessor, publishedCache, navigationQueryService, level, culture).OfType();
+ content.Descendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ Descendants(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, true, null, culture);
+ content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, true, null, culture);
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string? culture = null) =>
+ DescendantsOrSelf(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null) =>
+ content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, true, p => p.Level >= level, culture);
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1114,8 +1299,33 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
int level,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, true, p => p.Level >= level, culture);
+ DescendantsOrSelf(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
+ public static IEnumerable DescendantsOrSelfOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string contentTypeAlias,
+ string? culture = null) =>
+ content.EnumerateDescendantsOrSelfInternal(
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ publishStatusQueryService,
+ culture,
+ true,
+ contentTypeAlias);
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelfOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1123,14 +1333,26 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string contentTypeAlias,
string? culture = null) =>
- content.EnumerateDescendantsOrSelfInternal(
+ DescendantsOrSelfOfType(
+ content,
variationContextAccessor,
publishedCache,
navigationQueryService,
- culture,
- true,
- contentTypeAlias);
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1138,8 +1360,25 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string? culture = null)
where T : class, IPublishedContent =>
- content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, culture).OfType();
+ content.DescendantsOrSelf(
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1148,41 +1387,118 @@ public static class PublishedContentExtensions
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, level, culture).OfType();
+ DescendantsOrSelf(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
+ public static IPublishedContent? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null) =>
+ content.Children(
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ publishStatusQueryService,
+ culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static IPublishedContent? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
string? culture = null) =>
- content.Children(variationContextAccessor, publishedCache, navigationQueryService, culture)?.FirstOrDefault();
+ Descendant(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
public static IPublishedContent? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
int level,
string? culture = null) => content
- .EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, false, culture).FirstOrDefault(x => x.Level == level);
+ .EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, false, culture).FirstOrDefault(x => x.Level == level);
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IPublishedContent? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ int level,
+ string? culture = null) =>
+ content
+ .EnumerateDescendants(
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ false,
+ culture)
+ .FirstOrDefault(x => x.Level == level);
public static IPublishedContent? DescendantOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias,
string? culture = null) => content
.EnumerateDescendantsOrSelfInternal(
variationContextAccessor,
publishedCache,
navigationQueryService,
+ publishStatusQueryService,
culture,
false,
contentTypeAlias)
.FirstOrDefault();
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IPublishedContent? DescendantOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string contentTypeAlias,
+ string? culture = null) =>
+ DescendantOfType(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+
+ public static T? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, false, culture).FirstOrDefault(x => x is T) as T;
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static T? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1190,8 +1506,26 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string? culture = null)
where T : class, IPublishedContent =>
- content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, false, culture).FirstOrDefault(x => x is T) as T;
+ Descendant(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+ public static T? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Descendant(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture) as T;
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static T? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1200,35 +1534,121 @@ public static class PublishedContentExtensions
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.Descendant(variationContextAccessor, publishedCache, navigationQueryService, level, culture) as T;
+ Descendant(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
- public static IPublishedContent DescendantOrSelf(this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) => content;
+ public static IPublishedContent DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null) =>
+ content.EnumerateDescendants(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ true,
+ culture)
+ .FirstOrDefault() ??
+ content;
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IPublishedContent DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string? culture = null) =>
+ DescendantOrSelf(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
public static IPublishedContent? DescendantOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
int level,
string? culture = null) => content
- .EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, true, culture).FirstOrDefault(x => x.Level == level);
+ .EnumerateDescendants(
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ publishStatusQueryService,
+ true,
+ culture)
+ .FirstOrDefault(x => x.Level == level);
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IPublishedContent? DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ int level,
+ string? culture = null) =>
+ DescendantOrSelf(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
public static IPublishedContent? DescendantOrSelfOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias,
string? culture = null) => content
.EnumerateDescendantsOrSelfInternal(
variationContextAccessor,
publishedCache,
navigationQueryService,
+ publishStatusQueryService,
culture,
true,
contentTypeAlias)
.FirstOrDefault();
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
+ public static IPublishedContent? DescendantOrSelfOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string contentTypeAlias,
+ string? culture = null) =>
+ DescendantOrSelfOfType(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+
+ public static T? DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, true, culture).FirstOrDefault(x => x is T) as T;
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static T? DescendantOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1236,8 +1656,26 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string? culture = null)
where T : class, IPublishedContent =>
- content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, true, culture).FirstOrDefault(x => x is T) as T;
+ DescendantOrSelf(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+ public static T? DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.DescendantOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture) as T;
+
+ [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")]
public static T? DescendantOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1246,17 +1684,25 @@ public static class PublishedContentExtensions
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.DescendantOrSelf(variationContextAccessor, publishedCache, navigationQueryService, level, culture) as T;
+ DescendantOrSelf(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
internal static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
bool orSelf,
Func? func,
string? culture = null) =>
- content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, orSelf, culture)
+ content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, orSelf, culture)
.Where(x => func == null || func(x));
internal static IEnumerable EnumerateDescendants(
@@ -1264,6 +1710,7 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
bool orSelf,
string? culture = null)
{
@@ -1273,6 +1720,7 @@ public static class PublishedContentExtensions
variationContextAccessor,
publishedCache,
navigationQueryService,
+ publishStatusQueryService,
culture,
orSelf))
{
@@ -1285,6 +1733,7 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null)
{
yield return content;
@@ -1293,6 +1742,7 @@ public static class PublishedContentExtensions
variationContextAccessor,
publishedCache,
navigationQueryService,
+ publishStatusQueryService,
culture,
false))
{
@@ -2291,26 +2741,37 @@ public static class PublishedContentExtensions
public static IEnumerable Children(
this IPublishedContent content,
IVariationContextAccessor? variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null)
- => Children(content, variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => Children(content, variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture);
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable Children(
+ this IPublishedContent content,
+ IVariationContextAccessor? variationContextAccessor,
+ string? culture = null)
+ => Children(content, variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), StaticServiceProvider.Instance.GetRequiredService(), culture);
+
+ public static IEnumerable Children(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ Func predicate,
+ string? culture = null) =>
+ content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture).Where(predicate);
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable Children(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
Func predicate,
string? culture = null) =>
- content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture).Where(predicate);
-
- [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
- public static IEnumerable ChildrenOfType(
- this IPublishedContent content,
- IVariationContextAccessor variationContextAccessor,
- string? contentTypeAlias,
- string? culture = null)
- {
- IPublishStatusQueryService publishStatusQueryService = StaticServiceProvider.Instance.GetRequiredService();
- return ChildrenOfType(content, variationContextAccessor, publishStatusQueryService, contentTypeAlias, culture);
- }
+ Children(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ predicate,
+ culture);
public static IEnumerable ChildrenOfType(
this IPublishedContent content,
@@ -2326,13 +2787,32 @@ public static class PublishedContentExtensions
return children.FilterByCulture(culture, variationContextAccessor);
}
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable ChildrenOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string? contentTypeAlias,
+ string? culture = null)
+ {
+ IPublishStatusQueryService publishStatusQueryService = StaticServiceProvider.Instance.GetRequiredService();
+ return ChildrenOfType(content, variationContextAccessor, publishStatusQueryService, contentTypeAlias, culture);
+ }
+
+ public static IEnumerable Children(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable Children(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
string? culture = null)
where T : class, IPublishedContent =>
- content.Children(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), culture).OfType();
+ Children(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture);
public static DataTable ChildrenAsTable(
this IPublishedContent content,
@@ -2349,213 +2829,525 @@ public static class PublishedContentExtensions
public static IEnumerable DescendantsOrSelfOfType(
this IEnumerable parentNodes,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string docTypeAlias,
- string? culture = null) => parentNodes.SelectMany(x =>
- x.DescendantsOrSelfOfType(variationContextAccessor, GetPublishedCache(parentNodes.First()),
- GetNavigationQueryService(parentNodes.First()), docTypeAlias, culture));
+ string? culture = null) =>
+ parentNodes.SelectMany(x => x.DescendantsOrSelfOfType(
+ variationContextAccessor,
+ GetPublishedCache(parentNodes.First()),
+ GetNavigationQueryService(parentNodes.First()),
+ publishStatusQueryService,
+ docTypeAlias,
+ culture));
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable DescendantsOrSelfOfType(
+ this IEnumerable parentNodes,
+ IVariationContextAccessor variationContextAccessor,
+ string docTypeAlias,
+ string? culture = null) =>
+ DescendantsOrSelfOfType(
+ parentNodes,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ docTypeAlias,
+ culture);
+ public static IEnumerable DescendantsOrSelf(
+ this IEnumerable parentNodes,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ parentNodes.SelectMany(
+ x => x.DescendantsOrSelf(
+ variationContextAccessor,
+ GetPublishedCache(parentNodes.First()),
+ GetNavigationQueryService(parentNodes.First()),
+ publishStatusQueryService,
+ culture));
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IEnumerable parentNodes,
IVariationContextAccessor variationContextAccessor,
string? culture = null)
where T : class, IPublishedContent =>
- parentNodes.SelectMany(x => x.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(parentNodes.First()),
- GetNavigationQueryService(parentNodes.First()), culture));
+ DescendantsOrSelf(parentNodes, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture);
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null) =>
+ content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, false, null, culture);
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string? culture = null) =>
+ Descendants(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture);
public static IEnumerable Descendants(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), false, null, culture);
-
+ content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, false, p => p.Level >= level, culture);
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable Descendants(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
int level,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), false, p => p.Level >= level, culture);
+ Descendants(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
public static IEnumerable DescendantsOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias, string? culture = null) =>
content.EnumerateDescendantsOrSelfInternal(
variationContextAccessor,
GetPublishedCache(content),
GetNavigationQueryService(content),
+ publishStatusQueryService,
culture,
false,
contentTypeAlias);
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable DescendantsOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string contentTypeAlias,
+ string? culture = null) =>
+ DescendantsOfType(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Descendants(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable Descendants(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
string? culture = null)
where T : class, IPublishedContent =>
- content.Descendants(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), culture).OfType();
+ Descendants(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture);
+ public static IEnumerable Descendants(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Descendants(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, level, culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable Descendants(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.Descendants(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), level, culture).OfType();
+ Descendants(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), true, null, culture);
+ content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, true, null, culture);
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string? culture = null) =>
+ DescendantsOrSelf(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null) =>
+ content.DescendantsOrSelf(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ true,
+ p => p.Level >= level,
+ culture);
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
int level,
string? culture = null) =>
- content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), true, p => p.Level >= level, culture);
-
+ DescendantsOrSelf(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
public static IEnumerable DescendantsOrSelfOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias,
string? culture = null) =>
content.EnumerateDescendantsOrSelfInternal(
variationContextAccessor,
GetPublishedCache(content),
GetNavigationQueryService(content),
+ publishStatusQueryService,
culture,
true,
contentTypeAlias);
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable DescendantsOrSelfOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string contentTypeAlias,
+ string? culture = null) =>
+ DescendantsOrSelfOfType(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.DescendantsOrSelf(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
string? culture = null)
where T : class, IPublishedContent =>
- content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), culture).OfType();
+ DescendantsOrSelf(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+ public static IEnumerable DescendantsOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.DescendantsOrSelf(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ level,
+ culture).OfType();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), level, culture).OfType();
+ DescendantsOrSelf(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
+ public static IPublishedContent? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null) =>
+ content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IPublishedContent? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
string? culture = null) =>
- content.Children(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), culture)?.FirstOrDefault();
+ Descendant(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
public static IPublishedContent? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
int level,
string? culture = null) => content
- .EnumerateDescendants(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), false, culture).FirstOrDefault(x => x.Level == level);
+ .EnumerateDescendants(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ false,
+ culture).FirstOrDefault(x => x.Level == level);
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ int level,
+ string? culture = null) =>
+ Descendant(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
public static IPublishedContent? DescendantOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias,
string? culture = null) => content
.EnumerateDescendantsOrSelfInternal(
variationContextAccessor,
GetPublishedCache(content),
GetNavigationQueryService(content),
+ publishStatusQueryService,
culture,
false,
contentTypeAlias)
.FirstOrDefault();
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? DescendantOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string contentTypeAlias,
+ string? culture = null) =>
+ DescendantOfType(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+
+ public static T? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.EnumerateDescendants(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ false,
+ culture)
+ .FirstOrDefault(x => x is T) as T;
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static T? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
string? culture = null)
where T : class, IPublishedContent =>
- content.EnumerateDescendants(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), false, culture).FirstOrDefault(x => x is T) as T;
+ Descendant(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+ public static T? Descendant(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Descendant(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ level,
+ culture) as T;
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static T? Descendant(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.Descendant(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), level, culture) as T;
+ Descendant(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
public static IPublishedContent? DescendantOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
int level,
string? culture = null) => content
- .EnumerateDescendants(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), true, culture).FirstOrDefault(x => x.Level == level);
+ .EnumerateDescendants(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ true,
+ culture).FirstOrDefault(x => x.Level == level);
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ int level,
+ string? culture = null) => DescendantOrSelf(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), level, culture);
public static IPublishedContent? DescendantOrSelfOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias,
string? culture = null) => content
.EnumerateDescendantsOrSelfInternal(
variationContextAccessor,
GetPublishedCache(content),
GetNavigationQueryService(content),
+ publishStatusQueryService,
culture,
true,
contentTypeAlias)
.FirstOrDefault();
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? DescendantOrSelfOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string contentTypeAlias,
+ string? culture = null) =>
+ DescendantOrSelfOfType(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+
+ public static T? DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.EnumerateDescendants(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ true,
+ culture).FirstOrDefault(x => x is T) as T;
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static T? DescendantOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
string? culture = null)
where T : class, IPublishedContent =>
- content.EnumerateDescendants(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), true, culture).FirstOrDefault(x => x is T) as T;
+ DescendantOrSelf(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+ public static T? DescendantOrSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ int level,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.DescendantOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, level, culture) as T;
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static T? DescendantOrSelf(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
int level,
string? culture = null)
where T : class, IPublishedContent =>
- content.DescendantOrSelf(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), level, culture) as T;
+ DescendantOrSelf(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ level,
+ culture);
@@ -2838,6 +3630,7 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture,
bool orSelf,
string? contentTypeAlias = null)
@@ -2859,7 +3652,9 @@ public static class PublishedContentExtensions
yield break;
}
+ culture ??= variationContextAccessor?.VariationContext?.Culture ?? string.Empty;
IEnumerable descendants = descendantsKeys
+ .Where(x => publishStatusQueryService.IsDocumentPublished(x, culture))
.Select(publishedCache.GetById)
.WhereNotNull()
.FilterByCulture(culture, variationContextAccessor);
diff --git a/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs b/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs
index e25ea4cc4a..3b801bc8d7 100644
--- a/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs
+++ b/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs
@@ -355,7 +355,7 @@ public static class FriendlyPublishedContentExtensions
///
public static IEnumerable DescendantsOrSelfOfType(
this IEnumerable parentNodes, string docTypeAlias, string? culture = null)
- => parentNodes.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), docTypeAlias, culture);
+ => parentNodes.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), PublishStatusQueryService, docTypeAlias, culture);
///
/// Returns all DescendantsOrSelf of all content referenced
@@ -373,77 +373,77 @@ public static class FriendlyPublishedContentExtensions
this IEnumerable parentNodes,
string? culture = null)
where T : class, IPublishedContent
- => parentNodes.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), culture);
+ => parentNodes.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), PublishStatusQueryService, culture);
public static IEnumerable Descendants(this IPublishedContent content, string? culture = null)
- => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static IEnumerable Descendants(this IPublishedContent content, int level, string? culture = null)
- => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
public static IEnumerable DescendantsOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null)
- => content.DescendantsOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture);
+ => content.DescendantsOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture);
public static IEnumerable Descendants(this IPublishedContent content, string? culture = null)
where T : class, IPublishedContent
- => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static IEnumerable Descendants(this IPublishedContent content, int level, string? culture = null)
where T : class, IPublishedContent
- => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
public static IEnumerable DescendantsOrSelf(
this IPublishedContent content,
string? culture = null)
- => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static IEnumerable DescendantsOrSelf(this IPublishedContent content, int level, string? culture = null)
- => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
public static IEnumerable DescendantsOrSelfOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null)
- => content.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture);
+ => content.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture);
public static IEnumerable DescendantsOrSelf(this IPublishedContent content, string? culture = null)
where T : class, IPublishedContent
- => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static IEnumerable DescendantsOrSelf(this IPublishedContent content, int level, string? culture = null)
where T : class, IPublishedContent
- => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
public static IPublishedContent? Descendant(this IPublishedContent content, string? culture = null)
- => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static IPublishedContent? Descendant(this IPublishedContent content, int level, string? culture = null)
- => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
public static IPublishedContent? DescendantOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null)
- => content.DescendantOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture);
+ => content.DescendantOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture);
public static T? Descendant(this IPublishedContent content, string? culture = null)
where T : class, IPublishedContent
- => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static T? Descendant(this IPublishedContent content, int level, string? culture = null)
where T : class, IPublishedContent
- => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
public static IPublishedContent DescendantOrSelf(this IPublishedContent content, string? culture = null)
- => content.DescendantOrSelf(VariationContextAccessor, culture);
+ => content.DescendantOrSelf(VariationContextAccessor, PublishStatusQueryService, culture);
public static IPublishedContent? DescendantOrSelf(this IPublishedContent content, int level, string? culture = null)
- => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
public static IPublishedContent? DescendantOrSelfOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null)
- => content.DescendantOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture);
+ => content.DescendantOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture);
public static T? DescendantOrSelf(this IPublishedContent content, string? culture = null)
where T : class, IPublishedContent
- => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static T? DescendantOrSelf(this IPublishedContent content, int level, string? culture = null)
where T : class, IPublishedContent
- => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture);
+ => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture);
///
/// Gets the children of the content item.