From c0517c35629907af4b312007362fb27abca2143f Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Tue, 14 Jan 2025 10:40:45 +0100 Subject: [PATCH] Allow filtering for multiple content types (#17960) --- .../Querying/Filters/ContentTypeFilter.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Cms.Api.Delivery/Querying/Filters/ContentTypeFilter.cs b/src/Umbraco.Cms.Api.Delivery/Querying/Filters/ContentTypeFilter.cs index 13d9dc77ec..50c390c766 100644 --- a/src/Umbraco.Cms.Api.Delivery/Querying/Filters/ContentTypeFilter.cs +++ b/src/Umbraco.Cms.Api.Delivery/Querying/Filters/ContentTypeFilter.cs @@ -1,6 +1,5 @@ using Umbraco.Cms.Api.Delivery.Indexing.Filters; using Umbraco.Cms.Core.DeliveryApi; -using Umbraco.Extensions; namespace Umbraco.Cms.Api.Delivery.Querying.Filters; @@ -15,15 +14,15 @@ public sealed class ContentTypeFilter : IFilterHandler /// public FilterOption BuildFilterOption(string filter) { - var alias = filter.Substring(ContentTypeSpecifier.Length); + var filterValue = filter.Substring(ContentTypeSpecifier.Length); + var negate = filterValue.StartsWith('!'); + var aliases = filterValue.TrimStart('!').Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); return new FilterOption { FieldName = ContentTypeFilterIndexer.FieldName, - Values = alias.IsNullOrWhiteSpace() == false - ? new[] { alias.TrimStart('!') } - : Array.Empty(), - Operator = alias.StartsWith('!') + Values = aliases, + Operator = negate ? FilterOperation.IsNot : FilterOperation.Is };