From 16308813f0eb0b534bad12d8bc82928a87894af0 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 19 Oct 2015 09:35:30 +0200
Subject: [PATCH] OO-1728: show a message instead of a red screen if the test
 in the course element is not defined

---
 .../nodes/iq/IQControllerCreatorOlat.java     | 30 ++++++++++++-------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/olat/course/nodes/iq/IQControllerCreatorOlat.java b/src/main/java/org/olat/course/nodes/iq/IQControllerCreatorOlat.java
index 84d29418f8c..175e6addccc 100644
--- a/src/main/java/org/olat/course/nodes/iq/IQControllerCreatorOlat.java
+++ b/src/main/java/org/olat/course/nodes/iq/IQControllerCreatorOlat.java
@@ -118,8 +118,8 @@ public class IQControllerCreatorOlat implements IQControllerCreator {
 		Controller controller;
 		// Do not allow guests to start tests
 		Roles roles = ureq.getUserSession().getRoles();
-		Translator trans = Util.createPackageTranslator(IQTESTCourseNode.class, ureq.getLocale());
 		if (roles.isGuestOnly()) {
+			Translator trans = Util.createPackageTranslator(IQTESTCourseNode.class, ureq.getLocale());
 			String title = trans.translate("guestnoaccess.title");
 			String message = trans.translate("guestnoaccess.message");
 			controller = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
@@ -132,17 +132,25 @@ public class IQControllerCreatorOlat implements IQControllerCreator {
 				AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
 				IQSecurityCallback sec = new CourseIQSecurityCallback(courseNode, am, ureq.getIdentity());
 				RepositoryEntry repositoryEntry = courseNode.getReferencedRepositoryEntry();
-				OLATResourceable ores = repositoryEntry.getOlatResource();
-				Long resId = ores.getResourceableId();
-				TestFileResource fr = new TestFileResource();
-				fr.overrideResourceableId(resId);
-				if(!CoordinatorManager.getInstance().getCoordinator().getLocker().isLocked(fr, null)) {
-					//QTI1
-					controller = new IQRunController(userCourseEnv, courseNode.getModuleConfiguration(), sec, ureq, wControl, courseNode);
-				} else {
-					String title = trans.translate("editor.lock.title");
-					String message = trans.translate("editor.lock.message");
+				if(repositoryEntry == null) {
+					Translator trans = Util.createPackageTranslator(IQControllerCreatorOlat.class, ureq.getLocale());
+					String title = trans.translate("error.test.undefined.short", new String[]{ courseNode.getShortTitle() });
+					String message = trans.translate("error.test.undefined.long", new String[]{ courseNode.getShortTitle() });
 					controller = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
+				} else {
+					OLATResourceable ores = repositoryEntry.getOlatResource();
+					Long resId = ores.getResourceableId();
+					TestFileResource fr = new TestFileResource();
+					fr.overrideResourceableId(resId);
+					if(!CoordinatorManager.getInstance().getCoordinator().getLocker().isLocked(fr, null)) {
+						//QTI1
+						controller = new IQRunController(userCourseEnv, courseNode.getModuleConfiguration(), sec, ureq, wControl, courseNode);
+					} else {
+						Translator trans = Util.createPackageTranslator(IQTESTCourseNode.class, ureq.getLocale());
+						String title = trans.translate("editor.lock.title");
+						String message = trans.translate("editor.lock.message");
+						controller = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
+					}
 				}
 			}
 		}
-- 
GitLab