From 6ca707c5ec9de88059a029d70e07cb0f9cc762f5 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Thu, 25 Jun 2020 18:36:33 +0200
Subject: [PATCH] OO-4762: empty and reapply list of correct answers in hotspot
 editor

---
 .../xml/interactions/HotspotAssessmentItemBuilder.java     | 7 +++++++
 .../ui/editor/interactions/HotspotEditorController.java    | 7 ++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java
index 9d8a2452637..2deb8666a30 100644
--- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java
+++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/HotspotAssessmentItemBuilder.java
@@ -282,6 +282,12 @@ public class HotspotAssessmentItemBuilder extends AssessmentItemBuilder implemen
 		return correctAnswers.contains(choice.getIdentifier());
 	}
 	
+	public void clearCorrectAnswers() {
+		if(correctAnswers != null) {
+			correctAnswers.clear();
+		}
+	}
+	
 	public void setCorrect(HotspotChoice choice, boolean correct) {
 		if(correctAnswers == null) {
 			correctAnswers = new ArrayList<>();
@@ -425,6 +431,7 @@ public class HotspotAssessmentItemBuilder extends AssessmentItemBuilder implemen
 		//add question
 		getHtmlHelper().appendHtml(assessmentItem.getItemBody(), question);
 		
+		
 		//add interaction
 		if(correctAnswers.size() == 1 && cardinality == Cardinality.SINGLE) {
 			hotspotInteraction.setMaxChoices(1);
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java
index c58fb62716f..4b29a9350d1 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java
@@ -375,9 +375,7 @@ public class HotspotEditorController extends FormBasicController {
 			updateHotspots(ureq);
 			updateHotspotsPosition(backgroundSize);
 		} else if(correctHotspotsEl == source) {
-			MultipleSelectionElement correctEl = (MultipleSelectionElement)source;
-			Collection<String> correctResponseIds = correctEl.getSelectedKeys();
-			doCorrectAnswers(correctResponseIds);
+			doCorrectAnswers(correctHotspotsEl.getSelectedKeys());
 			flc.setDirty(true);
 		} else if(layoutEl == source) {
 			updateLayoutCssClass();
@@ -439,6 +437,7 @@ public class HotspotEditorController extends FormBasicController {
 	
 	private void doCorrectAnswers(Collection<String> correctResponseIds) {
 		List<HotspotChoice> choices = itemBuilder.getHotspotChoices();
+		itemBuilder.clearCorrectAnswers();
 		for(int i=0; i<choices.size(); i++) {
 			HotspotChoice choice = choices.get(i);
 			boolean correct = correctResponseIds.contains(choice.getIdentifier().toString());
@@ -514,6 +513,8 @@ public class HotspotEditorController extends FormBasicController {
 			objectImg = initialBackgroundImage;
 		}
 		
+		doCorrectAnswers(correctHotspotsEl.getSelectedKeys());
+		
 		if(cardinalityEl.isOneSelected()) {
 			String selectedCardinality = cardinalityEl.getSelectedKey();
 			itemBuilder.setCardinality(Cardinality.valueOf(selectedCardinality));
-- 
GitLab