Author: jkuhnert
Date: Mon May 28 12:31:02 2007
New Revision: 542302
URL: http://svn.apache.org/viewvc?view=rev&rev=542302
Log:
Resolves TAPESTRY-1245. Moved LinkSubmit javascript logic to rely on a
dojo.event.connect mechanism instead.
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.script
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.java?view=diff&rev=542302&r1=542301&r2=542302
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.java
Mon May 28 12:31:02 2007
@@ -14,18 +14,13 @@
package org.apache.tapestry.form;
+import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.tapestry.*;
+import org.apache.tapestry.util.ScriptUtils;
+
import java.util.HashMap;
import java.util.Map;
-import org.apache.hivemind.ApplicationRuntimeException;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.IScript;
-import org.apache.tapestry.PageRenderSupport;
-import org.apache.tapestry.TapestryUtils;
-
/**
* Implements a component that submits its enclosing form via a JavaScript
link. [ <a
* href="../../../../../ComponentReference/LinkSubmit.html">Component
Reference </a>]
@@ -69,21 +64,23 @@
if (!disabled)
{
PageRenderSupport pageRenderSupport =
TapestryUtils.getPageRenderSupport(cycle, this);
-
- Map symbols = new HashMap();
- symbols.put("form", form);
- symbols.put("name", name);
-
- getScript().execute(this, cycle, pageRenderSupport, symbols);
writer.begin("a");
- writer.attribute("href", (String)symbols.get("href"));
+ writer.attribute("href", "#");
renderIdAttribute(writer, cycle);
renderInformalParameters(writer, cycle);
renderSubmitBindings(writer, cycle);
+
+ Map symbols = new HashMap();
+ symbols.put("form", form);
+ symbols.put("name", name);
+ symbols.put("component", this);
+ symbols.put("functionName", ScriptUtils.functionHash("onclick" +
this.hashCode()));
+
+ getScript().execute(this, cycle, pageRenderSupport, symbols);
}
renderBody(writer, cycle);
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.script
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.script?view=diff&rev=542302&r1=542301&r2=542302
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.script
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/LinkSubmit.script
Mon May 28 12:31:02 2007
@@ -16,15 +16,23 @@
-->
<!DOCTYPE script PUBLIC
- "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
- "http://tapestry.apache.org/dtd/Script_3_0.dtd">
+ "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
+ "http://tapestry.apache.org/dtd/Script_3_0.dtd">
<script>
+ <input-symbol key="name" required="yes" />
+ <input-symbol key="form" required="yes" />
+ <input-symbol key="component" required="yes" />
+ <input-symbol key="functionName" required="yes" />
-<input-symbol key="name" required="yes" />
-<input-symbol key="form" required="yes" />
-
-<let key="href">
-javascript:tapestry.form.submit('${form.clientId}','${name}');
-</let>
+ <body>
+ <unique>
+ dojo.require("tapestry.event");
+ </unique>
+ </body>
+ <initialization>
+ tapestry.cleanConnect(dojo.byId("${component.clientId}"), "onclick",
"linkSubmit${functionName}");
+
tapestry.linkSubmit${functionName}=function(e){tapestry.form.submit('${form.clientId}',
'${name}');}
+ dojo.event.connect(dojo.byId("${component.clientId}"), "onclick",
tapestry, "linkSubmit${functionName}");
+ </initialization>
</script>
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java?view=diff&rev=542302&r1=542301&r2=542302
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/LinkSubmitTest.java
Mon May 28 12:31:02 2007
@@ -14,27 +14,16 @@
package org.apache.tapestry.form;
-import static org.easymock.EasyMock.expect;
-
-import java.util.Map;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
import org.apache.hivemind.Resource;
-import org.apache.tapestry.BaseComponentTestCase;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.IScript;
-import org.apache.tapestry.IScriptProcessor;
-import org.apache.tapestry.PageRenderSupport;
-import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.*;
import org.apache.tapestry.valid.IValidationDelegate;
+import static org.easymock.EasyMock.expect;
import org.testng.annotations.Test;
+import java.util.Map;
+
/**
* Tests for [EMAIL PROTECTED] org.apache.tapestry.form.LinkSubmit}
*
@@ -72,7 +61,7 @@
}
- public void testRenderNormal()
+ public void test_Render_Normal()
{
IMarkupWriter writer = newBufferWriter();
IRequestCycle cycle = newCycle();
@@ -81,9 +70,8 @@
IForm form = newForm();
- LinkSubmit linkSubmit = newInstance(LinkSubmit.class, new Object[]
- { "form", form, "name", "fred_1", "script", script,
- "id", "fred_id", "clientId", "fred_1", "submitType", "submit" });
+ LinkSubmit linkSubmit = newInstance(LinkSubmit.class, "form", form,
"name", "fred_1", "script", script,
+ "id", "fred_id", "clientId",
"fred_1", "submitType", "submit");
linkSubmit.addBody(newBody());
@@ -97,18 +85,17 @@
verify();
- assertBuffer("<a href=\"HREF\" id=\"fred_1\">BODY</a>");
+ assertBuffer("<a href=\"#\" id=\"fred_1\">BODY</a>");
}
- public void testRenderDisabled()
+ public void test_Render_Disabled()
{
IMarkupWriter writer = newBufferWriter();
IRequestCycle cycle = newCycle();
IForm form = newForm();
- LinkSubmit linkSubmit = newInstance(LinkSubmit.class, new Object[]
- { "disabled", Boolean.TRUE, "form", form, "name", "fred_1",
"idParameter", "fred_id" });
+ LinkSubmit linkSubmit = newInstance(LinkSubmit.class, "disabled",
Boolean.TRUE, "form", form, "name", "fred_1", "idParameter", "fred_id");
linkSubmit.addBody(newBody());
trainResponseBuilder(cycle, writer);
@@ -122,7 +109,7 @@
assertBuffer("BODY");
}
- public void testPrepareNormal()
+ public void test_Prepare_Normal()
{
IRequestCycle cycle = newCycle();
@@ -139,7 +126,7 @@
verify();
}
- public void testPrepareConflict()
+ public void test_Prepare_Conflict()
{
IRequestCycle cycle = newCycle();
IPage page = newPage("MyPage");
@@ -151,8 +138,7 @@
trainGetIdPath(page, null);
- LinkSubmit linkSubmit = newInstance(LinkSubmit.class, new Object[]
- { "id", "fred", "page", page, "container", page, "location", floc });
+ LinkSubmit linkSubmit = newInstance(LinkSubmit.class, "id", "fred",
"page", page, "container", page, "location", floc);
replay();
@@ -173,7 +159,7 @@
verify();
}
- public void testCleanupAfterRender()
+ public void test_Cleanup_After_Render()
{
IRequestCycle cycle = newCycle();
@@ -188,7 +174,7 @@
verify();
}
- public void testIsClicked()
+ public void test_Is_Clicked()
{
IRequestCycle cycle = newCycle();
@@ -203,7 +189,7 @@
verify();
}
- public void testIsNotClicked()
+ public void test_Is_Not_Clicked()
{
IRequestCycle cycle = newCycle();
@@ -218,7 +204,7 @@
verify();
}
- public void testRewind()
+ public void test_Rewind()
{
IMarkupWriter writer = newWriter();
IRequestCycle cycle = newCycle();
@@ -226,8 +212,7 @@
IForm form = newForm();
IValidationDelegate delegate = newDelegate();
- LinkSubmit linkSubmit = newInstance(LinkSubmit.class, new Object[]
- { "name", "fred", "form", form });
+ LinkSubmit linkSubmit = newInstance(LinkSubmit.class, "name", "fred",
"form", form);
linkSubmit.addBody(body);
trainGetForm(cycle, form);