Веб-интерфейс - Интерактивная часть
Веб-интерфейс дает возможность пользователям сообщать информацию о себе, дополняя каталог. Для этого веб-интерфейс активно использует базу данных, поддерживаемую "перерабатывающим комплексом".
Коротко о том, как будет работать web-интерфейс и о том, какие к нему требования.
В разработке интерфейса ориентируемся на гибкость, модульность и стараемся не усложнять архитектуру без необходимости.
Интерактивная часть системы с точки зрения пользователя описывается на английском языке в разделе The Screens. С технической точки зрения она представляет собой набор "экранов", каждый из которых имеет свою функциональность и презентацию. (Это разделение верно и для веб-интерфейса в целом: всякая операция сначала поступает в функциональную часть, а затем в презентационную.)
Каждый экран - это:
- кусок perl кода, отвечающий за функциональность экрана и производящий в результате структуру данных
- кусок XSLT кода, отвечающий за презентацию экрана: обрабатывающий структуру данных и производящий HTML
Детали презентации каждого экрана - в отдельном XSLT документе. Общие элементы - в нескольких дополнительных XSLT документах.
Функциональность экранов и общая среда
Код, отвечающий за функциональность экрана, обрабатывает HTTP запрос, извлекая из него данные от пользователя. Перед тем, как обработчик конкретного экрана получает управление, некоторые общие параметры запросов обрабатываются общим обработчиком.
Каждый экран имеет свое URL-слово, которое и вызывает его к жизни. Запрос http://acis.org/cgi-bin/acis/newuser -- это запрос к экрану "newuser" (например, New User Registration screen), если система установлена на http://acis.org/cgi-bin/acis.
Обработчик экрана может передать управление другому экрану, либо, возможно, будет глобальная очередь обработчиков, куда на лету могут добавляться элементы.
Конфигурация экранов и соответствующих обработчиков -- в соответствующем конфигурационном файле. Структура такова: у каждого экрана -- уникальный URL-идентификатор-слово, имя perl-функции-обработчика и имя файла XSLT. Дополнительно на общем уровне - список perl модулей, которые надо загрузить.
Общее управление, генерация XML из структуры данных и выполнение XSLT-преобразования -- задача среды. Кое-что из вышеперечисленного в упрощенном варианте реализовано в CTF.