Разработка:modlibs/templater — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
(Экспорт документов: Более подробное описание назначения объекта)
(Структура папок)
Строка 3: Строка 3:
  
 
== Структура папок ==
 
== Структура папок ==
 +
В плагине 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-документ с основным контентом, размеченный тегами шаблонизатора [http://pear.php.net/package/HTML_Template_Sigma] PEAR::QuickForm
 +
****** mimetype - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение
  
Структура расположения классов такова: модуле modlib лежат базовые классы для экспорта в различные форматы. Классы для конкретных задач будут лежать в тех модулях, из которых они вызываются.
 
  
 
Пример: в модуле типа '''im''', который называется '''sample''' при просмотре расписания необходимо экспортировать все уроки за месяц. Для этого структура папок im должна выглядеть следующим образом:
 
Пример: в модуле типа '''im''', который называется '''sample''' при просмотре расписания необходимо экспортировать все уроки за месяц. Для этого структура папок im должна выглядеть следующим образом:
Строка 16: Строка 29:
 
* '''mimetype''' - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение
 
* '''mimetype''' - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение
 
Эти файлы будут определять форматирование будущего документа. Их можно получить, распаковав обычный odt-файл (как zip-архив).
 
Эти файлы будут определять форматирование будущего документа. Их можно получить, распаковав обычный odt-файл (как zip-архив).
 
'''Структура папок в виде списка:'''
 
* папка плагина
 
** templater - в этой папке хранятся все шаблоны, принадлежащие этому плагину
 
*** Код шаблона (например order)
 
**** init.php - необязательный файл, переопределяющий класс всего шаблона
 
**** Код формат шаблона (pdf, csv)
 
***** init.php - необязательный (для некоторых шаблонов) файл, переорпделяющий класс парсера шаблона
 
**** odf - пример шаблона odf (конкретный формат odt,ods задается уже внутри шаблона, поскольку все документы устроены одинаково)
 
***** init.php (необязательно)
 
***** content - папка с распакованным документов ODF
 
****** content.xml - xml-документ с основным контентом, размеченный тегами шаблонизатора [http://pear.php.net/package/HTML_Template_Sigma] PEAR::QuickForm
 
****** mimetype - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение
 
  
 
== Стандартные методы классов ==
 
== Стандартные методы классов ==

Версия 23:31, 13 марта 2009

Экспорт документов

Модуль реализуется как библиотека modlib, которая называется templater. Модуль предназначен для организации экспорт данных в различные форматы (odt,csv,версии для печати и т.д.). Данные для экспорта представляются в виде структурированного объекта (класс object()), в котором одиночные поля представляются скалярами, записи - объектами, а таблицы - массивами объектов. Структура данного объекта, по возможности, должен совпадать со структурой соответствующего объекта, используемого в storage/orders.

Структура папок

В плагине 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 и на основании которого выбирается расширение


Пример: в модуле типа im, который называется sample при просмотре расписания необходимо экспортировать все уроки за месяц. Для этого структура папок im должна выглядеть следующим образом:

Folders.jpg

Каждый синий квадрат обозначает папку, желтый — пояснение, серый — отдельный файл.

В каждой папке с типом экспорта может лежать файл init.php, который содержит класс, наследуемый от класса dof_modlib_templater и переопределяющий его метод format(). Именно он определяет, каким образом будет отформатирован окончательный файл. Для формата odt в папке с названием формата должна находится папка «content», содержащая следующие файлы:

  • content.xml - xml-документ с основным содержанием, размеченный тегами шаблонизатора PEAR::QuickForm
  • mimetype - mime-тип документа, который будет использоваться при передаче документа по http и на основании которого выбирается расширение

Эти файлы будут определять форматирование будущего документа. Их можно получить, распаковав обычный odt-файл (как zip-архив).

Стандартные методы классов

Класс 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

Структура вызова классов

Calls.jpg


Структура наследования классов форматирования отдельных документов

Extending1.jpg

Структура наследования классов форматирования групп документов

Extending2.jpg