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 ea2f849f642726307482999b9f5b6ed9150caea8..5b5719683d5d624cc5809d47e552f9ddf4c5f763 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 @@ -45,6 +45,7 @@ error.cardinality.answer=Single choice erlaubt nur eine korrekte Antwort. error.double=$org.olat.ims.qti21.ui\:error.double error.import.question=Die Frage konnte wegen eine unerwartete Fehler nicht importiert werden error.integer=$org.olat.ims.qti21.ui\:error.integer +error.integer.positive=Es muss ein Zahl zwischen 0 und 2147483647. error.lock=Dieser Test/Fragebogen wird momentan vom Benutzer {0} editiert und ist deshalb gesperrt. error.lock.same.user=$\:error.lock $org.olat.core\:lock.same.user.different.window error.lock.title=Test gesperrt 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 ae04c18729f848f0227df4d76463847a521c5a8e..c1a67b515bb23dda7c45af802434799bb16ad29d 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 @@ -45,6 +45,7 @@ error.cardinality.answer=Single choice allow only one correct answer. error.double=$org.olat.ims.qti21.ui\:error.double error.import.question=An unexpected error happens during import of a question. error.integer=$org.olat.ims.qti21.ui\:error.integer +error.integer.positive=It needs a number between 0 and 2147483647. error.lock=This test/questionnaire is being edited by user {0} at the moment and therefore locked. error.lock.same.user=$\:error.lock $org.olat.core\:lock.same.user.different.window error.lock.title=Test locked diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties index 4d68ca59b8f3e4b4d443ff524f54df88cd63c2e6..495bd011bed9a0e72b4b7b90a3a248054e69e012 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties @@ -46,6 +46,7 @@ error.cardinality.answer=Choix simple n'autorise qu'une seule r\u00E9ponse corre error.double=$org.olat.ims.qti21.ui\:error.double error.import.question=Une erreur inattendue s'est produite pendant l'importation de la question. error.integer=$org.olat.ims.qti21.ui\:error.integer +error.integer.positive=Le nombre doit se situer entre 0 et 2147483647. error.lock=Ce test / questionnaire est \u00E9dit\u00E9 par {0} en ce moment et est bloqu\u00E9. error.lock.same.user=$\:error.lock $org.olat.core\:lock.same.user.different.window error.lock.title=Test bloqu\u00E9 diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java index bde5a2dd3f39088978f480f61e55e0d084e6c1d3..5bdc4dba55c315b72330939b0fdd83fec4ea2e74 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java @@ -146,7 +146,7 @@ public class EssayEditorController extends FormBasicController { public Integer getValue(TextElement integerEl) { String val = integerEl.getValue(); Integer integer = null; - if(StringHelper.isLong(val)) { + if(isInteger(val)) { return Integer.parseInt(val); } return integer; @@ -154,7 +154,7 @@ public class EssayEditorController extends FormBasicController { @Override protected boolean validateFormLogic(UserRequest ureq) { - boolean allOk = true; + boolean allOk = super.validateFormLogic(ureq); titleEl.clearError(); if(!StringHelper.containsNonWhitespace(titleEl.getValue())) { @@ -166,7 +166,7 @@ public class EssayEditorController extends FormBasicController { allOk &= validateInteger(heightEl); allOk &= validateInteger(minWordsEl); allOk &= validateInteger(maxWordsEl); - return allOk & super.validateFormLogic(ureq); + return allOk; } private boolean validateInteger(TextElement integerEl) { @@ -177,11 +177,26 @@ public class EssayEditorController extends FormBasicController { if(!StringHelper.isLong(integerEl.getValue())) { integerEl.setErrorKey("form.error.nointeger", null); allOk &= false; + } else if(!isInteger(integerEl.getValue())) { + integerEl.setErrorKey("error.integer.positive", null); + allOk &= false; } } return allOk; } + + private boolean isInteger(String val) { + if(StringHelper.isLong(val)) { + try { + int num = Integer.parseInt(val); + return num >= 0; + } catch(NumberFormatException e) { + return false; + } + } + return false; + } @Override protected void formOK(UserRequest ureq) {