/** * Generate the display of the formulation part of the question. This is the * area that contains the quetsion text, and the controls for students to * input their answers. Some question types also embed feedback, for * example ticks and crosses, in this area. * * @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 formulation(question_attempt $qa, qbehaviour_renderer $behaviouroutput, qtype_renderer $qtoutput, question_display_options $options) { $output = ''; $output .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => $qa->get_control_field_name('sequencecheck'), 'value' => $qa->get_sequence_check_count())); $output .= $qtoutput->formulation_and_controls($qa, $options); if ($options->clearwrong) { $output .= $qtoutput->clear_wrong($qa); } $output .= html_writer::nonempty_tag('div', $behaviouroutput->controls($qa, $options), array('class' => 'im-controls')); return $output; }