4

我希望使用cq:inplaceEditing来修改我的 JCR 上的属性,只要它被 AEM 作者使用。不幸的是,我不知道如何修改属性名称它在 JCR 中实际修改看来它默认只修改属性“text”的值。

出于我的目的,我想将其富文本编辑用于具有我定义的名称的属性,而不仅仅是默认名称“文本”。

此链接上的图像显示了包含 cq:inplaceEditing 的树(由 CRXDE 提供):

在此处输入图像描述

这些是 cq:editConfig 的属性:

在此处输入图像描述

这些是 cq:inplaceEditing 的属性:

在此处输入图像描述

...当我使用 inplaceEditor 时,这就是我的 JCR 的内容节点的样子。出于潜在的安全原因,我已经删除了一些属性的名称。请注意,当我使用 inplaceEditor 时,下面的“文本”属性已更改。另请注意,我希望能够定义 inplaceEditor 更改的属性名称,而不仅仅是“文本”属性:

在此处输入图像描述

有没有办法使用不同的属性名称而不是“文本”?

- - - - - -编辑 - - - - -

将属性“textPropertyName”更改为我正在搜索的属性后,它似乎仍然没有实际修改 inplaceEditor 的行为。它仍然只修改了我的 JCR 节点的“文本”属性,而不是我放在“textPropertyName”属性中的那个。

这张图包含了我的cq:InplaceEditingConfig的属性:

在此处输入图像描述

下图包含上图中“configPath”变量指定路径下JCR节点的属性。请注意,我在此节点中设置了 textPropertyName 属性,并且文本组件仍然修改了默认属性“text”,而不是指定的属性:

在此处输入图像描述

最后,下图显示了我的 JCR 树在文本组件内部的内容。

在此处输入图像描述

------------另一个编辑----------

在我切换到经典 UI 后,我发现内联文本编辑器保留了正确的属性。出于某种原因,它不能与触摸 UI 一起正常工作。

4

2 回答 2

14

如何找到它

就地编辑功能由CQ.ipe.InplaceEditing函数的子类定义。editorType只需通过 CRXDE 工具搜索即可轻松找到。

搜索CQ.ipe.InplaceEditing返回多个结果,例如CQ.ipe.TextEditor在脚本的最后注册所需的结果,editorType即:CQ.ipe.InplaceEditing.register("text", CQ.ipe.TextEditor);

答案

通读编辑器代码,您可以找到第一个名为的可配置属性textPropertyName,根据它的文档,这正是您正在寻找的。将它与就地配置节点相结合(参见Adob​​e 的文档),它是您的案例的解决方案。

一个例子

您可以在 Geometrixx 组件的实例上自行尝试。

  1. 首先去 CRXDE 找到 Geometrixx Text 组件:/apps/geometrixx-gov/components/text.
  2. 注意/apps/geometrixx-gov/components/text/cq:editConfig/cq:inplaceEditing@configPath属性值。
  3. 查找/apps/geometrixx-gov/components/text/dialog/items/tab1/items/text资源并添加新属性:textPropertyName=myPropertyName
  4. 然后只需打开Geometrixx 政府页面添加 Geometrixx 文本组件,就地编辑它并查看网络控制台。您会注意到带有更改的参数名称的 POST 请求

TouchUI澄清后编辑

TouchUI 案例

不幸的是,如果您想为 TouchUI 界面实现相同的功能,那就没那么容易了。TouchUI的text就地编辑器由/libs/cq/gui/components/authoring/clientlibs/editor/js/editors/InlineTextEditor.js.

搜索可"text"让您大致了解此属性的硬编码方式。对于 AEM 6.1(我正在对其进行测试),您可以在从资源 JSON 映射中提取的ns.persistence.readParagraphContent函数中找到它。initialContent另一种情况可以在finishInlineEditaddHistoryStep方法中找到。将所有三个发生更改"text"为您的值会带来预期的结果。

这显然是不可接受的 - 这是一个平台范围的更改,并且会影响可能无法预料的其他(包括 ootb)组件。最简单的方法是将整个编辑器复制粘贴到您的 clientlib 中,然后将编辑器注册为一个新名称 - 请参见最后几行:ns.editor.register. 如果您对 JS 感到满意,则可能值得扩展此编辑器并仅更改受影响的三个方法。

于 2015-07-17T06:58:38.013 回答
2

从 AEM 6.3 开始,textPropertyName可以与开箱即用的 PlainTextEditor.js 一起正常工作

该属性需要config在下的节点上设置cq:InplaceEditingConfig

cq:InplaceEditingConfig 下配置节点的位置

textPropertyName 属性和值


注意 - 现在可以在以下位置找到编辑器的源代码: /libs/cq/gui/components/authoring/editors/clientlibs/core/inlineediting/js/PlainTextEditor.js

于 2017-09-27T06:11:23.137 回答