Базовая концепция
Материал из SAPID Live Encyclopedia.
Содержание |
Организация данных в платформе
Информационное веб-пространство – это совокупность всех сайтов проекта, управляемых централизированно, посредством единой системы. Все данные информационного веб-пространства на базе платформы SAPID CMF могут быть представлены в виде информационных объектов 3-х типов: документов, записей и файлов.
Любому из этих объектов могут быть назначены атрибуты, содержание и права доступа. Документы и записи могут включать вложенный список записей.
Для организации документов информационного веб-пространства служит иерархическая структура.
Шаблоны документов служат для задания оформления, а также для задания структуры содержания документа.
Шаблоны могут включать друг друга. PHP-скрипты, как правило, включаются из шаблонов или DDC и служат для реализации контроллеров страниц.
Наборы полей предназначены для задания структуры записей и профилей описания файлов и пользователей. Сценарии функциональности (DDC) применяются для создания функциональных блоков. Подробнее о DDC можно узнать из документа «Спецификация XML Sapiens 2.0» (www.xmlsapiens.org).
Объекты информации
Документы
Документ – это информационный объект иерархического дерева структуры ресурса. Документ логически может быть разделом структуры сайта. Документ может содержать вложенный список записей. Для получения списка документов, формирования навигационных меню используется DDC (см. “Спецификация XML Sapiens 2.0”) и CMS-приложение get_tree().
Атрибуты документа
- Название – определяет документ в структуре;
- Шаблон – шаблон оформления документа;
- Активность документа – определяет, будет ли отображаться документ в навигации;
- Теги – ключевые слова для задания ассоциативных зависимостей между документами.
Содержание
Содержание документа определяется запросами содержания, представленными в шаблоне документа и подключаемых им шаблонах. Таким образом, если назначить документу новый шаблон, документ будет содержать новые поля содержания. Запрос содержания в шаблоне определяется конструкцией языка XML Sapiens <sapi:apply name="qc.name.value" />. Заголовок запроса определяет атрибут title элемента sapi:apply, а тип запроса, соответственно, атрибут type. Например, для получения набора запроса, представленного на изображении, следует использовать конструкцию типа:
<sapi:apply name="qc.mytitlevar.value" type="inputtext" title="Some title" /> <sapi:apply name="qc.mybodyvar.value" type="article" title="Text" />
Типы запросов содержания определены в одноименных файлах, расположенных в папке /views/default/qcs/.
Права доступа
По умолчанию пользователи административных групп платформы имеют право читать и писать в новый документ. Неавторизованные пользователи имеют доступ на чтение. Однако есть возможность установить определенные права доступа для различных групп пользователей. Для управления правами доступа к документу служит модельное окно административной панели. Оно появляется при запросе свойство документов в приложении «Структура». Пара доступа к документу управляются в закладке «Безопасность» модального окна. Для программного управления правами доступа к документам в ходе адаптации платформы используется класс Doc (см. раздел DM API).
Записи
Запись – это информационный объект линейных списков ресурса (сайта). Подобно документу, содержание записи обусловлено заданным набором полей. Записи объединены списками, которые, в свою очередь, могут содержать вложенные списки записей. Для получения списка записей, формирования лент новостей, каталогов, галерей используется DDC (см. “Спецификация XML Sapiens 2.0”) и CMS-приложение get_infochannel().
Атрибуты записи
- Название – определяет запись в списке;
- Набор полей – определяет поля запросов содержания записи;
- Теги – ключевые слова для задания ассоциативных зависимостей между записями.
Содержание
Содержание записи определяется запросами содержания, представленными в наборе полей. Файлы наборов полей расположены в папке /views/delivery/fieldsets/. Запрос содержания в наборе полей определяется конструкцией языка XML Sapiens <sapi:apply name="qc.name.value" />. Заголовок запроса определяет атрибут title элемента sapi:apply, а тип запроса, соответственно, атрибут type. Типы запросов содержания определены в одноименных файлах, расположенных в папке /views/default/qcs/.
Права доступа
По умолчанию к новой записи пользователи административных групп SAPID CMF имеют доступ на чтение и запись, неавторизованные пользователи – доступ на чтение. Однако есть возможность установить определенные права доступа для различных групп пользователей. Для управления правами доступа к записи служит административный пользовательский интерфейс управления свойствами записи, закладка «Безопасность». Для программного управления правами доступа записи в ходе адаптации платформы используется класс Rec (см. раздел RM API).
Файлы
Файл – это информационный объект виртуальной файловой системы. Файл может быть добавлен в платформу посредством административного интерфейса или путем непосредственной записи в одну из вложенных папок /views/delivery/files/.
Объекты организации информации
Структура
Структура информационной сети представлена виде иерархического дерева и определяет базовую зависимость документов. Первый уровень структуры представлен ресурсами информационного пространства. Ими могут быть сайты или же языковые версии сайтов. Каждый ресурс содержит собственное дерево. Прежде чем формировать структуру ресурса, следует определиться с тем, какая информация будет представлена как документы дерева, какая – как записи линейных списков. Переменные окружения Вы можете получить доступ к переменным окружения в шаблонах, в наборах полей, в сценариях функциональности или в шаблонах запросов посредством следующего синтаксиса:
<sapi:apply name="переменная.value" /> или &переменная.value;
В платформе доступны следующие переменные:
- args_length – число аргументов адресной строки (например, в этом случае /arg1/arg2/ переменная вернет 2);
- extraargs_length – число вспомогательных аргументов адресной строки (например, в этом случае /arg1/arg2/data/extrarg1/ переменная вернет 1);
- DirectAccessArgs_length – число аргументов при запросе записи (например, в этом случае / arg1/arg2/0000192/0000193/ переменная вернет 2);
- document_url – адрес текущего документа (например, gallery/);
- args.0 – первый аргумент адресной строки (например, gallery). Любой следующий аргумент доступен в перемменых типа args.индекс_аргумента;
- extraargs.0 – первый аргумент вспомогательной адресной строки (например, something). Любой следующий аргумент доступен в перемменых типа extraargs.индекс_аргумента;
- argsstring – экранированная строка аргументов адресной строки (например, gallery/);
- argsstringwithoutslash – тоже, но без слешей (например, gallery);
- admin_view_http_path – адрес корневой папки шаблонов административной панели (например, http://sapidcmf.rh8.rg/views/default/);
- delivery_view_http_path – адрес корневой папки шаблонов сайтов (например, http://sapidcmf.rh8.rg/views/delivery/);
- http_path – адрес текущего сайта (например, http://sapidcmf.rh8.rg/);
- admin_http_path – адрес административной панели (например, http://sapidcmf.rh8.rg/admin/);
- system_configuration_date – дата конфигурации платформы (например, 2007/08/22);
- system_version – версия платформы (например, Build 85);
- user_id – идентификатор авторизованного пользователя (например, pass);
- site_id – идентификкатор открытого сайта (например, 1);
- record_id – идентификатор запрошенной записи. Если запись не запрошена возвращает 0;
- user_fullname – полное имя авторизованного пользователя;
- user_login – логин авторизованного пользователя;
- user_profile – шаблон описания для авторизованного пользователя (например, default.tpl);
- document_title – заголовок открытого документа (например, Gallery);
- document_template – шаблон оформления открытого документа (например, gallery.tpl);
- document_id - идентификатор открытого документа (например, 9);
- document_data_x – содержание, где x – имя поля содержания;
- record_data_x – содеражние записи, где x – имя поля содержания.
Шаблоны
Шаблон определяет, что будет собой представлять страница сайта, которой он назначен. Шаблон задает оформление (HTML, RSS и т.д), он использует язык XML Sapiens для определения структуры содержания (QC), для определения функциональности (DDC), для отображения переменных среды и включения других шаблонов. Удачная архитектура подразумевает наличие шаблонов для всех повторяющихся блоков страниц сайтов информационной системы, включаемых в шаблонах этих страниц. Таким образом, если вы что-либо изменяете в шаблоне строки Copyright, это изменение отразится во всех страницах с шаблонами, включающими данный.
Файлы шаблонов расположены в папке /views/delivery/templates/.
Наборы полей
Набор полей служит для определения структуры записи. Запросы содержания в файле набора полей указывают, какого рода содержание будет запрошено для определенной записи в административном интерфейсе и, соответственно, какое содержание записи будет доступно на страницах сайта. Наборы полей могут быть определены для различных состояний записи. Так, одна и также запись может быть отображена в общем списке на сайте в одной конфигурации, и при выборе страницы этой записи в другой конфигурации. Вывод записей обуславливает сценарий функциональности (DDC). В DDC можно описать оформление содержания записи указанием переменных содержания (&this.this.имя_поля_QC.value;) или же запросом набора полей для определенного состояния <sapi:include href="файл_набора_полей" parse="fieldset" state="состояние_А" />.
Набор полей допускает задание кода оформления содержания. Пример набора полей:
<?xml version="1.0"?> <sapi version="2.0" xmlns:sapi="http://www.xmlsapiens.org/spec/sapi.dtd">
<sapi:fieldset type="default" state="admin" title="">
<sapi:body> <sapi:apply name="qc.x1.value" type="type1" /> </sapi:body>
</sapi:fieldset>
<sapi:fieldset type="default" state="delivery" title="">
<sapi:body> <sapi:apply name="qc.x2.value" type="type2" /> </sapi:body>
</sapi:fieldset>
</sapi>
Файлы наборов полей расположены в папке /views/delivery/fieldsets/.
Сценарии функциональности
Сценарии функциональности (DDC) служат для описания поведения динамических блоков сайта, таких, как списки записей (ленты новостей, каталоги, галереи), голосования и т.д. С подробным описанием DDC можно ознакомиться в документе «Спецификация XML Sapiens 2.0». Включение тех или иных сценариев функциональности (DDC) описывается в шаблонах документов или в других DDC. Для включения кода контроллера в шаблоне документа или в теле DDC используется конструкция <sapi:include href="имя_скрипта" parse="php" />.
Файлы сценариев функциональности расположены в папке /views/delivery/ddcs/.
Списки записей
Документ или запись может содержать список записей. Запись списка, в свою очередь, может содержать записи. Для отображения списков записей на сайтах используются DDC (См. документ «Спецификация XML Sapiens 2.0») и CMS-приложение getinfochannel. Для программного управления списками записей в ходе адаптации платформы используется библиотека Rec.
Пользователи
Пользователь платформы содержит следующие атрибуты:
- Имя – идентификатор пользователя. Обычно совпадает с логином;
- Логин – логин для авторизации пользователя;
- Пароль – пароль для авторизации пользователя;
- Название – имя пользователя в общем списке;
- Email – email адрес пользователя;
- Язык – язык интерфейс для данного пользователя;
- Состояние активности – флаг состояния активности;
- Профиль – набор полей для описания пользователя. Профиль определяет поля запросов содержания для формы описания пользователя. Файлы профилей пользователя расположены в папке /views/delivery/templates/users/.
Пользователи могут быть объединены в группы. В свою очередь, пользовательские группы также могут быть объединены в группы. Для программного управления пользователями в ходе адаптации платформы используется класс User.
Пользователю платформы может быть назначен доступ к информационным объектам. Пользовательской группе может быть предоставлен доступ к заданному административному интерфейсу в конфигурационном файле данного интерфейса. Например, app/structure/app.db.
Синтаксис:
<?xml version="1.0" encoding="utf-8" ?> <treeitem titlekey="Structure" sortkey="1"> <acl> <group name="developers" permissions="7" /> </acl> </treeitem>
Элемент ACL обозначает секцию доступа к интерфейсу указанному в элементе treeitem. Элемент GROUP определяет доступ в данный интерфейс для заданной группы и содержит следующие атрибуты: name – имя группы или пользователя; permissions – права доступа двоичной системе (0-1 – нет доступа, 2-3 – доступ записи, 4-7 – доступ к чтению, 6-7 – доступ к чтению и записи).
Отчеты
Любые операции с API или действия в административном интерфейсе отражаются отчете «Журнал событий в системе».
Конфигурация
Базовая конфигурация платформы назначается в файле /config/rc.conf.php.
- HTTP_PATH – веб-адрес сайта по умолчанию;
- SITEID – ID ресурса по умолчания;
- DEFAULT_LANUAGE – язык интерфейса по умолчанию;
- ROOT_PATH – полный корневой адрес на сервере;
- ADMIN_EMAIL – email адрес для обратной связи по умолчанию;
- VERSION – версия SAPID CMF;
- CONFIGURED - дата конфигурации платформы;
- DBPREFIX – префикс для таблиц базы данных;
- ADMINAREA_PREFIX – виртуальная папка для административной панели;
- CONTROLAREA_PREFIX – виртуальная папка AJAX-контроллеров платформы;
- TOTALCACHING – включить/выключить кеширование страниц;
- VENDORS – адрес папки со сторонними библиотеками;
- DEBUG – режим отладки (0/1/2);
- DOCCOPIESMAXNUMBER – хранимое общее число версий содержания документа/записи;
- DOCCOPIESMAXNUMBERPERUSER – хранимое число версий содержания документа/записи для каждого пользователя;
- BACKUPING - включение/выключение хранения версий содержания;
- $GLOBALS["DBConnect"] – данные БД;
- SOAP_SERVER_URL – адрес внешнего SOAP-сервера;
- FILESDATEFORMAT – формат даты в файлах по умолчанию;
- INLINEMODE – наличие режима редактирования INLINE (значения on и off);
- THEME – текущая тема оформления административного интерфейса;
- PAGINATIONFRAMELENGTH – длина фрейма для пагинации.
- DBTABLESSTRUCTSPATH – расположение скриптов для восстановления БД;
- GMTOFFSET – смещение часового пояса по Гринвичу;
Дополнительная конфигурация вносится посредством административного интерфейса «Конфигурация» в реестр. Данные конфигурационного реестра доступны в шаблонах и DDC как переменные окружения &config_переменная.value; и, соответственно, доступны при адаптации (в plugins) как &env->Value["config_переменная"].

