diff --git a/question/type/ddimageortext/lang/en/qtype_ddimagetoimage.php b/question/type/ddimageortext/lang/en/qtype_ddimagetoimage.php
index e065751d67b..75ef985e90e 100644
--- a/question/type/ddimageortext/lang/en/qtype_ddimagetoimage.php
+++ b/question/type/ddimageortext/lang/en/qtype_ddimagetoimage.php
@@ -53,5 +53,9 @@ $string['previewarea'] = 'Preview area -';
$string['previewareaheader'] = 'Preview';
$string['previewareamessage'] = '
- Select a background image file.
- Select draggable images.
- And define drop zones by selecting an image that the student must drag to the drop zone and drag it to where the student should drag it too.
';
$string['shuffleimages'] = 'Shuffle Draggable Images';
+$string['summarisechoice'] = '{$a->no}. {$a->text}';
+$string['summariseplace'] = '{$a->no}. {$a->text}';
+$string['summarisechoiceno'] = 'Image {$a}';
+$string['summariseplaceno'] = 'Drop zone {$a}';
$string['xleft'] = 'Left';
$string['ytop'] = 'Top';
\ No newline at end of file
diff --git a/question/type/ddimageortext/question.php b/question/type/ddimageortext/question.php
index 42439880685..45a308a0233 100755
--- a/question/type/ddimageortext/question.php
+++ b/question/type/ddimageortext/question.php
@@ -59,9 +59,25 @@ class qtype_ddimagetoimage_question extends qtype_gapselect_question_base {
$allblank = true;
foreach ($this->places as $placeno => $place) {
if (array_key_exists($this->field($placeno), $response) &&
- $response[$this->field($placeno)]) {
- $choices[] = '{' . html_to_text($this->get_selected_choice(
- $place->group, $response[$this->field($placeno)])->text, 0, false) . '}';
+ $response[$this->field($placeno)]) {
+ $selected = $this->get_selected_choice($place->group,
+ $response[$this->field($placeno)]);
+ if (trim($selected->text) !='') {
+ $summarisechoice =
+ get_string('summarisechoice', 'qtype_ddimagetoimage', $selected);
+ } else {
+ $summarisechoice =
+ get_string('summarisechoiceno', 'qtype_ddimagetoimage', $selected->no);
+ }
+ $place->no = $placeno;
+ if (trim($place->text) !='') {
+ $summariseplace =
+ get_string('summariseplace', 'qtype_ddimagetoimage', $place);
+ } else {
+ $summariseplace =
+ get_string('summariseplaceno', 'qtype_ddimagetoimage', $place->no);
+ }
+ $choices[] = "$summariseplace -> {{$summarisechoice}}";
$allblank = false;
} else {
$choices[] = '{}';
@@ -105,6 +121,43 @@ class qtype_ddimagetoimage_question extends qtype_gapselect_question_base {
}
return get_string('pleasedraganimagetoeachdropregion', 'qtype_ddimagetoimage');
}
+
+ public function classify_response(array $response) {
+ $parts = array();
+ foreach ($this->places as $placeno => $place) {
+ $group = $place->group;
+ if (!array_key_exists($this->field($placeno), $response) ||
+ !$response[$this->field($placeno)]) {
+ $parts[$placeno] = question_classified_response::no_response();
+ continue;
+ }
+
+ $fieldname = $this->field($placeno);
+ $choiceno = $this->choiceorder[$group][$response[$fieldname]];
+ $choice = $this->choices[$group][$choiceno];
+ if (trim($choice->text) !='') {
+ $summarisechoice =
+ get_string('summarisechoice', 'qtype_ddimagetoimage', $choice);
+ } else {
+ $summarisechoice =
+ get_string('summarisechoiceno', 'qtype_ddimagetoimage', $choice->no);
+ }
+ $correct = $this->get_right_choice_for($placeno) == $response[$fieldname];
+ $parts[$placeno] = new question_classified_response(
+ $choiceno, $summarisechoice, $correct?1:0);
+ }
+ return $parts;
+ }
+
+ public function get_random_guess_score() {
+ $accum = 0;
+
+ foreach ($this->places as $place) {
+ $accum += 1 / count($this->choices[$place->group]);
+ }
+
+ return $accum / count($this->places);
+ }
}
@@ -116,7 +169,7 @@ class qtype_ddimagetoimage_question extends qtype_gapselect_question_base {
*/
class qtype_ddimagetoimage_drag_item {
public $id;
- public $alttextlabel;
+ public $text;
public $no;
public $group;
public $isinfinite;
diff --git a/question/type/ddimageortext/questiontype.php b/question/type/ddimageortext/questiontype.php
index 22a6813a83c..be37c6b6666 100755
--- a/question/type/ddimageortext/questiontype.php
+++ b/question/type/ddimageortext/questiontype.php
@@ -416,4 +416,39 @@ class qtype_ddimagetoimage extends question_type {
}
return $string;
}
+
+ public function get_possible_responses($questiondata) {
+ $question = $this->make_question($questiondata);
+
+ $parts = array();
+ foreach ($question->places as $placeno => $place) {
+ $group = $place->group;
+ $choices = array();
+
+ foreach ($question->choices[$group] as $i => $choice) {
+ if (trim($choice->text) !='') {
+ $summarisechoice =
+ get_string('summarisechoice', 'qtype_ddimagetoimage', $choice);
+ } else {
+ $summarisechoice =
+ get_string('summarisechoiceno', 'qtype_ddimagetoimage', $choice->no);
+ }
+ $correct = $question->rightchoices[$placeno] == $i;
+ $choices[$choice->no] = new question_possible_response(
+ $summarisechoice,
+ $correct?1:0);
+ }
+ $choices[null] = question_possible_response::no_response();
+
+ $parts[$placeno] = $choices;
+ }
+
+ return $parts;
+ }
+
+ public function get_random_guess_score($questiondata) {
+ $question = $this->make_question($questiondata);
+ return $question->get_random_guess_score();
+ }
+
}
diff --git a/question/type/ddimageortext/renderer.php b/question/type/ddimageortext/renderer.php
index 0100e758623..18a3c238a04 100755
--- a/question/type/ddimageortext/renderer.php
+++ b/question/type/ddimageortext/renderer.php
@@ -165,21 +165,6 @@ class qtype_ddimagetoimage_renderer extends qtype_with_combined_feedback_rendere
}
public function correct_response(question_attempt $qa) {
- $question = $qa->get_question();
-
- $correctanswer = '';
- foreach ($question->places as $i => $place) {
- $choice = $question->choices[$place->group][$question->rightchoices[$i]];
- if ($choice->text != '') {
- $text = $choice->text;
- } else {
- $text = get_string('nolabel', 'qtype_ddimagetoimage');
- }
- $correctanswer .= '[' . str_replace('-', '‑', $text) . ']';
- }
-
- if (!empty($correctanswer)) {
- return get_string('correctansweris', 'qtype_gapselect', $correctanswer);
- }
+ return '';
}
}