From 082cfea7562bf4bf659eeefe90057b0e8bcfe98a Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 19 Feb 2018 14:36:42 +0100 Subject: [PATCH] OO-3319: check the length in taxonomy level editor, cut olat resourceable if too long --- .../core/_i18n/LocalStrings_de.properties | 1 + .../core/_i18n/LocalStrings_en.properties | 1 + .../core/_i18n/LocalStrings_fr.properties | 1 + .../modules/qpool/ui/tree/FinalTreeNode.java | 6 +++- .../modules/qpool/ui/tree/ReviewTreeNode.java | 6 +++- .../ui/EditTaxonomyLevelController.java | 34 +++++++++++-------- 6 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties index cf55a456f8e..d6c3410951a 100644 --- a/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/_i18n/LocalStrings_de.properties @@ -29,6 +29,7 @@ form.dirty.intro=Achtung! Sie haben noch ungespeicherte Formulardaten form.dirty.ignore=Wenn Sie die Schaltfläche <strong>$:form.dirty.button.ignore</strong> dr\u00FCcken verlassen Sie das Formular ohne zu speichern. <strong>Die enthaltenen \u00C4nderungen gehen damit verloren</strong>. form.dirty.back=Wenn Sie die Schaltfläche <strong>$:form.dirty.button.back</strong> dr\u00FCcken gelangen Sie zurück zum Formular und können dieses abspeichern. form.error.nointeger=Ung\u00FCltige Zahl. Es muss eine Zahl eingegeben werden. +form.error.toolong=Ihre Eingabe ist zu lang. Es sind maximal {0} Zeichen erlaubt. form.general.error=Es sind Eingabefehler aufgetreten. Bitte beachten Sie den Hinweis bei den Eingabefeldern. form.legende.mandatory=<i>Bitte füllen Sie dieses Feld aus</i>. form.legende.wikiMarkup=<i>Dieses Feld erlaubt mit Wiki-Syntax formatierte Eingaben</i> </br >*<b>bold</b>*<br>_<i>italic</i>_<br>* Listen Elemente diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties index d3b14185c31..c676e293bfc 100644 --- a/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/_i18n/LocalStrings_en.properties @@ -30,6 +30,7 @@ form.dirty.intro=Attention! You have not saved this form yet. form.dirty.ignore=By clicking <strong>$:form.dirty.button.ignore</strong> you will exit the form without saving. <strong>Changes you made on this page will be lost</strong> form.dirty.back=By clicking <strong>$:form.dirty.button.back</strong> you will get back to the form where you can save it. form.error.nointeger=Illegal number. Please enter an integer. +form.error.toolong=Your input is too long. A maximum of {0} characters are allowed. form.general.error=There are typing errors. Please consider the information next to the input fields. form.legende.mandatory=<i>Please fill in this field.</i> form.legende.wikiMarkup=<i>This field allows formatted entries using the Wiki Markup language.</i> </br >*<b>bold</b>*<br>_<i>italic</i>_<br>* List items diff --git a/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties index 03e732f3d4c..c57a60c8dcb 100644 --- a/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/core/_i18n/LocalStrings_fr.properties @@ -30,6 +30,7 @@ form.dirty.ignore=Si vous appuyez sur le bouton <strong>$\:form.dirty.button.ign form.dirty.intro=Attention\! Le formulaire contient encore des donn\u00E9es que vous n'avez pas enregistr\u00E9es. form.dirty.title=Donn\u00E9es non-enregistr\u00E9es form.error.nointeger=Nombre invalide. Il faut indiquer un nombre. +form.error.toolong=Votre saisie est trop longue. Vous avez au maximum {0} caract\u00E8res \u00E0 disposition. form.general.error=Des erreurs de saisie sont survenues. Suivez les indications relatives aux champs, svp. form.legende.mandatory=<i>Veuillez remplir ce champ.</i> form.legende.wikiMarkup=<i>Ce champ peut \u00EAtre format\u00E9 \u00E0 l'aide des balises Wiki.</i> </br >*<b>bold</b>*<br>_<i>italic</i>_<br>* Liste d'\u00E9l\u00E9ments diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java index 43e541b2360..c2148657692 100644 --- a/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java +++ b/src/main/java/org/olat/modules/qpool/ui/tree/FinalTreeNode.java @@ -80,7 +80,11 @@ public class FinalTreeNode extends GenericTreeNode implements ControllerTreeNode ureq.getIdentity(), ureq.getUserSession().getRoles(), taxonomyLevel); - OLATResourceable ores = OresHelper.createOLATResourceableInstance(FINAL + "_" + taxonomyLevel.getIdentifier(), taxonomyLevel.getKey()); + String resName = FINAL + "_" + taxonomyLevel.getIdentifier(); + if(resName.length() > 50) { + resName = resName.substring(0, 50); + } + OLATResourceable ores = OresHelper.createOLATResourceableInstance(resName, taxonomyLevel.getKey()); WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, null, wControl, true); questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback, FINAL + taxonomyLevel.getKey(), false); diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java index 143b3ef56b2..2e2e04920a5 100644 --- a/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java +++ b/src/main/java/org/olat/modules/qpool/ui/tree/ReviewTreeNode.java @@ -78,7 +78,11 @@ public class ReviewTreeNode extends GenericTreeNode implements ControllerTreeNod @Override public Controller getController(UserRequest ureq, WindowControl wControl) { if (questionsCtrl == null) { - OLATResourceable ores = OresHelper.createOLATResourceableInstance(REVIEW + "_" + taxonomyLevel.getIdentifier(), taxonomyLevel.getKey()); + String resName = REVIEW + "_" + taxonomyLevel.getIdentifier(); + if(resName.length() > 50) { + resName = resName.substring(0, 50); + } + OLATResourceable ores = OresHelper.createOLATResourceableInstance(resName, taxonomyLevel.getKey()); WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, null, wControl, true); questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback, REVIEW + taxonomyLevel.getKey(), false); diff --git a/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java b/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java index 9724fc0e91e..b26668a01ba 100644 --- a/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java +++ b/src/main/java/org/olat/modules/taxonomy/ui/EditTaxonomyLevelController.java @@ -211,20 +211,11 @@ public class EditTaxonomyLevelController extends FormBasicController { @Override protected boolean validateFormLogic(UserRequest ureq) { - boolean allOk = true; - - displayNameEl.clearError(); - if(!StringHelper.containsNonWhitespace(displayNameEl.getValue())) { - displayNameEl.setErrorKey("form.legende.mandatory", null); - allOk &= false; - } - - identifierEl.clearError(); - if(!StringHelper.containsNonWhitespace(identifierEl.getValue())) { - identifierEl.setErrorKey("form.legende.mandatory", null); - allOk &= false; - } + boolean allOk = super.validateFormLogic(ureq); + allOk &= validateTextfield(displayNameEl, 255); + allOk &= validateTextfield(identifierEl, 64); + sortOrderEl.clearError(); if(StringHelper.containsNonWhitespace(sortOrderEl.getValue())) { try { @@ -235,7 +226,22 @@ public class EditTaxonomyLevelController extends FormBasicController { } } - return allOk & super.validateFormLogic(ureq); + return allOk; + } + + private boolean validateTextfield(TextElement textEl, int maxSize) { + boolean allOk = true; + + textEl.clearError(); + if(!StringHelper.containsNonWhitespace(identifierEl.getValue())) { + identifierEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } else if(identifierEl.getValue().length() >= maxSize) { + identifierEl.setErrorKey("form.error.toolong", new String[] { Integer.toString(maxSize) }); + allOk &= false; + } + + return allOk; } @Override -- GitLab