tohokuaikiのチラシの裏

技術的ネタとか。

confluence

ConfluenceのMacroUtils.defaultVelocityContext()で得られるもの

Map<String, Object> defaultContext = MacroUtils.defaultVelocityContext(); で得られるもの一覧。 Map<String, Object> defaultContext = MacroUtils.defaultVelocityContext(); for (String key: defaultContext.keySet()){ map.put(key, defaultContext.get(key)); } とかしてVelocityテ</string,></string,>…

Confluenceプラグイン開発でRenderer Componentモジュールが既に無効らしい件

2日近くかかってしまったのだけど、どうやらできないってことでF.Aらしい。 何がしたかったかというと、Confluenceのページ内容をFilterしたかった。 PHPでいうところの、ob_start()のコールバック的な。そんなFilterくらいあるんじゃないかと思ったのだけど…

Confluenceのエディタ画面でのgetTextのキーとテキスト一覧

AJS.I18n.keysに入ってたものをリスト化 キー テキスト admin.keyboard.shortcut.add.comment.desc コメント admin.keyboard.shortcut.addlabel.desc ラベルの編集 admin.keyboard.shortcut.create.blog.desc ブログの追加 admin.keyboard.shortcut.create.c…

Confluenceのイベントクラスのまとめ

一旦 find 5.3.1 -type f -name "*java"|xargs grep "eventPublisher.publish(" > ../eventPublisher.txt find 5.3.1 -type f -name "*java"|xargs grep ".publishEvent(" > ../publisEvent.txtってやってイベントを発火させているファイルを求めて、ソース…

Confluenceのプラグイン開発で、Eventを使う方法(Annotation Based)

ConfluenceのPluginでEventをあれこれする方法です。参考文献はこの辺りで。 Event Listener Module Annotation Based Event Listener Example Writing an Event Listener Plugin Module EventListener Example Annotation Basedの方が新しくて良いようだ。…

Confluenceのプラグイン開発におけるJavaScriptの国際化

transformerのススメ 本当の方法であれば、propertiesファイルをJavaScriptに変更してくれるらしい。その方法として、1つの言語ファイル(***.properties)をVerlocityテンプレートの中で使えるようにしたり、JavaScriptで使えたり、soyテンプレートで使える…

ConfluenceのVelocityテンプレートでSubmitボタンをaui-themeにてつけようとして挫折

Velocityのカスタムタグで、auiテーマを使って #tag ("Submit" "theme='aui'") ってやると、送信ボタンとキャンセルリンクが良い感じに出てきて便利なのだけど、キャンセルリンクを消したい場合にどうやっていいかわからず。ソースが confluence-core/conflu…

ConfluenceのSystemプロパティ一覧

Confluence内のコードで Properties properties = System.getProperties(); for(Object s:properties.keySet()){ System.out.println(s.toString()); System.out.println(properties.get(s).toString()); } ってやった結果。 key value java.vendor Sun Micr…

Confluenceのマクロパラメータの落とし穴

<parameter name="AAAAxmlnsBBB" type="string"/> というように、xmlnsをパラメータの名前に入れるとインストールエラーをおこすっぽい。OMG!質問してみた! Confluence xhtml-macro with parameter which name attribute value includes "xmlns" cause problem. - Atlassian Answers</parameter>

Confluenceのマクロパラメータについて調べてみた

XHTMLマクロやマクロを作るときにatlassian-plugins.xmlで定義したいのだけど、イマイチ定義一覧みたいのが見つかられなくて、ソースから解析してみた。 手っ取り早くはDTDがあるんだけど。。。 confluence-project/confluence-core/confluence/src/etc/java…

ConfluenceのXWorkで、ダウンロードさせるActionを作る

Struts2の記事を参考に。ただ、参考にと言ってもXWorkにはない機能がStruts2にあるので要注意。 atlassian-plugin.xml resultのtypeにstreamを使用する。こんな感じ。 <result name="success" type="stream"> <param name="contentType">application/octet-stream</param> <param name="inputName">exportZipInputStream</param> <param name="bufferSize">1024</param> </result>

Confluenceプラグインのコード内でpageManagerとかbandanaManagerとかを取得する方法

各種Manager系Objectが取れないと話にならないですよねーってことで。 Servletプラグイン編 servletプラグインの場合は、コンストラクタに書く。 書いておいて当たればSpringの方で適当にInjectionしてくれる。 public class HogehogeServlet extends HttpSe…

ConfluenceのPlugin作成で一時データを取っておきたいときの方法 - ContentPropertyManagerとBandanaManager

Confluenceでデータを取っておきたい方法について。2つある。ContentPropertyManagerとBandanaManager。*1 参考ページ Persistence in Confluence - Atlassian Developers Developing a Confluence Plugin « Luminis Software Development基本的にどちらも、…

Confluenceのプラグイン作成でファイル添付周りのコードを書く際に参考になりそうなところのメモ

