Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursach_ver_1_00.docx
Скачиваний:
138
Добавлен:
13.04.2015
Размер:
1.57 Mб
Скачать

Раздел 5. Разработка шаблонов и описание функционала

Шаблоном называют часть веб-документа, которая используется в нескольких страницах. Они помогают быстро проводить модификацию всего сайта - изменение информации или оформления в шаблоне отражается на всех страницах, использующих этот шаблон.

В соответствии со стандартами HTMLстраницы должны содержать определение типа документа (DOCTYPE).DOCTYPEсообщает валидатору веб-обозревателя версиюHTMLдля проверки синтаксиса. Чтобы добиться правильного отображения информации на сайте также необходимо внести в код шаблонаmeta-теги с указанием типа контента и кодировки. Пример: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Все шаблоны хранятся в папке applications/views/.

В основном шаблоне (Рис.7) будет находиться вся статическая часть страницы. Это шапка и нижняя часть сайта.

Рис.7. Основной шаблон.

В верхней части содержатся: заголовок сайта, меню, содержащее ссылки на главную страницу и страницы с различной информацией, приветствие и ссылки, динамически меняющиеся в зависимости от категории пользователя (Табл.1). При успешной авторизации данные о пользователе (имя и категория) заносятся в cookie, что позволяет использовать эти данные на каждой странице сайта.

Вид

Категория пользователя

Гость

Зарегистрированный и прошедший авторизацию

Администратор

Табл.1. Зависимость вида приветствия от категории пользователей

В нижней части главного шаблона находятся ссылки с общей информацией.

Центральная часть главного шаблона состоит из двух колонок. Правая колонка обычно содержит дополнительную информацию, например список случайных и наиболее популярных тестов (Рис.8).

Рис 8. Правая колонка.

CodeIgniterпозволяет использовать классActiveRecord, который значительно упрощает создание запросов к базе данных. Например, запрос на выдачу пяти самых популярных тестов выглядит следующим образом:SELECTid_tests,nameFROMTestsORDERBYpopulationDESCLIMIT0,5

При использовании класса ActiveRecordзапрос будет выглядеть так: $this->db->order_by('population', 'DESC')->get('Tests',5);

В левой колонке расположен основной контент сайта, который будет меняться в зависимости от текущего url.

На главной странице будут отображены все тесты, сгруппированные по темам. Обзор каждой темы предполагает отображение названия темы и списка тестов, входящих в нее (Рис. 9).

Рис 9. Пример отображения темы.

Для этого происходит выборка всех тем и всех тестов каждой выбранной темы. Данные по каждой теме передаются в шаблон themes_view.

Для отображения теста использовалось несколько шаблонов: шаблон подготовки к тесту (Рис.10), содержащий правила прохождения, описание теста и другую информацию, шаблон для отображения текущего вопроса и шаблон отображения результата теста (Рис.11).

Рис.10. Пример отображения подготовки к тесту.

Рис.11. Пример отображения результата теста.

Шаблон для отображения вопросов состоит из названия теста, текста вопроса и списка вариантов ответа. Варианты ответов на текущий вопрос выбираются аналогично выборке тестов из конкретной темы. В зависимости от типа вопроса или теста отображение может меняться. В данной работе представлены два типа вопросов: с одиночным и множественным выбором вариантов ответа. В первом случае в шаблоне используются элементы формы типа radio, во втором – checkbox (табл.2).

Вид

Выбор вариантов ответа

Одиночный

Множественный

Табл.2. Отображение вопросов в зависимости от типа.

После ответа пользователем на последний вопрос теста происходит ряд действий:

  1. Выдача результата теста пользователю, исходя из набранных им баллов. Для этого используется метод модели Tests_modelget_test_result($id_tests, $schore), где $id_tests- идентификатор текущего теста, а параметр $schore– количество набранных пользователем баллов.

  2. Увеличение популярности теста – метод population_plus($id) модели Tests_model. Параметр $id- идентификатор текущего теста.

  3. Если пользователь прошел аутентификацию, добавление идентификаторов теста, пользователя и полученного им результата в таблицу us_tes_res. При повторном прохождении пользователем конкретного теста производится поиск соответствующей записи и результат обновляется.

