From d7833d811dfda77f6ec1a02cacf93290af27e79e Mon Sep 17 00:00:00 2001 From: eschleb Date: Thu, 18 Apr 2024 13:35:03 +0200 Subject: [PATCH] Implement ChildNodeWrapper --- custom-definitions/README.md | 1 + .../childnodewrapper/ChildNodeWrapper.java | 77 ++++++++++++++++++ .../custom/childnodewrapper/README.md | 25 ++++++ .../childnodewrapper/assets/jcr_structure.png | Bin 0 -> 11663 bytes .../childnodewrapper/assets/screenshot.png | Bin 0 -> 30556 bytes 5 files changed, 103 insertions(+) create mode 100644 custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/ChildNodeWrapper.java create mode 100644 custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/README.md create mode 100644 custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/assets/jcr_structure.png create mode 100644 custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/assets/screenshot.png diff --git a/custom-definitions/README.md b/custom-definitions/README.md index 7e06bf7..605a0dc 100644 --- a/custom-definitions/README.md +++ b/custom-definitions/README.md @@ -6,6 +6,7 @@ - [LinkSet](src/main/java/com/merkle/oss/magnolia/definition/custom/linkset/README.md) - [ImageSet](src/main/java/com/merkle/oss/magnolia/definition/custom/imageset/README.md) - [VideoSet](src/main/java/com/merkle/oss/magnolia/definition/custom/videoset/README.md) + - [ChildNodeWrapper](src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/README.md) ## validators - MimeType diff --git a/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/ChildNodeWrapper.java b/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/ChildNodeWrapper.java new file mode 100644 index 0000000..19e1c86 --- /dev/null +++ b/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/ChildNodeWrapper.java @@ -0,0 +1,77 @@ +package com.merkle.oss.magnolia.definition.custom.childnodewrapper; + +import info.magnolia.ui.editor.EditorView; +import info.magnolia.ui.editor.FormDefinition; +import info.magnolia.ui.editor.FormView; +import info.magnolia.ui.editor.ItemProviderDefinition; +import info.magnolia.ui.editor.JcrChildNodeProviderDefinition; +import info.magnolia.ui.field.ConfiguredComplexPropertyDefinition; +import info.magnolia.ui.field.ConfiguredFieldDefinition; +import info.magnolia.ui.field.EditorPropertyDefinition; +import info.magnolia.ui.framework.layout.FieldLayoutDefinition; +import info.magnolia.ui.framework.layout.SingleFieldLayoutProducer; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import javax.jcr.Node; + +public class ChildNodeWrapper extends ConfiguredComplexPropertyDefinition implements FormDefinition { + private final JcrChildNodeProviderDefinition nodeProvider = new JcrChildNodeProviderDefinition(); + private final String name; + private final T field; + + public ChildNodeWrapper(final String nodeName, final T field) { + this.field = field; + this.name = nodeName + "." + field.getName(); + this.nodeProvider.setSupportI18N(false); + this.nodeProvider.setNodeName(nodeName); + } + + public T getField() { + return field; + } + + @Override + public Class> getImplementationClass() { + return (Class) FormView.class; + } + + @Override + public boolean isI18n() { + return field.isI18n(); + } + + @Override + public String getName() { + return name; + } + + @Override + public ItemProviderDefinition getItemProvider() { + return nodeProvider; + } + + @Override + public List getProperties() { + return List.of(field); + } + + @Override + public FieldLayoutDefinition getLayout() { + return new SingleFieldLayoutProducer.Definition(); + } + + public static List wrap(final String nodeName, final ConfiguredFieldDefinition... fields) { + return wrap(nodeName, Arrays.stream(fields)).collect(Collectors.toList()); + } + public static List wrap(final String nodeName, final List> fields) { + return wrap(nodeName, fields.stream()).collect(Collectors.toList()); + } + + public static Stream wrap(final String nodeName, final Stream> fields) { + return fields.map(field -> new ChildNodeWrapper<>(nodeName, field)); + } +} \ No newline at end of file diff --git a/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/README.md b/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/README.md new file mode 100644 index 0000000..a33b420 --- /dev/null +++ b/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/README.md @@ -0,0 +1,25 @@ +# ChildNodeWrapper +Allows to save fields in child nodes without being nested in a composite/switchable field. + +screenshot +
+jcr-structure + +## Usage +### Dialog + +```java +import info.magnolia.ui.field.EditorPropertyDefinition; +import info.magnolia.module.blossom.annotation.TabFactory; + +import com.merkle.oss.magnolia.definition.custom.childnodewrapper.ChildNodeWrapper; + +@TabFactory("someTab") +public List someTab() { + return ChildNodeWrapper.wrap("teaser", + new TextFieldDefinitionBuilder().i18n().build("title"), + new TextFieldDefinitionBuilder().i18n().build("text"), + new AssetLinkDefinitionBuilder().build("image") + ); +} +``` \ No newline at end of file diff --git a/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/assets/jcr_structure.png b/custom-definitions/src/main/java/com/merkle/oss/magnolia/definition/custom/childnodewrapper/assets/jcr_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..f423b8756521a1444f44403cd5351e5fb28c94a4 GIT binary patch literal 11663 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