Тестовое задание для выполнения кандидатом на должность программиста После выполнения задания, пожалуйста, заполните «Рапорт о выполнении тестового задания» (находится в конце данного документа) и пришлите его вместе с кодом и дампом базы менеджеру по персоналу. Задание 10 (PHP, MySQL, JavaScript) Тестовое задание необходимо выполнить с использованием принципов ООП. Тестовое задание необходимо выполнить без использования framework’ов. Использование библиотек для javascript не возбраняется. Система проведения опросов на интернет-сайте Краткое описание задачи Создать систему проведения опросов на сайте (на PHP, JavaScript, MySQL ), позволяющую: Администраторам: Создавать опросы. Каждый опрос может состоять из любого количества вопросов, для каждого вопроса может быть введено любое количество ответов. Каждый вопрос может быть одного из двух типов: 1. Пользователь может выбрать только 1 вариант ответа (с помощью радиокнопок) 2. Пользователь может выбрать несколько вариантов ответов (с помощью чекбоксов) Просматривать результаты опросов в разрезе различных категорий пользователей (подробно об этом – в главе «Просмотр результатов опросов»). Пользователям: Отвечать на вопросы того опроса, для которого администратор установил свойство «активный». Просматривать результаты активного опроса (по всем пользователям). Пример опроса: 1. Как часто Вы заходите на сайт? Это мой первый визит Раз в месяц и реже Несколько раз в месяц 2. Какие разделы представляют для Вас наибольший интерес? Новости О компании Производство Контакты 3. Ваш пол: 1 Мужской Женский 4. Ваш возраст: Меньше 20 лет 20-30 лет 31-40 лет Старше 40 Список опросов Страница «Список опросов» доступна администраторам. Внимание! Авторизацию администраторов делать не нужно. Вход на страницу должен осуществляться по отдельному URLу. На данной странице отображается список всех существующих опросов. Должны выводиться названия опросов и рядом ссылки для совершения доступных администратору действий. Список должен быть разбит на 3 части: 1) Активный опрос (опрос, на вопросы которого могут отвечать пользователи в данный момент) 2) Черновики 3) Закрытые опросы Для активного опроса должна быть возможность проделать следующие действия: Просмотреть результаты (см. главу «Просмотр результатов опроса») Закрыть опрос (опрос перестаёт быть доступным внешним пользователям сайта и переходит в список «Закрытые опросы») Удалить опрос (опрос удаляется вместе со всеми ответами на его вопросы) Для черновиков должны быть доступны следующие действия: Редактировать опрос. Активировать опрос (опрос становиться доступным внешним пользователям сайта и переходит в список «Активный опрос»; действие доступно, только если в данный момент нет активного опроса, т.о. активный опрос может быть только один) Удалить опрос (опрос удаляется вместе со всеми ответами на его вопросы) Для закрытых опросов должны быть доступны следующие действия: Просмотреть результаты (см. главу «Просмотр результатов опроса»). Активировать опрос (опрос становиться снова активным, все предыдущие ответы сохраняются; действие доступно, только если в данный момент нет активного опроса) Удалить опрос (опрос удаляется вместе со всеми ответами на его вопросы) Должна быть ссылка «Создать новый опрос» для перехода к странице создания нового опроса (см. главу «Создание/редактирование опроса»). Создание/редактирование опроса Переход на эту страницу может быть осуществлен со страницы «Список опросов» по ссылкам, расположенным рядом с названиями черновиков опросов, либо по ссылке «Создать новый опрос» Должна иметься возможность ввести (или отредактировать) следующие поля: 2 Название опроса Текст вопроса, его тип (типов два: 1) может быть выбран только один вариант ответа 2) может быть одновременно выбрано несколько вариантов ответов), обязателен ли ответ на данный вопрос. Должна быть возможность добавить любое количество вопросов и любое количество ответов для каждого вопроса. Проверки при сохранении опроса: Должно быть введено название опроса Должен быть введен хотя бы 1 вопрос. Для каждого введенного вопроса должно быть введено не менее 2х ответов и выбран тип. Хотя бы один из введенных вопросов должен быть обязательным для ответа. Добавление полей для ввода очередного вопроса (ответа) должно производиться без перезагрузки страницы. Прохождение опроса Страница прохождения опроса должна быть доступна по отдельному URLу Внимание! Как-либо учитывать, проходил ли ранее данный пользователь опрос, не надо. При каждом сохранении результатов опроса считается, что опрос прошёл новый пользователь. Если активного опроса в данный момент не существует, на странице выводится следующий текст «Нет доступного опроса». Если активный опрос в данный момент существует, должны отображаться вопросы этого опроса и кнопка «Сохранить результаты», например: Название опроса 1. Как часто Вы заходите на сайт? Это мой первый визит Раз в месяц и реже Несколько раз в месяц 2. Какие разделы представляют для Вас наибольший интерес?* Новости О компании Производство Контакты 3. Ваш пол:* Мужской Женский 4. Ваш возраст: Меньше 20 лет 20-30 лет 31-40 лет Старше 40 3 Сохранить результаты Обязательные вопросы должны быть отмечены *. При нажатии на кнопку «Сохранить результаты» должна выполниться проверка на заполнение обязательных вопросов. Если есть обязательные вопросы, на которые не дан ответ, пользователь должен быть возвращен на ту же страницу с сообщением об ошибке. Если ответы на все обязательные вопросы даны, пользователю должны показаться результаты ответов всех пользователей, прошедших опрос, например: Результаты опроса «Название опроса» 1. Как часто Вы заходите на сайт? Это мой первый визит 7 из 10 Раз в месяц и реже 1 из 10 Несколько раз в месяц 2 из 10 2. Какие разделы представляют для Вас наибольший интерес? Новости 7 из 10 О компании 6 из 10 Производство 3 из 10 Контакты 9 из 10 3. Ваш пол: Мужской 6 из 10 Женский 4 из 10 4. Ваш возраст: Меньше 20 лет 2 из 10 20-30 лет 3 из 10 31-40 лет 4 из 10 Старше 40 1 из 10 Просмотр результатов опроса Переход на эту страницу может быть осуществлен со страницы «Список опросов» по ссылкам, расположенным рядом с названиями опросов, для которых возможен просмотр результатов (активный опрос и закрытые опросы). 4 Администратор может просматривать либо ответы всех пользователей, либо ответы только определенных категорий пользователей. Страница ответов всех пользователей аналогична странице, которая показывается пользователю после прохождения опроса. Для просмотра результатов опроса в разрезе определенных категорий пользователей администратор должен иметь возможность отметить (с помощью чекбоксов) любые ответы, после чего ему показываются результаты только тех пользователей, которые на вопросы, отмеченные администратором, ответили аналогичным образом. Например, если администратор отметил следующие ответы: 1. Как часто Вы заходите на сайт? Это мой первый визит Раз в месяц и реже Несколько раз в месяц 2. Какие разделы представляют для Вас наибольший интерес? Новости О компании Производство Контакты 3. Ваш пол: Мужской Женский 4. Ваш возраст: Меньше 20 лет 20-30 лет 31-40 лет Старше 40 Посмотреть результаты то в результатах должны отображаться только ответы на все вопросы мужчин в возрасте от 20 до 40 лет, т.е. нужно учитывать ответы только тех пользователей, которые в вопросе № 4 отметили пункты «20-30 лет» ИЛИ «31-40 лет» И в вопросе № 3 указали «Мужской». В этом случае страница результатов может иметь такой вид: Результаты опроса «Название опроса» Выборка по пользователям: Ваш пол: мужской. Ваш возраст: «20-30 лет» ИЛИ «31-40 лет» 1. Как часто Вы заходите на сайт? Это мой первый визит 3 из 6 Раз в месяц и реже 1 из 6 Несколько раз в месяц 2 из 6 2. Какие разделы представляют для Вас наибольший интерес? 5 Новости 5 из 6 О компании 4 из 6 Производство 2 из 6 Контакты 6 из 6 3. Ваш пол: Мужской 6 из 6 Женский 0 из 6 4. Ваш возраст: Меньше 20 лет 0 из 6 20-30 лет 2 из 6 31-40 лет 4 из 6 Старше 40 0 из 6 Рапорт о выполнении тестового задания При необходимости Вы можете более подробно описать выполненные задания, добавить в таблицу строки, приложить любое количество файлов и т.д. ФИО кандидата Задание «Система проведения опросов на интернет-сайте» Перечень прилагаемых файлов Инструкция по установке Комментарии к алгоритму (если есть) Сложности, возникшие в процессе выполнения задания (если есть) 6 Другие замечания (если есть) 7