mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
qtype match: MDL-16450 Change validation so it is possible to create matching questions with two stems and three answers.
Thanks to Oleg Sychev for implementing this.
This commit is contained in:
parent
75b647eb53
commit
6cfa5ec17d
2 changed files with 20 additions and 13 deletions
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
$string['addmoreqblanks'] = '{no} More Sets of Blanks';
|
$string['addmoreqblanks'] = '{no} More Sets of Blanks';
|
||||||
$string['notenoughquestions'] = 'You must supply at least $a question and answer pairs.';
|
$string['filloutthreeqsandtwoas'] = 'You must provide at least two questions and three answers. You can provide extra wrong answers by giving an answer with a blank question. Entries where both the question and the answer are blank will be ignored.';
|
||||||
$string['nomatchinganswerforq'] = 'You must specify an answer for this question.';
|
$string['nomatchinganswerforq'] = 'You must specify an answer for this question.';
|
||||||
|
$string['notenoughquestions'] = 'You must supply at least $a question and answer pairs.';
|
||||||
|
$string['notenoughqsandas'] = 'You must supply at least $a->q questions and $a->a answers.';
|
||||||
?>
|
?>
|
|
@ -23,7 +23,7 @@ class question_edit_match_form extends question_edit_form {
|
||||||
$mform->setHelpButton('shuffleanswers', array('matchshuffle', get_string('shuffle','quiz'), 'quiz'));
|
$mform->setHelpButton('shuffleanswers', array('matchshuffle', get_string('shuffle','quiz'), 'quiz'));
|
||||||
$mform->setDefault('shuffleanswers', 1);
|
$mform->setDefault('shuffleanswers', 1);
|
||||||
|
|
||||||
$mform->addElement('static', 'answersinstruct', get_string('choices', 'quiz'), get_string('filloutthreequestions', 'quiz'));
|
$mform->addElement('static', 'answersinstruct', get_string('choices', 'quiz'), get_string('filloutthreeqsandtwoas', 'qtype_match'));
|
||||||
$mform->closeHeaderBefore('answersinstruct');
|
$mform->closeHeaderBefore('answersinstruct');
|
||||||
|
|
||||||
$repeated = array();
|
$repeated = array();
|
||||||
|
@ -75,26 +75,31 @@ class question_edit_match_form extends question_edit_form {
|
||||||
$answers = $data['subanswers'];
|
$answers = $data['subanswers'];
|
||||||
$questions = $data['subquestions'];
|
$questions = $data['subquestions'];
|
||||||
$questioncount = 0;
|
$questioncount = 0;
|
||||||
|
$answercount = 0;
|
||||||
foreach ($questions as $key => $question){
|
foreach ($questions as $key => $question){
|
||||||
$trimmedquestion = trim($question);
|
$trimmedquestion = trim($question);
|
||||||
$trimmedanswer = trim($answers[$key]);
|
$trimmedanswer = trim($answers[$key]);
|
||||||
if ($trimmedanswer != '' && $trimmedquestion != ''){
|
if ($trimmedquestion != ''){
|
||||||
$questioncount++;
|
$questioncount++;
|
||||||
}
|
}
|
||||||
|
if ($trimmedanswer != '' || $trimmedquestion != ''){
|
||||||
|
$answercount++;
|
||||||
|
}
|
||||||
if ($trimmedquestion != '' && $trimmedanswer == ''){
|
if ($trimmedquestion != '' && $trimmedanswer == ''){
|
||||||
$errors['subanswers['.$key.']'] = get_string('nomatchinganswerforq', 'qtype_match', $trimmedquestion);
|
$errors['subanswers['.$key.']'] = get_string('nomatchinganswerforq', 'qtype_match', $trimmedquestion);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($questioncount==0){
|
$numberqanda = new stdClass;
|
||||||
$errors['subquestions[0]'] = get_string('notenoughquestions', 'qtype_match', 3);
|
$numberqanda->q = 2;
|
||||||
$errors['subquestions[1]'] = get_string('notenoughquestions', 'qtype_match', 3);
|
$numberqanda->a = 3;
|
||||||
$errors['subquestions[2]'] = get_string('notenoughquestions', 'qtype_match', 3);
|
if ($questioncount < 1){
|
||||||
} elseif ($questioncount==1){
|
$errors['subquestions[0]'] = get_string('notenoughqsandas', 'qtype_match', $numberqanda);
|
||||||
$errors['subquestions[1]'] = get_string('notenoughquestions', 'qtype_match', 3);
|
}
|
||||||
$errors['subquestions[2]'] = get_string('notenoughquestions', 'qtype_match', 3);
|
if ($questioncount < 2){
|
||||||
|
$errors['subquestions[1]'] = get_string('notenoughqsandas', 'qtype_match', $numberqanda);
|
||||||
} elseif ($questioncount==2){
|
}
|
||||||
$errors['subquestions[2]'] = get_string('notenoughquestions', 'qtype_match', 3);
|
if ($answercount < 3){
|
||||||
|
$errors['subanswers[2]'] = get_string('notenoughqsandas', 'qtype_match', $numberqanda);
|
||||||
}
|
}
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue