Difference between revisions of "Шаблоны HTML для турниров"
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Шаблоны HTML для турниров А...") |
|||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Шаблоны HTML для турниров]] | Навигация: [[Main Page|Главная страница]]/[[Система 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|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.