Конструктор полей и типов ресурсов
Базовым понятием и начальным узлом дерева ресурсов C-Gator является библиотека. Каждая библиотека обладает собственным набором типов ресурсов, запросов, а также самих ресурсов предусмотренных типов. Так, например, библиотека Структура сайта содержит такие типы ресурсов, как папка, картинка, файл, страница и т.д. (подробнее эталонные типы ресурсов описаны в Руководстве дизайнера). Они стандартны и входят в базовый комплект поставки C-Gator.
Однако в системе имеется также возможность создавать свои библиотеки и типы ресурсов, пополняя тем самым стандартный набор — это одна из мощнейших возможностей расширения системы.
Не всегда есть смысл создавать библиотеку и прописывать ее типы ресурсов с нуля. Например, библиотека Структура сайта универсальна и может использоваться для создания сайтов в разных доменах. Для таких случаев в C-Gator предусмотрена возможность экспорта библиотеки во внешний файл (XML или ZIP) и последующего импорта библиотеки.

Тип ресурса – это сущность, которая определяет базовые свойства всех ресурсов данного типа, допустимые операции с этим ресурсом, а также особенности интерфейса C-Gator при работе с ресурсами данного типа.
Тип ресурса обладает определенным набором свойств:

Все типы ресурсов одной библиотеки разделяют один и тот же набор полей. При этом набор полей каждого типа ресурса является подмножеством набора полей библиотеки. Флажок слева от названия каждого поля задает, доступно ли поле для данного типа ресурса.

Для типа ресурса можно определить набор закладок (таб), которые будут видны при создании и редактировании ресурса. Можно произвольно редактировать этот список — добавлять новые закладки, изменять и удалять существующие. Переключатель справа вверху показывает, для какого редактора задается данный набор полей — редактора ресурса или редактора множественных свойств.

Для каждой закладки отдельно задается:
- список отображаемых на ней полей (из списка полей данного типа ресурса)
- список действий — набор графических кнопок, каждая из которых соответствует определенной команде (например, удалить ресурс, сохранить изменения, блокировать для редактирования, опубликовать и т.д.).
Каждый ресурс обладает набором характеристик (свойств), свойственных только для ресурсов этого типа. Значения этих характеристик сохраняются в полях. Каждое поле хранит отдельное значение своего типа. Например, поле «дата создания» типа DateTime хранит значение «29.08.2004». Также каждый ресурс обладает набором множественных свойств — деталей со своим набором настраиваемых полей.

Поддерживается различный набор типов полей ресурсов и множественных свойств:
| Text |
строка текста в произвольном формате. Допустимое количество знаков в поле задается дополнительным параметром «максим. кол-во символов» (не более 255) |
| Note |
текстовое многострочное поле, количество символов не ограничено |
| Number |
вещественное значение двойной точности (64-разрядное IEEE) |
| Integer |
целое число со значениями от -2 147 483 648 до 2 147 483 647, реальные пределы задаются доп.параметрами «минимальное значение» и «максимальное значение» |
| DateTime |
дата в диапазоне от 1 янв. 1753 до 31 дек. 9999, и время с точностью до 1/300 секунды |
| Boolean |
логическое поле — значения «истина» («true») и «ложь» («false») |
| Currency |
денежная сумма в рублях или другой валюте |
| Choice |
значение поля выбирается из фиксированного списка значений |
| Multichoice |
значение поля — одно или несколько из фиксированного списка значений |
| Guid |
уникальное 128-битное значение, используется для идентификации |
| RatingScale |
рейтинг — используется для опросов и голосований |
| Status |
состояние ресурса в процессе его обработки — например, «на редактировании», «опубликован» и т.п. |
| File |
поле хранит содержимое файла, выбираемого пользователем |
| Url |
указатель на другой ресурс того же сайта или вне его |
| Calculated |
вычислимое поле. Значение поля вычисляется на основе формулы(SQL-выражения) |
| Counter |
поле-счетчик с возможностью изменения значения |
| Lookup |
значение поля выбирается из списка, получаемого из другого ресурса |
| User |
пользователь системы, значение выбирается из списка всех пользователей |
Список полей библиотеки включает в себя все поля, которые могут быть использованы при определении всех типов ресурсов этой библиотеки. Список всех полей, доступных в данной библиотеке находится на вкладке Список полей.
Для хранения записей всех ресурсов библиотеки используется обыкновенная плоская таблица. При этом каждый тип ресурса пользуется набором полей, являющимся подмножеством набора полей библиотеки.
Практически повсюду в системе, где вы видите список чего-либо, — этот список представляет из себя набор записей (выборку), полученных на основе запроса. Запрос описывает выборку полей ресурса или множественных полей, и описывается в виде XML.
Основная задача запроса — установка соответствия между названиями полей типов ресурсов и полями плоской таблицы в которых в итоге сохраняются данные.
Например запрос для списка новостей выглядит так:
|
<?xml version="1.0" encoding="utf-16"?> <View QuerySource="2"> <ViewFields> <fieldref name="title" /> <fieldref name="date" /> <fieldref name="description" /> <fieldref name="content" /> <fieldref name="published" /> </ViewFields> <OrderBy>date desc,title</OrderBy> <Query> <and> <cond oper="geq"> <expr fieldref="date" /> <expr value="CAST(CONVERT(VARCHAR(20), DATEADD(day, 2-DATEPART(weekday, getDate()), getdate()), 112) + ' 00:00' as Datetime)" /> </cond> |
А так он отображается при выводе на странице сайта:

|