Skip to content

Commit

Permalink
MDL-31306 question preview: disable 'Fill correct' for qtypes that can't
Browse files Browse the repository at this point in the history
  • Loading branch information
mkassaei authored and Sam Hemelryk committed Jan 24, 2012
1 parent 1bc4742 commit da22c01
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 5 deletions.
8 changes: 6 additions & 2 deletions question/engine/questionattempt.php
Original file line number Diff line number Diff line change
Expand Up @@ -987,11 +987,15 @@ public function get_submitted_data($postdata = null) {

/**
* Get a set of response data for this question attempt that would get the
* best possible mark.
* @return array name => value pairs that could be passed to {@link process_action()}.
* best possible mark. If it is not possible to compute a correct
* response, this method should return null.
* @return array|null name => value pairs that could be passed to {@link process_action()}.
*/
public function get_correct_response() {
$response = $this->question->get_correct_response();
if (is_null($response)) {
return null;
}
$imvars = $this->behaviour->get_correct_response();
foreach ($imvars as $name => $value) {
$response['-' . $name] = $value;
Expand Down
1 change: 1 addition & 0 deletions question/engine/questionusage.php
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,7 @@ public function update_question_flags($postdata = null) {
/**
* Get the correct response to a particular question. Passing the results of
* this method to {@link process_action()} will probably result in full marks.
* If it is not possible to compute a correct response, this method should return null.
* @param int $slot the number used to identify this question within this usage.
* @return array that constitutes a correct response to this question.
*/
Expand Down
4 changes: 3 additions & 1 deletion question/preview.php
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,9 @@
if ($quba->get_question_state($slot)->is_finished()) {
$finishdisabled = ' disabled="disabled"';
$filldisabled = ' disabled="disabled"';
} else if (is_null($quba->get_correct_response($slot))) {
}
// If question type cannot give us a correct response, disable this button.
if (is_null($quba->get_correct_response($slot))) {
$filldisabled = ' disabled="disabled"';
}
if (!$previewid) {
Expand Down
5 changes: 3 additions & 2 deletions question/type/questionbase.php
Original file line number Diff line number Diff line change
Expand Up @@ -262,9 +262,10 @@ public abstract function get_expected_data();
/**
* What data would need to be submitted to get this question correct.
* If there is more than one correct answer, this method should just
* return one possibility.
* return one possibility. If it is not possible to compute a correct
* response, this method should return null.
*
* @return array parameter name => value.
* @return array|null parameter name => value.
*/
public abstract function get_correct_response();

Expand Down

0 comments on commit da22c01

Please sign in to comment.