diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java index 461ce4e571e3ddc334c168f972d73a09230ed170..1bfa7136caa93a573f4c4c104a062249844ef8b3 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java @@ -499,6 +499,11 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { this.scoreEvaluation = scoreEvaluation; } + /** + * This method only applies to score per answer. + * + * @return true if some variant hasn't the same score as the main response. + */ public boolean alternativesWithSpecificScore() { for(Map.Entry<String, AbstractEntry> entry:responseIdentifierToTextEntry.entrySet()) { AbstractEntry e = entry.getValue(); @@ -508,7 +513,7 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { if(textEntry.getAlternatives() != null && !textEntry.getAlternatives().isEmpty()) { for(TextEntryAlternative alternative:textEntry.getAlternatives()) { double altScore = alternative.getScore(); - if(altScore >= 0.0d && score != null && score.doubleValue() != altScore) { + if(score != null && score.doubleValue() != altScore) { return true; } } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java index 48d06b47d9c7f3e4806e388fb96982534a3391eb..e7497eeedc0e8f85e329436ee59f0a59a989fbd4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java @@ -285,7 +285,7 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem private FIBAlternativeWrapper createAlternativeWrapper(TextEntryAlternative alternative) { String altPointElId = "points_" + counter++; - String altScoreStr = alternative.getScore() == -1.0d ? "" : Double.toString(alternative.getScore()); + String altScoreStr = Double.toString(alternative.getScore()); TextElement altPointEl = uifactory.addTextElement(altPointElId, null, 5, altScoreStr, scoreCont); altPointEl.setDisplaySize(5); altPointEl.setEnabled(!restrictedEdit && !readOnly); @@ -321,23 +321,25 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem } private void updateScoresUI() { - boolean perAnswer = assessmentModeEl.isSelected(1) || assessmentModeEl.isSelected(2); - scoreCont.setVisible(perAnswer); - scoreCont.contextPut("withAlternatives", Boolean.valueOf(assessmentModeEl.isSelected(2))); - if(perAnswer) { + boolean perAnswer = assessmentModeEl.isSelected(1); + boolean perAnswerAndVariants = assessmentModeEl.isSelected(2); + scoreCont.setVisible(perAnswer || perAnswerAndVariants); + scoreCont.contextPut("withAlternatives", Boolean.valueOf(perAnswerAndVariants)); + if(perAnswer || perAnswerAndVariants) { for(FIBEntryWrapper wrapper:wrappers) { AbstractEntry entry = wrapper.getEntry(); Double points = entry.getScore(); if(points != null && points.doubleValue() == -1.0d) {//replace the all answers score wrapper.getEntry().setScore(1.0d); wrapper.getPointsEl().setValue("1.0"); + points = Double.valueOf(1.0d); } if(entry instanceof TextEntry && wrapper.getAlternatives() != null && !wrapper.getAlternatives().isEmpty()) { for(FIBAlternativeWrapper alternativeWrapper:wrapper.getAlternatives()) { TextEntryAlternative alternative = alternativeWrapper.getAlternative(); if(StringHelper.containsNonWhitespace(alternativeWrapper.getPointsEl().getValue())) { - if(points != null && points.doubleValue() >= 0.0d && alternative.getScore() == 1.0d) { + if(points != null && (alternative.getScore() == 1.0d || alternative.getScore() == -1.0d)) { alternative.setScore(points.doubleValue()); alternativeWrapper.getPointsEl().setValue(points.toString()); }