コード例 #1
0
 /**
  * Actually generate the display of the PRT feedback.
  * @param string $name the PRT name.
  * @param question_attempt $qa the question attempt to display.
  * @param question_definition $question the question being displayed.
  * @param stack_potentialresponse_tree_state $result the results to display.
  * @param question_display_options $options controls what should and should not be displayed.
  * @return string nicely formatted feedback, for display.
  */
 protected function prt_feedback_display($name, question_attempt $qa, question_definition $question, stack_potentialresponse_tree_state $result, question_display_options $options, $includestandardfeedback)
 {
     $err = '';
     if ($result->errors) {
         $err = $result->errors;
     }
     $feedback = '';
     $feedbackbits = $result->get_feedback();
     if ($feedbackbits) {
         $feedback = array();
         $format = null;
         foreach ($feedbackbits as $bit) {
             $feedback[] = $qa->rewrite_pluginfile_urls($bit->feedback, 'qtype_stack', $bit->filearea, $bit->itemid);
             if (!is_null($bit->format)) {
                 if (is_null($format)) {
                     $format = $bit->format;
                 }
                 if ($bit->format != $format) {
                     throw new coding_exception('Inconsistent feedback formats found in PRT ' . $name);
                 }
             }
         }
         if (is_null($format)) {
             $format = FORMAT_HTML;
         }
         $feedback = $result->substitue_variables_in_feedback(implode(' ', $feedback));
         $feedback = format_text(stack_maths::process_display_castext($feedback, $this), $format, array('noclean' => true, 'para' => false));
     }
     $gradingdetails = '';
     if (!$result->errors && $qa->get_behaviour_name() == 'adaptivemultipart') {
         // This is rather a hack, but it will probably work.
         $renderer = $this->page->get_renderer('qbehaviour_adaptivemultipart');
         $gradingdetails = $renderer->render_adaptive_marks($qa->get_behaviour()->get_part_mark_details($name), $options);
     }
     if ($includestandardfeedback) {
         $standardfeedback = $this->standard_prt_feedback($qa, $question, $result);
     } else {
         $standardfeedback = '';
     }
     return html_writer::nonempty_tag('div', $standardfeedback . $err . $feedback . $gradingdetails, array('class' => 'stackprtfeedback stackprtfeedback-' . $name));
 }