Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MDL-27964 lesson - Quick fix added for importing question files in le…

…sson module
  • Loading branch information...
commit 27beb68c4b03c76e5af2e98092ca427fe995be72 1 parent 8254083
Rajesh Taneja authored
Showing with 63 additions and 21 deletions.
  1. +62 −12 mod/lesson/format.php
  2. +1 −9 mod/lesson/import_form.php
View
74 mod/lesson/format.php
@@ -76,7 +76,8 @@ function lesson_save_question_options($question, $lesson) {
$answer->timecreated = $timenow;
$answer->grade = $question->fraction[$key] * 100;
$answer->answer = $dataanswer;
- $answer->response = $question->feedback[$key];
+ $answer->response = $question->feedback[$key]['text'];
+ $answer->responseformat = $question->feedback[$key]['format'];
$answer->id = $DB->insert_record("lesson_answers", $answer);
$answers[] = $answer->id;
if ($question->fraction[$key] > $maxfraction) {
@@ -113,7 +114,8 @@ function lesson_save_question_options($question, $lesson) {
$max = $question->answer[$key] + $question->tolerance[$key];
$answer->answer = $min.":".$max;
// $answer->answer = $question->min[$key].":".$question->max[$key]; original line for min/max
- $answer->response = $question->feedback[$key];
+ $answer->response = $question->feedback[$key]['text'];
+ $answer->responseformat = $question->feedback[$key]['format'];
$answer->id = $DB->insert_record("lesson_answers", $answer);
$answers[] = $answer->id;
@@ -139,12 +141,13 @@ function lesson_save_question_options($question, $lesson) {
$answer->pageid = $question->id;
$answer->timecreated = $timenow;
$answer->answer = get_string("true", "quiz");
- $answer->grade = $question->answer * 100;
+ $answer->grade = $question->correctanswer * 100;
if ($answer->grade > 50 ) {
$answer->jumpto = LESSON_NEXTPAGE;
}
if (isset($question->feedbacktrue)) {
- $answer->response = $question->feedbacktrue;
+ $answer->response = $question->feedbacktrue['text'];
+ $answer->responseformat = $question->feedbacktrue['format'];
}
$DB->insert_record("lesson_answers", $answer);
@@ -154,12 +157,13 @@ function lesson_save_question_options($question, $lesson) {
$answer->pageid = $question->id;
$answer->timecreated = $timenow;
$answer->answer = get_string("false", "quiz");
- $answer->grade = (1 - (int)$question->answer) * 100;
+ $answer->grade = (1 - (int)$question->correctanswer) * 100;
if ($answer->grade > 50 ) {
$answer->jumpto = LESSON_NEXTPAGE;
}
if (isset($question->feedbackfalse)) {
- $answer->response = $question->feedbackfalse;
+ $answer->response = $question->feedbackfalse['text'];
+ $answer->responseformat = $question->feedbackfalse['format'];
}
$DB->insert_record("lesson_answers", $answer);
@@ -191,8 +195,10 @@ function lesson_save_question_options($question, $lesson) {
$answer->score = 1;
}
// end Replace
- $answer->answer = $dataanswer;
- $answer->response = $question->feedback[$key];
+ $answer->answer = $dataanswer['text'];
+ $answer->answerformat = $dataanswer['format'];
+ $answer->response = $question->feedback[$key]['text'];
+ $answer->responseformat = $question->feedback[$key]['format'];
$answer->id = $DB->insert_record("lesson_answers", $answer);
// for Sanity checks
if ($question->fraction[$key] > 0) {
@@ -247,7 +253,8 @@ function lesson_save_question_options($question, $lesson) {
$answertext = $question->subanswers[$key];
if (!empty($questiontext) and !empty($answertext)) {
$answer = clone($defaultanswer);
- $answer->answer = $questiontext;
+ $answer->answer = $questiontext['text'];
+ $answer->answerformat = $questiontext['format'];
$answer->response = $answertext;
if ($i == 0) {
// first answer contains the correct answer jump
@@ -309,7 +316,9 @@ function importprocess($filename, $lesson, $pageid) {
return false;
}
- echo $OUTPUT->notification(get_string('importcount', 'lesson', sizeof($questions)));
+ //Avoid category as question type
+ echo $OUTPUT->notification(get_string('importcount', 'lesson',
+ $this->count_questions($questions)), 'notifysuccess');
$count = 0;
@@ -317,6 +326,9 @@ function importprocess($filename, $lesson, $pageid) {
foreach ($questions as $question) { // Process and store each question
switch ($question->qtype) {
+ //TODO: Bad way to bypass category in data... Quickfix for MDL-27964
+ case 'category':
+ break;
// the good ones
case SHORTANSWER :
case NUMERICAL :
@@ -325,7 +337,9 @@ function importprocess($filename, $lesson, $pageid) {
case MATCH :
$count++;
- echo "<hr><p><b>$count</b>. ".$question->questiontext."</p>";
+ //Show nice formated question in one line.
+ echo "<hr><p><b>$count</b>. ".$this->format_question_text($question)."</p>";
+
$newpage = new stdClass;
$newpage->lessonid = $lesson->id;
$newpage->qtype = $this->qtypeconvert[$question->qtype];
@@ -415,6 +429,27 @@ function importprocess($filename, $lesson, $pageid) {
return true;
}
+ /**
+ * Count all non-category questions in the questions array.
+ *
+ * @param array questions An array of question objects.
+ * @return int The count.
+ *
+ */
+ protected function count_questions($questions) {
+ $count = 0;
+ if (!is_array($questions)) {
+ return $count;
+ }
+ foreach ($questions as $question) {
+ if (!is_object($question) || !isset($question->qtype) ||
+ ($question->qtype == 'category')) {
+ continue;
+ }
+ $count++;
+ }
+ return $count;
+ }
function readdata($filename) {
/// Returns complete file with an array, one item per line
@@ -484,7 +519,7 @@ function defaultquestion() {
$question = new stdClass();
$question->shuffleanswers = get_config('quiz', 'shuffleanswers');
- $question->defaultgrade = 1;
+ $question->defaultmark = 1;
$question->image = "";
$question->usecase = 0;
$question->multiplier = array();
@@ -498,6 +533,11 @@ function defaultquestion() {
$question->qoption = 0;
$question->layout = 1;
+ // this option in case the questiontypes class wants
+ // to know where the data came from
+ $question->export_process = true;
+ $question->import_process = true;
+
return $question;
}
@@ -508,6 +548,16 @@ function importpostprocess() {
return true;
}
+ /**
+ * Convert the question text to plain text, so it can safely be displayed
+ * during import to let the user see roughly what is going on.
+ */
+ protected function format_question_text($question) {
+ $formatoptions = new stdClass();
+ $formatoptions->noclean = true;
+ return html_to_text(format_text($question->questiontext,
+ $question->questiontextformat, $formatoptions), 0, false);
+ }
}
View
10 mod/lesson/import_form.php
@@ -32,8 +32,8 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class lesson_import_form extends moodleform {
+
public function definition() {
- global $COURSE;
$mform = $this->_form;
@@ -85,14 +85,6 @@ protected function validate_uploaded_file($data, $errors) {
$classname = 'qformat_' . $data['format'];
$qformat = new $classname();
- $file = reset($files);
- if ($file->get_mimetype() != $qformat->mime_type()) {
- $a = new stdClass();
- $a->actualtype = $file->get_mimetype();
- $a->expectedtype = $qformat->mime_type();
- $errors['newfile'] = get_string('importwrongfiletype', 'lesson', $a);
- }
-
return $errors;
}
Please sign in to comment.
Something went wrong with that request. Please try again.