Разработка:modlibs/templater — различия между версиями
Ilya (обсуждение | вклад) (→Стандартные методы классов) |
Ilya (обсуждение | вклад) (→Стандартные методы классов) |
||
Строка 49: | Строка 49: | ||
*'''get_formats'''() - список доступных форматов для этого документа | *'''get_formats'''() - список доступных форматов для этого документа | ||
*'''template_path'''($adds=null) - путь к шаблону (работает через класс dof_modlib_templater) | *'''template_path'''($adds=null) - путь к шаблону (работает через класс dof_modlib_templater) | ||
+ | |||
+ | Стандартные методы класса '''dof_modlib_templater_format''' | ||
+ | *'''__construct'''($dof,$packet) | ||
+ | *'''get_file'''($options) | ||
+ | *'''get_filename'''($options) | ||
+ | *'''get_mimetype'''($options) | ||
+ | *'''template_path'''($adds=null) - путь к папке данного формата (работает через класс package) | ||
+ | |||
+ | |||
+ | == Стандарт именования классов: == | ||
+ | |||
+ | Переопределенный класс парсера всего шаблона, который ищется при наличии init.php в корне шаблона: | ||
+ | '''dof_типплагина_имяплагина_templater_кодшаблона''' | ||
+ | Переопределенный класс парсера шаблона для формата odf, который ищется при наличии файла init.php в шаблоне | ||
+ | '''dof_типплагина_имяплагина_templater_кодшаблона_odf''' | ||
+ | |||
+ | ''Пример:'' | ||
+ | Стандартный класс для парсера ODF | ||
+ | '''dof_modlib_templater_format_odf''' | ||
+ | |||
+ | == Структура вызова классов == | ||
+ | |||
+ | [[Изображение:calls.jpg]] | ||
+ | |||
+ | |||
+ | == Структура наследования классов форматирования отдельных документов == | ||
+ | |||
+ | [[Изображение:extending1.jpg]] | ||
+ | |||
+ | == Структура наследования классов форматирования групп документов == | ||
+ | |||
+ | [[Изображение:extending2.jpg]] |
Версия 19:31, 13 марта 2009
Содержание
Экспорт документов
Модуль реализуется как библиотека modlib, которая называется templater. Этот модуль будет реализовывать экспорт в xls, csv, odt, и другие форматы, если они понадобятся. Экспортироваться будут как таблицы, так и текст.
Структура папок
Структура расположения классов такова: модуле modlib лежат базовые классы для экспорта в различные форматы. Классы для конкретных задач будут лежать в тех модулях, из которых они вызываются.
Пример: в модуле типа im, который называется sample при просмотре расписания необходимо экспортировать все уроки за месяц. Для этого структура папок im должна выглядеть следующим образом:
Каждый синий квадрат обозначает папку, желтый — пояснение, серый — отдельный файл.
В каждой папке с типом экспорта может лежать файл init.php, который содержит класс, наследуемый от класса dof_modlib_templater и переопределяющий его метод format(). Именно он определяет, каким образом будет отформатирован окончательный файл. Для формата odt в папке с названием формата должна находится папка «content», содержащая следующие файлы:
- content.xml - xml-документ с основным содержанием, размеченный тегами шаблонизатора PEAR::QuickForm
- mimetype - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение
Эти файлы будут определять форматирование будущего документа. Их можно получить, распаковав обычный odt-файл (как zip-архив).
Структура папок в виде списка:
- папка плагина
- 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 - в этой папке хранятся все шаблоны, принадлежащие этому плагину
Стандартные методы классов
Класс dof_modlib_templater:
- template($plugintype, $pluginname, $templatename) — получить класс для экспорта в указанном плагине, с указанным названием. Возвращает объект класса dof_modlib_templater_packet или dof_типплагина_имяплагина_templater_кодшаблона
- template_path($plugintype, $pluginname, $templatenam,$adds=null) - путь к шаблону (корню или внутренней папке)
Класс dof_modlib_templater_package:
- __construct($dof,$templater,$plugintype, $pluginname, $templatename)
- set_data($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)
Стандартные методы класса dof_modlib_templater_format
- __construct($dof,$packet)
- get_file($options)
- get_filename($options)
- get_mimetype($options)
- template_path($adds=null) - путь к папке данного формата (работает через класс package)
Стандарт именования классов:
Переопределенный класс парсера всего шаблона, который ищется при наличии init.php в корне шаблона: dof_типплагина_имяплагина_templater_кодшаблона Переопределенный класс парсера шаблона для формата odf, который ищется при наличии файла init.php в шаблоне dof_типплагина_имяплагина_templater_кодшаблона_odf
Пример: Стандартный класс для парсера ODF dof_modlib_templater_format_odf
Структура вызова классов