Difference between revisions of "Шаблоны HTML для турниров"

From EjudgeWiki
 
 
Line 1: Line 1:
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Шаблоны HTML для турниров]]
 
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Шаблоны HTML для турниров]]
  
Аватары поддерживаются с версии [[изменения в версии 3.7.0|3.7.0]].
+
Генерация HTML-страниц в ejudge реализована с помощью шаблонов HTML, хранящихся в файлах с суффиксом .csp.
 +
Шаблоны обрабатываются программой [[ej-page-gen]], которая генерирует код на языке Си, который компилируется в
 +
разделяемую библиотеку (.so-файл), динамически подгружающуюся при работе ejudge.
 +
 
 +
Во время работы ejudge отслеживаются изменения в .csp-файл, и при необходимости файл перекомпилируется,
 +
и разделяемая библиотека переподгружается в память. При инсталляции ejudge шаблоны HTML-страниц
 +
помещаются в каталог PREFIX/share/ejudge/csp, то есть, если ejudge проинсталлирован в /opt/ejudge,
 +
полный путь к каталогу шаблонов будет /opt/ejudge/share/ejudge/csp. Содержимое этого каталога перезаписывается при каждом
 +
обновлении ejudge. Локальные копии шаблонов HTML, которые сохранятся при переинсталляции,
 +
могут находиться в каталоге CONTESTS_DIR/csp, то есть, если каталог турниров расположен в /home/judges,
 +
полный путь будет равен /home/judges/csp. Локальные копии шаблонов замещают собой оригинальные шаблоны.
 +
Если в локальной копии шаблона допущена ошибка, из-за которой генерация си-кода, или его компиляция, или
 +
загрузка в память завершаются с ошибкой, оригинальные шаблоны, находящиеся в каталоге инсталляции ejudge,
 +
не используются, и генерируется HTML-страница с сообщением об ошибке.
 +
 
 +
Файлы шаблонов, и оригинальные в PREFIX/share/ejudge/csp, и копии в CONTESTS_DIR/csp, являются глобальными для ejudge,
 +
то есть используются для генерации HTML-страниц всех турниров.
 +
Начиная с версии 3.7.0 поддерживаются шаблоны генерации HTML локальные для турнира. Каждый турнир может
 +
иметь свои шаблоны HTML страниц для генерации таблицы текущих результатов, интерфейса регистрации на турнир
 +
и пользовательского интерфейса участия в турнире. Модификация под конкретный турнир HTML-страниц административного
 +
интерфейса, интерфейса настройки турнира и редактирования базы пользователей не поддерживается.
 +
 
 +
Чтобы включить поддержку локальных для турнира шаблонов HTML-страниц в конфигурационном файле
 +
турнира [[contest.xml]] у элемента contest нужно установить атрибут [[contest.xml:enable_local_pages]] в значение "yes".
 +
Локальные варианты HTML-шаблонов должны размещаться в каталоге csp каталога турнира.
 +
Например, если турниры размещаются в каталоге /home/judges, то для турнира 1 шаблоны
 +
HTML-страниц должны размещаться в каталоге /home/judges/000001/csp.
 +
В частности, чтобы модифицировать отображение таблицы текущих результатов турнира
 +
в каталог /home/judges/000001/csp/contest из каталога /opt/ejudge/share/ejudge/csp/contest
 +
нужно скопировать файлы I_int_standings.c, int_standings_cell.csp, int_standings.csp
 +
и модифицировать их как требуется.
 +
 
 +
Если локальный для турнира шаблон не может быть скомпилирован или загружен,
 +
будет использоваться глобальный шаблон. При этом локальный для турнира шаблон будет
 +
отмечен как ошибочный и не будет перекомпилироваться даже в случае изменения.
 +
Чтобы сбросить закешированные локальные для турнира страницы в административном
 +
интерфейсе турнира (master) в меню "Actions" добавлен пункт "Reload Contest-Specific Pages"
 +
и "Reload ALL Contest-Specific Pages". Второй пункт сбрасывает закешированные
 +
шаблоны HTML всех турниров.
 +
 
 +
Шаблоны для турниров поддерживаются с версии [[изменения в версии 3.7.0|3.7.0]].

Latest revision as of 07:45, 20 August 2017

Навигация: Главная страница/Система ejudge/Использование/Шаблоны HTML для турниров

Генерация HTML-страниц в ejudge реализована с помощью шаблонов HTML, хранящихся в файлах с суффиксом .csp. Шаблоны обрабатываются программой ej-page-gen, которая генерирует код на языке Си, который компилируется в разделяемую библиотеку (.so-файл), динамически подгружающуюся при работе ejudge.

Во время работы ejudge отслеживаются изменения в .csp-файл, и при необходимости файл перекомпилируется, и разделяемая библиотека переподгружается в память. При инсталляции ejudge шаблоны HTML-страниц помещаются в каталог PREFIX/share/ejudge/csp, то есть, если ejudge проинсталлирован в /opt/ejudge, полный путь к каталогу шаблонов будет /opt/ejudge/share/ejudge/csp. Содержимое этого каталога перезаписывается при каждом обновлении ejudge. Локальные копии шаблонов HTML, которые сохранятся при переинсталляции, могут находиться в каталоге CONTESTS_DIR/csp, то есть, если каталог турниров расположен в /home/judges, полный путь будет равен /home/judges/csp. Локальные копии шаблонов замещают собой оригинальные шаблоны. Если в локальной копии шаблона допущена ошибка, из-за которой генерация си-кода, или его компиляция, или загрузка в память завершаются с ошибкой, оригинальные шаблоны, находящиеся в каталоге инсталляции ejudge, не используются, и генерируется HTML-страница с сообщением об ошибке.

Файлы шаблонов, и оригинальные в PREFIX/share/ejudge/csp, и копии в CONTESTS_DIR/csp, являются глобальными для ejudge, то есть используются для генерации HTML-страниц всех турниров. Начиная с версии 3.7.0 поддерживаются шаблоны генерации HTML локальные для турнира. Каждый турнир может иметь свои шаблоны HTML страниц для генерации таблицы текущих результатов, интерфейса регистрации на турнир и пользовательского интерфейса участия в турнире. Модификация под конкретный турнир HTML-страниц административного интерфейса, интерфейса настройки турнира и редактирования базы пользователей не поддерживается.

Чтобы включить поддержку локальных для турнира шаблонов HTML-страниц в конфигурационном файле турнира contest.xml у элемента contest нужно установить атрибут contest.xml:enable_local_pages в значение "yes". Локальные варианты HTML-шаблонов должны размещаться в каталоге csp каталога турнира. Например, если турниры размещаются в каталоге /home/judges, то для турнира 1 шаблоны HTML-страниц должны размещаться в каталоге /home/judges/000001/csp. В частности, чтобы модифицировать отображение таблицы текущих результатов турнира в каталог /home/judges/000001/csp/contest из каталога /opt/ejudge/share/ejudge/csp/contest нужно скопировать файлы I_int_standings.c, int_standings_cell.csp, int_standings.csp и модифицировать их как требуется.

Если локальный для турнира шаблон не может быть скомпилирован или загружен, будет использоваться глобальный шаблон. При этом локальный для турнира шаблон будет отмечен как ошибочный и не будет перекомпилироваться даже в случае изменения. Чтобы сбросить закешированные локальные для турнира страницы в административном интерфейсе турнира (master) в меню "Actions" добавлен пункт "Reload Contest-Specific Pages" и "Reload ALL Contest-Specific Pages". Второй пункт сбрасывает закешированные шаблоны HTML всех турниров.

Шаблоны для турниров поддерживаются с версии 3.7.0.