Собственно говоря для нужд своего форума делаю, решил поделиться с людьми, может кто заметит чего не заметил я, предложит что-то дельное. Это мой первый модуль для vBulletin, более кривого АПИ я в жизни конечно не встречал.:-((( Убиться можно пока вкуришь что к чему. С точки зрения безопасности, можно не переживать, код старался делать максимально безопасным, все что считывается от пользователей это true или false, за исключением блока внутри тега [EXAMINE], но и там парсер писал ручной а не регулярными выражениями. Все запросы к базе пропускаются через mysql_real_escape, поэтому инъекций нет (ну насколько я проверил за собой)... Распространяется бесплатно, единственным условием является присутствие ссылки внизу, в копирайтах.
То что в папке Uploads закинуть на сервер. После этого в админке "Перестроить -> Битовые поля"
Импортировать продукт product-con_test.xml
Как это работает....
Группе в "права групп", можно присвоить разрешение использования BB-тега [EXAMINE]. Использование этого тега и является основой для создания теста в теме форума. В одном сообщении может быть только один тест!
При потом, пользователи видят сообщение форума, в котором есть текст с чекбоксами и кнопочкой Answer. Выбирают правильные на их взгляд ответы, и жмут кнопочку. Модуль проверяет правильные/неправильные ответы, в результате создает сообщение от имени пользователя в котором написано сдал он или не сдал тест.
Вместе с тем, создается еще одна таблица на форуме, куда пишутся все попытки сдачи, в которых фиксируется время, полученный бал, пройден/не пройден, процент правильных ответов и т.д. поскольку это нужно для задания параметров задержек между сдачами, возможности сдачи вообще и т.д.
Управлять сообщениями могут только группы учителей (редактировать), для всех других в том числе модераторов, возможности редактирования нет, есть только возможность удалить тест.
Когда тест просматривает группа "преподавателей", то чекбоксы отмечены в соответствии с правльными ответами, все остальные будут видеть пустые.
Модуль сырой, поэтому выкидываю больше для ознакомительных целей, чем для использования на практике (пока). Планирую доделать в течение месяца.
Внутри тега [EXAMINE] используются другие теги. Вот их список.
Формат теста
[teachers]# групп учителей через запятую[/teachers] - Группа(ы) которым будут видны ответы пользователей и правильно отмеченные чекбоксы
[students]# групп студентов через запятую[/students] - Группы которым будет разрешено сдавать тесты (позже напишу еще подвеску чтоб можно было делать дефолтные установки)
[pass_percent]% правильных ответов к зачету[/pass_percent] - процент правильных ответов, по которому засчитывается "тест сдан"
[record_fails]Сохранять ли посты с неправильными ответами[/record_fails] - сохранять или не сохранять для отображения (в списке на подобие репутации, сделаю позже)
[min_level]Минимальный уровень для сдачи[/min_level] - минимальный уровень (класс, как хотите назовите) пользователя, для допуска к тесту, 0 если не задан
[level_up]Поднять уровень на следующий при сдаче[/level_up] - до какого уровня (класса) поднимется пользователь при удачной сдаче
[eq]Вопрос 1
[ea]Ответ 1.1[/ea]
[ea][valid]Ответ 1.2[/valid][/ea] - ответ который должен быть "да"
[ea]ответ 1.3[/ea]
[/eq]
[eq]Вопрос 2
[ea]Ответ 2.1[/ea]
[ea][valid]Ответ 2.2[/valid][/ea] - ответ который должен быть "да"
[ea]ответ 2.3[/ea]
[/eq]
Замеченные глюки.
1. При прохождении теста пользователем, не отображаются правильные/неправильные ответы, видимо из-за кеширования но их можно посмотреть в "Опции темы -> версия для печати"
2. В некоторых местах перепутаны языки анг/рус, не разобрался до конца как подружить с русской локализацией.
-------------------------------------
Тест для примера:
Bla-bla-bla [examine]Examine for .... students.[teachers]1,6,2123[/teachers]aasdd [students]9,1,13,6[/students][pass_percent]95[/pass_percent]
[min_level]0[/min_level][level_up]5[/level_up]
[record_fails]yes[/record_fails]
[pass_interval]1[/pass_interval]
[eq]Question one[ea][valid]answer 1-1[/valid][/ea][ea]answer 1-2[/ea][ea][valid]Answer 1-3[/valid][/ea][/eq] next1 next1 next1
[eq]Question two[ea]answer 1[/ea][ea]answer 2[/ea][ea][valid]Answer 3[/valid][/ea][/eq] finish finish
[eq]Question three[ea]answer 1[/ea][/eq][/examine]finish
Вобщем если кому-то нужен, то по мере доработки буду выкидывать, ну а если нет, то...
cheaton-testing-0.1alpha.zip