簡體   English   中英

如何更改cq:inplaceEditing的持久性屬性

[英]How to change persistence property of cq:inplaceEditing

我希望使用cq:inplaceEditing來修改我的JCR上的屬性,只要AEM作者使用它。 不幸的是,我不知道如何修改它在JCR中實際修改的屬性名稱 它似乎默認只修改屬性“text”的值。

出於我的目的,我想對我定義名稱的屬性使用富文本編輯,而不僅僅是默認名稱“text”。

此鏈接中的圖像顯示包含cq:inplaceEditing的樹(由CRXDE提供):

在此輸入圖像描述

這些是cq:editConfig的屬性:

在此輸入圖像描述

這些是cq:inplaceEditing的屬性:

在此輸入圖像描述

...當我使用inplaceEditor時,這就是我的JCR的內容節點。 出於潛在的安全原因,我已經將某些屬性的名稱塗抹了。 請注意,當我使用inplaceEditor時,下面的“text”屬性已更改。 另請注意,我希望能夠定義inplaceEditor更改的屬性名稱,而不僅僅是“text”屬性:

在此輸入圖像描述

有沒有辦法使用不同的屬性名稱而不是“文本”?

- - - - - -編輯 - - - - -

將屬性“textPropertyName”更改為我正在搜索的屬性后,它似乎仍然不會實際修改inplaceEditor的行為。 它仍然只修改我的JCR節點的“text”屬性,而不是我在“textPropertyName”屬性中放置的屬性。

這張圖片包含我的cq:InplaceEditingConfig的屬性:

在此輸入圖像描述

下圖包含上圖中“configPath”變量中指定的路徑上JCR節點的屬性。 請注意,我在此節點中設置了textPropertyName屬性,文本組件仍然會修改默認屬性“text”而不是指定的屬性:

在此輸入圖像描述

最后,下圖顯示了文本組件內部的JCR樹的內容。

在此輸入圖像描述

-----------另一個編輯----------

我發現在切換到經典UI之后,內聯文本編輯器保持了正確的屬性。 出於某種原因,它無法與觸摸UI一起正常工作。

如何找到它

就地編輯功能由CQ.ipe.InplaceEditing函數的子類定義。 只需通過CRXDE工具搜索editorType ,即可輕松找到它。

搜索CQ.ipe.InplaceEditing返回多個結果,例如CQ.ipe.TextEditor ,它在腳本的最末端注冊所需的editorType即: CQ.ipe.InplaceEditing.register("text", CQ.ipe.TextEditor);

答案

閱讀編輯器代碼,您可以找到第一個名為textPropertyName可配置屬性,根據它的文檔,您可以找到它。 將它與inplace配置節點(請參閱Adobe的文檔 )結合使用,它就是您的案例解決方案。

一個例子

您可以在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 resource並添加新屬性: textPropertyName=myPropertyName
  4. 然后只需打開Geometrixx Gov頁面添加Geometrixx Text組件,在其中編輯它並查看網絡控制台。 您將注意到具有更改的參數名稱的POST請求

在TouchUI澄清之后編輯

TouchUI案例

如果你想為TouchUI界面實現相同的功能,那么不幸的是它並不那么容易。 TouchUI的text inplace編輯器由/libs/cq/gui/components/authoring/clientlibs/editor/js/editors/InlineTextEditor.js定義。

搜索"text"可以概覽此屬性的硬編碼方式。 對於AEM 6.1(我正在測試它),您可以在ns.persistence.readParagraphContent函數中找到它,其中initialContent是從資源JSON映射中提取的。 可以在finishInlineEditaddHistoryStep方法中找到另一個出現的情況。 "text"所有三個出現更改為您的值會帶來預期的結果。

這顯然是不可接受的 - 這是一個平台范圍的更改,並將影響其他可能無法預料的組件(包括ootb)。 最簡單的方法是將整個編輯器復制粘貼到clientlib中並將編輯器注冊為新名稱 - 請參閱最后幾行: ns.editor.register 如果您對JS感到滿意,那么擴展此編輯器並更改僅受影響的三種方法可能是值得的。

從AEM 6.3開始, textPropertyName可以與開箱即用的PlainTextEditor.js一起正常工作

需要在cq:InplaceEditingConfig下的config節點上設置該屬性

cq:InplaceEditingConfig下配置節點的位置

textPropertyName屬性和值


注 - 編輯器的源代碼現在位於: /libs/cq/gui/components/authoring/editors/clientlibs/core/inlineediting/js/PlainTextEditor.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM