2

ダッシュレットを変更して、定期的に自動的に再ロードする簡単な方法はありますか?

私は特に「マイ タスク」ダッシュレットについて考えています。プールされたレビュー ワークフローを使用しているため、タスクが作成されて要求されるたびにタスクが行き来する可能性があります。

既に要求されていることが判明したタスクをクリックし続けること、またはダッシュボード ページを何度も再ロードすることを覚えておく必要があることは、ユーザーにとってイライラする可能性があります。ダッシュレットを一定の間隔で更新して、常に適度に最新の状態に保つことをお勧めします。

4

1 に答える 1

4

これを行うには、ファイルにあるクライアント側クラスAlfresco.dashlet.MyTasks( docssource ) に新しい機能を追加する必要があります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 を使用するオプションがある場合、新しい方法を使用すると、コードを複製することなく既存のコンポーネントを拡張できます。明らかに、アップグレードがはるかに簡単になります。

于 2012-11-30T20:04:33.587 に答える