Skip to content

Commit

Permalink
MDL-76849 qtype_multichoice: Include question number in answer fields
Browse files Browse the repository at this point in the history
* Improve accessibility as well by grouping the radio buttons/checkboxes
in a fieldset.
  • Loading branch information
junpataleta committed Mar 9, 2023
1 parent 2a5c62a commit fd13110
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
12 changes: 9 additions & 3 deletions question/type/multichoice/renderer.php
Expand Up @@ -149,10 +149,16 @@ public function formulation_and_controls(question_attempt $qa,
$result .= html_writer::tag('div', $question->format_questiontext($qa),
array('class' => 'qtext'));

$result .= html_writer::start_tag('div', array('class' => 'ablock no-overflow visual-scroll-x'));
$questionnumber = $options->add_question_identifier_to_label($this->prompt(), true, true);
$result .= html_writer::start_tag('fieldset', array('class' => 'ablock no-overflow visual-scroll-x'));
$legendclass = 'sr-only';
if ($question->showstandardinstruction == 1) {
$result .= html_writer::tag('div', $this->prompt(), array('class' => 'prompt'));
$legendclass = '';
}
$legendattrs = [
'class' => 'prompt h6 font-weight-normal ' . $legendclass,
];
$result .= html_writer::tag('legend', $questionnumber, $legendattrs);

$result .= html_writer::start_tag('div', array('class' => 'answer'));
foreach ($radiobuttons as $key => $radio) {
Expand All @@ -166,7 +172,7 @@ public function formulation_and_controls(question_attempt $qa,
[$qa->get_outer_question_div_unique_id()]);
$result .= $this->after_choices($qa, $options);

$result .= html_writer::end_tag('div'); // Ablock.
$result .= html_writer::end_tag('fieldset'); // Ablock.

if ($qa->get_state() == question_state::$invalid) {
$result .= html_writer::nonempty_tag('div',
Expand Down
6 changes: 4 additions & 2 deletions question/type/multichoice/tests/walkthrough_test.php
Expand Up @@ -302,8 +302,10 @@ public function test_deferredfeedback_feedback_multichoice_multi_showstandarduns
$this->render();

// Check for 'Show standard instruction'.
$standardinstruction = get_string('selectmulti', 'qtype_multichoice');
$this->assertStringNotContainsString($standardinstruction, $this->currentoutput);
$standardinstruction = \html_writer::tag('legend', get_string('selectmulti', 'qtype_multichoice'), [
'class' => 'prompt h6 font-weight-normal sr-only'
]);
$this->assertStringContainsString($standardinstruction, $this->currentoutput);
}

}

0 comments on commit fd13110

Please sign in to comment.