From 3e45a1774bed8cb87c46dc01ee19e84c58a02cc3 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 23 Mar 2017 21:14:42 +0100
Subject: [PATCH] OO-2648: path to the attachments of an assessmentItem are
 relative to it and not the storage folder (imsmanifest.xml) created by the
 question pool

---
 .../olat/ims/qti21/model/xml/AssessmentItemMetadata.java    | 2 +-
 .../java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java  | 5 ++++-
 .../ui/components/_content/graphicGapMatchInteraction.html  | 6 ++++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemMetadata.java b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemMetadata.java
index 6be87465999..d1075655b69 100644
--- a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemMetadata.java
+++ b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemMetadata.java
@@ -255,7 +255,7 @@ public class AssessmentItemMetadata {
 		}
 		
 		//qti metadata
-		QTIMetadataType qtiMetadata = metadata.getQtiMetadata(false);
+		QTIMetadataType qtiMetadata = metadata.getQtiMetadata(true);
 		if(qtiMetadata.getToolName() != null) {
 			editor = qtiMetadata.getToolName();
 		}
diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java b/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java
index 7e9099b4557..1eccd9781d8 100644
--- a/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java
+++ b/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java
@@ -155,6 +155,9 @@ public class QTI21ImportProcessor {
 			//storage
 			File itemStorage = qpoolFileStorage.getDirectory(dir);
 			File outputFile = new File(itemStorage, href);
+			if(!outputFile.getParentFile().exists()) {
+				outputFile.getParentFile().mkdirs();
+			}
 			convertXmlFile(assessmentItemPath, outputFile.toPath());
 
 			QtiXmlReader qtiXmlReader = new QtiXmlReader(qtiService.jqtiExtensionManager());
@@ -194,7 +197,7 @@ public class QTI21ImportProcessor {
 			for(String material:materials) {
 				if(material.indexOf("://") < 0) {// material can be an external URL
 					Path materialFile = assessmentItemPath.getParent().resolve(material);
-					PathUtils.copyFileToDir(materialFile, itemStorage, material);
+					PathUtils.copyFileToDir(materialFile, outputFile.getParentFile(), material);
 				}
 			}
 			return qitem;
diff --git a/src/main/java/org/olat/ims/qti21/ui/components/_content/graphicGapMatchInteraction.html b/src/main/java/org/olat/ims/qti21/ui/components/_content/graphicGapMatchInteraction.html
index f3ff461dba6..1379ee19e0f 100644
--- a/src/main/java/org/olat/ims/qti21/ui/components/_content/graphicGapMatchInteraction.html
+++ b/src/main/java/org/olat/ims/qti21/ui/components/_content/graphicGapMatchInteraction.html
@@ -36,8 +36,10 @@
 		jQuery(function() {
 			var map = jQuery('#${containerId}_img').maphilight({
 				fillColor: '888888',
-				strokeColor: '0000ff',
-				strokeWidth: 3
+				strokeColor: '333333',
+				strokeOpacity: 0.5,
+				strokeWidth: 3,
+				alwaysOn: true
 			});
 
 			jQuery('#${containerId}').graphicGapInteraction({
-- 
GitLab