Продолжим рассматривать пример консольного приложения, использующегося в пакете Composite.Community.Blog.
Давайте сделаем быстрый обзор иерархии элементов этого консольного приложения. Дело в том, что в древовидной структуре элементов блога используется несколько уровней. Было бы неплохо разобраться, как такая структура создается.
Под корневым элементом Blog Entries, находятся записи блога, сгруппированные по месяцам. У каждой записи могут быть комментарии, которые находятся под элементом Comments.
Рассмотрим, как это представлено в файле определения древовидной структуры.
(Я специально оставил только интересующие нас части.)
Здесь мы видим, что под обязательным XML-элементом построения дерева элементов ElementRoot, находится простой XML-элемент Element. Именно он появляется как корневой под страницей в админке.
Далее используется еще один XML-элемент представления данных - DataFolderElements, с помощью которого можно группировать элементы определенного типа данных по какому-нибудь полю (в данном случае по дате поста в блоге). Об этом элементе мы подробнее поговорим в следующем сообщении.
Далее мы при помощи XML-элемента DataElements представляем элементы из типа данных Composite.Community.Blog.Entries, и при помощи динамических полей (${...}), каждую запись из блога показываем в дереве используя ее заголовок (Title).
Далее, у каждой записи может быть простой XML-элемент Element, который имеет одно и тоже название: Comments. И если имеются комментарии к записи, то они представлены при помощи еще одного XML-элемента DataElements, который берет данные из типа Composite.Community.Blog.Comments. (Комментарии в примере фильтруются по идентификатору записи в блоге. О фильтровании элементов данных мы поговорим в одном из следующих сообщений.)
На что нужно обратить внимание?
Во-первых, каждый уровень в дереве всегда представлен одним из трех XML-элементов:
В-третьих, у XML-элемента DataElements есть атрибут Display (режим представления), который контролирует представление каждого элемента в зависимости от того, есть ли у текущего элемента дочерние элементы (в нашем примере, есть ли у записи блога комментарии или нет.). Он может иметь такие значения:
А теперь рассмотрим более подробно XML-элемент DataFolderElements.
Предыдущие сообщения по теме:
Давайте сделаем быстрый обзор иерархии элементов этого консольного приложения. Дело в том, что в древовидной структуре элементов блога используется несколько уровней. Было бы неплохо разобраться, как такая структура создается.
Под корневым элементом Blog Entries, находятся записи блога, сгруппированные по месяцам. У каждой записи могут быть комментарии, которые находятся под элементом Comments.
Рассмотрим, как это представлено в файле определения древовидной структуры.
<ElementRoot>
<Children>
<Element Label="Blog Entries" Id="Root">
<!-- остальной XML -->
<Children>
<DataFolderElements Type="Composite.Community.Blog.Entries" DateFormat="yyyy MMMM" FieldGroupingName="Date" Display="Compact">
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
<Children>
<Element Label="Comments" Id="Comments">
<Children>
<DataElements Type="Composite.Community.Blog.Comments" Label="${C1:Data:Composite.Community.Blog.Comments:Title}" Display="Compact">
<!-- остальной XML -->
</DataElements>
</Children>
</Element>
</Children>
</DataElements>
</Children>
</DataFolderElements>
</Children>
</Element>
</Children>
</ElementRoot>
<Children>
<Element Label="Blog Entries" Id="Root">
<!-- остальной XML -->
<Children>
<DataFolderElements Type="Composite.Community.Blog.Entries" DateFormat="yyyy MMMM" FieldGroupingName="Date" Display="Compact">
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
<Children>
<Element Label="Comments" Id="Comments">
<Children>
<DataElements Type="Composite.Community.Blog.Comments" Label="${C1:Data:Composite.Community.Blog.Comments:Title}" Display="Compact">
<!-- остальной XML -->
</DataElements>
</Children>
</Element>
</Children>
</DataElements>
</Children>
</DataFolderElements>
</Children>
</Element>
</Children>
</ElementRoot>
(Я специально оставил только интересующие нас части.)
Здесь мы видим, что под обязательным XML-элементом построения дерева элементов ElementRoot, находится простой XML-элемент Element. Именно он появляется как корневой под страницей в админке.
Далее используется еще один XML-элемент представления данных - DataFolderElements, с помощью которого можно группировать элементы определенного типа данных по какому-нибудь полю (в данном случае по дате поста в блоге). Об этом элементе мы подробнее поговорим в следующем сообщении.
Далее мы при помощи XML-элемента DataElements представляем элементы из типа данных Composite.Community.Blog.Entries, и при помощи динамических полей (${...}), каждую запись из блога показываем в дереве используя ее заголовок (Title).
Далее, у каждой записи может быть простой XML-элемент Element, который имеет одно и тоже название: Comments. И если имеются комментарии к записи, то они представлены при помощи еще одного XML-элемента DataElements, который берет данные из типа Composite.Community.Blog.Comments. (Комментарии в примере фильтруются по идентификатору записи в блоге. О фильтровании элементов данных мы поговорим в одном из следующих сообщений.)
На что нужно обратить внимание?
Во-первых, каждый уровень в дереве всегда представлен одним из трех XML-элементов:
- Element
- DataElements
- DataFolderElements
В-третьих, у XML-элемента DataElements есть атрибут Display (режим представления), который контролирует представление каждого элемента в зависимости от того, есть ли у текущего элемента дочерние элементы (в нашем примере, есть ли у записи блога комментарии или нет.). Он может иметь такие значения:
- Lazy: (“Отложенный”) Показывает все элементы независимо от того, есть ли у них дочерние элементы или нет, а также всегда показывает “плюсик” ("+") возле элементов для их разворачивания. Это значение используется по умолчанию, если явно не задано одно из двух ниже. (На скриншоте выше, у элемента “Консольные приложения” будет показан “плюсик” при этом значении, несмотря на то, что комментариев у него нет.)
- Compact: (“Компактный”) Показывает только те элементы, у которых есть дочерние элементы, остальные - скрывает. (На скриншоте выше, элемент “Консольные приложения” не будет показан при этом значении.)
- Auto: (“Автоматический”) Показывает все элементы независимо от того, есть ли у них дочерние элементы или нет, но показывает “плюсик” ("+") только возле тех элементов, у которых есть дочерние элементы.
А теперь рассмотрим более подробно XML-элемент DataFolderElements.
Предыдущие сообщения по теме:
- Консольные приложения (1): Введение
- Консольные приложения (2): Определение приложения. Тип подключения
- Консольные приложения (3): Определение приложения. Древовидная структура
- Консольные приложения (4): Динамические поля
- Консольные приложения (5): Представление данных
- Консольные приложения (6): Стандартные действия
- Консольные приложения (7): Ручное подключение
Комментариев нет:
Отправить комментарий