Справка

Обработчики

Вся логика работы с данными системы сосредоточена в её обработчиках.

Обработчики распределены по модулям (их название “части”) и группам компонентов.

Также обработчики можно встретить в настройке таблиц и полей.

В таблицах присутствуют следующие обработчики:

  • изменение/добавление объекта
  • шапка таблицы
  • подвал таблицы

Обработчики в полях таблицы:

  • форма поля
  • отображение поля
  • изменение поля

Компоненты распределены на 4 группы:

  1. Функции
  2. Отображение
  3. Формы
  4. Компоненты

Внутри групп компоненты содержатся в категориях (bundle).

Спецификация обработчиков

Обработчики могут быть написаны на языке PHP и на внутреннем языке шаблонизатора системы. По ряду причин идеология системы навязывает разработку на языке шаблонизатора через административный кабинет, в т.ч. с помощью специального визуального редактора. Только суперпользователь имеет возможность добавлять обработчики написанные на PHP.

Обработчики модуля

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

Типы частей модуля:

  • Для URL разбора
  • Вспомогательные
  • Виджеты
  • Пусковые

Особенностью обработчиков внутри модуля является наличие текущего обрабатываемого объекта. Для этого часть может быть связана с одной из таблиц модуля. При её вызове произойдёт определение текущего объекта (например, средствами URL-разбора), которым она сможет оперировать.

Обработчики поля также связаны с текущим полем и могут его использовать в процессе обработки (получить, изменить). Также они связаны с текущим объектом (и всеми его полями), над которым проводится операция, повлекшая вызов обработчика.

Части модуля и компоненты имеют набор предустановленных входящих переменных следующих типов: произвольные данные, объект/ы таблицы, столбец таблицы, экземпляр таблицы.

Части модуля могут выполняться с правами определённых групп пользователей или суперпользователя.

Части для разбора URL / Опорные части

Эти обработчики вызываются в том случае, если они подошли под аппендикс URL, требующий своего разбора. Если часть разобрала только часть URL, то дальнейшая часть передаётся в разбор следующим частям.

Разбор происходит по одному из следующих правил:

  • URL совпал с указанным статическим URL-ом части
  • В связной таблице нашёлся объект с нужным URL (при этом может учитываться иерархия объектов для разбора вложенных URL)
  • Сработало индивидуальное условие запуска
  • Не подошла ни одна часть из модуля

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

Если у определённой части существуют потомки, то разбор переходит на них. Если у части-потомка указана подтаблица связной таблицы части-родителя, то определение объекта ведётся в указанной подтаблице.

Пусковые части

Существуют для того, чтобы выполнять действие по требованию пользователя или таймера.

Их действие может быть привязано к конкретному экземпляру модуля или же они могут перебирать все экземпляры модуля по очереди. В этом случае при запуске от таймера часть будет запускаться до тех пор, пока не “обойдёт” все экземпляры.

Запуск по таймеру позволяет запускать часть по одному из следующих правил:

  • единственный запуск в указанное время
  • запуск через каждые X минут
  • запуск раз в сутки в указанное время

Множественность обработчиков

Для каждой таблицы/типа объектов можно сделать несколько опорных обработчиков. Для того, чтобы не было коллизий URL, используется префикс, после которого начинается поиск подходящего объекта. Таким образом можно отображать одну и туже информацию по разным адресам, с использованием разных обработчиков.



Читать далее про "Особенности"