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.