HatenaBookmarkPanel
Wicketでhatena-bookmark-anywhereを使えるようにしてみた。
まだ勉強中なのでがんがん書いてみる。
まずJavaのソース
public class HatenaBookmarkPanel extends Panel { private static final long serialVersionUID = 1L; private static ResourceReference JAVASCRIPT = new JavascriptResourceReference( HatenaBookmarkPanel.class, "hatena-bookmark-anywhere-0-1.js"); /** ブックマークのURL */ private String targetUrl = null; /** 表示最大数 */ private Integer limit = null; /** スタイルをCSSで指定するか */ private Boolean useStyle = null; /** コメントの書いてないブクマを表示するか */ private Boolean isCollapse = null; public HatenaBookmarkPanel(String id, String url, final Integer limit, Boolean useStyle, Boolean isCollapse) { super(id); this.targetUrl = url; this.limit = limit; this.useStyle = useStyle; this.isCollapse = isCollapse; add(new WebMarkupContainer((getContentId()))); add(new HatenaBookmarkBehavior()); add(HeaderContributor.forJavaScript(JAVASCRIPT)); } public String getContentId() { return "content"; } class HatenaBookmarkBehavior extends AbstractBehavior { private static final long serialVersionUID = 1L; public void renderHead(IHeaderResponse response) { super.renderHead(response); StringBuffer buffer = new StringBuffer(); if(targetUrl != null) { buffer.append("var hatena_bookmark_anywhere_url = '" + targetUrl + "';"); } if(limit != null) { buffer.append("var hatena_bookmark_anywhere_limit = " + limit + ";"); } if(useStyle != null) { buffer.append("var hatena_bookmark_anywhere_style = " + useStyle + ";"); } if(isCollapse != null) { buffer.append("var hatena_bookmark_anywhere_collapse = " + isCollapse + ";"); } response.renderJavascript(buffer.toString(), null); } } }
jsを読み込んで、変更可能なパラメータを設定できるようにしているだけ。
それに対応するPanelのHTML以下のように。
<?xml version="1.0" encoding="UTF-8" ?> <html xmlns:wicket> <body> <wicket:panel> <div wicket:id="content" id="hatena_bookmark_anywhere" /> </wicket:panel> </body> </html>
あとは使いたいPageクラスで以下のようにaddして
add(new HatenaBookmarkPanel("hatenaPanel", "http://hogehoge", 5, null, null));
HTMLは表示させたいところにwicket:idをふるだけ
<div wicket:id="hatenaPanel" />
なにがすごいって一度書いちゃえば利用する人はjsなんて知らなくても HatenaBookmarkPanel を addしてHTMLにidふればよくて、それだけでサイトのはてブコメントが表示されちゃうってこと。
すてきだ。
アルコール
最近適量でとめられるようになった。
昔は記憶なくなるまで飲むのがデフォルトだったけど。
大人になりました。