ConfluenceのEditorはHTML5を使っているが、AttributeについてEditor以外の外部から(JavaScriptなどで)無理に追加してもデータベースに保存時にSanitizeされてしまい削除されてしまう。
保存されるAttributeはclassとconfluence-query-paramsだけだが、これに全てを突っ込むのはHTMl5である以上Attributeの容量に制限が無いので問題は無いのかもしれない。 http://stackoverflow.com/questions/1496096/is-there-a-limit-to-the-length-of-html-attributes |
ということで、DITA要素はできる限りConfluenceマクロを使い、Attributeはマクロパラメータに設定するようにしている。が、TableとListはConfluenceがHTMLのTableとUL/OLをそのまま使用しているのでどうしようかしらというのが最大の悩みどころです。
TableのAttributeについては下記の手法にて保存しています。基本的には、conf2dita/editor.jsで行われています。以下の()内のメソッドはヒントです。
これらのJavaScriptはconf2dita_oem / src / main / resources / js / conf2dita /に入っている。
これらのJavaScriptの通信先は、src / main / java / jp / junoe / confluence / plugins / conf2dita / servlet / editor / ajax / DitaTablePropertyController.java
DITA IDを保存するのは src / main / java / jp / junoe / confluence / plugins / conf2dita / servlet / editor / ajax / DitaPropertyController.java となる。
画像のプロパティには、Tableプロパティのようなマクロラッパーが使えないが、confluence-query-paramsというAttributeが使えるのでそこにBase64エンコーディングを行って保存している。このQueryStringは、Imageタグのsrc属性に?パラメータとして付与されるもので、これはImageタグだから使えるというものである。
このあたりの処理は conf2dita / src / main / resources / js / conf2dita / editor.js のImagePropertyPanelを参考に。