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