From 4428adc6055f62c16eb52aa31f15314e2c682fd3 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 29 Mar 2017 14:01:22 +0200
Subject: [PATCH] OO-2662: add a check and fix  method on save

---
 .../editor/AssessmentTestComposerController.java   | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java
index b52b867156b..0d138927bd3 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java
@@ -965,6 +965,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
 				if(sectionPart instanceof AssessmentItemRef) {
 					AssessmentItemRef itemRef = (AssessmentItemRef)sectionPart;
 					ResolvedAssessmentItem resolvedAssessmentItem = resolvedAssessmentTest.getResolvedAssessmentItem(itemRef);
+					checkAndFixAbsolutPath(itemRef); 
 					
 					AssessmentItem assessmentItem = null;
 					if(resolvedAssessmentItem != null) {
@@ -993,6 +994,19 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
 		}
 	}
 	
+	private void checkAndFixAbsolutPath(AssessmentItemRef itemRef) {
+		String href = itemRef.getHref().toString();
+		if(href.startsWith("/") && href.contains("/bcroot/repository/") && href.contains("/_unzipped_/")) {
+			try {
+				int index = href.indexOf("/_unzipped_/") + ("/_unzipped_/").length();
+				String relativeHref = href.substring(index);
+				itemRef.setHref(new URI(relativeHref));
+			} catch (URISyntaxException e) {
+				logError("", e);
+			}
+		}
+	}
+	
 	private void doSaveManifest() {
 		manifestBuilder.write(new File(unzippedDirRoot, "imsmanifest.xml"));
 	}
-- 
GitLab