/** * 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)); }