* Added new configuration "Umbraco:CMS:Examine:ExplicitlyIndexEachNestedProperty" that can be used to avoid nested properties like block grid to index each property individually. * Moved the setting "Umbraco:CMS:Examine:ExplicitlyIndexEachNestedProperty" to "Umbraco:CMS:Indexing:ExplicitlyIndexEachNestedProperty" to make it more future proof * Added missing registration * Fixed registration * Small readability improvement --------- Co-authored-by: Sven Geusens <sge@umbraco.dk>
50 lines
1.9 KiB
C#
50 lines
1.9 KiB
C#
// Copyright (c) Umbraco.
|
|
// See LICENSE for more details.
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Options;
|
|
using Umbraco.Cms.Core.Configuration.Models;
|
|
using Umbraco.Cms.Core.Models;
|
|
using Umbraco.Cms.Core.Models.Blocks;
|
|
using Umbraco.Cms.Core.Serialization;
|
|
using Umbraco.Cms.Core.Services;
|
|
using Umbraco.Cms.Web.Common.DependencyInjection;
|
|
|
|
namespace Umbraco.Cms.Core.PropertyEditors;
|
|
|
|
internal sealed class BlockValuePropertyIndexValueFactory :
|
|
NestedPropertyIndexValueFactoryBase<BlockValue, BlockItemData>,
|
|
IBlockValuePropertyIndexValueFactory
|
|
{
|
|
private readonly IContentTypeService _contentTypeService;
|
|
|
|
public BlockValuePropertyIndexValueFactory(
|
|
PropertyEditorCollection propertyEditorCollection,
|
|
IContentTypeService contentTypeService,
|
|
IJsonSerializer jsonSerializer,
|
|
IOptionsMonitor<IndexingSettings> indexingSettings)
|
|
: base(propertyEditorCollection, jsonSerializer, indexingSettings)
|
|
{
|
|
_contentTypeService = contentTypeService;
|
|
}
|
|
|
|
[Obsolete("Use non-obsolete constructor. This will be removed in Umbraco 14.")]
|
|
public BlockValuePropertyIndexValueFactory(
|
|
PropertyEditorCollection propertyEditorCollection,
|
|
IContentTypeService contentTypeService,
|
|
IJsonSerializer jsonSerializer)
|
|
: this(propertyEditorCollection, contentTypeService, jsonSerializer, StaticServiceProvider.Instance.GetRequiredService<IOptionsMonitor<IndexingSettings>>())
|
|
{
|
|
_contentTypeService = contentTypeService;
|
|
}
|
|
|
|
|
|
protected override IContentType? GetContentTypeOfNestedItem(BlockItemData input) =>
|
|
_contentTypeService.Get(input.ContentTypeKey);
|
|
|
|
protected override IDictionary<string, object?> GetRawProperty(BlockItemData blockItemData) =>
|
|
blockItemData.RawPropertyValues;
|
|
|
|
protected override IEnumerable<BlockItemData> GetDataItems(BlockValue input) => input.ContentData;
|
|
}
|