Разработка:modlibs/templater — различия между версиями
Johnleft (обсуждение | вклад) м (поправил описание структуры плагина templater) |
Ilya (обсуждение | вклад) (→Стандартные методы классов) |
||
Строка 55: | Строка 55: | ||
*** dof_im_genedu_templater_order_odf - переопределенный класс экспорта шаблона order из плагина im/genedu в формат odf | *** dof_im_genedu_templater_order_odf - переопределенный класс экспорта шаблона order из плагина im/genedu в формат odf | ||
− | == | + | == Список стандартных методов классов == |
Класс '''dof_modlib_templater''': | Класс '''dof_modlib_templater''': | ||
*template($plugintype, $pluginname, $templatename) — получить класс для экспорта в указанном плагине, с указанным названием. Возвращает объект класса dof_modlib_templater_packet или dof_типплагина_имяплагина_templater_кодшаблона | *template($plugintype, $pluginname, $templatename) — получить класс для экспорта в указанном плагине, с указанным названием. Возвращает объект класса dof_modlib_templater_packet или dof_типплагина_имяплагина_templater_кодшаблона | ||
*template_path($plugintype, $pluginname, $templatenam,$adds=null) - путь к шаблону (корню или внутренней папке) | *template_path($plugintype, $pluginname, $templatenam,$adds=null) - путь к шаблону (корню или внутренней папке) | ||
+ | $plugintype - тип плагина (im, storage, modlib и т. д.) | ||
+ | $pluginname - имя плагина | ||
+ | $templatenam - имя шаблона форматирования | ||
+ | $adds - дополнительный путь после папки шаблона | ||
Класс '''dof_modlib_templater_package''': | Класс '''dof_modlib_templater_package''': | ||
− | *'''__construct'''($dof | + | *'''__construct'''($dof, $plugintype, $pluginname, $templatename) |
− | **$dof | + | **$dof - стандартный объект $DOF |
− | + | **$plugintype - тип плагина (im, storage, modlib и т. д.) | |
− | **$plugintype | + | **$pluginname - имя плагина |
− | **$pluginname | + | **$templatename - имя шаблона форматирования, для которого вызывается обьект '''dof_modlib_templater_package''': |
− | **$templatename | ||
*'''set_data'''($obj) — загрузить необработанные данные в объект. | *'''set_data'''($obj) — загрузить необработанные данные в объект. | ||
+ | ** $obj - объект с необработанными данными | ||
*'''get_data'''() - внутренний метод. Получить необработанный объект с данными. | *'''get_data'''() - внутренний метод. Получить необработанный объект с данными. | ||
*'''get_file'''($type, $options) - получить отформатированные данные, пригодные для обработки функцией file_put_contents(). | *'''get_file'''($type, $options) - получить отформатированные данные, пригодные для обработки функцией file_put_contents(). | ||
Строка 78: | Строка 82: | ||
*'''get_formats'''() - список доступных форматов для этого документа | *'''get_formats'''() - список доступных форматов для этого документа | ||
*'''template_path'''($adds=null) - путь к шаблону (работает через класс dof_modlib_templater) | *'''template_path'''($adds=null) - путь к шаблону (работает через класс dof_modlib_templater) | ||
+ | **$adds - дополнительный путь, присоединяемый к возвращаемому функцией template_path в классе '''dof_modlib_templater''': | ||
Стандартные методы класса '''dof_modlib_templater_format''' | Стандартные методы класса '''dof_modlib_templater_format''' | ||
*'''__construct'''($dof,$package) | *'''__construct'''($dof,$package) | ||
+ | **$dof | ||
+ | **$package | ||
*'''get_file'''($options) | *'''get_file'''($options) | ||
+ | **$options | ||
*'''set_data'''($data) | *'''set_data'''($data) | ||
+ | **$data | ||
*'''get_filename'''($options) | *'''get_filename'''($options) | ||
+ | **$options | ||
*'''get_mimetype'''($options) | *'''get_mimetype'''($options) | ||
+ | **$options | ||
*'''template_path'''($adds=null) - путь к папке данного формата (работает через класс package) | *'''template_path'''($adds=null) - путь к папке данного формата (работает через класс package) | ||
+ | **$adds - дополнительный путь, присоединяемый к возвращаемому функцией template_path в классе '''dof_modlib_templater_package''': | ||
== Стандарт именования классов: == | == Стандарт именования классов: == |
Версия 19:22, 18 марта 2009
Содержание
- 1 Экспорт документов
- 2 Структура плагина templater
- 3 Структура папок
- 4 Структура классов
- 5 Список стандартных методов классов
- 6 Стандарт именования классов:
- 7 Структура вызова классов
- 8 Структура наследования классов форматирования отдельных документов
- 9 Структура наследования классов форматирования групп документов
Экспорт документов
Модуль реализуется как библиотека modlib, которая называется templater. Модуль предназначен для организации экспорта данных в различные форматы (odt,csv,версии для печати и т.д.). Данные для экспорта представляются в виде структурированного объекта (класс object()), в котором одиночные поля представляются скалярами, записи - объектами, а таблицы - массивами объектов. Структура данного объекта, по возможности, должна совпадать со структурой соответствующего объекта, используемого в storage.
Структура плагина templater
- templater - папка плагина;
- formats - папка, в которой лежат файлы, преобразующие данные в файл определенного типа.
- odf.php - файл для преобразования данных в один из форматов odt, ods и т.д.
- xls.php - файл для преобразования данных в формат xls.
- csv.php - файл для преобразования данных в формат csv.
- init.php - обязательный файл плагина, содержит класс dof_modlib_templater, который вызывает собственный или внешний обработчик форматирования и экспорта
- format.php - файл, содержащий класс dof_modlib_templater_format - содержит базовый класс для остальных классов форматирования.
- package.php - файл, содержащий класс dof_modlib_templater_package, который вызывает собственный обработчик форматирования и экспорта
- formats - папка, в которой лежат файлы, преобразующие данные в файл определенного типа.
Назначение классов:
- dof_modlib_templater_format - абстрактный класс. Является родительским, для классов, реализующих преобразование данных в файл конкретного типа. Определяет минимальный обязательный набор методов для дочерних классов.
- dof_modlib_templater_format_xls - возвращает xls-файл как строку.
- dof_modlib_templater_package - стандартный обработчик экспорта. Получает необработанные данные, обрабатывает их и посылает клиенту.
- dof_modlib_templater - проверяет наличие у внешнего плагина своего обработчика экспорта. Если он есть, возвращает его, если нет - возвращает стандартный обработчик.
Структура папок
В плагине modlibs/templater объявляются базовые классы для работы с шаблоном и экспорта в различные форматы. В плагинах, использующих modlibs/templater хранятся шаблоны, а так же есть возможность переопределить базовые классы, для уточнения процедуры экспорта заданного документа в заданный формат.
Шаблоны хранятся в плагинах, использующих данную библиотеку по следующей схеме:
- папка плагина, использующего modlib/templater для экспорта документа
- templater - в этой папке хранятся все шаблоны, принадлежащие этому плагину
- Код шаблона (например order)
- init.php - необязательный файл, переопределяющий класс всего шаблона
- Код формат шаблона (pdf, csv)
- init.php - необязательный (для некоторых шаблонов) файл, переорпделяющий класс парсера шаблона
- odf - пример шаблона odf (конкретный формат odt,ods задается уже внутри шаблона, поскольку все документы устроены одинаково)
- init.php (необязательно)
- content - папка с распакованным документов ODF
- content.xml - xml-документ с основным контентом, размеченный тегами шаблонизатора [1] PEAR::QuickForm
- mimetype - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение
- Код шаблона (например order)
- templater - в этой папке хранятся все шаблоны, принадлежащие этому плагину
Пример: в модуле типа im, который называется sample при просмотре расписания необходимо экспортировать все уроки за месяц. Для этого структура папок im должна выглядеть следующим образом:
Каждый синий квадрат обозначает папку, желтый — пояснение, серый — отдельный файл.
В каждой папке с типом экспорта может лежать файл init.php, который содержит класс, наследуемый от класса dof_modlib_templater и переопределяющий его метод format(). Именно он определяет, каким образом будет отформатирован окончательный файл. Для формата odt в папке с названием формата должна находится папка «content», содержащая следующие файлы:
- content.xml - xml-документ с основным содержанием, размеченный тегами шаблонизатора PEAR::QuickForm
- mimetype - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение
Эти файлы будут определять форматирование будущего документа. Их можно получить, распаковав обычный odt-файл (как zip-архив).
Структура классов
- dof_modlib_templater - класс плагина DOF
- dof_modlib_templater_package - класс шаблона документа
- dof_типплагина_имяплагина_templater_кодшаблона - переопределенный класс шаблона данного документа
- dof_im_genedu_templater_order - переопределенный класс шаблона документа order из плагина im/genedu
- dof_modlib_templater_format - базовый (абстрактный) класс формата экспорта
- dof_modlib_templater_format_формат - стандартный класс экспорта в заданный формат
- dof_типплагина_имяплагина_templater_кодшаблона_формат - переопределенный класс экспорта заданного шаблона в заданный формат
- dof_modlib_templater_format_odt - стандартный класс экспорта в формат odt
- dof_im_genedu_templater_order_odf - переопределенный класс экспорта шаблона order из плагина im/genedu в формат odf
- dof_modlib_templater_format_формат - стандартный класс экспорта в заданный формат
Список стандартных методов классов
Класс dof_modlib_templater:
- template($plugintype, $pluginname, $templatename) — получить класс для экспорта в указанном плагине, с указанным названием. Возвращает объект класса dof_modlib_templater_packet или dof_типплагина_имяплагина_templater_кодшаблона
- template_path($plugintype, $pluginname, $templatenam,$adds=null) - путь к шаблону (корню или внутренней папке)
$plugintype - тип плагина (im, storage, modlib и т. д.) $pluginname - имя плагина $templatenam - имя шаблона форматирования $adds - дополнительный путь после папки шаблона
Класс dof_modlib_templater_package:
- __construct($dof, $plugintype, $pluginname, $templatename)
- $dof - стандартный объект $DOF
- $plugintype - тип плагина (im, storage, modlib и т. д.)
- $pluginname - имя плагина
- $templatename - имя шаблона форматирования, для которого вызывается обьект dof_modlib_templater_package:
- set_data($obj) — загрузить необработанные данные в объект.
- $obj - объект с необработанными данными
- get_data() - внутренний метод. Получить необработанный объект с данными.
- get_file($type, $options) - получить отформатированные данные, пригодные для обработки функцией file_put_contents().
- $type — в какой формат экспортировать,
- $options — дополнительные параметры.
- send_file($type, $options) — инициализировать передачу файла клиенту через браузер.
- $type — в какой формат экспортировать,
- $options — дополнительные параметры.
- get_formats() - список доступных форматов для этого документа
- template_path($adds=null) - путь к шаблону (работает через класс dof_modlib_templater)
- $adds - дополнительный путь, присоединяемый к возвращаемому функцией template_path в классе dof_modlib_templater:
Стандартные методы класса dof_modlib_templater_format
- __construct($dof,$package)
- $dof
- $package
- get_file($options)
- $options
- set_data($data)
- $data
- get_filename($options)
- $options
- get_mimetype($options)
- $options
- template_path($adds=null) - путь к папке данного формата (работает через класс package)
- $adds - дополнительный путь, присоединяемый к возвращаемому функцией template_path в классе dof_modlib_templater_package:
Стандарт именования классов:
Переопределенный класс парсера всего шаблона, который ищется при наличии init.php в корне шаблона: dof_типплагина_имяплагина_templater_кодшаблона
Переопределенный класс парсера шаблона для формата odf, который ищется при наличии файла init.php в шаблоне dof_типплагина_имяплагина_templater_кодшаблона_odf
Пример: Стандартный класс для парсера ODF dof_modlib_templater_format_odf
Структура вызова классов