Уважаемые читатели, хочу рассказать вам о разработке, появившейся в стенах Сибирского федерального университета, — веб-приложении YConfs, предназначенном для информационной и организационной поддержки научных конференций.
Идея и потребность в разработке такого рода CMS возникла в университете несколько лет назад. Система была реализована и с тех пор проходила стадии улучшения и доработки, в том числе по запросам организаторов конференций.
Потребность в подобных программных системах возникает у многих вузов, поэтому было принято решение опубликовать её исходные коды под лицензией GPL. Ссылку на репозитарий можно найти на сайте http://yconfs.sfu-kras.ru.
Сайт, запущенный на YConfs, представляет собой каталог конференций, в котором для каждой конференции создан подсайт, содержащий подробную информацию о ней и предоставляющий административные функции организаторам и участникам конференции.
Выше приведен скриншот главной страницы сайта конференций СФУ, содержащей список конференций, на которые в данный момент открыта регистрация, либо которые анонсируются и будут проводиться в ближайшем будущем.
Подсайт конференции
Подстайт конференции имеет открытую часть, содержащую информационные страницы конференции, и закрытую, содержащую административные страницы, доступные авторизованным пользователям.
На скриншоте ниже показана страница с общей информацией о конференции.
Интерфейс сайта поддерживает многоязычность, в том числе все тексты о конференции и прикрепляемые информационные письма можно указать на нескольких языках. Сейчас выполнены переводы на английский и испанский языки, но технологически можно добавить и другие.
Для удобства наполнения все текстовые поля оснащены визуальным редактором TinyMCE со встроенным файловым менеджером RESPONSIVE Filemanager, позволяющим загрузить на сайт и опубликовать материалы различных медиаформатов.
Возможности организатора конференции
Организатор конференции после прохождения процедуры авторизации имеет следующие основные возможности:
- добавлять на сайт новые конференции;
- редактировать информационные страницы конференции и, если требуется, создавать дополнительные страницы;
- открывать онлайн-регистрацию участников, настраивать форму заявки и указывать даты регистрации на конференцию;
- выставлять статус полученных заявок на участие (принята, отклонена) и распределять их по тематическим секциям;
- выполнять рассылку писем по электронной почте участникам конференции.
Возможности участника конференции
При подаче заявки на участие в конференции автору-заявителю доклада предлагается заполнить регистрационную форму, которая обычно включает название доклада, тематическую секцию, личную информацию по каждому из авторов доклада, требуемые условия размещения и проживания и собственно текст доклада. Организаторами могут быть предусмотрены и другие формы участия в конференции, например, в качестве слушателя.
Если регистрация прошла успешно, автор получает пароль для дальнейшего доступа на сайт. Кроме того, для него создается персональная страница, на которой размещен список поданных им заявок по всем конференциям, в которых он участвовал.
Ниже приведен скриншот страницы с простой формой регистрации на конференцию.
Детали реализации
YConfs разработана на Yii версии 1.1.13 (отсюда первая буква в названии). Yii была выбрана из следующих соображений: во-первых, хотелось работать на проверенной связке PHP+MySQL, а во-вторых, привлекла продуманная современная архитектура программного кода, которую предложили разработчики Yii.
Реализация класса URL-правил: структура адреса для доступа к странице с информацией об объекте
Из предложенного инструментария, во-первых, была задействована реализация паттерна «Модель-Вид-Контроллер», дополненная классом, отвечающим за построение и разбор адресов в пределах сайта.
Модель данных YConfs содержит сущности «Конференция», «Организация», «Пользователь» и др. Адрес доступа к странице, представляющей информацию об объекте, содержит либо числовой идентификатор объекта, либо уникальный в пределах сайта символьный идентификатор, если он назначен.
Поиск объекта по идентификатору осуществляется со следующим приоритетом: сначала производится поиск конференции, затем, если конференция не найдена, организации, а затем пользователя.
Поддерживаются как расширенные адреса, включающие информацию о типе объекта (например: http://conf.sfu-kras.ru/conf/928, http://conf.sfu-kras.ru/org/1), так и адреса в свернутой форме, обрабатываемые по приведенному выше алгоритму (например: http://conf.sfu-kras.ru/928, http://conf.sfu-kras.ru/oil2016, http://conf.sfu-kras.ru/sfu-kras).
Реализация модели данных
Безусловно, была использована модель доступа к табличным данным, реализованная в классе ActiveRecord. Необходимые доработки в YConfs включают:
- Поддержку многоязычных полей, реализованную прикрепляемым поведением MultilingualBehavior: каждое многоязычное поле хранит значения на нескольких языках; физически значения многоязычных полей хранятся в отдельной связанной таблице. Список языков сайта указан в конфигурационном файле, дополнительно список языков настраивается для каждой отдельной конференции.
- Фильтрацию HTML-тэгов для задаваемого набора полей класса с настраиваемым уровнем строгости, которая аналогичным образом реализована в поведении XssFilterBehavior.
- Поддержку многоязычных файловых полей, как одиночных, так и множественных.
- В целях ускорения просмотра длинных списков нагруженных объектов были реализованы специальные облегченные классы-вьюхи, содержащие оптимизированные SQL-запросы и код разбора получаемых в результате их выполнения данных.
Разграничение прав доступа
Была задействована стандартная система проверки прав и определены права доступа для следующих групп пользователей:
- гостей,
- авторизованных пользователей,
- владельцев объектов (например, автор-заявитель по отношению к докладу, пользователь по отношению к личной странице),
- организаторов конференций,
- а также администраторов сайта.
Правила проверки, соответствующие логике работы веб-приложения, реализованы согласно архитектуре Yii в классе AuthManager.
Темизация
Был задействован механизм поддержки нескольких тем оформления. На момент написания этой статьи свободно распространяется одна тема, созданная на основе стандартной темы Yii.
Для сайта конференций Сибирского федерального университета разработана тема в общем стиле оформления сайтов университета.
Ниже приведен скриншот страницы, оформленной в стиле свободно распространяемой темы.
Заключение
В начале этого года вышла первая версия YConfs, которую планируется развивать и дорабатывать в рабочем режиме.
Я, как один из разработчиков, выражаю надежду, что YConfs окажется полезной и будет востребована в организациях, деятельность которых в той или иной мере включает проведение или сопровождение конференций.
Предложения по улучшению функциональности YConfs принимаются на сайте https://bitbucket.org/SibFU/yconfs.
Спасибо за внимание!
Автор: olyacher