Author: nbelaevski
Date: 2007-10-29 19:37:45 -0400 (Mon, 29 Oct 2007)
New Revision: 3605
Modified:
trunk/ui/effect/src/main/java/org/richfaces/renderkit/EffectRendererBase.java
trunk/ui/effect/src/main/templates/effect.jspx
Log:
http://jira.jboss.com/jira/browse/RF-1265
Modified: trunk/ui/effect/src/main/java/org/richfaces/renderkit/EffectRendererBase.java
===================================================================
---
trunk/ui/effect/src/main/java/org/richfaces/renderkit/EffectRendererBase.java 2007-10-29
19:18:19 UTC (rev 3604)
+++
trunk/ui/effect/src/main/java/org/richfaces/renderkit/EffectRendererBase.java 2007-10-29
23:37:45 UTC (rev 3605)
@@ -9,6 +9,7 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
+import org.ajax4jsf.javascript.JSEncoder;
import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.richfaces.component.UIEffect;
import org.richfaces.json.JSONTokener;
@@ -129,4 +130,21 @@
}
}
}
+
+ public String escapeJavaScript(Object s) {
+ if (s != null) {
+ JSEncoder encoder = new JSEncoder();
+ StringBuffer result = new StringBuffer();
+ String string = s.toString();
+ int length = string.length();
+
+ for (int i = 0; i < length; i++) {
+ result.append(encoder.encode(string.charAt(i)));
+ }
+
+ return result.toString();
+ } else {
+ return null;
+ }
+ }
}
Modified: trunk/ui/effect/src/main/templates/effect.jspx
===================================================================
--- trunk/ui/effect/src/main/templates/effect.jspx 2007-10-29 19:18:19 UTC (rev 3604)
+++ trunk/ui/effect/src/main/templates/effect.jspx 2007-10-29 23:37:45 UTC (rev 3605)
@@ -86,8 +86,21 @@
var pm = Object.extend( Object.extend(#{typePart},#{forPart}), #{targetPart} );
/* pm.id can have a special meaning, let's check */
//pm.id = #{this:convertElementParameter(pmId)};
-if (typeof #{attachObj} == 'object') {pm.attachId= #{attachObj};if
(#{targetObj}=='') pm.targetId=#{attachObj}; };
-if (typeof #{targetObj} == 'object') pm.targetId= #{targetObj};
+var attachObj;
+try {
+ attachObj = eval('#{this:escapeJavaScript(attachObj)}');
+} catch (e) {
+}
+
+var targetObj;
+try {
+ targetObj = eval('#{this:escapeJavaScript(targetObj)}');
+} catch (e) {
+}
+
+if (typeof attachObj == 'object') {pm.attachId = attachObj;if (targetObj ==
'') pm.targetId = attachObj; };
+if (typeof targetObj == 'object') pm.targetId = targetObj;
+
pm = Object.extend(pm, #{params});
var ename = Richfaces.effectEventOnOut('#{event}');
var bindedFunction = function(event){ return Richfaces.processEffect(this);
}.bindAsEventListener(pm);