diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java index ec41d7ecec83d04b665311b86f016815634475d2..145fcaf5dd04c6a7b7847cff43b7b32e73a3fb3a 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java @@ -169,35 +169,45 @@ public class AssessmentResultController extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { if(formLayout instanceof FormLayoutContainer) { FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; - layoutCont.contextPut("title", new Boolean(withTitle)); - layoutCont.contextPut("print", new Boolean(withPrint)); - layoutCont.contextPut("printCommand", Boolean.FALSE); - if(withPrint) { - layoutCont.contextPut("winid", "w" + layoutCont.getFormItemComponent().getDispatchID()); - layoutCont.getFormItemComponent().addListener(this); - } - - if(assessedIdentityInfosCtrl != null) { - layoutCont.put("assessedIdentityInfos", assessedIdentityInfosCtrl.getInitialComponent()); - } else if(anonym) { - layoutCont.contextPut("anonym", Boolean.TRUE); - } - - Results results = new Results(false, "o_qtiassessment_icon", options.isMetadata()); - results.setSessionState(testSessionState); - - layoutCont.contextPut("testResults", results); - TestResult testResult = assessmentResult.getTestResult(); - if(testResult != null) { - extractOutcomeVariable(testResult.getItemVariables(), results); - } - - if(signatureMapperUri != null) { - String signatureUrl = signatureMapperUri + "/assessmentResultSignature.xml"; - layoutCont.contextPut("signatureUrl", signatureUrl); + if(testSessionState == null || assessmentResult == null) { + // An author has deleted the test session before the user end it. + // It can happen with time limited tests. + Results results = new Results(false, "o_qtiassessment_icon", false); + layoutCont.contextPut("testResults", results); + layoutCont.contextPut("itemResults", new ArrayList<>()); + layoutCont.contextPut("testSessionNotFound", Boolean.TRUE); + } else { + layoutCont.contextPut("title", new Boolean(withTitle)); + layoutCont.contextPut("print", new Boolean(withPrint)); + layoutCont.contextPut("printCommand", Boolean.FALSE); + layoutCont.contextPut("testSessionNotFound", Boolean.FALSE); + if(withPrint) { + layoutCont.contextPut("winid", "w" + layoutCont.getFormItemComponent().getDispatchID()); + layoutCont.getFormItemComponent().addListener(this); + } + + if(assessedIdentityInfosCtrl != null) { + layoutCont.put("assessedIdentityInfos", assessedIdentityInfosCtrl.getInitialComponent()); + } else if(anonym) { + layoutCont.contextPut("anonym", Boolean.TRUE); + } + + Results results = new Results(false, "o_qtiassessment_icon", options.isMetadata()); + results.setSessionState(testSessionState); + + layoutCont.contextPut("testResults", results); + TestResult testResult = assessmentResult.getTestResult(); + if(testResult != null) { + extractOutcomeVariable(testResult.getItemVariables(), results); + } + + if(signatureMapperUri != null) { + String signatureUrl = signatureMapperUri + "/assessmentResultSignature.xml"; + layoutCont.contextPut("signatureUrl", signatureUrl); + } + + initFormSections(layoutCont); } - - initFormSections(layoutCont); } } diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html index 6792bdc86f492045bae1ffffcafd80efa2e09bb2..d26bd43f3455bdf3fed7f2d45d7bc2f547322648 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html +++ b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html @@ -23,6 +23,9 @@ #if($r.visible("assessedIdentityInfos")) $r.render("assessedIdentityInfos") #end +#if($r.isNotNull($testSessionNotFound) && $testSessionNotFound) +<div class="o_warning">$r.translate("assessment.test.session.reseted")</div> +#end #if($testResults.metadataVisible) <div class="panel panel-default o_personal o_sel_results_details"> <div class="panel-heading"> 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 29e046fa1007a3a16fdf9da17623af7adf3686d7..eb62502297f3db6ca3ad77c96b26c6763e5a876e 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 @@ -41,6 +41,7 @@ assessment.test.nextQuestion=N\u00E4chste Frage assessment.test.notReleased=$org.olat.ims.qti\:notReleased assessment.test.open=Offen assessment.test.questionMenu=Menu-Navigation Test +assessment.test.session.reseted=Die Testergebnisse wurde wahrscheinlich von dem Kursadministrator zur\u00FCckgesetzt. assessment.test.suspended=Der Test wurde unterbrochen. assessment.testpart.config=Test part attemptsleft=$org.olat.modules.iq\:attemptsleft 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 9e63b93db66766e1a9fd06559d4ad2fc2108b2bc..a092c45ae50eaa45cad3b0648b4ec553521f76c9 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 @@ -41,6 +41,7 @@ assessment.test.nextQuestion=Next question assessment.test.notReleased=$org.olat.ims.qti\:notReleased assessment.test.open=Open assessment.test.questionMenu=Test question menu +assessment.test.session.reseted=The results of the test was probably reseted by a course administrator. assessment.test.suspended=The test has been suspended. assessment.testpart.config=Test part attemptsleft=$org.olat.modules.iq\:attemptsleft