diff --git a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java index 089e2fcd7eddc54581f6f6fc52f32096602c515b..bd0f1bb2c8a0d87e0dadf1dbd18e40416dc3d4bb 100644 --- a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java +++ b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java @@ -105,10 +105,8 @@ public class QTI12AssessmentStatisticsController extends BasicController impleme printLink = LinkFactory.createToolLink("print" + CodeHelper.getRAMUniqueID(), translate("print"), this); printLink.setIconLeftCSS("o_icon o_icon_print o_icon-lg"); printLink.setPopup(new LinkPopupSettings(680, 500, "qti-stats")); - stackPanel.addTool(printLink, Align.right); - + downloadRawLink = LinkFactory.createToolLink("download" + CodeHelper.getRAMUniqueID(), translate("download.raw.data"), this); - stackPanel.addTool(downloadRawLink, Align.right); } else { printLink = null; downloadRawLink = LinkFactory.createLink("download.raw.data", mainVC, this); diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java index f9c3c3bfc4d2ff3b81f77cde717a17ff3c4bf1a4..ec4398e7519ee80584376f951ab60945dd8869ff 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java @@ -58,6 +58,7 @@ public class AssessmentEntryOutcomesListener implements OutcomesListener { private final boolean authorMode; private final boolean needManualCorrection; + private AtomicBoolean incrementAttempts = new AtomicBoolean(true); private AtomicBoolean start = new AtomicBoolean(true); private AtomicBoolean close = new AtomicBoolean(true); @@ -140,6 +141,11 @@ public class AssessmentEntryOutcomesListener implements OutcomesListener { assessmentEntry.setPassed(submittedPass); assessmentEntry.setCompletion(completion); assessmentEntry.setAssessmentId(assessmentId); + if(incrementAttempts.getAndSet(false)) { + int currentAttempts = assessmentEntry.getAttempts() == null ? 0 : assessmentEntry.getAttempts().intValue(); + assessmentEntry.setAttempts(currentAttempts + 1); + } + assessmentEntry = assessmentService.updateAssessmentEntry(assessmentEntry); boolean firstClose = close.getAndSet(false);