From 0921798d9f471beb900da9cb48c85facadd6b448 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Thu, 16 Apr 2020 16:09:25 +0200
Subject: [PATCH] OO-4641: explain delete operations in taxonomy administration

---
 .../ui/DeleteTaxonomyLevelController.java     | 26 +++++++++++++++----
 .../ui/_i18n/LocalStrings_de.properties       |  7 +++--
 .../ui/_i18n/LocalStrings_en.properties       |  5 +++-
 3 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/olat/modules/taxonomy/ui/DeleteTaxonomyLevelController.java b/src/main/java/org/olat/modules/taxonomy/ui/DeleteTaxonomyLevelController.java
index d3b74310c55..0aa5e2f2fee 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/DeleteTaxonomyLevelController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/DeleteTaxonomyLevelController.java
@@ -194,7 +194,8 @@ public class DeleteTaxonomyLevelController extends FormBasicController {
 
 	@Override
 	protected void formOK(UserRequest ureq) {
-		StringBuilder sb = new StringBuilder();
+		StringBuilder deletedLevels = new StringBuilder();
+		StringBuilder notDeletedLevels = new StringBuilder();
 		
 		if(levels.size() > 1) {
 			Collections.sort(levels, new TaxonomyLevelDepthComparator());
@@ -210,14 +211,29 @@ public class DeleteTaxonomyLevelController extends FormBasicController {
 		for(TaxonomyLevel level:levels) {
 			TaxonomyLevel taxonomyLevel = taxonomyService.getTaxonomyLevel(level);
 			if(taxonomyService.deleteTaxonomyLevel(taxonomyLevel, mergeTo)) {
-				if(sb.length() > 0) sb.append(", ");
-				sb.append(StringHelper.escapeHtml(taxonomyLevel.getDisplayName()));
+				if(deletedLevels.length() > 0) deletedLevels.append(", ");
+				deletedLevels.append(StringHelper.escapeHtml(taxonomyLevel.getDisplayName()));
+			} else {
+				if(notDeletedLevels.length() > 0) notDeletedLevels.append(", ");
+				notDeletedLevels.append(StringHelper.escapeHtml(taxonomyLevel.getDisplayName()));
 			}
 		}
 		dbInstance.commit();//commit before sending event
 		fireEvent(ureq, new DeleteTaxonomyLevelEvent());
-		showInfo("confirm.deleted.level", new String[] { sb.toString() });
-
+	
+		if(notDeletedLevels.length() == 0) {
+			showInfo("confirm.deleted.level", new String[] { deletedLevels.toString() });
+		} else if(deletedLevels.length() == 0) {
+			if(levels.size() == 1) {
+				showWarning("warning.delete.level");
+			} else {
+				showWarning("warning.deleted.level.nothing");
+			}
+		} else {
+			showWarning("warning.deleted.level.partial", new String[] {
+					deletedLevels.toString(), notDeletedLevels.toString() });
+		}
+		
 		fireEvent(ureq, Event.DONE_EVENT);
 	}
 
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 e6c2fcf1c12..c52673d887b 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
@@ -138,8 +138,11 @@ 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.
+warning.delete.level.explain=(in Kompentenz, in einem Lernressource oder hat noch Unterebene).
+warning.delete.level=Die Ebene darf nicht gel\u00f6scht werden. Sie wird noch benutzt $\:warning.delete.level.explain
+warning.delete.level.type=Der Ebenentype wurde nicht gel\u00F6scht. Er ist noch benutzt.
+warning.deleted.level.nothing=Die Ebenen konnten nicht gel\u00F6scht werden. Sie sind noch benutzt $\:warning.delete.level.explain
+warning.deleted.level.partial=Nicht alle Ebene konnte gel\u00F6scht werden. "{0}" wurde(n) erfolgreich gel\u00F6scht aber "{1}" konnte(n) nicht gel\u00F6scht werden weil sie noch benutzt sind $\:warning.delete.level.explain
 warning.taxonomy.level.deleted=Diese Taxonomieebene ist nicht mehr verf\u00fcgbar.
 warning.taxonomy.level.type.deleted=Dieser Ebenentype ist nicht mehr verf\u00fcgbar.
 zoom=<i class='o_icon o_icon-fw o_icon_enlarge'> </i>
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 02f794d965b..4d55e7ce9da 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
@@ -138,8 +138,11 @@ 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.explain=(in competence, in a learn resource or has a child level).
+warning.delete.level=The level cannot be deleted because it is still in use $\:warning.delete.level.explain
 warning.delete.level.type=The level type "{0}" was not deleted because it is still in use.
+warning.deleted.level.nothing=The levels cannot be deleted because they are still in use $\:warning.delete.level.explain
+warning.deleted.level.partial=Not all levels was successfully deleted. "{0}" was successfully deleted but "{1}" cannot be deleted because they are still in use $\:warning.delete.level.explain
 warning.taxonomy.level.deleted=This taxonomy level is no longer available.
 warning.taxonomy.level.type.deleted=This level type is no longer available.
 zoom=<i class='o_icon o_icon-fw o_icon_enlarge'> </i>
-- 
GitLab