AttachmentManagerかと思いきや、それを単純に使っただけではどうもよろしくない。 どうよろしくないかというと、 public static void attachFile(AttachmentManager am, ContentEntityObject page, String temp_file_path, String fileName, String comment…

Confluenceのプラグイン作成における国際化

設置するファイル 言語ファイルは、I18N Architecture - Confluence Development - Atlassian Developer Documentationにあるように各ロケールごとに作成する。 サンプルとして、 /com/atlassian/confluence/core/ConfluenceActionSupport_.properties /com/…

Confluenceのプラグイン作成で使えそうな環境変数の取得

気が付き次第ここに追加する。 Confluenceのデータディレクトリからのパス confluence-project/confluence-core/confluence/src/java/com/atlassian/confluence/util/ConfluenceHomeGlobalConstants.java に記載されている。 package com.atlassian.confluen…

ConfluenceのプラグインでXWork/WebWork2の仕組みを使ったときのボタンによるAction先の制御

ConfluenceのバンドルしてるXWorkでは、サブミットボタンの名称によるAction先の変更はできないようだ。なんとなく、 <input type="submit" name="Top_Action" value="トップへ"/> とすると、Top_Actionに関連付けられたActionになるのかなと思いきや、そうではない。実際には、2方向しか移動ができないみたい。 進む …

ConfluenceのXWorkによるプラグイン作成における値チェック(Validator)の方法が少なくてガッカリした

基本的な使い方 atlassian-plugin.xml にて、インターセプターでActionに対してvalidatingStackにしておく。 <package name="jpages" extends="default" namespace="/pages"> <default-interceptor-ref name="validatingStack"/> </default-interceptor-ref></package>

Confluenceのプラグイン作成で、ページベースの画面を作る

タイトルだけだとなんのこっちゃって感じですが。。。 一番わかりやすいのは、Wordのインポート機能のページかと思います。ページを表示しているときに右上の「Tools」からプルダウンで出てくるやつ。 これって、左側のページメニューやスペースへのアクセス…

Confluenceのプラグイン作成におけるCSRF対策

ConfluenceのプラグインでXWork/WebWork2の仕組みを使ってプログラムを書く(3) - tohokuaikiのチラシの裏でもちらっと書いたけど、トークン、あるいはチケットといわれるものの埋め込みですね。参考資料はこちら。CSRF対策なんだからActionクラス使うよねっ…

Confluenceのプラグイン作成 XWork/WebWork2でセッションを使う

Actionクラスの中でHTTPセッションを使いたい場合。PHPで言えば、$_SESSION Confluenceはログイン基本なので、Actionクラスの中ではデフォルトでセッションが始まっている。COOKIE名がJSESSIONIDというやつ。これは匿名ユーザーにももちろん張られている。な…

ConfluenceのVelocityテンプレートで使えるカスタムタグについて

ConfluenceのVelocityテンプレートは、Sitemeshというデコレータによりパワーアップされているらしい。ちなみに、SiteMeshはOpenSymphonyというJavaの結構すごい大規模なプロジェクトの1つだったのだが全体としてのOpenSymphonyは既に4年くらい前に終了し、…

Confluenceのプラグインでフォームを含む管理画面を作ること(1)

フォームを扱う場合、一般的にはフレームワークを使うと楽なので生では使いたくないのですが、Confluenceのプラグインでもそのような方法があるみたい。 Creating an Admin Configuration Form - Documentation - Atlassian Developer Documentation のチュ…

Confluenceプラグインでcomponent-importを忘れてはまった件

もー、ホントに下らない件ではまってしまった。。。自分も、Confluenceのプラグインを作ってみる(7) Atlassian Templateを使ってみる - tohokuaikiのチラシの裏で書いてるのに、理解してなかったからはまってしまった。おさらい。UnsatisfiedDependencyExcep…

ConfluenceのPlugin作成でテンプレートを使う際の種類分け

Confluenceのプラグインを作ってみるメモ(5) Servletを使えるようにする - tohokuaikiのチラシの裏 の続きHTMLテンプレートのメタタグでなどと指定すると、テンプレートの周りを変えることができる。 参照ページ: https://developer.atlassian.com/display/…

ConfluenceのXHTML(保存形式)のマクロの保存形式の変更におけるマニアックな話

自分用メモConfluenceは4から5になった際に*1マクロの保存形式にからタグを使うようになった。保存形式って、ページのツール>保存形式を見るで見られるやつ。 Confluence4 <ac:macro ac:name="include"><ac:default-parameter>ページタイトル</ac:default-parameter></ac:macro> Confluence5 <ac:structured-macro ac:name="include"><ac:parameter ac:name=""><ac:link></ac:link></ac:parameter></ac:structured-macro>

ConfluenceにおけるJavaScriptテンプレートについて

soyを使ったClosureTemplateが導入される前、JavaScript純粋なテンプレートとしてAJS.template()メソッドがある。参考ページ:Template | AUI Documentation テンプレートの設定 テンプレートのHTMLは<script type="text/x-template">を使う。 <script type="text/x-template" title="template-title"> <div id="foo"> ここに適当なHTMLテンプレートを記述 テンプ</div>…

プラグイン開発で使用するライブラリの依存性とかをpom.xmlで解決しようとしてハマった件

pom.xmlで使用するライブラリを追加する際に、どういうことか追加はできてmavenからダウンロードもするのだが、classが使えなくなってしまう。 Could not initialize a XXXXXXXXXX. Please add a XXXXXXXXX to your classpath along with preferably XXXX.ja…

Confluence SDKのatlassian.homeとか

インストールディレクトリに対応するもの target/container/tomcat6x/cargo-confluence-home/webapps でも、conf/server.xmlとかは target/container/tomcat6x/cargo-confluence-home/conf にあったりする。 データディレクトリに対応するもの((confluence/…

Confluenceのweb-panelプラグインにて、VelocityテンプレートにHTMLエスケープされないでテンプレート変数をアサインしてみる

Confluenceでプラグイン開発してると、web-panelでテンプレートを使うのだけど、これにアサインする変数はすべてhtmlエスケープされる。「"」だと、「&quot;」となる。たいがいの場合はこれでいいのだけど、JSONをアサインする際に困った。アサインするのは…