Классический интерфейс наложения столбцов AEM - список столбцов изменен - PullRequest
0 голосов
/ 03 января 2019

Я следовал учебнику о том, как настроить консоль AEM, добавив новый столбец в классическом пользовательском интерфейсе.Все работает, и я вижу новый столбец, отображающий данные.Меня беспокоит только одна вещь:

Перед наложением следующий список столбцов OOTB:

enter image description here

После наложения:

enter image description here

Есть идеи, как сохранить список столбцов OOTB?

1 Ответ

0 голосов
/ 08 января 2019

Список столбцов OOTB выводится из SiteAdmin.js в /libs/cq/ui/widgets/source/widgets/wcm

Переопределите этот файл в apps, чтобы добавить свой пользовательский столбец, сохранив при этом другие OOTB -

  • Копировать SiteAdmin.js из /libs/cq/ui/widgets/source/widgets/wcm в /apps/cq/ui/widgets/source/widgets/wcm. Папки из jcr:primaryType - nt:folder.

enter image description here

  • Редактировать этот файл. Строка 173 в моей версии (AEM 6.2 - не имеет значения, поскольку это связано с классическим пользовательским интерфейсом) содержит список отображаемых столбцов. Добавьте свой пользовательский столбец в список. например

                "columns": [
                    CQ.wcm.SiteAdmin.COLUMNS["numberer"],
                    CQ.wcm.SiteAdmin.COLUMNS["thumbnail"],
                    CQ.wcm.SiteAdmin.COLUMNS["title"],
                    CQ.wcm.SiteAdmin.COLUMNS["name"],
                    CQ.wcm.SiteAdmin.COLUMNS["published"],
                    CQ.wcm.SiteAdmin.COLUMNS["modified"],
                    CQ.wcm.SiteAdmin.COLUMNS["scene7Status"],
                    CQ.wcm.SiteAdmin.COLUMNS["status"],
                    CQ.wcm.SiteAdmin.COLUMNS["impressions"],
                    CQ.wcm.SiteAdmin.COLUMNS["template"],
                    CQ.wcm.SiteAdmin.COLUMNS["workflow"],
                    CQ.wcm.SiteAdmin.COLUMNS["locked"],
                    CQ.wcm.SiteAdmin.COLUMNS["liveCopyStatus"],
                    CQ.wcm.SiteAdmin.COLUMNS["starred"]
               ],
    
  • Теперь вы должны определить логику для этого нового столбца (помеченный звездочкой). Строка с номером 2006 и далее (ищите CQ.wcm.SiteAdmin.COLUMNS = {) в том же файле, вы найдете логику для каждого из столбцов, перечисленных в предыдущем пункте. Добавьте логику для пользовательского столбца.

    "mime": { "header":CQ.I18n.getMessage("Kind"), "id":"mime", "hidden":true, "dataIndex":"mime" }, "starred": { "header":CQ.I18n.getMessage("Starred"), "id":"starred", "dataIndex":"starred", "hidden":true, "renderer": function(val, meta, rec) { console.log("Rec " + rec) return rec.json.starred; } }

  • rec.json.starred вычисляется в файле StarredListInfoProvider.java из учебника, связанного с вашим вопросом.

  • Сохраните, и вы должны увидеть столбцы OOTB вместе со своим.

enter image description here

  • Итак, из этого урока вы просто пропускаете бит overlay (раздел Displaying the New Column на странице) и используете упомянутый выше метод override, чтобы сохранить все столбцы OOTB.

Дополнительная информация

  • Третий пункт, т. Е. Логика для настраиваемого столбца, на данный момент я добавил только hidden: true, чтобы сделать столбец скрытым по умолчанию и быть видимым только при его проверке. В CQ.Ext.grid.ColumnModel есть несколько других открытых методов, которые вы можете использовать для дальнейшей настройки. Для получения дополнительной информации см. Документ API виджетов .

  • В этом руководстве описывается вычисление значения настраиваемого столбца на стороне сервера, этого можно добиться и на фронте javascript. Вам нужно зарегистрировать файл javascript в clientlib и убедиться, что значение categories clientlib совпадает со значением categories файла библиотеки. В случае SiteAdmin.js это cq.widgets, поэтому ваша пользовательская клиентская библиотека также должна иметь то же значение categories.

  • Когда вы перезаписали файл, по крайней мере на моем компьютере я не сразу увидел изменения, мне пришлось удалить кэшированные клиентские библиотеки в /var/clientlibs, чтобы я смог увидеть изменения. Используйте console.log, debugger или обычный отладчик chrome для дальнейшего понимания логики этого файла.

  • Используя такой инструмент, как FileVault , чтобы перенести эти изменения в вашу файловую систему и добавить их в систему управления версиями, чтобы она распространялась на остальные среды через конвейер сборки, нужно добавить запись в filter.xml под META-INF\vault для переопределенной папки, которую должен забрать maven.

  • Overriding - это , обычно не рекомендуется , так как вы можете потерять обновления, когда Adobe выпустит новую версию, но в этом случае SiteAdmin.js относится к классическому пользовательскому интерфейсу, и Adobe перестала поддерживать Классический пользовательский интерфейс для хорошего и на самом деле глядя на удаление классического пользовательского интерфейса с 2019 года выпуска. Поэтому я не вижу никакого вреда в переопределении для этого варианта использования.

...