diff --git a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java index 1eb19866837e3a195166ff330f07434423a9e27b..25cea0126da348d7cf4d81d141770901cf4827d4 100644 --- a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java +++ b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java @@ -328,6 +328,13 @@ public class AuthenticatedDispatcher implements Dispatcher { Window w = windowBackOffice.getWindow(); w.dispatchRequest(ureq, true); // renderOnly } catch (Exception e) { + // try to render something + try { + Window w = windowBackOffice.getWindow(); + w.dispatchRequest(ureq, true); // renderOnly + } catch (Exception e1) { + redirectToDefaultDispatcher(ureq.getHttpReq(), ureq.getHttpResp()); + } log.error("", e); } } diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java index 46c96bd7291b056103fdb246be624b50d9f9190e..182f48efcfb0634153e66b3cddd3b5b866c2aa4e 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java @@ -371,6 +371,23 @@ public class MultipleChoiceAssessmentItemBuilder extends SimpleChoiceAssessmentI ResponseElse responseElse = new ResponseElse(rule); rule.setResponseElse(responseElse); + {//outcome score + SetOutcomeValue scoreOutcome = new SetOutcomeValue(responseElse); + scoreOutcome.setIdentifier(QTI21Constants.SCORE_IDENTIFIER); + responseElse.getResponseRules().add(scoreOutcome); + + Sum sum = new Sum(scoreOutcome); + scoreOutcome.getExpressions().add(sum); + + Variable scoreVar = new Variable(sum); + scoreVar.setIdentifier(QTI21Constants.SCORE_CLX_IDENTIFIER); + sum.getExpressions().add(scoreVar); + + MapResponse mapResponse = new MapResponse(sum); + mapResponse.setIdentifier(choiceInteraction.getResponseIdentifier()); + sum.getExpressions().add(mapResponse); + } + {// outcome feedback SetOutcomeValue incorrectOutcomeValue = new SetOutcomeValue(responseElse); incorrectOutcomeValue.setIdentifier(QTI21Constants.FEEDBACKBASIC_IDENTIFIER); diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java b/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java index 623a2b9019e67f6a7c260cb808b1ceb9b59709a8..486898185610afc6beb4d0bf1da013b6e4ac7f81 100644 --- a/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java +++ b/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java @@ -207,7 +207,8 @@ public class QTI12To21Converter { RubricBlock rubricBlock = assessmentSection.getRubricBlocks().get(0); rubricBlock.getBlocks().clear(); - htmlBuilder.appendHtml(rubricBlock, section.getObjectives()); + String objectives = section.getObjectives(); + htmlBuilder.appendHtml(rubricBlock, prepareContent(objectives)); boolean shuffle = SelectionOrdering.RANDOM.equals(section.getSelection_ordering().getOrderType()); assessmentSection.getOrdering().setShuffle(shuffle); @@ -263,7 +264,7 @@ public class QTI12To21Converter { //collect max score Double maxScore = QtiNodesExtractor.extractMaxScore(assessmentItem); - if(maxScore != null) { + if(maxScore != null && maxScore.doubleValue() > 0.0d) { atomicMaxScore.add(maxScore.doubleValue()); } } diff --git a/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java b/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java index 16a32165b91311d6e3364efb1342a0a9b2907897..458669538c06fdf9667bd3c89762d5a32fba72b1 100755 --- a/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java +++ b/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java @@ -123,7 +123,7 @@ public class EPArtefactPoolRunController extends BasicController implements Acti putInitialPanel(viewComp); } else { - putInitialPanel(new Panel("empty")); + putInitialPanel(createVelocityContainer("portfolio_disabled")); } } @@ -278,16 +278,18 @@ public class EPArtefactPoolRunController extends BasicController implements Acti public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { if(entries == null || entries.isEmpty()) return; - String type = entries.get(0).getOLATResourceable().getResourceableTypeName(); - if("All".equalsIgnoreCase(type)) { - initTPAllView(ureq); - segmentView.select(artefactsLink); - } else if("Browse".equalsIgnoreCase(type)) { - initTPBrowseView(ureq); - segmentView.select(browseLink); - } else if("Search".equalsIgnoreCase(type)) { - initTPFilterView(ureq); - segmentView.select(searchLink); + if(portfolioModule.isEnabled()) { + String type = entries.get(0).getOLATResourceable().getResourceableTypeName(); + if("All".equalsIgnoreCase(type)) { + initTPAllView(ureq); + segmentView.select(artefactsLink); + } else if("Browse".equalsIgnoreCase(type)) { + initTPBrowseView(ureq); + segmentView.select(browseLink); + } else if("Search".equalsIgnoreCase(type)) { + initTPFilterView(ureq); + segmentView.select(searchLink); + } } } diff --git a/src/main/java/org/olat/portfolio/ui/_content/portfolio_disabled.html b/src/main/java/org/olat/portfolio/ui/_content/portfolio_disabled.html new file mode 100644 index 0000000000000000000000000000000000000000..0a9843b8825b3fd75e52d5df3d4ffcf1e3a740e4 --- /dev/null +++ b/src/main/java/org/olat/portfolio/ui/_content/portfolio_disabled.html @@ -0,0 +1 @@ +<div class="o_warning" role="alert"><i class="o_icon o_icon-fw o_icon_important"> </i> $r.translate("warning.portfolio.module.disabled")</div> \ No newline at end of file diff --git a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties index 3e487a67f840f75451c19118cb6baaf6cc0c8b9f..b50130268d6ca82b5c8f5f11782a2197e860e23a 100644 --- a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties @@ -52,6 +52,7 @@ view.mode.table=Tabelle viewTab.all=Artefakte viewTab.browse=Tag-Browser viewTab.search=Suche +warning.portfolio.module.disabled=ePortfolio v1 ist nicht eingeschaltet. wizard.intro=Das Artefakt-Sammelwerkzeug enth\u00E4lt verschiedene Schritte in einem Wizard. Einige der Schritte k\u00F6nnen Sie je nach Bedarf aktivieren oder deaktivieren. wizard.step.copyright=Urheberschaft vom Benutzer best\u00E4tigen lassen wizard.step.reflexion=Reflexion erfassen diff --git a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties index 37629a7eedbc591a5cc7ec1254e7d4958db2658e..d79e891562110d1bd2836a86630f861e0dfa198c 100644 --- a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties @@ -52,6 +52,7 @@ view.mode.table=Table viewTab.all=Artefacts viewTab.browse=Tag browser viewTab.search=Search +warning.portfolio.module.disabled=ePortfolio v1 is disabled. wizard.intro=Within the accumulative artefact tool there are several steps to complete. Some of them are optional. You can completely disable those steps if not needed. wizard.step.copyright=Ask user for copyright wizard.step.reflexion=Collect a reflexion