Страница должна использовать базовый класс Nsuts::Page::
Common Page?. Для создания страницы необходимо отнаследоваться от класса
Common Page? и перегрузить соответствующие методы.
Список методов, которые будут доступны:
Список методов, которые будут доступны:
- process – исполняет код логику страницы, т.е. вызывает перегруженные методы в заданном порядке, выполняя необходимую предварительную инициализацию. (Метод не требует перегрузки!)
- process_request – обработка запроса. В данном методе разработчику страницы необходимо выполнить обработку входящих get-, post-параметров, файлов загружаемых в систему. Ссылки на эти параметры будут доступны через параметры функции.
- prepare_content – подготовка данных для отображения. Возможно, чтение данных из БД в память для дальнейшего использования.
- show_content – отображение контента. В дальнейшем возможно использование шаблонов (например, Template Toolkit) для формирования html-кода страницы.
- db – возвращает экземпляр класса Nsuts_new::Common::Db?
- ui (user info) – возвращает экземпляр Nsuts_new::Object::UserInfo (deprecated, рекомендуется использовать user).
- user – возвращает экземпляр класса Nsuts::Schema::Users. Используется для доступа к данным текущего пользователя с использованием ORM.
Обработка ошибок через исключения
Предложенная схема позволяет реализовать единообразную обработку ошибок через исключения. Обработка ошибок реализуется в базовом классе
CommonPage.
Для проверки прав доступа можно применить следующую схему: все функциональные операции реализуются в отдельном слое (можно реализовать как в процедурном, так и в объектно-ориентированном стиле), при этом внутри реализации осуществляется проверка прав пользователя (в настоящее время реализовано в модуле
Permission? ). В случае возникновения ошибки выбрасывается исключение, которое обрабатывается в коде CommonPage.
Настройки доступа к странице
Доступ к странице разрешается/запрещается исходя из значений привилегий для команды (таблица priv в БД). Функция Nsuts::Common::Permission::may_user_open_this_page проверяет, может ли текущий пользователь открыть страницу. Страницы разделены на 5 типов (подробнее описано в комментариях в коде).
Имена страниц, которые указывается в функции — названия соответствующих файлов cgi-скриптов без расширения.
Название страницы, которое показывается в <div id="header"> задается в конфиге nsuts_new_olymp.cfg