From 0053cc1b11c23a91bd02d6cd8b499a79a8b17986 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 27 Apr 2012 17:25:00 +0200
Subject: [PATCH] OO-209: make the javascript function which append a listener
 to keypress more robust, handle severals forms with the same names (tested on
 Safari, IE 7, IE 8, IE 9)

---
 .../form/flexible/impl/FormJSHelper.java      | 27 ++++++++++++-------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java
index b568514f830..04fd9bf6211 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java
@@ -28,8 +28,6 @@ package org.olat.core.gui.components.form.flexible.impl;
 import java.util.Iterator;
 import java.util.Set;
 
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.olat.core.gui.render.StringOutput;
@@ -37,7 +35,6 @@ import org.olat.core.logging.OLATRuntimeException;
 
 /**
  * Description:<br>
- * TODO: patrickb Class Description for FormJSHelper
  * 
  * <P>
  * Initial Date: 11.01.2007 <br>
@@ -104,15 +101,15 @@ public class FormJSHelper {
 	 * @param acceptedInstructions
 	 */
 	public static void appendRenderInstructions(StringOutput sb,
-			String jsonRenderInstruction, Set acceptedInstructions) {
+			String jsonRenderInstruction, Set<String> acceptedInstructions) {
 		JSONObject instr;
 		try {
 			instr = new JSONObject(jsonRenderInstruction);
 			sb.append(" ");// ensure blank before appending instructions -> '
 							// '...
-			for (Iterator iter = acceptedInstructions.iterator(); iter
+			for (Iterator<String> iter = acceptedInstructions.iterator(); iter
 					.hasNext();) {
-				String accepted = (String) iter.next();
+				String accepted = iter.next();
 				if (instr.get(accepted) != null) {
 					// generates i.e. 'class=\"thevalueclass\" '
 					sb.append(accepted);// accepted key is also use as attribute
@@ -243,10 +240,20 @@ public class FormJSHelper {
 	 */
 	public static String submitOnKeypressEnter(String formName) {
 		StringBuilder sb = new StringBuilder();
-		sb.append(getJSStart());
-		sb.append("Ext.get(document.forms['").append(formName).append("']).on('keypress', function(event) {if (13 == event.keyCode) {if (document.forms['").append(formName).append("'].onsubmit()) {document.forms['").append(formName).append("'].submit();}}})");
-		sb.append(getJSEnd());
+		sb.append(getJSStart())
+		  .append("var myExtForm = Ext.get(document.forms['").append(formName).append("']);")
+		  .append("if(myExtForm) {")
+		  .append(" myExtForm.on('keypress', function(event) {if (13 == event.keyCode) {if (this.onsubmit()) {this.submit();}}}, myExtForm.dom);")
+		  .append("} else {")
+		  .append(" Ext.each(document.forms['").append(formName).append("'], function(formEl) {")
+		  .append("  Ext.get(formEl).on('keypress', function(event) {")
+		  .append("   if (13 == event.keyCode) {")
+		  .append("    if (this.onsubmit && this.onsubmit()) { this.submit(); }")
+		  .append("   }")
+		  .append("  }, formEl)")
+		  .append(" });")
+		  .append("}")
+		  .append(getJSEnd());
 		return sb.toString();
 	}
-	
 }
-- 
GitLab