atlas-run で開発環境Confluenceが起動しない
起動したかに見えて、
com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.NullPointerException
とか言って500エラーで起動していない。
そういう時はシャットダウンして再度atlas-runnする。何故かわからないけど、5回くらいはトライしてみる価値がある。
pom.xml関連
やっぱしMojoが引っかかってエラー
atlas-cliで、piをしてプラグインインストールしようとすると
[INFO] Install Plugin: Uploading 'XXXXXXXX-1.0-SNAPSHOT.jar' to server via UPM: http://localhost:1990/confluence
[ERROR] Unable to complete running command: pi
java.lang.RuntimeException: org.apache.maven.plugin.MojoExecutionException: Unable to execute mojo
at org.twdata.maven.cli.commands.ExecuteGoalCommand.run(ExecuteGoalCommand.java:112)
ってエラーが出て進まない。
atlassian-plugin.xml
に日本語が入ってたのを無くしたらできた。
Confluenceのバージョンがあがらない。
pom.xmlを
<properties> <confluence.version>5.3.1</confluence.version> <confluence.data.version>5.3.1</confluence.data.version> <amps.version>4.2.10</amps.version> <plugin.testrunner.version>1.1.2</plugin.testrunner.version> <create-content.version>1.5.25</create-content.version> </properties>
最新にしてもバージョンアップしない。
そんなときは、atlas-cleanコマンドで。単純にtargetフォルダを消すだけみたいなんだけどね。
やっぱりインストールできない
下記のステップでインストールしたものは状況が違うらしい。
と、上記でいきなり書き換えたatlassian-plugin.xmlでatlas-run or atlas-cli>pi でのインストール。
後者だとダメなのも、前者だとうまく行っているように見える。
なので、piして「あれー?」って思ったら管理画面から一回プラグインを案インストールしてみるべし。
atlassian-plugin.xml のモジュールのkeyがかぶってはいけない
当たり前なんだけど、はまりました。
<web-resource key="xxxxx-resources" name="xxxxxx Web Resources">
っていうキーがあった場合、同じキーはひとつのプラグインで使ってはいけない。
ただ、これ、既にプラグインをインストールしている状態で、追い討ちatlas-cli>piしてもエラーでない。
管理画面からプラグインをアンインストールしてからatlas-cli>piすると
[ERROR] Unable to complete running command: pi
java.lang.RuntimeException: org.apache.maven.plugin.MojoExecutionException: Unable to execute mojo
at org.twdata.maven.cli.commands.ExecuteGoalCommand.run(ExecuteGoalCommand.java:112)
って出るので注意。
というか、Mojoエラーってなんかやたら出る。何か依存性が無いとMojoエラー。atlassian-plugin.xmlでミスるとMojoエラー。なんでもかんでもMojoエラー・・・atlas-cliにはもうちょっと何とかしてほしいところ・・・。
の指定で画像を一括で
atlassia-plugin.xmlで
<resource type="download" name="images/" location="images"/>
ってやると一括指定できる。name="images/"は固定表現。
エディターのボタンにフックして自分専用ボタンを作りたい
web-itemをatlassian-plugin.xmlに追加
<web-item key="唯一のキー" name="ボタン名。プラグインManagerで表示" section="表示する場所" weight="表示順"> <label key="ボタンに表示するテキスト"/> <link linkId="このボタンのDOM上のID"/> </web-item>
という感じ。
sectionがポイント。
今のところ、2つしかわかってない。
system.editor.more.formats | ||
system.editor.featured.macros.default |
tinyMCEでの動作は、
AJS.$("#DOM上のID").click(function(){ tinymce.activeEditor.execCommand("FormatBlock", false, "samp"); });
Ref:tinymce.activeEditor.execCommand
ただし、これをAJS.bind('init.rte', function() {....})内でやらないとListenされないので注意。
tinyMCEでexecするコマンドは追加できて、
var ed = AJS.Rte.getEditor(); ed.addCommand('mceExample', function() { tinyMCE.activeEditor.execCommand('mceExample');
というようにする。
Wikiマークアップを入れるボタンのJavaScriptはここに掛かれていて。
confluence-project/confluence-plugins/confluence-editor-plugins/confluence-editor/src/main/resources/tinymce3/plugins/insertwiki/editor_plugin_src.js
ここまで複雑にできるのかーと思いきや、まぁそこまで必要は無くて・・・。
単純に、Toolボタンを押したときにマクロを入れたい場合は、
confluence-project/confluence-plugins/confluence-editor-plugins/confluence-editor/src/main/resources/tinymce3/plugins/confluence/editor_plugin_src.js で「mceConfMacroBrowser」というtinymceコマンドが追加されている。
このコマンドは、
tinymce.confluence.macrobrowser.macroBrowserToolbarButtonClicked()
へのショートカットで、パラメータとして{presetMacroName: マクロ名}を与えることでそのマクロブラウザーを開く。
tinymce.activeEditor.execCommand("mceConfMacroBrowser", {presetMacroName:"info"});
パラメータなしだと、普通のマクロブラウザになる。
いきなりInsertしたい場合
tinymce.confluence.MacroUtils.insertMacro({ contentId: AJS.Meta.get('content-id'), macro: {body: "",name: "info"}});
とすると、情報マクロが入る。bodyに空文字指定しているが、ここに適当な文言を入れるとそれがデフォルトで入った状態で表示される。
JavaScriptで現在のページIDを取得したい場合
AJS.Meta.get('content-id')