Шаблоны для страниц регистрации (Рис.12) и авторизации (Рис. 13) содержат соответствующие поля формы, оповещения об ошибках и сообщение об успешном проведении операций (для регистрации). При успешной авторизации проводится перенаправление на главную страницу сайта.

Рис 12. Пример формы регистрации. Ввод некорректных данных.

Для проверки валидности формы регистрации использовался хелпер formи библиотекаform_validation. Проверялись следующие условия:

  • Заполнение всех полей формы

  • Корректный ввод адреса электронной почты.

  • Длина логина не менее 3-х символов

  • Длина пароля не менее 5-ти символов

  • Совпадение значений полей Пароль и Подтверждение пароля

  • Проверка на существование пользователя с текущим логином.

При невыполнении каких-либо условий на экран выводились соответствующие сообщения.

Рис. 13. Форма авторизации

У зарегистрированных пользователей появляется возможность вести учет пройденных тестов (Рис. 14). Реализация состоит в извлечении всех идентификаторов тестов и результатов из таблицы us_tes_res: $this->db->get_where('us_tes_res',array('id_users' => $id_user)) Далее извлекается информация о каждом тесте (название и идентификатор темы для создания ссылки «К теме») и результате (текст результата). Данные передаются в шаблонmycab_view.php

Рис.14. Личный кабинет пользователя.

Если пользователь имеет права администратора, он получает доступ к админке, где находятся функции управления контентом сайта. При загрузке контроллера выполняется проверка категории пользователя. Если посетитель не является администратором, то он получит сообщение об ошибке (404 – страница не найдена). Права администратора дают возможность добавлять, редактировать и удалять элементы контента: темы, тесты, вопросы, варианты ответов, результаты. Также имеется функция для просмотра информации о конкретном тесте (Рис. 15).

Рис.15. Просмотр теста

В контроллере Administratorпереопределена функцияright_col(), которая выполняет загрузку правой колонки сайта. Она примет вид меню (Рис.16).

В левой колонке будет отображаться непосредственно ход выполнения выбранного из списка действий, например добавление теста (рис. 17).

Рис.16. Админ-панель. Правая колонка.

Рис.17. Форма добавление теста.

Заключение

Вывод

В результате выполнения курсовой, был создан динамический веб-сайт для проведения тестирования. Для его разработки применялось актуальное программное обеспечение, без помощи которого не было бы возможности добиться поставленной цели. Это программное обеспечение включает в себя:

  • Язык программирования PHP.

  • Фреймворк CodeIgniter.

  • Веб-сервер Denwer.

  • Реляционная система управления БД MySQL.

  • Приложение PHPMyAdmin.

С помощью этих инструментов значительно сокращена ручная работа и повторяющийся код. Чтобы добиться ЧПУ без применения CodeIgniterи дополнительных библиотек, необходимо вносить много изменений в файл .htaccess. Таким образом, затрачено меньше времени на разработку сайта. Всё информационное наполнение сайта находится в БД.

Посетители сайта делятся на три группы: гости, зарегистрированные пользователи и администраторы. Посетители всех групп могут свободно проходить выбранные ими тесты на различные темы. Зарегистрированные пользователи имеют доступ к личному кабинету, где могут видеть список тестов, которые они проходили, и их результатов. Имея права администратора можно быстро наполнять сайт контентом без изменения кода.

Список литературы

  1. Котeров, Д. В. К73 РНР 5 / Д. В. Котеров, А. Ф. Костарев. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2008. — 1104 с: ил. — (В подлиннике)

  2. Документация по CodeIgniter [Электронный ресурс] - Режим доступа: http://codeigniter.snippets.su/, свободный.

  3. Справочник по изучению языка разметки документов [Электронный ресурс] – Режим доступа: http://htmlbook.ru/, свободный.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]