mirror of
https://github.com/moodle/moodle.git
synced 2025-02-21 18:08:02 +01:00
152 lines
4.7 KiB
PHP
Executable File
152 lines
4.7 KiB
PHP
Executable File
<?php
|
|
// Based on default.php, included by ../import.php
|
|
/**
|
|
* @package questionbank
|
|
* @subpackage importexport
|
|
*/
|
|
class qformat_xhtml extends qformat_default {
|
|
|
|
function provide_export() {
|
|
return true;
|
|
}
|
|
|
|
function repchar($text) {
|
|
return $text;
|
|
}
|
|
|
|
function writequestion($question) {
|
|
global $OUTPUT;
|
|
// 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=\"" . s($ans_text) . "\" />$ans_text</li>\n";
|
|
}
|
|
else {
|
|
$expout .= " <li><input name=\"quest_$id\" type=\"checkbox\" value=\"" . s($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=\"" . s($ans) . "\">" . s($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:
|
|
echo $OUTPUT->notification("No handler for qtype $question->qtype for GIFT export" );
|
|
}
|
|
// close off div
|
|
$expout .= "</div>\n\n\n";
|
|
return $expout;
|
|
}
|
|
|
|
|
|
function presave_process( $content ) {
|
|
// override method to allow us to add xhtml headers and footers
|
|
|
|
global $CFG;
|
|
|
|
// get css bit
|
|
$css_lines = file( "$CFG->dirroot/question/format/xhtml/xhtml.css" );
|
|
$css = implode( ' ',$css_lines );
|
|
|
|
$xp = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n";
|
|
$xp .= " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
|
|
$xp .= "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
|
|
$xp .= "<head>\n";
|
|
$xp .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n";
|
|
$xp .= "<title>Moodle Quiz XHTML Export</title>\n";
|
|
$xp .= $css;
|
|
$xp .= "</head>\n";
|
|
$xp .= "<body>\n";
|
|
$xp .= "<form action=\"...REPLACE ME...\" method=\"post\">\n\n";
|
|
$xp .= $content;
|
|
$xp .= "<p class=\"submit\">\n";
|
|
$xp .= " <input type=\"submit\" />\n";
|
|
$xp .= "</p>\n";
|
|
$xp .= "</form>\n";
|
|
$xp .= "</body>\n";
|
|
$xp .= "</html>\n";
|
|
|
|
return $xp;
|
|
}
|
|
|
|
function export_file_extension() {
|
|
return ".html";
|
|
}
|
|
|
|
}
|
|
|