From: pichetp Date: Sun, 18 May 2008 17:22:41 +0000 (+0000) Subject: MDL-14054 Display of correct answers in the popup window already use for feedback X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=907a375942080cbdd9cb824a75a7350d0978e904;p=moodle.git MDL-14054 Display of correct answers in the popup window already use for feedback --- diff --git a/question/type/multianswer/questiontype.php b/question/type/multianswer/questiontype.php index c3714a3347..649468536c 100644 --- a/question/type/multianswer/questiontype.php +++ b/question/type/multianswer/questiontype.php @@ -267,7 +267,7 @@ class embedded_cloze_qtype extends default_questiontype { if (isset($question->options->questions[$positionkey]) && $question->options->questions[$positionkey] != ''){ $wrapped = &$question->options->questions[$positionkey]; $answers = &$wrapped->options->answers; - $correctanswers = $QTYPES[$wrapped->qtype]->get_correct_responses($wrapped, $state); + // $correctanswers = $QTYPES[$wrapped->qtype]->get_correct_responses($wrapped, $state); $inputname = $nameprefix.$positionkey; if (isset($state->responses[$positionkey])) { @@ -280,6 +280,38 @@ class embedded_cloze_qtype extends default_questiontype { $popup = ''; $style = ''; $feedbackimg = ''; + $feedback = '' ; + $correctanswer = ''; + $strfeedbackwrapped = $strfeedback; + // if($wrapped->qtype == 'numerical' ||$wrapped->qtype == 'shortanswer'){ + $testedstate = clone($state); + if ($correctanswers = $QTYPES[$wrapped->qtype]->get_correct_responses($wrapped, $testedstate)) { + if ($options->readonly && $options->correct_responses) { + $delimiter = ''; + if ($correctanswers) { + foreach ($correctanswers as $ca) { + switch($wrapped->qtype){ + case 'numerical': + case 'shortanswer': + $correctanswer .= $delimiter.$ca; + break ; + case 'multichoice': + if (isset($answers[$ca])){ + $correctanswer .= $delimiter.$answers[$ca]->answer; + } + break ; + } + $delimiter = ', '; + } + } + } + if ($correctanswer) { + $feedback = '
'; + $feedback .= get_string('correctansweris', 'quiz', s($correctanswer, true)); + $feedback .= '
'; + // $strfeedbackwrapped = get_string('correctanswer and', 'quiz').get_string('feedback', 'quiz'); + } + } if ($options->feedback) { $chosenanswer = null; switch ($wrapped->qtype) { @@ -312,8 +344,13 @@ class embedded_cloze_qtype extends default_questiontype { } if (!empty($chosenanswer->feedback)) { - $feedback = s(str_replace(array("\\", "'"), array("\\\\", "\\'"), $chosenanswer->feedback)); - $popup = " onmouseover=\"return overlib('$feedback', STICKY, MOUSEOFF, CAPTION, '$strfeedback', FGCOLOR, '#FFFFFF');\" ". + $feedback = s(str_replace(array("\\", "'"), array("\\\\", "\\'"), $feedback.$chosenanswer->feedback)); + if ($options->readonly && $options->correct_responses) { + $strfeedbackwrapped = get_string('correctanswerandfeedback', 'qtype_multianswer'); + }else { + $strfeedbackwrapped = get_string('feedback', 'quiz'); + } + $popup = " onmouseover=\"return overlib('$feedback', STICKY, MOUSEOFF, CAPTION, '$strfeedbackwrapped', FGCOLOR, '#FFFFFF');\" ". " onmouseout=\"return nd();\" "; } @@ -326,6 +363,12 @@ class embedded_cloze_qtype extends default_questiontype { $feedbackimg = ''; } } + if ($feedback !='' && $popup == ''){ + $strfeedbackwrapped = get_string('correctanswer', 'qtype_multianswer'); + $feedback = s(str_replace(array("\\", "'"), array("\\\\", "\\'"), $feedback)); + $popup = " onmouseover=\"return overlib('$feedback', STICKY, MOUSEOFF, CAPTION, '$strfeedbackwrapped', FGCOLOR, '#FFFFFF');\" ". + " onmouseout=\"return nd();\" "; + } // Print the input control switch ($wrapped->qtype) {