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 9d8a2452637c25e1f7d1cd588bd2e7be4a17a468..2deb8666a308524f62561ba1de5e2d9b74c3d8ee 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 c58fb62716f9804382547238d89b629ed8bb1e06..4b29a9350d117c41e5f7177d814afa5ee4995d04 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));