tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグインを作ってみるメモ(4) - ユーザーマクロプラグインを作る

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テキストとして挿入される。
  1. atlassian-plugin/@pluginsVersionに2を設定するのは、Confluence3.4以降で必要。正確には管理画面のPluginManagerで扱えるようになるらしい。
  2. atlassian-plugin/user-macro/template/ は、管理画面で登録するマクロのあのテキストエリアの部分
  3. 当然ながら管理画面で登録時に使えるマクロ変数は*1
  4. /atlassian-plugin/user-macro/@name と /atlassian-plugin/user-macro/@key は同じ名前にする?上記の場合だと、{helloworld}というようにマクロを使う。
  5. /atlassian-plugin/user-macro/@hasBody 管理画面マクロの「マクロに本文がある」に相当。本文があるとは、閉じタグがあるということ。
  6. /atlassian-plugin/user-macro/@bodyType 管理画面マクロの「マクロ本文」のセレクトタブに相当raw:未処理のマクロ本文を使用 escapehtml:マクロ本文の HTML をエスケープ rendered:マクロ本文のwikiマークアップをHTMLに変換
  7. /atlassian-plugin/user-macro/@outputType 管理画面マクロの「出力」に相当。html:マクロでHTMLマークアップを生成 wiki:マクロでwikiマークアップを生成
  8. /atlassian-plugin/user-macro/@classは無くてもOK

*1:Atlassianのページには「velocity variables」とあるのだけど、これは多分velocityというテンプレートエンジンなのかな? http://www.atmarkit.co.jp/fjava/javatips/103jakarta017.html