Любой тип данных, начиная от корневого типа - Infospace, и заканчивая статьями, файлами или новостями имеет свою структуру. Эта структура описывается в конфигурационных XML-файлах.
Выбор места размещения
Описание нового типа данных должно быть в одном из config*.xml файлах, находящихся в каталоге ARPSITE_HOME/etc. Название файла должно определяться исходя из следующих предпочтений:
- config-названиепроекта.xml, если новый тип данных относится к какому-либо сайту или порталу (проекту).
- config-названиефирмы.xml, если новый тип данных относится ко всем проектам какой-либо фирмы. 1
В одном файле могут быть описаны несколько типов данных и могут находиться другие элементы конфигурации системы.
Место элемента <type> в структуре конфигурационного файла
Файл конфигурации системы всегда должен иметь корневой элемент <config>, являющийся родителем для остальных элементов конфигурации. Для хранения информации о типах данных используется подэлемент <types>. Этот элемент не имеет атрибутов и содержит только подэлементы <type>, которые хранят информацию о каждом типе данных.
<config> <types> <type> <table database="application | arpsite" name="objects_..."> <definition> ... int, ... varchar(255), ... text </definition> </table> <fields> <field behaviour=".." name="..."/> <field behaviour="..." name="..." parameters="!0"/> <field behaviour="..." name="..." parameters="0"/> </fields> <parents> <type name=".."/> </parents> <children> <type name="..."/> <type name="..."/> </children> </type> <type id=...> ... </type> ... </types> ... </config>
Описание формата элемента <type>
Элемент type содержит несколько атрибутов и дочерних элементов.
Атрибуты элемента <type>:
- id - уникальный идентификатор типа данных, по которому ядро системы Arp.Site различает типы данных. Он может лежать в промежутке от 1001 до 2147483647. Номера меньше 1000 зарезервированы как системные. Рекомендуется выбирать номера по шаблону yymmddnn, где yy - последние две цифры года, mm - номер месяца (01-12), dd - день месяца (01 - 31), nn - номер типа данных, среди созданных в этот день.
- name - системное имя типа данных. Например, для статьи это article, для новости - news. К имени предъявляются требования, аналогичные требованиям к имени элемента в стандарте XML, т.к. именно системное имя типа данных используется в качестве имени корневого элемента при выводе информации об материале в XML. Дополнительно это имя используется в качестве имени файла XSLT-шаблона для этого типа данных, поэтому не следует давать разным типам данных одинаковые имена. Рекомендуется имя типа данных выбирать по шаблону названиепроекта_названиетипа.
- title - имя элемента, которое увидит пользователь в системе управления Sandbox. Не используется при выводе информации на сайтах.
- realm - область информационного пространства, в котором может использоваться тип данных. Подробнее об областях информационного пространства смотрите соответствующую статью. Если на сервере нет заданных областей информационного пространства, можно использовать 0 (ноль).
- group - группа, к которой относится материал. Этот атрибут имеет значение строки и используется для логической группировки типов данных в системе управления Sandbox. Не используется при выводе информации на сайтах.
- behaviour - Java-класс, который управляет отображением материалов данного типа данных. По умолчанию используется Java-класс, который отображает XML со всеми данными об типе данных, с дальнейшим преобразованием в HTML по заданному дизайнером шаблону.
- options - дополнительные опции по управлению классом, перечисленные через запятую и имеющие тип переключателей (присутствует - включено, отсутствует - выключено):
- composite - показывает, что данный объект следует рисовать в XML, включая вложенные объекты. Такими являются, например, custom («Произвольный объект»), который рисует вложенные новостные ленты, статьи и галереи (что удобно для объединения нескольких разнородных материалов на одной странице).
- entry - показывает, что данный объект является важным объектом вернего уровня иерархии материалов. Например, такими типа данных являются корень (Информационное пространство - Infospace), сайт (site), группа сайтов (group). Эти элементы ограничивают рисование стандартного дерева в XML. Т.е. стандартное дерево будет включать в себя все материалы, являющиеся entry, а также все материалы, являющиеся structural, и находящиеся в последнем активном элементе типа entry. Также в модуле tree-path путь до элемента рисуется начиная с последнего активного материала (чаще всего таки выступает сайт).
- publishable - Определяет возможность создать этот материал самим пользователем с помощью системы управления. Это часто используемая опция. Материалы, которые не имеют этой опции, чаще всего являются служебными и создаются системой автоматически. К ним относятся, например, материалы обсуждений (тексты комментариев), которые создаются компонентом обсуждения материала без участия редактора сайта.
- structural - используется при построении стандартного дерева материалов в XML. В стандартном дереве отображаются только материалы, которые помечены как entry и structural.
- visible - обозначает материал, который не должен быть показан самостоятельно. Если пользователь пытается просмотреть такой материал, будет показан (без перенаправления) нижележащий материал с именем index. Иначе, если такого нет, система будет пытаться всё-таки показать сам материал. Также такие материалы не рисуются в стандартном дереве материалов.
- edit-unit - используется в системе управления Sandbox для обозначения типов материалов, которые представляют законченный материал с точки зрения редактора. Например, таким материалом может являться статья, но не является файл. Только эти типы объектов отображаются на рабочем столе на вкладках «Опубликованные», «Предложенные к публикации» и т.д.
- loggable - используется в системе статистики для обозначения типов данных, статистика о посещаемости которых должна собираться. Например, статистика о просмотре статей собирается, а статистика о просмотре отдельных файлов - нет.
- often - используется в системе управления Sandbox для индикации того, что материал этого типа данных будет создаваться очень часто и его следует показывать в основном меню Sandbox. (А не в дополнительном меню, которое открывается только по щелчку на кнопке «Другие объекты»).
- skip-sandbox-menu - используется в системе управления Sandbox для индикации того, что даже если пользователь может создать материал этого типа данных, его не следует показывать в меню Sandbox. Этот тип данных будет предложен только на странице создания нового материала при нажатии кнопки «Вставить новый материал» у объекта, который является допустимым родителем для нового типа данных.
- template - используется в системе управления Sandbox для обозначения типа данных, имеющих XSLT-шаблон отображения. Т.е. в меню выбора шаблона для редактирования будут шаблоны только этих типов данных (и два служебных шаблона). Имеет смысл не указывать эту опцию только для материалов, которые не отображаются с помощью шаблонов. Например, такими материалами являются файлы.
Дочерние элементы элемента <type>
- description - комментарий к типу данных. Иногда его может увидеть пользователь в системе управления Sandbox. Не используется при выводе информации на сайтах.
- table - элемент описания таблицы базы данных, в которой будет хранится информация данного материала.
-
fields - описание полей
материала.
- name - имя
- config - имя тега в конфиге, из которого можно взять настройки данного поля
-
parameters - параметры
- для текста: 0 - выводить в XML как type="textarea", ! - всегда проверять на пустоту поля (!0)
- behaviour - название класса, ответсвенного за отображение типа (ru.arptek.arpsite.content.fields.IntegerFieldBehaviour, ru.arptek.arpsite.content.fields.TextFieldBehaviour, arp.site.ifs.StyledTextFieldBehaviour, ru.arptek.arpsite.content.fields.BooleanFieldBehaviour)
- parents - список разрешённых типов родительских материалов для данного типа.
- children - список разрешённых типов дочерних материалов для данного типа.
1 Даже если на сервере будет располагаться информация только одной фирмы, не следует использовать стандартные конфигурационные файлы для хранения собственной информации, т.к. она может быть потеряна при обновлении Arp.Site.