数日前から、デフォルトですべてのダッシュレットのタイトル バーにカスタム アクションを追加する最良の方法を見つけるのに苦労しています。
この段階で、すべてのダッシュレットの Web スクリプトでアクションがウィジェットとして設定されていることがわかります。たとえば、docsummary.get.js では次のようになります。
var dashletTitleBarActions = {
id : "DashletTitleBarActions",
name : "Alfresco.widget.DashletTitleBarActions",
useMessages : false,
options : {
actions: [
{
cssClass: "help",
bubbleOnClick:
{
message: msg.get("dashlet.help")
},
tooltip: msg.get("dashlet.help.tooltip")
}
]
}
};
model.widgets = [docSummary, dashletResizer, dashletTitleBarActions];
次に、ページがレンダリングされるときにウィジェットがインスタンス化されます。
私は次のアプローチを考え出しました:
ページがレンダリングされるたびに、カスタム JS スニペットで必要なアクションを使用して、すべてのウィジェット インスタンスの「アクション」配列を拡張します。次のような手法を使用して成功せずにいくつかのテストを実行しました: http://acidmartin.wordpress.com/2012/03/19/getting-instance-names-of-a-javascript-object/
カスタム アクションを追加して、Alfresco.widget.DashletTitleBarActions のプロトタイプを変更します。貼り付けた上記のコードでわかるように、ウィジェットがインスタンス化されると「アクション」オブジェクトが常にオーバーライドされるため、どちらも機能しないと思います。
すべてのダッシュレット div コンテナーを取得し、ページの準備ができたら、DOM を直接操作して必要なアクションを追加します。それは機能するはずですが、少し汚れていて一貫性がないと思うので、避けたいと思います。
誰もがより良い実行可能な解決策を想像できますか??