Разработване на нови типове въпроси за модулът тест за олд-таймери

Разработване на нови типове въпроси за модулът тест за олд-таймери

от Daniel Denev -
Number of replies: 0

Настоящата статия решава въпроса с интеграцията в старите версии 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&amp;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&amp;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';