diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java index 1cc3f9909e845d3b52589da2e37b597885c6087e..4f63e7d6cd5795a6086ec73f5254d87f9b8b2e17 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java @@ -728,13 +728,15 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent private void renderEndAttemptInteraction(AssessmentRenderer renderer, StringOutput sb, EndAttemptInteraction interaction, ItemSessionState itemSessionState, AssessmentObjectComponent component, URLBuilder ubu, Translator translator) { - - String responseUniqueId = component.getResponseUniqueIdentifier(itemSessionState, interaction); - sb.append("<input name=\"qtiworks_presented_").append(responseUniqueId).append("\" type=\"hidden\" value=\"1\"/>"); + boolean ended = component.isItemSessionEnded(itemSessionState, renderer.isSolutionMode()); AssessmentObjectFormItem item = component.getQtiItem(); + String responseUniqueId = component.getResponseUniqueIdentifier(itemSessionState, interaction); String id = "qtiworks_response_".concat(responseUniqueId); - + if(!ended) { + sb.append("<input name=\"qtiworks_presented_").append(responseUniqueId).append("\" type=\"hidden\" value=\"1\"/>"); + } + FormItem endAttemptButton = item.getFormComponent(id); if(endAttemptButton == null) { String title = StringHelper.escapeHtml(interaction.getTitle()); @@ -746,8 +748,10 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent } item.addFormItem(endAttemptButton); } + endAttemptButton.setEnabled(!ended); endAttemptButton.getComponent().getHTMLRendererSingleton() - .render(renderer.getRenderer(), sb, endAttemptButton.getComponent(), ubu, translator, new RenderResult(), null); + .render(renderer.getRenderer(), sb, endAttemptButton.getComponent(), ubu, translator, new RenderResult(), null); + } private void renderPositionObjectStage(AssessmentRenderer renderer, StringOutput sb, PositionObjectStage positionObjectStage,