Настоящата статия решава въпроса с интеграцията в старите версии Moodle 1.5.3 на заложените в новите версии на модула quiz (Moodle 1.5.6) нови и различни типове тестови въпроси!
Разработване на нови типове въпроси за модулът тест на олд-таймери-те (Moodle 1.5.3 и др.) Често наблюдаваме ситуация при която учебно заведение използва интензивно и от години версията на Moodle 1.5.3, а сами знаете колко трудно нещо е миграцията например към 1.5.4 или дори 1.5.6 затова тук давам един пример как въведените в новите версии на модула quiz типове тестови въпроси се интегрират в олд-таймера 1.5.3
Всички знаем, че в последния не съществува типът въпрос "Есе" . Изхождайки от тази презумция, че в базата данни на учебното заведение са вече въведени доста резултати от учебната дейност на студентите държащи тестове, и че не е безопасна миграция само заради добавянето на нови типове тестови задачи ...
Приложен е архив! Важно е да бъде разгледан
1. mod/quiz/editlib.php :
$QUIZ_QUESTION_TYPE = array ( MULTICHOICE => get_string("multichoice", "quiz"),
TRUEFALSE => get_string("truefalse", "quiz"),
SHORTANSWER => get_string("shortanswer", "quiz"),
NUMERICAL => get_string("numerical", "quiz"),
CALCULATED => get_string("calculated", "quiz"),
MATCH => get_string("match", "quiz"),
DESCRIPTION => get_string("description", "quiz"),
RANDOMSAMATCH => get_string("randomsamatch", "quiz"),
MULTIANSWER => get_string("multianswer", "quiz"), // <-- запетайката
ESSAY => get_string("essay", "quiz") // <-- добавя се
);
2. mod/quiz/locallib.php добавя се
define("ESSAY", "12");
3. mod/quiz/questiontypes/random/questiontype.php :
var $excludedtypes = array(RANDOM, RANDOMSAMATCH);
Заменя се горното с:
var $excludedtypes = array(RANDOM, RANDOMSAMATCH, ESSAY);
4. mod/quiz/lib.php
На ред 344 се добавя...
delete_records("quiz_essay", "question", $question->id);
5. edit mod/quiz/tabs.php :
$row[] = new tabobject('info', "view.php?q=$quiz->id", get_string('info', 'quiz'));
$row[] = new tabobject('reports', "report.php?q=$quiz->id", get_string('reports', 'quiz'));
$row[] = new tabobject('preview', "attempt.php?q=$quiz->id", get_string('preview', 'quiz'));
if (isteacheredit($course->id)) {
$row[] = new tabobject('edit', "edit.php?quizid=$quiz->id", get_string('editquiz', 'quiz'));
//$row[] = new tabobject('update', "$CFG->wwwroot/course/mod.php?update=$cm->id&sesskey=$USER->sesskey", get_string('updatethis', '', get_string('modulename', 'quiz')));
}
Към горната секция се добавя :
$row[] = new tabobject('manualregrade', "regrade.php?quizid=$quiz->id", get_string("gradeessays", "quiz"));
Ето така да стане:
$row[] = new tabobject('info', "view.php?q=$quiz->id", get_string('info', 'quiz'));
$row[] = new tabobject('reports', "report.php?q=$quiz->id", get_string('reports', 'quiz'));
$row[] = new tabobject('preview', "attempt.php?q=$quiz->id", get_string('preview', 'quiz'));
if (isteacheredit($course->id)) {
$row[] = new tabobject('edit', "edit.php?quizid=$quiz->id", get_string('editquiz', 'quiz'));
$row[] = new tabobject('manualregrade', "regrade.php?quizid=$quiz->id", get_string("gradeessays", "quiz")); // <-- Ето тук се добавя
//$row[] = new tabobject('update', "$CFG->wwwroot/course/mod.php?update=$cm->id&sesskey=$USER->sesskey", get_string('updatethis', '', get_string('modulename', 'quiz')));
}
ЗА MYSQL СЪРВЪР
CREATE TABLE `mdl_quiz_essay` (
`id` int(10) unsigned NOT NULL auto_increment,
`question` int(10) unsigned NOT NULL default '0',
`answer` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `question` (`question`)
) TYPE=MyISAM COMMENT='Options for essay questions';
CREATE TABLE `mdl_quiz_essay_states` (
`id` int(10) unsigned NOT NULL auto_increment,
`stateid` int(10) unsigned NOT NULL default '0',
`graded` tinyint(4) unsigned NOT NULL default '0',
`fraction` varchar(10) NOT NULL default '0.0',
`response` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='essay question type specific state information';