From 33ab131f0abcd521754af50aafcf67c3b0ddc849 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 29 Aug 2016 09:20:35 +0200
Subject: [PATCH] OO-1593: fix return by essay / extendedTextInteraction

---
 .../ims/qti21/ui/AssessmentTestDisplayController.java    | 1 -
 .../ui/components/AssessmentObjectComponentRenderer.java | 9 ++++++++-
 .../qti21/ui/components/AssessmentRenderFunctions.java   | 4 +++-
 3 files changed, 11 insertions(+), 3 deletions(-)

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 cf758f12027..1c372f7a7bf 100644
--- a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java
@@ -1263,7 +1263,6 @@ public class AssessmentTestDisplayController extends BasicController implements
 		@Override
 		protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 			mainForm.setMultipartEnabled(true);
-			mainForm.setOnSubmitCallback("QtiWorksRendering.maySubmit();");
 
 			FormSubmit submit = uifactory.addFormSubmitButton("submit", formLayout);
 			submit.setElementCssClass("o_sel_assessment_item_submit");
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 65b64235fbb..0ece50676f8 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
@@ -967,8 +967,9 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent
 		ResponseDeclaration responseDeclaration = getResponseDeclaration(assessmentItem, interaction.getResponseIdentifier());
 		String checkJavascript = checkJavaScript(responseDeclaration, interaction.getPatternMask());
 		if(StringHelper.containsNonWhitespace(checkJavascript)) {
-			sb.append(" onchange=\"").append(checkJavascript).append("\">");
+			sb.append(" onchange=\"").append(checkJavascript).append("\"");
 		}
+		sb.append(">");
 		
 		if(renderer.isSolutionMode()) {
 			String placeholder = interaction.getPlaceholderText();
@@ -980,6 +981,12 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent
 		}
 		sb.append("</textarea>");
 		FormJSHelper.appendFlexiFormDirty(sb, component.getQtiItem().getRootForm(), responseUniqueId);
+		sb.append(FormJSHelper.getJSStartWithVarDeclaration(responseUniqueId))
+		//plain textAreas should not propagate the keypress "enter" (keynum = 13) as this would submit the form
+		  .append(responseUniqueId).append(".on('keypress', function(event, target){if (13 == event.keyCode) {event.stopPropagation()} })")
+		  .append(FormJSHelper.getJSEnd());
+	
+		
 	}
 	
 	protected abstract void renderPrintedVariable(AssessmentRenderer renderer, StringOutput sb,
diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java
index 1565f28ca8e..caa34803e7c 100644
--- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java
+++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java
@@ -505,7 +505,9 @@ public class AssessmentRenderFunctions {
 			checks.add(patternMask);
 		}
 
-		if(checks == null || checks.isEmpty()) return "()";
+		if(checks == null || checks.isEmpty()) {
+			return null;
+		}
 		
 		StringBuilder out = new StringBuilder(128);
 		out.append("QtiWorksRendering.validateInput(this");
-- 
GitLab