Skip to content

Instantly share code, notes, and snippets.

@criedel
Created August 16, 2012 20:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save criedel/3373589 to your computer and use it in GitHub Desktop.
Save criedel/3373589 to your computer and use it in GitHub Desktop.
Tapestry 5 - Twitter Button
import org.apache.tapestry5.BindingConstants;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;
public class TwitterButton {
@Inject
private JavaScriptSupport javaScriptSupport;
@Parameter
private String url;
@Parameter(defaultPrefix = BindingConstants.LITERAL)
private String message;
@Property(write = false)
@Parameter(defaultPrefix = BindingConstants.LITERAL, value = "false")
private boolean follow;
void afterRender() {
javaScriptSupport.addInitializerCall("twitterButton", new JSONObject());
}
public String getIframeURL() {
return String.format("//platform.twitter.com/widgets/tweet_button.html?url=%s&text=%s&via=foundd&count=none&size=large", url, message);
}
}
// depending on the JS integration you choose, this might differ (jQuery ahead)
$.extend(Tapestry.Initializer, {
twitterButton : function(spec) {
$.ajax({ url: 'http://platform.twitter.com/widgets.js', dataType: 'script', cache:true});
}
};
<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter">
<div class="socialShareButton">
<t:if t:test="follow">
<a href="https://twitter.com/foundd" class="twitter-follow-button" data-show-count="false" data-show-screen-name="false">Follow @foundd</a>
<p:else>
<iframe allowtransparency="true" frameborder="0" scrolling="no"
src="${iframeURL}"
style="width:56px; height:20px;"></iframe>
</p:else>
</t:if>
</div>
</t:container>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment