From 56b8ef85dca8d45ece4986f6a04d084bcbcb92f4 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 20 Apr 2015 11:19:06 +0200
Subject: [PATCH] OO-1516: better check if the map exists and show a warning if
 it doesn't

---
 .../olat/portfolio/manager/EPFrontendManager.java    | 12 +++++-------
 .../portfolio/ui/structel/EPMapViewController.java   | 11 ++++++++++-
 .../portfolio/ui/structel/_content/map_deleted.html  |  1 +
 .../ui/structel/_i18n/LocalStrings_de.properties     |  2 ++
 .../ui/structel/_i18n/LocalStrings_en.properties     |  2 ++
 5 files changed, 20 insertions(+), 8 deletions(-)
 create mode 100644 src/main/java/org/olat/portfolio/ui/structel/_content/map_deleted.html

diff --git a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
index 52bd589c504..74c6186d44b 100755
--- a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
+++ b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java
@@ -609,19 +609,17 @@ public class EPFrontendManager implements UserDataDeletable, DeletableGroupData
 	 * sync map with its former source (template)
 	*/
 	public boolean synchronizeStructuredMapToUserCopy(PortfolioStructureMap map) {
-		final EPStructuredMap userMap = (EPStructuredMap) map;
-		final EPStructureManager structMgr = structureManager; // only remove
-																														// synthetic access
-																														// warnings
-
+		if(map == null) return false;
+		
+		final EPStructuredMap userMap = (EPStructuredMap)map;
 		Boolean synched = coordinator.getSyncer().doInSync(map.getOlatResource(), new SyncerCallback<Boolean>() {
 			public Boolean execute() {
 				if (userMap.getStructuredMapSource() == null) { return Boolean.FALSE; }
 				// need to reload it, I don't know why
 				Long templateKey = userMap.getStructuredMapSource().getKey();
 				userMap.setLastSynchedDate(new Date());
-				PortfolioStructure template = structMgr.loadPortfolioStructureByKey(templateKey);
-				structMgr.syncStructureRecursively(template, userMap, true);
+				PortfolioStructure template = structureManager.loadPortfolioStructureByKey(templateKey);
+				structureManager.syncStructureRecursively(template, userMap, true);
 				return Boolean.TRUE;
 			}
 		});
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java b/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
index a7fa6e0b412..4e0419aebd8 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
@@ -107,7 +107,16 @@ public class EPMapViewController extends BasicController implements Activateable
 		if (map instanceof EPStructuredMap && (map.getStatus() == null || !map.getStatus().equals(StructureStatusEnum.CLOSED) )){
 			map = (PortfolioStructureMap) ePFMgr.loadPortfolioStructureByKey(map.getKey());
 			boolean syncOk = ePFMgr.synchronizeStructuredMapToUserCopy(map);
-			if (syncOk) showInfo("synced.map.success");
+			if (syncOk) {
+				showInfo("synced.map.success");
+			} else if(map == null) {
+				showWarning("synced.map.deleted");
+				putInitialPanel(createVelocityContainer("map_deleted"));
+				return;
+			} else {
+				showError("synced.map.error");
+				
+			}
 		}
 		
 		if(EPSecurityCallbackFactory.isLockNeeded(secCallback)) {
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_content/map_deleted.html b/src/main/java/org/olat/portfolio/ui/structel/_content/map_deleted.html
new file mode 100644
index 00000000000..cd8e20c4e6b
--- /dev/null
+++ b/src/main/java/org/olat/portfolio/ui/structel/_content/map_deleted.html
@@ -0,0 +1 @@
+<div class="o_warning">$r.translate("synced.map.deleted")</div>
\ No newline at end of file
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties
index 958d727d42c..855a97aac76 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_de.properties
@@ -97,6 +97,8 @@ map.share.invitation.mail.success=Die eingeladenen Personen wurden erfolgreich p
 map.share.invitation.mail.failure=Fehler beim Versenden der E-Mail. Die eingeladenen Personen konnten nicht per E-Mail benachrichtigt werden. Versuchen Sie es später noch einmal oder kontaktieren Sie den Support.
 map.is.closed.hint=Mappe geschlossen
 synced.map.success=Diese Mappe wurde mit der ursprünglichen Vorlage synchronisiert.
+synced.map.deleted=Diese Mappe wurde gelöscht.
+synced.map.error=Diese Mappe konnte nicht mit der ursprünglichen Vorlage synchronisiert werden.
 map.style.default=Schlicht
 map.style.comic=Comic
 map.style.leather=Leder
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties
index a78df089f26..4b80986024d 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/portfolio/ui/structel/_i18n/LocalStrings_en.properties
@@ -134,6 +134,8 @@ restrict.show.limited=Show only those binders released for me
 restrictions.not.conform=You haven't abided by all restrictions. Please mind the requirements.
 save.and.open.map=Save and open binder
 synced.map.success=This folder has been synchronized with its original template.
+synced.map.deleted=This folder was deleted.
+synced.map.error=This folder cannot be synchronized with its original template.
 template.alreadyInUse=This template has already been copied by at least one user. When modifying your template this copy will be synchronized as well. It is possible to delete elements or expand your template; however, links to artefacts already existing may be lost\!
 toc=Table of contents
 view.map=Open
-- 
GitLab