#ALajaxbuttonEditCallback()で「編集ボタン」をVelocityで作るとき

他のファイルを参考にしながら「編集ボタン」を作ろうとしたのですが、使用されていた#ALajaxbuttonEditCallback()に苦労しました。buttonのヘッダーとフッターの間に#ALajaxbuttonEditCallback()はあるのですが、その引数が初見だと理解が厳しかったです。

ALajaxbuttonEditCallback("$!jslink.getPortletById($!portlet.ID).addQueryData('template','ScheduleAdminFormScreen').addQueryData('entityid',$entityid)" "$!portlet.ID" "aipo.schedule.onLoadPostDialog")

まずは他のポートレットの実装を見よう見まねで上のような式を書きました。ただ、この式は読み込めず、原因は$entityidが空だったからでした。結局、以下のような式に落ち着きました。

#ALajaxbuttonEditCallback("$!jslink.getPortletById($!portlet.ID).addQueryData('template','ScheduleAdminFormScreen')" "$!portlet.ID" "aipo.gadgets_admin.onLoadDialog")

この#ALajaxbuttonEditCallback()でしていることは、ボタンを押したら特定のリンクに飛ばす、というものです。ただ、そのリンクが”$!jslink.getPortletById($!portlet.ID).addQueryData(‘template’,’ScheduleAdminFormScreen’)”という形であったため、一目見て引数の数がわかり辛かったのかと思います。

これに加えて、権限周りの勘違いもあってかなり苦労してしまいました。自分に編集権限があると思っていたのと、使っていたクラス内を把握していなかったこと、それに加えて間違った手段で一時的に解決してしまっていたため、かなり難航してしまいました。権限が無いと言われれば確認する、使うクラスは目を通す(恐ろしく長い場合も、結局は確認したほうが早いのかもしれません)、意味を理解していない状態での流用を避ける、などで今後は対応したいです……。

以上、#ALajaxbuttonEditCallback()の一つ目のリンクはわかったのですが、”$!portlet.ID”と”aipo.gadgets_admin.onLoadDialog”が曖昧です。わかり次第、補足いたします。