From 4eeb504b6e498083d9a961ac6a1c0c066647cda3 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 5 Jan 2018 08:51:14 +0100
Subject: [PATCH] OO-3178: show a message if there isn't any taxonomy level
 select to add a competence on

---
 .../ui/IdentityCompetencesController.java     | 36 ++++++++++---------
 .../ui/SelectTaxonomyLevelController.java     |  1 +
 .../ui/_i18n/LocalStrings_de.properties       |  1 +
 .../ui/_i18n/LocalStrings_en.properties       |  1 +
 4 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java b/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java
index d9950048b27..dd2498f3360 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java
@@ -203,24 +203,28 @@ public class IdentityCompetencesController extends FormBasicController implement
 	}
 	
 	private void doAddTaxonomyLevelsAsCompetence(TaxonomyLevel selectedLevel, TaxonomyCompetenceTypes competenceType) {
-		boolean found = false;
-		List<TaxonomyCompetence> currentCompetences = taxonomyService.getTaxonomyCompetences(assessedIdentity, competenceType);
-		for(TaxonomyCompetence currentCompetence:currentCompetences) {
-			if(selectedLevel.equals(currentCompetence.getTaxonomyLevel())) {
-				found = true;
+		if(selectedLevel == null) {
+			showWarning("warning.atleastone.level.competence");
+		} else {
+			boolean found = false;
+			List<TaxonomyCompetence> currentCompetences = taxonomyService.getTaxonomyCompetences(assessedIdentity, competenceType);
+			for(TaxonomyCompetence currentCompetence:currentCompetences) {
+				if(selectedLevel.equals(currentCompetence.getTaxonomyLevel())) {
+					found = true;
+				}
 			}
+			
+			if(!found) {
+				TaxonomyLevel taxonomyLevel = taxonomyService.getTaxonomyLevel(selectedLevel);
+				Taxonomy taxonomy = taxonomyLevel.getTaxonomy();
+				TaxonomyCompetence competence = taxonomyService.addTaxonomyLevelCompetences(taxonomyLevel, assessedIdentity, competenceType, null);
+				String after = taxonomyService.toAuditXml(competence);
+				taxonomyService.auditLog(TaxonomyCompetenceAuditLog.Action.addCompetence, null, after, null, taxonomy, competence, assessedIdentity, getIdentity());
+			}
+			
+			loadModel();
+			tableEl.reset(true, true, true);
 		}
-		
-		if(!found) {
-			TaxonomyLevel taxonomyLevel = taxonomyService.getTaxonomyLevel(selectedLevel);
-			Taxonomy taxonomy = taxonomyLevel.getTaxonomy();
-			TaxonomyCompetence competence = taxonomyService.addTaxonomyLevelCompetences(taxonomyLevel, assessedIdentity, competenceType, null);
-			String after = taxonomyService.toAuditXml(competence);
-			taxonomyService.auditLog(TaxonomyCompetenceAuditLog.Action.addCompetence, null, after, null, taxonomy, competence, assessedIdentity, getIdentity());
-		}
-		
-		loadModel();
-		tableEl.reset(true, true, true);
 	}
 	
 	private void doConfirmRemove(UserRequest ureq, IdentityCompetenceRow row) {
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/SelectTaxonomyLevelController.java b/src/main/java/org/olat/modules/taxonomy/ui/SelectTaxonomyLevelController.java
index 8b6202a634c..885ce45261d 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/SelectTaxonomyLevelController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/SelectTaxonomyLevelController.java
@@ -73,6 +73,7 @@ public class SelectTaxonomyLevelController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		taxonomyTreesModel = new GenericTreeModel();
 		taxonomyTreesEl = uifactory.addTreeMultiselect("taxonomy", null, formLayout, taxonomyTreesModel, this);
+		taxonomyTreesEl.setRootVisible(false);
 
 		uifactory.addFormCancelButton("cancel", formLayout, ureq, getWindowControl());
 		uifactory.addFormSubmitButton("ok", formLayout);
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_de.properties
index 66bb6dbbb99..99f760944e6 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_de.properties
@@ -130,5 +130,6 @@ teach=Dozieren
 tools=$\:table.header.actions
 type.taxonomy.level=Ebenentyp zuweisen
 warning.atleastone.level=Sie m\u00FCssen mindestens eine Ebene w\u00E4hlen dass Sie editieren d\u00FCrfen.
+warning.atleastone.level.competence=Sie m\u00FCssen mindestens eine Ebene w\u00E4hlen.
 warning.delete.level=Die Ebene darf nicht gel\u00F6scht werden. Sie wird noch benutzt.
 warning.delete.level.type=Der Ebenentype wurde nicht gel\u00F6scht. Er ist noch benutzt.
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties
index bed9a6afcc2..e48fce6efaa 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/taxonomy/ui/_i18n/LocalStrings_en.properties
@@ -129,5 +129,6 @@ teach=Teach
 tools=$\:table.header.actions
 type.taxonomy.level=Assign level type
 warning.atleastone.level=You must at least one taxonomy level you can edit.
+warning.atleastone.level.competence=You must at least one taxonomy level.
 warning.delete.level=The level cannot be deleted because it is still in use.
 warning.delete.level.type=The level type "{0}" was not deleted because it is still in use.
-- 
GitLab