如何使用 Java 处理程序在 Hybris Backoffice 中为特定的 Base Store 隐藏 editorArea:section?

How can I hide an editorArea:section in Hybris Backoffice for a specific Base Store using a Java handler?

我在后台添加了一个新的 editorArea:section-config.xml 在 Hybris 中,例如:

<editorArea:section name="myEditorArea">
    <editorArea:attribute qualifier="someQualifier"/>
</editorArea:section>

我想使用 editorArea 名称,使用 Java 处理程序,将其隐藏在某些特定 Base 商店的 Backoffice 中。有办法吗?

如果您为特定的基本商店定义了主体(即用户组),则可以执行以下操作。

假设您有类型 Book 并且在后台-config.xml 有一个为该类型定义的上下文如下

<context type="Book" parent="GenericItem" merge-by="type">
  <context component="editor-area">
    <editorArea:editorArea>
      <editorArea:tab name="hmc.tab.common" position="0">
        <editorArea:section name="book.section.entities">
          <editorArea:attribute qualifier="title"/>
          <editorArea:attribute qualifier="description"/>
        </editorArea:editorArea>
      </editorArea:tab>
    </editorArea:editorArea>
  </context>
</context>

假设没有搜索限制并且权限允许修改 titledescription 属性,后台用户将能够修改它们. 现在让我们假设 Book 类型有 isdn 属性 并且这个 属性 在后台的编辑区域应该只对 backofficeadministratorrole[=31 可见=] 和 book.publishers.de 用户组。反过来,book.publishers.de 是德国基本商店特定组,定义如下

INSERT_UPDATE BackofficeRole; uid[unique = true]; locName[lang = en]; authorities; backOfficeLoginDisabled[default = false]
; book.publishers.de ; German Publishers ; book.publishers.de

如您所见,该角色被定义为 BackofficeRole,它是 UserGroup 的子级,但不是直接定义为 UserGroup。这很重要。

在上面的上下文代码片段中,您应该再添加一个上下文,如下所示,以实现上面假设的限制

<context type="Book" parent="GenericItem" merge-by="type">
  <context component="editor-area">
    <editorArea:editorArea>
      <editorArea:tab name="hmc.tab.common" position="0">
        <editorArea:section name="book.section.entities">
          <editorArea:attribute qualifier="title"/>
          <editorArea:attribute qualifier="description"/>
        </editorArea:editorArea>
      </editorArea:tab>
    </editorArea:editorArea>
  </context>

  <context component="editor-area" principal="backofficeadministratorrole,book.publishers.de" merge-by="principal">
    <editorArea:editorArea>
      <editorArea:tab name="hmc.addresses" merge-mode="append">
        <editorArea:section name="hmc.tab.common">
          <editorArea:attribute qualifier="isdn"/>
        </editorArea:section>
      </editorArea:tab>
    </editorArea:editorArea>
  </context>
</context>

部署更改后,不要忘记在后台重置所有内容(F4->右上角 y 图标 -> 重置所有内容)。