From 92b52db0399ecf0a1d80644baade74de033628a0 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 25 Sep 2017 21:25:53 +0200 Subject: [PATCH] OO-3039: check that the command match the key of the current test plan's node --- .../ims/qti21/ui/AssessmentTestDisplayController.java | 9 +++++++++ .../ims/qti21/ui/components/AssessmentTestComponent.java | 5 +++++ .../ims/qti21/ui/components/AssessmentTestFormItem.java | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java index 4c57f68c40a..e84ac06760d 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java @@ -880,6 +880,11 @@ public class AssessmentTestDisplayController extends BasicController implements return;// } + String cmd = ureq.getParameter("tmpResponse"); + if(!qtiWorksCtrl.validateResponseIdentifierCommand(cmd, currentItemKey)) { + return;//this is not the right node in the plan + } + final Date timestamp = ureq.getRequestTimestamp(); final Map<Identifier, ResponseData> responseDataMap = new HashMap<>(); @@ -1824,6 +1829,10 @@ public class AssessmentTestDisplayController extends BasicController implements Interaction interaction = qtiEl.getInteractionOfResponseUniqueIdentifier(uniqueId); return interaction == null ? null : interaction.getResponseIdentifier(); } + + protected boolean validateResponseIdentifierCommand(String cmd, TestPlanNodeKey nodeKey) { + return qtiEl.validateCommand(cmd, nodeKey); + } @Override protected void formOK(UserRequest ureq) { diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java index 115abc04fdd..04e1a656305 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java @@ -128,6 +128,11 @@ public class AssessmentTestComponent extends AssessmentObjectComponent { responseIdentifiersMap.put(id, interaction); return id; } + + public boolean validateCommand(String cmd, TestPlanNodeKey tpnk) { + String id = "oo" + (tpnk.toString().replace(":", "_")) + "_"; + return cmd.contains(id); + } @Override public Interaction getInteractionOfResponseUniqueIdentifier(String responseUniqueId) { diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java index 73619c0acbc..45f9b4ff599 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java @@ -41,6 +41,7 @@ import org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent; import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction; import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest; import uk.ac.ed.ph.jqtiplus.running.TestSessionController; +import uk.ac.ed.ph.jqtiplus.state.TestPlanNodeKey; /** * @@ -113,6 +114,10 @@ public class AssessmentTestFormItem extends AssessmentObjectFormItem { public Interaction getInteractionOfResponseUniqueIdentifier(String uniqueId) { return component.getInteractionOfResponseUniqueIdentifier(uniqueId); } + + public boolean validateCommand(String cmd, TestPlanNodeKey nodeKey) { + return component.validateCommand(cmd, nodeKey); + } @Override protected Component getFormItemComponent() { -- GitLab