function qformat_xhtml::writequestion in Quiz 6.5
Same name and namespace in other branches
- 6.6 includes/moodle/question/format/xhtml/format.php \qformat_xhtml::writequestion()
convert a single question object into text output in the given format. This must be overriden
Parameters
object question question object:
Return value
mixed question export text or null if not implemented
Overrides qformat_default::writequestion
File
- includes/
moodle/ question/ format/ xhtml/ format.php, line 21
Class
- qformat_xhtml
- @package questionbank @subpackage importexport
Code
function writequestion($question) {
// turns question into string
// question reflects database fields for general question and specific to type
// if a category switch, just ignore
if ($question->qtype == 'category') {
return '';
}
// initial string;
$expout = "";
$id = $question->id;
// add comment and div tags
$expout .= "<!-- question: {$id} name: {$question->name} -->\n";
$expout .= "<div class=\"question\">\n";
// add header
$expout .= "<h3>{$question->name}</h3>\n";
// format and add question text
$questiontext = $question->questiontext;
$format = $question->questiontextformat;
$formatted_text = format_text($questiontext, $format);
$expout .= "<p class=\"questiontext\">{$formatted_text}</p>\n";
// selection depends on question type
switch ($question->qtype) {
case TRUEFALSE:
$st_true = get_string('true', 'quiz');
$st_false = get_string('false', 'quiz');
$expout .= "<ul class=\"truefalse\">\n";
$expout .= " <li><input name=\"quest_{$id}\" type=\"radio\" value=\"{$st_true}\" />{$st_true}</li>\n";
$expout .= " <li><input name=\"quest_{$id}\" type=\"radio\" value=\"{$st_false}\" />{$st_false}</li>\n";
$expout .= "</ul>\n";
break;
case MULTICHOICE:
$expout .= "<ul class=\"multichoice\">\n";
foreach ($question->options->answers as $answer) {
$ans_text = $this
->repchar($answer->answer);
if ($question->options->single) {
$expout .= " <li><input name=\"quest_{$id}\" type=\"radio\" value=\"{$ans_text}\" />{$ans_text}</li>\n";
}
else {
$expout .= " <li><input name=\"quest_{$id}\" type=\"checkbox\" value=\"{$ans_text}\" />{$ans_text}</li>\n";
}
}
$expout .= "</ul>\n";
break;
case SHORTANSWER:
$expout .= "<ul class=\"shortanswer\">\n";
$expout .= " <li><input name=\"quest_{$id}\" type=\"text\" /></li>\n";
$expout .= "</ul>\n";
break;
case NUMERICAL:
$expout .= "<ul class=\"numerical\">\n";
$expout .= " <li><input name=\"quest_{$id}\" type=\"text\" /></li>\n";
$expout .= "</ul>\n";
break;
case MATCH:
$expout .= "<ul class=\"match\">\n";
// build answer list
$ans_list = array();
foreach ($question->options->subquestions as $subquestion) {
$ans_list[] = $this
->repchar($subquestion->answertext);
}
shuffle($ans_list);
// random display order
// build drop down for answers
$dropdown = "<select name=\"quest_{$id}\">\n";
foreach ($ans_list as $ans) {
$dropdown .= "<option value=\"{$ans}\">{$ans}</option>\n";
}
$dropdown .= "</select>\n";
// finally display
foreach ($question->options->subquestions as $subquestion) {
$quest_text = $this
->repchar($subquestion->questiontext);
$expout .= " <li>{$quest_text}</li>\n";
$expout .= $dropdown;
}
$expout .= "</ul>\n";
break;
case DESCRIPTION:
break;
case MULTIANSWER:
$expout .= "<!-- CLOZE type is not supported -->\n";
break;
default:
notify("No handler for qtype {$question->qtype} for GIFT export");
}
// close off div
$expout .= "</div>\n\n\n";
return $expout;
}