* First Go at the single block property editor based on blocklistpropertyeditor * Add simalar tests to the blocklist editor Also check whether either block of configured blocks can be picked and used from a data perspective * WIP singleblock Valiation tests * Finished first full pass off SingleBlock validation testing * Typos, Future test function * Restore accidently removed file * Introduce propertyValueConverter * Comment updates * Add singleBlock renderer * Textual improvements Comment improvements, remove licensing in file * Update DataEditorCount by 1 as we introduced a new one * Align test naming * Add ignored singleblock default renderer * Enable SingleBlock Property Indexing * Enable Partial value merging * Fix indentation --------- Co-authored-by: kjac <kja@umbraco.dk>
50 lines
2.4 KiB
C#
50 lines
2.4 KiB
C#
using Umbraco.Cms.Core.Models.Blocks;
|
|
using Umbraco.Cms.Core.Models.PublishedContent;
|
|
using Umbraco.Cms.Core.Serialization;
|
|
|
|
namespace Umbraco.Cms.Core.PropertyEditors.ValueConverters;
|
|
|
|
internal sealed class SingleBlockPropertyValueCreator : BlockPropertyValueCreatorBase<BlockListModel, BlockListItem, SingleBlockLayoutItem, BlockListConfiguration.BlockConfiguration, SingleBlockValue>
|
|
{
|
|
private readonly IJsonSerializer _jsonSerializer;
|
|
private readonly BlockListPropertyValueConstructorCache _constructorCache;
|
|
|
|
public SingleBlockPropertyValueCreator(
|
|
BlockEditorConverter blockEditorConverter,
|
|
IVariationContextAccessor variationContextAccessor,
|
|
BlockEditorVarianceHandler blockEditorVarianceHandler,
|
|
IJsonSerializer jsonSerializer,
|
|
BlockListPropertyValueConstructorCache constructorCache)
|
|
: base(blockEditorConverter, variationContextAccessor, blockEditorVarianceHandler)
|
|
{
|
|
_jsonSerializer = jsonSerializer;
|
|
_constructorCache = constructorCache;
|
|
}
|
|
|
|
// The underlying Value is still stored as an array to allow for code reuse and easier migration
|
|
public BlockListItem? CreateBlockModel(IPublishedElement owner, PropertyCacheLevel referenceCacheLevel, string intermediateBlockModelValue, bool preview, BlockListConfiguration.BlockConfiguration[] blockConfigurations)
|
|
{
|
|
BlockListModel CreateEmptyModel() => BlockListModel.Empty;
|
|
|
|
BlockListModel CreateModel(IList<BlockListItem> items) => new BlockListModel(items);
|
|
|
|
BlockListItem? blockModel = CreateBlockModel(owner, referenceCacheLevel, intermediateBlockModelValue, preview, blockConfigurations, CreateEmptyModel, CreateModel).SingleOrDefault();
|
|
|
|
return blockModel;
|
|
}
|
|
|
|
protected override BlockEditorDataConverter<SingleBlockValue, SingleBlockLayoutItem> CreateBlockEditorDataConverter() => new SingleBlockEditorDataConverter(_jsonSerializer);
|
|
|
|
protected override BlockItemActivator<BlockListItem> CreateBlockItemActivator() => new BlockListItemActivator(BlockEditorConverter, _constructorCache);
|
|
|
|
private sealed class BlockListItemActivator : BlockItemActivator<BlockListItem>
|
|
{
|
|
public BlockListItemActivator(BlockEditorConverter blockConverter, BlockListPropertyValueConstructorCache constructorCache)
|
|
: base(blockConverter, constructorCache)
|
|
{
|
|
}
|
|
|
|
protected override Type GenericItemType => typeof(BlockListItem<,>);
|
|
}
|
|
}
|