From 30f1d3e365d8de120885460be0afb97765b9af69 Mon Sep 17 00:00:00 2001 From: Simon Urli Date: Fri, 16 Nov 2018 16:58:54 +0100 Subject: [PATCH 1/2] XRENDERING-518: The macro content descriptor should specify if it can be edited inline * Fix the macro message to put the unchanged content at the right place --- .../rendering/internal/macro/box/DefaultBoxMacro.java | 9 ++++++++- .../internal/macro/message/AbstractMessageMacro.java | 7 +------ .../src/test/resources/macromessage1.test | 4 ++-- .../src/test/resources/macromessage2.test | 4 ++-- .../src/test/resources/macromessage3.test | 4 ++-- .../src/test/resources/macromessage4.test | 4 ++-- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java b/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java index 4c442cdd8c..b5b15bffa3 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java +++ b/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java @@ -19,6 +19,7 @@ */ package org.xwiki.rendering.internal.macro.box; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -46,6 +47,12 @@ @Singleton public class DefaultBoxMacro

extends AbstractBoxMacro

{ + /** + * All the macro that needs to display an unchanged content div around the content. + */ + private static final List ACCEPTED_MACRO_UNCHANGED_CONTENT = Arrays.asList("box", "info", "error", + "warning", "success"); + /** * The description of the macro. */ @@ -74,7 +81,7 @@ protected List parseContent(P parameters, String content, MacroTransforma List children = getMacroContentParser().parse(content, context, false, context.isInline()).getChildren(); // if we are really in the context of this macro, it's an unchanged content - if (context.getCurrentMacroBlock().getId().equals("box")) { + if (ACCEPTED_MACRO_UNCHANGED_CONTENT.contains(context.getCurrentMacroBlock().getId())) { return Collections.singletonList(new MetaDataBlock(children, this.getUnchangedContentMetaData())); // else we cannot guarantee it diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java index 8c56146e99..9d92ced054 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java +++ b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java @@ -19,7 +19,6 @@ */ package org.xwiki.rendering.internal.macro.message; -import java.util.Collections; import java.util.List; import javax.inject.Inject; @@ -27,7 +26,6 @@ import org.apache.commons.lang3.StringUtils; import org.xwiki.rendering.block.Block; -import org.xwiki.rendering.block.MetaDataBlock; import org.xwiki.rendering.macro.AbstractMacro; import org.xwiki.rendering.macro.Macro; import org.xwiki.rendering.macro.MacroExecutionException; @@ -79,10 +77,7 @@ public List execute(Object parameters, String content, MacroTransformatio boxParameters.setCssClass(context.getCurrentMacroBlock().getId() + "message"); - return Collections.singletonList( - new MetaDataBlock(this.boxMacro.execute(boxParameters, content, context), - this.getUnchangedContentMetaData()) - ); + return this.boxMacro.execute(boxParameters, content, context); } @Override diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage1.test b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage1.test index 394dfbd07e..339a6c0d7c 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage1.test +++ b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage1.test @@ -16,8 +16,8 @@ beginMacroMarkerStandalone [info] [] [Failed to do this action. The correct poss * use another value * you don't have right * another possibility] -beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginGroup [[class]=[box infomessage]] +beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginParagraph onWord [Failed] onSpace @@ -64,8 +64,8 @@ onSpace onWord [possibility] endListItem endList [BULLETED] -endGroup [[class]=[box infomessage]] endMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] +endGroup [[class]=[box infomessage]] endMacroMarkerStandalone [info] [] [Failed to do this action. The correct possibilities are: * use another value * you don't have right diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage2.test b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage2.test index 095eb8a694..3d116a4e30 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage2.test +++ b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage2.test @@ -16,8 +16,8 @@ beginMacroMarkerStandalone [warning] [] [Failed to do this action. The correct p * use another value * you don't have right * another possibility] -beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginGroup [[class]=[box warningmessage]] +beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginParagraph onWord [Failed] onSpace @@ -64,8 +64,8 @@ onSpace onWord [possibility] endListItem endList [BULLETED] -endGroup [[class]=[box warningmessage]] endMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] +endGroup [[class]=[box warningmessage]] endMacroMarkerStandalone [warning] [] [Failed to do this action. The correct possibilities are: * use another value * you don't have right diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage3.test b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage3.test index 95a2a86f8c..d46f85ef91 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage3.test +++ b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage3.test @@ -16,8 +16,8 @@ beginMacroMarkerStandalone [error] [] [Failed to do this action. The correct pos * use another value * you don't have right * another possibility] -beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginGroup [[class]=[box errormessage]] +beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginParagraph onWord [Failed] onSpace @@ -64,8 +64,8 @@ onSpace onWord [possibility] endListItem endList [BULLETED] -endGroup [[class]=[box errormessage]] endMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] +endGroup [[class]=[box errormessage]] endMacroMarkerStandalone [error] [] [Failed to do this action. The correct possibilities are: * use another value * you don't have right diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage4.test b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage4.test index 303f9ad99a..c6fc18dbcc 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage4.test +++ b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/test/resources/macromessage4.test @@ -13,8 +13,8 @@ beginDocument beginMacroMarkerStandalone [info] [] [* item1 * item2] -beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginGroup [[class]=[box infomessage]] +beginMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] beginList [BULLETED] beginListItem onWord [item1] @@ -23,8 +23,8 @@ beginListItem onWord [item2] endListItem endList [BULLETED] -endGroup [[class]=[box infomessage]] endMetaData [[unchanged-content]=[java.util.List< org.xwiki.rendering.block.Block >]] +endGroup [[class]=[box infomessage]] endMacroMarkerStandalone [info] [] [* item1 * item2] endDocument \ No newline at end of file From 32262e0bd29a11990d1ad05e08849d2e6d7b69c8 Mon Sep 17 00:00:00 2001 From: Simon Urli Date: Fri, 16 Nov 2018 17:21:33 +0100 Subject: [PATCH 2/2] XRENDERING-518: The macro content descriptor should specify if it can be edited inline * Put some explanations --- .../xwiki/rendering/internal/macro/box/DefaultBoxMacro.java | 3 ++- .../rendering/internal/macro/message/AbstractMessageMacro.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java b/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java index b5b15bffa3..27818dc1fb 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java +++ b/xwiki-rendering-macros/xwiki-rendering-macro-box/src/main/java/org/xwiki/rendering/internal/macro/box/DefaultBoxMacro.java @@ -49,6 +49,7 @@ public class DefaultBoxMacro

extends AbstractBoxMa { /** * All the macro that needs to display an unchanged content div around the content. + * // TODO: this nasty hack will be removed as soon as message macro is refactored to use the AbstractBoxMacro */ private static final List ACCEPTED_MACRO_UNCHANGED_CONTENT = Arrays.asList("box", "info", "error", "warning", "success"); @@ -80,7 +81,7 @@ protected List parseContent(P parameters, String content, MacroTransforma // Don't execute transformations explicitly. They'll be executed on the generated content later on. List children = getMacroContentParser().parse(content, context, false, context.isInline()).getChildren(); - // if we are really in the context of this macro, it's an unchanged content + // TODO: this nasty hack will be removed as soon as message macro is refactored to use the AbstractBoxMacro if (ACCEPTED_MACRO_UNCHANGED_CONTENT.contains(context.getCurrentMacroBlock().getId())) { return Collections.singletonList(new MetaDataBlock(children, this.getUnchangedContentMetaData())); diff --git a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java index 9d92ced054..5bd5db499d 100644 --- a/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java +++ b/xwiki-rendering-macros/xwiki-rendering-macro-message/src/main/java/org/xwiki/rendering/internal/macro/message/AbstractMessageMacro.java @@ -77,6 +77,7 @@ public List execute(Object parameters, String content, MacroTransformatio boxParameters.setCssClass(context.getCurrentMacroBlock().getId() + "message"); + // TODO: we should not rely directly on the concrete macro, but only on the AbstractBoxMacro return this.boxMacro.execute(boxParameters, content, context); }