Студия креативных разработок DevArt.PRO.
Разработка сайтов и форумов под ключ!
Сильнейшая команда в России по vBulletin - читать подробнее...
 
 
 
 

 
 
Здесь скоро опять что то будет...
 
 
 
 
 
 
Loading

Вернуться   форум vBSupport.org > vBulletin > vBulletin 4.x.x > Хаки, моды и скрипты 4.x.x

Объявления
  • Изменения в правах
  • Каталог Фрилансеров
  • Добро пожаловать!
  • Premoderation
  • Новичкам!
  • For English speaking users
Ответ
 
Опции темы Опции просмотра
Старый 25.04.2011, 19:28   #1
Простоузер
Модуль создания тестов на форуме (CheatON Testing Module)

Собственно говоря для нужд своего форума делаю, решил поделиться с людьми, может кто заметит чего не заметил я, предложит что-то дельное. Это мой первый модуль для 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

IMG_25042011_184742.jpg

IMG_25042011_184755.jpg

IMG_25042011_184821.jpg

Последний раз редактировалось Evp; 25.04.2011 в 20:36..
  Ответить с цитированием
Сказали Спасибо:
Скрыть список поблагодаривших

FoM (25.03.2012), mavredan (25.04.2011), SiDorof (25.04.2011), StenLi (25.04.2011), TAIFUN (04.05.2011)
Рекламка
Реклама на форуме
Старый 25.04.2011, 20:05   #2
kerk
k0t
 
Аватар для kerk
1. зачем делать несколько модулей на одном хуке?
2. если код модуля занимает больше 20-30 строк кода, его лучше делать отдельным файлом, а в модуле подключать этот файл
  Ответить с цитированием
Старый 25.04.2011, 20:42   #3
Evp
Простоузер
Цитата:
Сообщение от kerk Посмотреть сообщение
1. зачем делать несколько модулей на одном хуке?
2. если код модуля занимает больше 20-30 строк кода, его лучше делать отдельным файлом, а в модуле подключать этот файл
1. Для удобства разработки. Админка vBulletin-а не самая лучшая IDE для того чтоб в ней плодить код, собственно как и отлаживать. Поэтому делалось по кускам и потом своидлось в одно. Кроме того, каждый модуль имеет свою логическую функцию. Один для отображения теста, другой для отображения результатов тестирования юзера, третий для отображения доп. шаблона в постбите и так далее.

2. Можно и отдельным файлом, проблем-то. Изначально так и было, просто включил все в продукт для удобства пользователя. Если хочется вынести в отдельный файл, вынести не проблема, основной класс находится модуле IncludeMainClass на хуке global_start, копипаст в файл и отдельный файл скинуть на сервер, строка инклуда для примера там есть.
  Ответить с цитированием
Старый 25.04.2011, 21:34   #4
kerk
k0t
 
Аватар для kerk
про отдельный файл я к тому, что все модули/плагины вобла вытаскивает из БД и держит в кэше
и если хаков на форуме много (и код модулей большой), то это может повлиять на производительность форума

Цитата:
Сообщение от Evp Посмотреть сообщение
Кроме того, каждый модуль имеет свою логическую функцию
вот именно, логическую
при добавлении модуля есть такое поле "порядок выполнения", там что стоит у всех этих модулей? (на 90% уверен, что у всех стоит 5) =)
к примеру, код одного модуля должен выполняться позже другого, но порядок не выставлен корректно (или вообще оставлен по дефолту)
поэтому и говорю, что в одном продукте, на однин хук лучше вешать один модуль (разделять комментами или еще как...)
  Ответить с цитированием
Старый 25.04.2011, 23:00   #5
Evp
Простоузер
Цитата:
Сообщение от kerk Посмотреть сообщение
про отдельный файл я к тому, что все модули/плагины вобла вытаскивает из БД и держит в кэше
и если хаков на форуме много (и код модулей большой), то это может повлиять на производительность форума
Ну подсос файла с диска при каждом обращении тоже не положительно сказывается на производительности, особенно на хостингах где куча разных сайтов дергает из фс свое, начиная от скриптов и заканчивая картинками огромных размеров, а бд на отдельных серверах имеет меньшую нагрузку. На вкус и цвет как говорится. А в целом пофиг, у меня ни на что не сказалось, и как я выше написал, кому надо тот и вынесет, а все в одном для удобства установки, хоть этому и мешает еще один файл который надо заливать.

Цитата:
Сообщение от kerk Посмотреть сообщение
вот именно, логическую
при добавлении модуля есть такое поле "порядок выполнения"
, там что стоит у всех этих модулей? (на 90% уверен, что у всех стоит 5) =)
к примеру, код одного модуля должен выполняться позже другого, но порядок не выставлен корректно (или вообще оставлен по дефолту)
поэтому и говорю, что в одном продукте, на однин хук лучше вешать один модуль (разделять комментами или еще как...)
Об этом я не заморачивался, а порядок выполнения у них один и тот же потому что в целом каждый из них выполняет свою отдельную функцию. Если пост анализируется на содержание тега самого теста или ответа юзера, то все равно должно быть выполнено и одно и другое (пока), я не заморачивался с логическим анализом для поднятия собственных флагов и т.д. Поэтому заморачиваться о порядке исполнения хуков небыло смысла. Пока в нем есть еще более важные вещи касающиеся функционала, которые нужно доделывать, так что приоритет меня волнует меньше всего... Вот...

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

Кстати, может ты в курсе, насчет вот этого трабла "1. При прохождении теста пользователем, не отображаются правильные/неправильные ответы, видимо из-за кеширования но их можно посмотреть в "Опции темы -> версия для печати"" - решается пререстроением кеша сообщений, но как сделать чтоб кеш небыло необходимости перестраивать? Т.е. смысл в том, что пользователь отвечает на тест, и создается сообщение с закрытым тегом, который скрывает текст ответов от пользователя, но потом учителя его тоже не видят, до тех пор, пока не перестроишь кеш, в то же время в версии для печати видят нормально все как положено.

Последний раз редактировалось Evp; 26.04.2011 в 10:16..
  Ответить с цитированием
Старый 02.05.2011, 04:17   #6
kerk
k0t
 
Аватар для kerk
сообщения кэшируются опять же для производительности, что бы каждый раз не парсить ббкоды
а на странице "для печати" выводится из БД ас из, потому как менее нагруженная страница
  Ответить с цитированием
Ответ

Закладки

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



 
 

Текущее время: 01:39 26.05.2012. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.0.5
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot