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);


Reply via email to