diff --git a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs
index d36158fdcf..86f84e08ab 100644
--- a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs
+++ b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs
@@ -1310,6 +1310,7 @@ public static class PublishedContentExtensions
/// The content item.
///
///
+ ///
///
/// The specific culture to get the URL children for. Default is null which will use the current culture in
///
@@ -1337,13 +1338,81 @@ public static class PublishedContentExtensions
IVariationContextAccessor? variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null)
{
- IEnumerable children = GetChildren(navigationQueryService, publishedCache, content.Key);
+ IEnumerable children = GetChildren(navigationQueryService, publishedCache, content.Key, publishStatusQueryService, variationContextAccessor, null, culture);
return children.FilterByCulture(culture, variationContextAccessor);
}
+ ///
+ /// Gets the children of the content item.
+ ///
+ /// The content item.
+ ///
+ ///
+ ///
+ /// The specific culture to get the URL children for. Default is null which will use the current culture in
+ ///
+ ///
+ ///
+ ///
+ /// Gets children that are available for the specified culture.
+ /// Children are sorted by their sortOrder.
+ ///
+ /// For culture,
+ /// if null is used the current culture is used.
+ /// If an empty string is used only invariant children are returned.
+ /// If "*" is used all children are returned.
+ ///
+ ///
+ /// If a variant culture is specified or there is a current culture in the then the
+ /// Children returned
+ /// will include both the variant children matching the culture AND the invariant children because the invariant
+ /// children flow with the current culture.
+ /// However, if an empty string is specified only invariant children are returned.
+ ///
+ ///
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable Children(
+ this IPublishedContent content,
+ IVariationContextAccessor? variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string? culture = null)
+ {
+ IPublishStatusQueryService publishStatusQueryService = StaticServiceProvider.Instance.GetRequiredService();
+ return Children(content, variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture);
+ }
+
+ ///
+ /// Gets the children of the content, filtered by a predicate.
+ ///
+ /// The content.
+ /// The accessor for VariationContext
+ ///
+ ///
+ /// The predicate.
+ ///
+ /// The specific culture to filter for. If null is used the current culture is used. (Default is
+ /// null)
+ ///
+ ///
+ /// The children of the content, filtered by the predicate.
+ ///
+ /// Children are sorted by their sortOrder.
+ ///
+ public static IEnumerable Children(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ Func predicate,
+ string? culture = null) =>
+ content.Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture).Where(predicate);
+
///
/// Gets the children of the content, filtered by a predicate.
///
@@ -1360,6 +1429,7 @@ public static class PublishedContentExtensions
///
/// Children are sorted by their sortOrder.
///
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable Children(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1382,6 +1452,7 @@ public static class PublishedContentExtensions
///
/// The content type alias.
/// The children of the content, of any of the specified types.
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable ChildrenOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1389,14 +1460,68 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string? contentTypeAlias,
string? culture = null)
+ {
+ IPublishStatusQueryService publishStatusQueryService = StaticServiceProvider.Instance.GetRequiredService();
+ return ChildrenOfType(content, variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, contentTypeAlias, culture);
+ }
+
+ ///
+ /// Gets the children of the content, of any of the specified types.
+ ///
+ /// The content.
+ ///
+ ///
+ ///
+ /// The accessor for the VariationContext
+ ///
+ /// The specific culture to filter for. If null is used the current culture is used. (Default is
+ /// null)
+ ///
+ /// The content type alias.
+ /// The children of the content, of any of the specified types.
+ public static IEnumerable ChildrenOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? contentTypeAlias,
+ string? culture = null)
{
IEnumerable children = contentTypeAlias is not null
- ? GetChildren(navigationQueryService, publishedCache, content.Key, contentTypeAlias)
+ ? GetChildren(navigationQueryService, publishedCache, content.Key, publishStatusQueryService, variationContextAccessor, contentTypeAlias, culture)
: [];
return children.FilterByCulture(culture, variationContextAccessor);
}
+ ///
+ /// Gets the children of the content, of a given content type.
+ ///
+ /// The content type.
+ /// The content.
+ /// The accessor for the VariationContext
+ ///
+ ///
+ ///
+ /// The specific culture to filter for. If null is used the current culture is used. (Default is
+ /// null)
+ ///
+ ///
+ /// The children of content, of the given content type.
+ ///
+ /// Children are sorted by their sortOrder.
+ ///
+ public static IEnumerable Children(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture).OfType();
+
///
/// Gets the children of the content, of a given content type.
///
@@ -1413,6 +1538,7 @@ public static class PublishedContentExtensions
///
/// Children are sorted by their sortOrder.
///
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IEnumerable Children(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1427,8 +1553,18 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null) =>
- content.Children(variationContextAccessor, publishedCache, navigationQueryService, culture)?.FirstOrDefault();
+ content.Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string? culture = null) =>
+ FirstChild(content, variationContextAccessor, publishedCache, navigationQueryService, StaticServiceProvider.Instance.GetRequiredService(), culture);
///
/// Gets the first child of the content, of a given content type.
@@ -1438,29 +1574,97 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias,
string? culture = null) => content
- .ChildrenOfType(variationContextAccessor, publishedCache, navigationQueryService, contentTypeAlias, culture)
+ .ChildrenOfType(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, contentTypeAlias, culture)
.FirstOrDefault();
+ ///
+ /// Gets the first child of the content, of a given content type.
+ ///
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? FirstChildOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string contentTypeAlias,
+ string? culture = null) =>
+ FirstChildOfType(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+
+ public static IPublishedContent? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ Func predicate,
+ string? culture = null)
+ => content.Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, predicate, culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IPublishedContent? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
Func predicate,
- string? culture = null)
- => content.Children(variationContextAccessor, publishedCache, navigationQueryService, predicate, culture)?.FirstOrDefault();
+ string? culture = null) =>
+ FirstChild(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ predicate,
+ culture);
public static IPublishedContent? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
Guid uniqueId,
string? culture = null) => content
- .Children(variationContextAccessor, publishedCache, navigationQueryService, x => x.Key == uniqueId, culture)?.FirstOrDefault();
+ .Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, x => x.Key == uniqueId, culture)?.FirstOrDefault();
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ Guid uniqueId,
+ string? culture = null) =>
+ FirstChild(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ uniqueId,
+ culture);
+
+ public static T? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static T? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1468,8 +1672,20 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
string? culture = null)
where T : class, IPublishedContent =>
- content.Children(variationContextAccessor, publishedCache, navigationQueryService, culture)?.FirstOrDefault();
+ FirstChild(content, variationContextAccessor, publishedCache, navigationQueryService, StaticServiceProvider.Instance.GetRequiredService(), culture);
+ public static T? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
+ Func predicate,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture)?.FirstOrDefault(predicate);
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static T? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -1478,7 +1694,14 @@ public static class PublishedContentExtensions
Func predicate,
string? culture = null)
where T : class, IPublishedContent =>
- content.Children(variationContextAccessor, publishedCache, navigationQueryService, culture)?.FirstOrDefault(predicate);
+ FirstChild(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ predicate,
+ culture);
#endregion
@@ -1649,6 +1872,7 @@ public static class PublishedContentExtensions
/// The content.
/// Variation context accessor.
///
+ ///
///
/// The specific culture to filter for. If null is used the current culture is used. (Default is
/// null)
@@ -1660,6 +1884,7 @@ public static class PublishedContentExtensions
IVariationContextAccessor variationContextAccessor,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null)
where T : class, IPublishedContent
{
@@ -1681,9 +1906,38 @@ public static class PublishedContentExtensions
.OfType();
}
- return parent.Children(variationContextAccessor, publishedCache, navigationQueryService, culture);
+ return parent.Children(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture);
}
+ ///
+ /// Gets the siblings of the content including the node itself to indicate the position, of a given content type.
+ ///
+ /// The content type.
+ /// The content.
+ /// Variation context accessor.
+ ///
+ ///
+ /// The specific culture to filter for. If null is used the current culture is used. (Default is
+ /// null)
+ ///
+ ///
+ /// The siblings of the content including the node itself, of the given content type.
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IEnumerable SiblingsAndSelf(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishedCache publishedCache,
+ INavigationQueryService navigationQueryService,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ SiblingsAndSelf(
+ content,
+ variationContextAccessor,
+ publishedCache,
+ navigationQueryService,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+
#endregion
#region Axes: custom
@@ -2047,14 +2301,26 @@ public static class PublishedContentExtensions
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);
+ }
+
+ public static IEnumerable ChildrenOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ string? contentTypeAlias,
+ string? culture = null)
{
IEnumerable children = contentTypeAlias is not null
- ? GetChildren(GetNavigationQueryService(content), GetPublishedCache(content), content.Key, contentTypeAlias)
+ ? GetChildren(GetNavigationQueryService(content), GetPublishedCache(content), content.Key, publishStatusQueryService, variationContextAccessor, contentTypeAlias, culture)
: [];
return children.FilterByCulture(culture, variationContextAccessor);
@@ -2296,20 +2562,66 @@ public static class PublishedContentExtensions
public static IPublishedContent? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null) =>
- content.Children(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), culture)?.FirstOrDefault();
+ content.Children(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string? culture = null) =>
+ FirstChild(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture);
public static IPublishedContent? FirstChildOfType(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string contentTypeAlias,
string? culture = null) =>
- content.ChildrenOfType(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), contentTypeAlias, culture)?.FirstOrDefault();
+ content.ChildrenOfType(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ contentTypeAlias,
+ culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? FirstChildOfType(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string contentTypeAlias,
+ string? culture = null) =>
+ FirstChildOfType(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ contentTypeAlias,
+ culture);
+ public static IPublishedContent? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ Func predicate,
+ string? culture = null) =>
+ content.Children(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ predicate,
+ culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
public static IPublishedContent? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
@@ -2322,20 +2634,70 @@ public static class PublishedContentExtensions
public static IPublishedContent? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
Guid uniqueId,
string? culture = null) => content
- .Children(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), x => x.Key == uniqueId, culture)?.FirstOrDefault();
+ .Children(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ x => x.Key == uniqueId,
+ culture)?.FirstOrDefault();
+
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static IPublishedContent? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ Guid uniqueId,
+ string? culture = null) =>
+ FirstChild(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ uniqueId,
+ culture);
public static T? FirstChild(
this IPublishedContent content,
IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
string? culture = null)
where T : class, IPublishedContent =>
- content.Children(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), culture)?.FirstOrDefault();
+ content.Children(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ culture)?.FirstOrDefault();
+ [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")]
+ public static T? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ FirstChild(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ culture);
+
+
+ public static T? FirstChild(
+ this IPublishedContent content,
+ IVariationContextAccessor variationContextAccessor,
+ IPublishStatusQueryService publishStatusQueryService,
+ Func predicate,
+ string? culture = null)
+ where T : class, IPublishedContent =>
+ content.Children(
+ variationContextAccessor,
+ GetPublishedCache(content),
+ GetNavigationQueryService(content),
+ publishStatusQueryService,
+ culture)?.FirstOrDefault(predicate);
public static T? FirstChild(
this IPublishedContent content,
@@ -2343,8 +2705,12 @@ public static class PublishedContentExtensions
Func predicate,
string? culture = null)
where T : class, IPublishedContent =>
- content.Children(variationContextAccessor, GetPublishedCache(content),
- GetNavigationQueryService(content), culture)?.FirstOrDefault(predicate);
+ FirstChild(
+ content,
+ variationContextAccessor,
+ StaticServiceProvider.Instance.GetRequiredService(),
+ predicate,
+ culture);
[Obsolete(
"Please use IPublishedCache and IDocumentNavigationQueryService or IMediaNavigationQueryService directly. This will be removed in a future version of Umbraco")]
@@ -2429,7 +2795,10 @@ public static class PublishedContentExtensions
INavigationQueryService navigationQueryService,
IPublishedCache publishedCache,
Guid parentKey,
- string? contentTypeAlias = null)
+ IPublishStatusQueryService publishStatusQueryService,
+ IVariationContextAccessor? variationContextAccessor,
+ string? contentTypeAlias = null,
+ string? culture = null)
{
var nodeExists = contentTypeAlias is null
? navigationQueryService.TryGetChildrenKeys(parentKey, out IEnumerable childrenKeys)
@@ -2439,8 +2808,14 @@ public static class PublishedContentExtensions
{
return [];
}
+ // We need to filter what keys are published, as calling the GetById
+ // with a non-existing published node, will get cache misses and call the DB
+ // making it a very slow operation.
+
+ culture ??= variationContextAccessor?.VariationContext?.Culture ?? string.Empty;
return childrenKeys
+ .Where(x => publishStatusQueryService.IsDocumentPublished(x, culture))
.Select(publishedCache.GetById)
.WhereNotNull();
}
diff --git a/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs b/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs
index 97bf4c8839..e25ea4cc4a 100644
--- a/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs
+++ b/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs
@@ -67,6 +67,9 @@ public static class FriendlyPublishedContentExtensions
private static IMemberTypeService MemberTypeService { get; } =
StaticServiceProvider.Instance.GetRequiredService();
+ private static IPublishStatusQueryService PublishStatusQueryService { get; } =
+ StaticServiceProvider.Instance.GetRequiredService();
+
private static INavigationQueryService GetNavigationQueryService(IPublishedContent content)
{
switch (content.ContentType.ItemType)
@@ -468,7 +471,7 @@ public static class FriendlyPublishedContentExtensions
///
///
public static IEnumerable Children(this IPublishedContent content, string? culture = null)
- => content.Children(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.Children(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
///
/// Gets the children of the content, filtered by a predicate.
@@ -487,7 +490,7 @@ public static class FriendlyPublishedContentExtensions
this IPublishedContent content,
Func predicate,
string? culture = null)
- => content.Children(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), predicate, culture);
+ => content.Children(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, predicate, culture);
///
/// Gets the children of the content, of any of the specified types.
@@ -500,7 +503,7 @@ public static class FriendlyPublishedContentExtensions
/// The content type alias.
/// The children of the content, of any of the specified types.
public static IEnumerable? ChildrenOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null)
- => content.ChildrenOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture);
+ => content.ChildrenOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture);
///
/// Gets the children of the content, of a given content type.
@@ -517,30 +520,30 @@ public static class FriendlyPublishedContentExtensions
///
public static IEnumerable? Children(this IPublishedContent content, string? culture = null)
where T : class, IPublishedContent
- => content.Children(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.Children(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static IPublishedContent? FirstChild(this IPublishedContent content, string? culture = null)
- => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
///
/// Gets the first child of the content, of a given content type.
///
public static IPublishedContent? FirstChildOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null)
- => content.FirstChildOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture);
+ => content.FirstChildOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture);
public static IPublishedContent? FirstChild(this IPublishedContent content, Func predicate, string? culture = null)
- => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), predicate, culture);
+ => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, predicate, culture);
public static IPublishedContent? FirstChild(this IPublishedContent content, Guid uniqueId, string? culture = null)
- => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), uniqueId, culture);
+ => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, uniqueId, culture);
public static T? FirstChild(this IPublishedContent content, string? culture = null)
where T : class, IPublishedContent
- => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture);
+ => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture);
public static T? FirstChild(this IPublishedContent content, Func predicate, string? culture = null)
where T : class, IPublishedContent
- => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), predicate, culture);
+ => content.FirstChild(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, predicate, culture);
///
/// Gets the siblings of the content.