/** * Generate the display of the outcome part of the question. This is the * area that contains the various forms of feedback. * * @param question_attempt $qa the question attempt to display. * @param qbehaviour_renderer $behaviouroutput the renderer to output the behaviour * specific parts. * @param qtype_renderer $qtoutput the renderer to output the question type * specific parts. * @param question_display_options $options controls what should and should not be displayed. * @return HTML fragment. */ protected function outcome(question_attempt $qa, qbehaviour_renderer $behaviouroutput, qtype_renderer $qtoutput, question_display_options $options) { $output = ''; $output .= html_writer::nonempty_tag('div', $qtoutput->feedback($qa, $options), array('class' => 'feedback')); $output .= html_writer::nonempty_tag('div', $behaviouroutput->feedback($qa, $options), array('class' => 'im-feedback')); return $output; }
public function feedback(question_attempt $qa, question_display_options $options) { $output = ''; if ($options->feedback) { $output .= $this->stack_specific_feedback($qa, $options); } else { if ($qa->get_behaviour_name() == 'interactivecountback') { // The behaviour name test here is a hack. The trouble is that interactive // behaviour does not show feedback if the input is invalid, but we want // to show the CAS errors from the PRT. $output .= $this->stack_specific_feedback_errors_only($qa); } } $output .= parent::feedback($qa, $options); return $output; }