Справка
Обработчики
Вся логика работы с данными системы сосредоточена в её обработчиках.
Обработчики распределены по модулям (их название “части”) и группам компонентов.
Также обработчики можно встретить в настройке таблиц и полей.
В таблицах присутствуют следующие обработчики:
- изменение/добавление объекта
- шапка таблицы
- подвал таблицы
Обработчики в полях таблицы:
- форма поля
- отображение поля
- изменение поля
Компоненты распределены на 4 группы:
- Функции
- Отображение
- Формы
- Компоненты
Внутри групп компоненты содержатся в категориях (bundle).
Спецификация обработчиков
Обработчики могут быть написаны на языке PHP и на внутреннем языке шаблонизатора системы. По ряду причин идеология системы навязывает разработку на языке шаблонизатора через административный кабинет, в т.ч. с помощью специального визуального редактора. Только суперпользователь имеет возможность добавлять обработчики написанные на PHP.
Обработчики модуля
Обработчики внутри модуля называются части и могут иметь иерархическую структуру.
Типы частей модуля:
- Для URL разбора
- Вспомогательные
- Виджеты
- Пусковые
Особенностью обработчиков внутри модуля является наличие текущего обрабатываемого объекта. Для этого часть может быть связана с одной из таблиц модуля. При её вызове произойдёт определение текущего объекта (например, средствами URL-разбора), которым она сможет оперировать.
Обработчики поля также связаны с текущим полем и могут его использовать в процессе обработки (получить, изменить). Также они связаны с текущим объектом (и всеми его полями), над которым проводится операция, повлекшая вызов обработчика.
Части модуля и компоненты имеют набор предустановленных входящих переменных следующих типов: произвольные данные, объект/ы таблицы, столбец таблицы, экземпляр таблицы.
Части модуля могут выполняться с правами определённых групп пользователей или суперпользователя.
Части для разбора URL / Опорные части
Эти обработчики вызываются в том случае, если они подошли под аппендикс URL, требующий своего разбора. Если часть разобрала только часть URL, то дальнейшая часть передаётся в разбор следующим частям.
Разбор происходит по одному из следующих правил:
- URL совпал с указанным статическим URL-ом части
- В связной таблице нашёлся объект с нужным URL (при этом может учитываться иерархия объектов для разбора вложенных URL)
- Сработало индивидуальное условие запуска
- Не подошла ни одна часть из модуля
В случае нахождения объекта из связной таблицы, обработчик получает этот объект для дальнейших операций с ним.
Если у определённой части существуют потомки, то разбор переходит на них. Если у части-потомка указана подтаблица связной таблицы части-родителя, то определение объекта ведётся в указанной подтаблице.
Пусковые части
Существуют для того, чтобы выполнять действие по требованию пользователя или таймера.
Их действие может быть привязано к конкретному экземпляру модуля или же они могут перебирать все экземпляры модуля по очереди. В этом случае при запуске от таймера часть будет запускаться до тех пор, пока не “обойдёт” все экземпляры.
Запуск по таймеру позволяет запускать часть по одному из следующих правил:
- единственный запуск в указанное время
- запуск через каждые X минут
- запуск раз в сутки в указанное время
Множественность обработчиков
Для каждой таблицы/типа объектов можно сделать несколько опорных обработчиков. Для того, чтобы не было коллизий URL, используется префикс, после которого начинается поиск подходящего объекта. Таким образом можно отображать одну и туже информацию по разным адресам, с использованием разных обработчиков.
Читать далее про "Особенности"