На сайте международного конкурса нужно было создать сложное по структуре голосование за конкурсные работы. Работы разделены на 4 категории и 3 номинации. Голосование осуществляется простыми пользователями (результаты должны быть видны сразу) и членами жюри (результаты закрыты до определенной даты).
Варианты решений
Рассматривали возможность регистрации пользователей и формирование личного кабинета с выводом информации о публичном голосовании. Также планировали создать отдельный личный кабинет для членов жюри, что в итоге и реализовали. От авторизации обычных пользователей через сайт решили отказаться — остановились на голосовании через 3 популярные социальные сети.
Особенности реализации
Публичное голосование. Доступно любому пользователю, имеющего аккаунт в какой-либо социальной сети (FB, ВК или Одноклассниках). Если он зарегистрирован в данных социальных сетях под одной почтой, повторное голосование невозможно. Результаты голосования отображаются сразу, отказаться от голоса (убрать лайк) можно в любое время.
Голосование членами жюри. Каждый член жюри получает от администратора сайта персональные доступы для осуществления закрытого голосования. Зайдя в личный кабинет, он видит список всех работ, за которые уже проголосовал и за которые необходимо проголосовать. Каждая работа оценивается по всем номинациям по принципу пятибалльной системы. До определенной даты все результаты закрытого голосования разрешены к просмотру только для администратора сайта.
Вывод результатов голосования. По наступлению назначенной даты открылась страница с результатами голосования в подробной сводной таблице.
Также все пользователи могут увидеть подробные результаты на отдельной странице работы.
Эффект от проведенных работ
По результатам работы в полном объеме была решена задача о структурированном голосовании на сайте. Отлаженная система дала возможность удобного голосования как для обычных пользователей, так и для членов жюри. Удобные таблицы вывода результатов избавили организаторов конкурса от необходимости проведения сложных расчетов при подсчете голосов.