Модификация распечатки

Материал из Rujel
Перейти к: навигация, поиск

Начиная с версии 0.9.2 в РУЖЭЛЬ появилась возможность подготовки информации для распечатки посредством XSLT- преобразования из XML. Примером такого подхода является идущая в составе дистрибутива распечатка "Кратко". На основании этого отчета можно формировать свои.

Принцип формирования отчета[править]

Список отчетов, доступных в режиме "Контроль успеваемости" (при просмотре по ученикам), формируется частично программно модулями РУЖЭЛЬ, а частично — на основании содержимого директории

CONFIGDIR/RujelReports/StudentReport/

где CONFIGDIR означает: на AltLinux: /etc/webobjects/rujel/ , в общем случае: $NEXT_ROOT/Local/Library/WebObjects/Configuration/rujel/

Описания отчетов хранятся в файлах .plist . Часть этих файлов являются описаниями отчетов, а часть — сохраненными настройками. Отличить их можно по структуре содержимого (см. ниже).

При изначальной установке описания отчетов доступно два: DefaultReporter.plist и shortXSLT.plist . Примером сохраненных настроек является файл defaultSettings.plist — в нем сохраняются настройки по умолчанию. Другие файлы настроек обычно имеют названия вида 20110914.plist , отображая дату создания этой настройки, но для них названия не принципиальны.

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

Отсылка к файлу преобразования находится внутри plist-файла описания отчета. Так отчет "Кратко" — файл shortXSLT.plist формируется при помощи преобразования short.xsl

Для создания своего отчета, надо подготовить свой файл plist с описанием отчета и файл xsl с преобразованием. Для упрощения этой задачи, можно воспользоваться файлами shortXSLT.plist и short.xsl в качестве шаблонов. Вносить свои изменения непосредственно в эти файлы не рекомендуется, так как они будут заменены на оригинальные при обновлении.

Структура plist-описания отчета[править]

Редактировать описание отчета можно также, как и любые другие файлы plist. Здесь приводится структура описания отчета, которую считывает РУЖЭЛЬ.


Ключ Значение Комментарий
id Идентификатор отчета Это обязательный параметр. По его наличию система определяет файл, как описание отчета. Значение id должно быть уникальным для каждого отчета.
title Название Будет отображаться в списке доступных отчетов
hover Подсказка Будет отображаться при наведении курсора на название отчета.
sort Ключ сортировки Определяет положение отчета в списке. Должен быть типа string
transform Преобразование Имя файла XSLT-преобразования
sources Источники данных Список <array> дополнительных данных, которые потребуются для преобразования. Известные значения: Persdata — полная информация о именах учащихся и учителей и Options — данные о настройках отчета.
studentInOptions Этот флаг показывает, что преобразование позволяет заготовить XML на весь класс, а для каждого учащегося потом формировать отдельные отчеты, изменяя только указание учащегося в настройках отчета.
settings Настройки отчета В этом разделе указывается, какую информацию нужно включать в отчет. Нужно указывать для уменьшения нагрузки на БД
options Изменяемые параметры Этот раздел описывает параметры, которые пользователь сможет самостоятельно настроить перед формированием отчета.

Структура настроек settings[править]

Структура этого раздела аналогична структуре файла сохраненных настроек. Такого, как defaultSettings.plist.

Раздел settings состоит из подразделов по модулям РУЖЭЛЬ, которые выдают свои данные в отчет. В настоящее время есть следующие модули:

  • eduPlan — учебный план (предметы и расчасовка)
  • schedule — расписание
  • lessons — уроки и отметки о присутствии на уроках (в старых версиях — замечания)
  • marks — работы и оценки (включая текстовые комментарии)
  • autoitog — прогнозы и отсрочки

Для каждого модуля создается словарь, в котором записываются параметры, актуальные для этого модуля. Для всех модулей предусмотрен общий параметр active, который определяет, будет ли этот модуль выдавать данные для отчета. Доступные параметры для каждого модуля опишу позже

Если словаря для какого-то типа модуля нет, то он не будет выдавать данные.

Параметры, которые определяются интерактивно, описываются в разделе options, в разделе settings их при этом указывать не обязательно.

Структура описания параметров options[править]

Напишу позже, ориентируйтесь пока что на примере shortXSLT.plist

Как писать XSLT-преобразование[править]

Для начала, нужно уметь использовать XSLT. Если есть желание научиться, могу порекомендовать источники информации, которыми я пользовался сам.

  • Обучающая презентация (pdf) [1]
  • Онлайн учебник и справочники синтаксиса [2]

Схема[править]

Для написания преобразования нужно знать схему исходного XML. Описания основного формата экспорта РУЖЭЛЬ (ejdata) и формата персональных данных(persdata) доступны в репозитории на GitHub.

Получение данных[править]

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

Получить для этого XML-файл данных из своего журнала можно так:

  • войти в журнал с правами root (Системный администратор)
  • перейти в режим "Контроль успеваемости"
  • перейти в просмотр по ученикам (закладка "ученики")
  • выбрать период, за который выбирать данные, и класс. (Если не выбрать класс, будут собраны данные по всем классам текущего отделения, а это существенная нагрузка на систему)
  • можно выбрать несколько учеников в классе. В противном случае, собираются данные на весь класс.
  • под списком учащихся указать, какой файл данных требуется получить (ejdata / persdata / options)
  • нажать кнопку XML

В отдельном окне откроется сформированный системой XML-документ. Далее его можно сохранить средствами браузера.

Как проверять преобразование[править]

Достаточно добавить в начало XML-файла данных ссылку на xsl-файл преобразования. Вот так:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="short.xsl"?>
<ejdata product="Rujel" version="0.9.1" base="..." eduYear="2011">
...
</ejdata>

Здесь short.xsl замените на название своего файла преобразования

После этого XML-файл, при открытии практически любым современным браузером, будет преобразован в соответствии с указанным XSLT. Отображаться будет уже результат преобразования.