diff --git a/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java b/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java index a14da32762a958d186bcf4d4a94e1f8a94e8590f..f8d705d36b4b7cf9496d46a4e404e400169a65d2 100644 --- a/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java +++ b/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java @@ -41,6 +41,8 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.iframe.DeliveryOptions; +import org.olat.core.gui.control.generic.messages.MessageController; +import org.olat.core.gui.control.generic.messages.MessageUIFactory; import org.olat.core.logging.AssertException; import org.olat.core.util.CodeHelper; import org.olat.core.util.Formatter; @@ -208,7 +210,9 @@ public class ScormRunController extends BasicController implements ScormAPICallb } } else if (source == chooseScormRunMode) { doLaunch(ureq, true); - scormDispC.activate(); + if(scormDispC != null) { + scormDispC.activate(); + } } } @@ -244,6 +248,13 @@ public class ScormRunController extends BasicController implements ScormAPICallb startPage.contextPut("isassessable", Boolean.valueOf(isAssessable)); main.setContent(startPage); } + + private void doSetMissingResourcesWarning(UserRequest ureq) { + String text = translate("error.cprepoentrymissing.user"); + MessageController missingCtrl = MessageUIFactory.createWarnMessage(ureq, getWindowControl(), null, text); + listenTo(missingCtrl); + main.setContent(missingCtrl.getInitialComponent()); + } private void doLaunch(UserRequest ureq, boolean doActivate) { ureq.getUserSession().getSingleUserEventCenter() @@ -254,16 +265,21 @@ public class ScormRunController extends BasicController implements ScormAPICallb // instance // of this controller. // need to be strict when launching -> "true" - RepositoryEntry re = ScormEditController.getScormCPReference(config, true); - if (re == null) - throw new AssertException("configurationkey 'CONFIG_KEY_REPOSITORY_SOFTKEY' of BB CP was missing"); + RepositoryEntry re = ScormEditController.getScormCPReference(config, false); + if (re == null) { + doSetMissingResourcesWarning(ureq); + return; + } cpRoot = FileResourceManager.getInstance().unzipFileResource(re.getOlatResource()); addLoggingResourceable(LoggingResourceable.wrapScormRepositoryEntry(re)); // should always exist because references cannot be deleted as long // as // nodes reference them - if (cpRoot == null) - throw new AssertException("file of repository entry " + re.getKey() + " was missing"); + if (cpRoot == null) { + doSetMissingResourcesWarning(ureq); + logError("File of repository entry " + re.getKey() + " was missing", null); + return; + } } // else cpRoot is already set (save some db access if the user opens / // closes / reopens the cp from the same CPRuncontroller instance) diff --git a/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_de.properties index 1108b6dd64fd878f08b11fbf228721748e869320..79b172b0a36de745ac9bc892c743b8995dfa5dcc 100644 --- a/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_de.properties @@ -36,7 +36,8 @@ command.showscorm=Lernmodul starten condition.accessibility.title=Zugang cutvalue.label=Notwendige Punktzahl f\u00FCr 'bestanden' cutvalue.validation=Geben Sie eine Ganzzahl ein -error.cprepoentrymissing=Der SCORM-Lerninhalt, den Sie anzeigen m\u00F6chten, wurde in der Zwischenzeit in der Ablage der Lernressourcen gel\u00F6scht +error.cprepoentrymissing=Der SCORM-Lerninhalt, den Sie anzeigen m\u00F6chten, wurde in der Zwischenzeit in der Ablage der Lernressourcen gel\u00F6scht +error.cprepoentrymissing.user=Der SCORM-Lerninhalt den Sie anzeigen m\u00F6chten existiert nicht mehr. Bitte kontaktieren Sie ihren Kursbetreuer. error.launch=SCORM-Lerninhalt konnte nicht gestartet werden. error.noreference.long=F\u00FCr "{0}" muss in der Konfiguration ein SCORM-Lerninhalt im Tab "Lerninhalt" ausgew\u00E4hlt werden. error.noreference.short=Es ist noch kein SCORM-Lerninhalt f\u00FCr "{0}" ausgew\u00E4hlt. diff --git a/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_en.properties index 3d167a7615065fcb94522063869d02e07d5acd50..949a48036f2f4d2c23b6bad3c2396f09c45b6384 100644 --- a/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/scorm/_i18n/LocalStrings_en.properties @@ -43,6 +43,7 @@ condition.accessibility.title=Access cutvalue.label=Score needed to pass cutvalue.validation=Please enter an integer error.cprepoentrymissing=This SCORM learning content was deleted in the meantime within the storage folder of learning resources. +error.cprepoentrymissing.user=The SCORM learning content you were trying to access doesn't exist anymore. Please contact your course coach. error.launch=Unable to start SCORM learning content. error.noreference.long=For "{0}" you have to select a SCORM learning content in the tab "Learning content" within the configuration section. error.noreference.short=No SCORM learning content selected for "{0}" yet.