我已经创建了一个名为annotation
的按钮,并且我已经添加了hasannotation
OOTB granite渲染条件。在选择带有注释的图像时,按钮不会被渲染。
发布于 2019-03-05 15:52:34
首先,您需要将granite:rel属性添加到按钮。正如documentation所说的
用于表示组件的语义关系,类似于HTML rel属性。
您可以在自定义按钮中将AEM现有granite:rel添加为"aem-assets-admin-actions-annotate-activator“,如/libs/dam/gui/content/assets/jcr:content/actions/selection/annotate所示
或者,您也可以添加自定义值,比如"my-annotation-rel“。在这种情况下,您需要告诉AEM考虑自定义值。为此,您需要覆盖/libs/dam/gui/coral/components/admin/contentrenderer/base/assetBase.jsp并添加以下行:
actionRels.add("my-annotation-rel");
更新:呈现条件不起作用,因为路径未正确传递到redercondition组件。{requestPathInfo.suffix}不提供资产的实际路径,而是提供文件夹路径,因此当您处于卡片/列/列表视图中时,它无法进行检查。
为了实现这一点,请执行以下步骤:
boolean
hasAnnotation = NodeIterator;NodeIterator nodeItr= node.getNodes();Node commentsNode;while(nodeItr.hasNext()) { Node childNode = nodeItr.nextNode();NodeIterator childItr = childNode.getNodes();while(childItr.hasNext()) { Node secondLevelChild = childItr.nextNode();false{NodeIterator thirdLevelNode = secondLevelChild.getNodes();while(annotation()){ if(thirdLevelNode.nextNode().hasProperty("annotationData")){ hasAnnotation = true;} if(hasAnnotation){ actionRels.add(“my-thirdLevelNode.hasNext-rel”);}
-rel”属性添加到自定义按钮注释中
应该能行得通。
另一种不改变OOTB jsp文件行为的方法是,如果你正在定制metadataeditor,那么granite渲染条件应该可以工作。在这种情况下,您必须首先覆盖此按钮和自定义按钮:
/libs/dam/gui/content/assets/metadataeditor/jcr:content/actions
并在您的自定义按钮下添加granite:rendercondition节点,并将path属性指定为
${empty requestPathInfo.suffix ? param.item : requestPathInfo.suffix}
https://stackoverflow.com/questions/54996642
复制相似问题