これを行うには、ファイルにあるクライアント側クラスAlfresco.dashlet.MyTasks
( docs、source ) に新しい機能を追加する必要がありますcomponents/dashlets/my-tasks.get.js
。まず、 の 2 番目のパラメータとして指定されたプロトタイプ拡張機能に新しいメソッドを追加する必要がありますYAHOO.lang.augmentObject() call
。
...
}, // end of last OOTB function - add a comment here
// begin changes
reloadData: function MyTasks_onReady()
{
this.widgets.alfrescoDataTable.loadDataTable(
this.options.filters[this.widgets.filterMenuButton.value]
);
}
// end changes
});
})();
これは理想的な開発環境ではありません。JS ファイルを共有 Web アプリケーションで直接変更できますが、対応する-min.js
ファイルも更新する必要があります。
これが完了したら、ブラウザーの JavaScript コンソールで次の行を実行して、動作することを確認します。
Alfresco.util.ComponentManager.findFirst("Alfresco.dashlet.MyTasks").reloadData();
それが機能する場合は、ダッシュレット Web スクリプトで、新しいメソッドをタイトル バー アクションに関連付けることができます (詳細な背景情報については、私のDevCon プレゼンテーションを参照してください)。この方法は、v4.2 と以前のバージョンのどちらを使用しているかによって異なりますが、後者の場合は、ダッシュレットの Freemarker ファイルmy-tasks.get.html.ftl
( の下WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/dashlets
) にコードを追加する必要があります。
そのファイルでは、タグ内にいくつかの JavaScript コードが表示されるはずです<script>
。これにより、クライアント側クラスのインスタンスといくつかのユーティリティ クラスがセットアップされます。その内容を次のように置き換えることで、カスタム タイトル バー アクションを追加できます。
(function()
{
var dashlet = new Alfresco.dashlet.MyTasks("${jsid}").setOptions(
{
hiddenTaskTypes: [<#list hiddenTaskTypes as type>"${type}"<#if type_has_next>, </#if></#list>],
maxItems: ${maxItems!"50"},
filters:
{<#list filters as filter>
"${filter.type?js_string}": "${filter.parameters?js_string}"<#if filter_has_next>,</#if>
</#list>}
}).setMessages(${messages});
new Alfresco.widget.DashletResizer("${id}", "${instance.object.id}");
var refreshDashletEvent = new YAHOO.util.CustomEvent("onDashletRefresh");
refreshDashletEvent.subscribe(dashlet.reloadData, dashlet, true);
new Alfresco.widget.DashletTitleBarActions("${args.htmlid}").setOptions(
{
actions:
[
{
cssClass: "refresh",
eventOnClick: refreshDashletEvent,
tooltip: "${msg("dashlet.refresh.tooltip")?js_string}"
},
{
cssClass: "help",
bubbleOnClick:
{
message: "${msg("dashlet.help")?js_string}"
},
tooltip: "${msg("dashlet.help.tooltip")?js_string}"
}
]
});
})();
my-tasks.css
次のように、ダッシュレットの CSS ファイルに、指定されたクラス名のスタイルをいくつか追加する必要があります。
.my-tasks .titleBarActions .refresh
{
display: none;
background-image: url('refresh-icon.png');
}
アイコン ファイル (これは再利用可能なものです) は、CSS ファイルと同じディレクトリにある必要があります。
dashlet.refresh.tooltop
最後に、タイトル バー アクションのツールチップに使用されるラベルを定義する必要があります。これは、ダッシュレット Web スクリプトの.properties
ファイルで実行できます。
同様の例として、私のTrain Times ダッシュレットのソースを確認してください。これには、タイトル バーの更新アクションが含まれています。
Alfresco が提供するダッシュレットを拡張するよりも、独自のダッシュレットを定義する方が実際にはいくつかの点で簡単ですが、4.2.x を使用するオプションがある場合、新しい方法を使用すると、コードを複製することなく既存のコンポーネントを拡張できます。明らかに、アップグレードがはるかに簡単になります。