From 3955ee2699576fb62f833a2a771d61ad81d27d9d Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 17 Oct 2016 10:36:25 +0200
Subject: [PATCH] OO-2277: show an error message instead of a red screen if the
 QTI 2.1 preview cannot rendered the assessment item

---
 .../ims/qti21/ui/AssessmentItemDisplayController.java     | 8 ++++++--
 src/main/java/org/olat/ims/qti21/ui/_content/error.html   | 1 +
 .../olat/ims/qti21/ui/_i18n/LocalStrings_de.properties    | 1 +
 .../olat/ims/qti21/ui/_i18n/LocalStrings_en.properties    | 1 +
 4 files changed, 9 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/org/olat/ims/qti21/ui/_content/error.html

diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentItemDisplayController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentItemDisplayController.java
index 4a512118a28..d99f0ae7b94 100644
--- a/src/main/java/org/olat/ims/qti21/ui/AssessmentItemDisplayController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentItemDisplayController.java
@@ -131,7 +131,9 @@ public class AssessmentItemDisplayController extends BasicController implements
 		
 		itemSessionController = enterSession(ureq);
 		
-		if (itemSessionController.getItemSessionState().isEnded()) {
+		if(itemSessionController == null) {
+			mainVC = createVelocityContainer("error");
+		} else if (itemSessionController.getItemSessionState().isEnded()) {
 			mainVC = createVelocityContainer("end");
 		} else {
 			mainVC = createVelocityContainer("run");
@@ -156,7 +158,9 @@ public class AssessmentItemDisplayController extends BasicController implements
 		
 		itemSessionController = enterSession(ureq);
 		
-		if (itemSessionController.getItemSessionState().isEnded()) {
+		if(itemSessionController == null) {
+			mainVC = createVelocityContainer("error");
+		} else if (itemSessionController.getItemSessionState().isEnded()) {
 			mainVC = createVelocityContainer("end");
 		} else {
 			mainVC = createVelocityContainer("run");
diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/error.html b/src/main/java/org/olat/ims/qti21/ui/_content/error.html
new file mode 100644
index 00000000000..1153341a979
--- /dev/null
+++ b/src/main/java/org/olat/ims/qti21/ui/_content/error.html
@@ -0,0 +1 @@
+<div class="o_error">$r.translate("error.assessment.item")</div>
\ No newline at end of file
diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties
index 5fb13b444fb..7c92b57d65c 100644
--- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties
@@ -60,6 +60,7 @@ debug.outcomes=Output Daten
 debug.responses=Antworten Daten
 error.as.directed=Bitte f\u00FCllen Sie diese Frage wie verwiesen.
 error.as.directed.kprim=Bitte f\u00FCllen Sie diese Frage wie verwiesen.
+error.assessment.item=Die Datei konnte nicht gelesen werden. Sie ist entweder korrupt oder mit dem falschen Format gespeichert.
 error.choice=Sie m\u00FCssen ein von den folgenden Optionen w\u00E4hlen.
 error.double=Falsches Zahlenformat. Beispiele\: 15.0, 5.5, 10
 error.input.choice.max=W\u00E4hlen Sie die {0} zutreffenden Antworten.
diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties
index 6ca9d29cffb..0c45e98a3bb 100644
--- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties
@@ -60,6 +60,7 @@ debug.outcomes=Output data
 debug.responses=Responses data
 error.as.directed=Please complete this interaction as directed.
 error.as.directed.kprim=Please complete this interaction as directed.
+error.assessment.item=The file cannot be interpreted. It seems corrupted or with the wrong format.
 error.choice=You must select one of the following options
 error.double=Need to be a double
 error.input.choice.max=You must select at the most {0} choices.
-- 
GitLab