TAPESTRY-2251 append existing onclick
git-svn-id: https://svn.apache.org/repos/asf/tapestry/tapestry4/trunk@818919 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java b/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java
index 72c6a13..5111963 100644
--- a/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java
+++ b/tapestry-contrib/src/java/org/apache/tapestry/contrib/link/ButtonLinkRenderer.java
@@ -57,15 +57,19 @@
writer.attribute("disabled", "disabled");
}
+ component.renderAdditionalAttributes(writer, cycle);
+
if (!cycle.isRewinding()) {
String url = link.getURL(component.getAnchor(), true);
String target = component.getTarget();
String onclick = (target == null) ? getScript(url) : getScript(url, target);
- writer.attribute("onclick", onclick);
+ if (writer.hasAttribute("onclick")) {
+ writer.appendAttribute("onclick", ";" + onclick);
+ } else {
+ writer.attribute("onclick", onclick);
+ }
}
-
- component.renderAdditionalAttributes(writer, cycle);
IMarkupWriter wrappedWriter = writer.getNestedWriter();
diff --git a/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java b/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java
index 6001cfe..7940538 100644
--- a/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java
+++ b/tapestry-contrib/src/test/org/apache/tapestry/contrib/link/TestButtonLinkRenderer.java
@@ -30,7 +30,7 @@
"class", "info");
assertLinkRenderer(linkRenderer, linkComponent,
- "<button type=\"button\" onclick=\"window.location='my.site'\" class=\"info\"></button>",
+ "<button type=\"button\" class=\"info\" onclick=\"window.location='my.site'\"></button>",
"");
}
@@ -41,11 +41,7 @@
"onclick", "alert('hi')");
assertLinkRenderer(linkRenderer, linkComponent,
- "<button type=\"button\" onclick=\"alert('hi')\"></button>",
- // TODO: correct is
- // "<button type=\"button\" onclick=\"window.location='my.site'\"></button>"
- // or even better (TAPESTRY-2251)
- // "<button type=\"button\" onclick=\"alert('hi');window.location='my.site'\"></button>"
+ "<button type=\"button\" onclick=\"alert('hi') ;window.location='my.site'\"></button>",
"");
}