Confluenceのマクロは管理画面から簡単なものなら登録できる。ただ、もうちょっと踏み込みたいとき。プラグインにしてしまうこともできる。
ここを参考にしつつ。
https://developer.atlassian.com/display/CONFDEV/User+Macro+Module
ちなみに、マクロモジュールとはまた違う。
atlassian-plugin.xml
ここに適当に何か書くだけで簡単なものならJavaコード不要でできてしまうみたい。
なので、管理画面からチマチマと毎回同じマクロを書くくらいだったら、まとめて登録してしまった方が良いよと。
このファイルは
plugin-dir**/src/main/resources/atlassian-plugin.xml
にある。
サンプルとして
<atlassian-plugin name='Hello World Macro' key='confluence.extra.helloworld' pluginsVersion='2'> <plugin-info> <description>Example user macro</description> <vendor name="Atlassian Software Systems" url="http://www.atlassian.com"/> <version>1.0</version> </plugin-info> <user-macro name='helloworld' key='helloworld' hasBody='true' bodyType='raw' outputType='html'> <description>Hello, user macro</description> <template><![CDATA[Hello, $body!]]></template> </user-macro> <!-- more macros... --> </atlassian-plugin>
属性地 | 必須 | 初期値 | 設定可能値 |
---|---|---|---|
hasBody | No | false | true ? {hello}World{hello}のようにブレースで囲まれていて間に$bodyという変数を持つ false ? 単独のマクロ{name}のようになる |
bodyType | No | raw | raw ? $bodyはマクロテンプレートにそのまま渡されて組み込まれる。 escapehtml ? $bodyはHTML tags タグをエスケープされて組み込まれる。 rendered ? $bodyはWikiテキストとしてレンダリングされた後にマクロテンプレートに組み込まれる。 |
outputType | No | html | html ? 出力するページにHTMLとして挿入される。 wiki ? HTMLにレンダリングされる前のWikiテキストとして挿入される。 |
- atlassian-plugin/@pluginsVersionに2を設定するのは、Confluence3.4以降で必要。正確には管理画面のPluginManagerで扱えるようになるらしい。
- atlassian-plugin/user-macro/template/ は、管理画面で登録するマクロのあのテキストエリアの部分
- 当然ながら管理画面で登録時に使えるマクロ変数は*1
- /atlassian-plugin/user-macro/@name と /atlassian-plugin/user-macro/@key は同じ名前にする?上記の場合だと、{helloworld}というようにマクロを使う。
- /atlassian-plugin/user-macro/@hasBody 管理画面マクロの「マクロに本文がある」に相当。本文があるとは、閉じタグがあるということ。
- /atlassian-plugin/user-macro/@bodyType 管理画面マクロの「マクロ本文」のセレクトタブに相当raw:未処理のマクロ本文を使用 escapehtml:マクロ本文の HTML をエスケープ rendered:マクロ本文のwikiマークアップをHTMLに変換
- /atlassian-plugin/user-macro/@outputType 管理画面マクロの「出力」に相当。html:マクロでHTMLマークアップを生成 wiki:マクロでwikiマークアップを生成
- /atlassian-plugin/user-macro/@classは無くてもOK
*1:Atlassianのページには「velocity variables」とあるのだけど、これは多分velocityというテンプレートエンジンなのかな? http://www.atmarkit.co.jp/fjava/javatips/103jakarta017.html