CQ5: Наследование / Расширенные диалоги

Для справки я на CQ5.5

Мне любопытно, есть ли способ расширить унаследованный диалог, не перезаписывая его родительский диалог.

Например, имейте следующую структуру:

base-page-template
   - dialog
      - title
      - description

inerited-from-base-page
   - dialog
      - custom field
      --------------- [inherited from parent]
      - title
      - description

Например, я пытаюсь избежать: мне нужно добавить новое свойство к базовой странице, которое должно отображаться во всех шаблонах страниц, которые расширяются от базовой страницы. Мое текущее решение - добавить это свойство во все диалоговые окна отдельно. Так, например, в приведенной выше структуре мне пришлось бы добавить новое «свойство по умолчанию» как к диалоговым окнам базовой страницы, так и к диалоговым окнам, унаследованным от базовой страницы.

Единственный другой вариант, который я мог придумать, - это создать узел панели, представляющий «базовую страницу», а затем включить эту панель с узлом xtype: cqinclude.

Прежде чем перейти ко второму пути, мне любопытно, расширил ли кто-нибудь свои диалоги так, как я описываю выше.

Любая помощь приветствуется, спасибо, Броди


aem
person Brodie    schedule 22.01.2014    source источник


Ответы (2)


Нет, нет возможности напрямую наследовать диалоги. Лучшее, что вы можете сделать, - это включить диалоговые вкладки с помощью свойства path.

Вы должны создать свою вкладку, свои вкладки в другом месте, и вы можете включить ее в свой диалог, используя свойство пути, как показано ниже:

<items jcr:primaryType="cq:WidgetCollection">
        <tabs jcr:primaryType="cq:TabPanel">
            <items jcr:primaryType="cq:WidgetCollection">
                <tab1
                        jcr:primaryType="cq:Widget"
                        path="/apps/myproject/tab1.infinity.json"
                        xtype="cqinclude"/>
                <tab2
                        jcr:primaryType="cq:Widget"
                        path="/apps/myproject/tab2.infinity.json"
                        xtype="cqinclude"/>

            </items>
        </tabs>
</items>    

Где tab1 и tab2 - это панели вкладок.

Итак, в вашем случае это будет примерно так:

base_page_dialog_tab
      - dialog
      - title
      - description

inherited page-dialog-tab
      - custom field


base-page-template
    - include base page dialog tab here.   

inerited-from-base-page
    - include Tab 1 - inherited page-dialog tab using path property 
    - include Tab 2 - base page dialog tab using path property.
person Rajesh Pantula    schedule 23.01.2014
comment
Я подумал, что это будет единственный оставшийся вариант, спасибо, что приложили усилия и включили пример. На данный момент я не вижу причин, по которым он не заслуживает зеленой галочки: D - person Brodie; 24.01.2014

Приведенный выше ответ Раджеша верен по отношению к dialog.xml, написанному для классического интерфейса пользовательского интерфейса в AEM.

Эквивалент cqinclude в сенсорном интерфейсе: sling: resourceType = "granite / ui / components / foundation / include". Пример:

<basic
     jcr:primaryType="nt:unstructured"
     sling:resourceType="granite/ui/components/foundation/include"
     path="foundation/components/page/cq:dialog/content/items/tabs/items/basic"/>

С сенсорным пользовательским интерфейсом в AEM возможен другой тип наследования диалогов с использованием свойства sling: resourceSuperType, однако обратите внимание, что это не наследует свойства диалогового окна от его родителя живой копии. Диалог унаследован от супертипа ресурса стропа.

Я понимаю, что эта функция не является решением проблемы, описанной выше. Просто хочу отметить, что наследование диалогов возможно с новым созданием TOUCH-UI.

Ниже приводится пример.

base_page_dialog_tab (sling:resourceType='A')
      - dialog
      - title
      - description

page-dialog-tab (sling:resourceSuperType=sling:resourceSuperType='A')
      - custom field

В приведенном выше примере диалоговое окно page-dialog-tab будет иметь следующие четыре свойства в своем диалоговом окне.

- dialog
- title
- description
- custom field

Доступно несколько полезных параметров конфигурации, например sling: hideProperties, sling: hideResource, sling: hideChildren и sling: orderBefore, чтобы скрыть и упорядочить свойства в диалоговом окне.

person user1057653    schedule 01.02.2017