четверг, 5 мая 2011 г.

Консольные приложения (2): Определение приложения. Тип подключения

Давайте теперь изучим наше первое консольное приложение, а именно его файл определения древовидной структуры.

Сразу же скажу, что определение схемы для создания консольных приложений находится на сайте как /Composite/schemas/Trees/Tree.xsd.

Вы можете подключить эту схему к XML-файлу вашего консольного приложения в Visual Studio, например, и пользоваться IntelliSense и валидацией создаваемого XML.

Давайте откроем наш файл PageGuid.xml и рассмотрим его элементы.

Корневым является элемент ElementStructure.

<ElementStructure
xmlns="http://www.composite.net/ns/management/trees/treemarkup/1.0"
xmlns:f="http://www.composite.net/ns/function/1.0">
<!-- … -->
</ElementStructure>

Коревой элемент приложения включает в себя два обязательных элемента:
  • Тип подключения приложения (в данном случае: ElementStructure.AutoAttachments)
  • Корневой элемент древовидной структуры (ElementRoot)

Тип подключения приложения

Этот элемент содержит информацию о том, как и где наше приложение должно появиться в админке.

Во-первых, как мы хотим, чтобы оно появлялось в админке: автоматически (ElementStructure.AutoAttachments) или пользователь будет сам добавлять приложение вручную (ElementStructure.AllowedAttachments)?

В данном случае приложение будет появляться автоматически:

<ElementStructure.AutoAttachments>
<!-- … -->
</ElementStructure.AutoAttachments>

(О добавлении приложения вручную мы поговорим в другом сообщении.)

Во-вторых, где мы хотим, чтобы наше приложение появлялось?

Здесь есть несколько вариантов. Приложение можно подключить:
  • к существующему элементу какого-то типа в одном из разделов админки (например, к страницам в разделе “Контент”)
  • как самостоятельную структуру в одном из разделов (например, “Типы страниц” в разделе “Макет” - это именно тот случай)
  • как структуру в своем собственном разделе
В данном случае мы подключаем приложение к типу данных “страница в C1” (Composite.Data.Types.IPage). Именно этот тип нужно указать в дочернем элементе DataType в атрибуте Type:

<DataType Type="Composite.Data.Types.IPage" />

Это системный тип, который не виден в разделе “Данные”. (Но с таким же успехом мы можем подключить приложение, например, к своему типу данных, который мы предварительно создали в разделе “Данные”.)

В данном случае мы расширяем возможности операций над страницами в C1, поэтому используем именно системный тип для страниц.

(Остальные варианты "мест" подключения мы рассмотрим в других сообщениях.)

Основная же часть приложения строится во корневом элементе древовидной структуры приложения - ElementRoot.

(продолжение)

Предыдущие сообщения по теме:

Комментариев нет:

Отправить комментарий