diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties index 852f4f03d8e5642256c9100069e40a08db4d768b..1c94b4775c65a6150ca3530ba27ae39783dfd184 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties @@ -17,6 +17,7 @@ error.import.question=Die Frage konnte wegen eine unerwartete Fehler nicht impor error.lock=Dieser Test/Fragebogen wird momentan vom Benutzer {0} editiert und ist deshalb gesperrt. error.lock.title=Test gesperrt error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType +error.min.score.bigger.max=Minimal erreichbare Punktzahl muss kleiner als then maximal erreichbare Punktzahl sein. error.need.correct.answer=Sie m\u00FCssen mindestens eine Antwort als korrekt markieren. error.positive.double=Falsches Zahlenformat, nur positive Nummer sind erlaubt. Beispiele\: 15.0, 5.5, 10 error.singlechoice=Genau ein ausw\u00E4hlen diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties index 399a6fa24f6f6176f42d5e3b0ae0bd099ab9a5ee..2a7a2060639b0e495f05d208a0acabbee870bb16 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties @@ -17,6 +17,7 @@ error.positive.double=Only positive number are allowed. Example\: 15.0, 5.5, 10 error.import.question=An unexpected error happens during import of a question. error.lock=This test/questionnaire is being edited by user {0} at the moment and therefore locked. error.lock.title=Test locked +error.min.score.bigger.max=Min. score must be bigger than the max. score. error.mimetype=$org.olat.core.commons.modules.bc\:WrongMimeType error.missing.fib=The question need at least a gap text or a numerical input. error.missing.hottext=The question need at least a hottext. diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java index 10d4fbc9c214ed831a44e5b2033ec7330525a658..71df3c7984f3201ec1cac2832c70cf1a8d617fd0 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java @@ -130,6 +130,23 @@ public abstract class AssessmentItemRefEditorController extends FormBasicControl return allOk; } + protected boolean validateMinMaxScores(TextElement minScoreEl, TextElement maxScoreEl) { + boolean allOk = true; + allOk &= validateDouble(minScoreEl); + allOk &= validateDouble(maxScoreEl); + + if(allOk) { + double minScore =Double.parseDouble(minScoreEl.getValue()); + double maxScore = Double.parseDouble(maxScoreEl.getValue()); + if(minScore > maxScore) { + minScoreEl.setErrorKey("error.min.score.bigger.max", null); + allOk &= false; + } + } + + return allOk; + } + @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(limitAttemptsEl == source) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java index d8d762dfd7bbd5b9b3b1f3bc686912b9f92d6204..dbcf0c400dee4780301540d650d329280afa81ed 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java @@ -195,8 +195,7 @@ public class ChoiceScoreController extends AssessmentItemRefEditorController imp @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; - allOk &= validateDouble(maxScoreEl); - allOk &= validateDouble(minScoreEl); + allOk &= validateMinMaxScores(minScoreEl, maxScoreEl); if(assessmentModeEl.isOneSelected() && assessmentModeEl.isSelected(1)) { for(ChoiceWrapper wrapper:wrappers) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotChoiceScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotChoiceScoreController.java index 00e938b96e07459976db20012ddf61209727a9c7..e44715f8ef874ecdb9a575908ffadceb04c42a86 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotChoiceScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotChoiceScoreController.java @@ -243,8 +243,7 @@ public class HotspotChoiceScoreController extends AssessmentItemRefEditorControl @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; - allOk &= validateDouble(maxScoreEl); - allOk &= validateDouble(minScoreEl); + allOk &= validateMinMaxScores(minScoreEl, maxScoreEl); if(assessmentModeEl.isOneSelected() && assessmentModeEl.isSelected(1)) { for(HotspotChoiceWrapper wrapper:wrappers) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java index dd2377a914f76fa7dce2bda5cc40b316d407677f..4b262bf334d4b4f617d365f0e8ae0fc16eb0697c 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java @@ -215,8 +215,7 @@ public class MatchScoreController extends AssessmentItemRefEditorController impl @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; - allOk &= validateDouble(maxScoreEl); - allOk &= validateDouble(minScoreEl); + allOk &= validateMinMaxScores(minScoreEl, maxScoreEl); if(assessmentModeEl.isOneSelected() && assessmentModeEl.isSelected(1)) { for(Map.Entry<DirectedPairValue, MatchScoreWrapper> entry:scoreWrappers.entrySet()) {