是否有一种简单的方法可以修改dashlet以定期自动重新加载?
我特别想到“我的任务”小面板 - 我们正在使用合并的审核工作流程,因此任务可能会随着创建然后被声明而来来去去。
对于用户来说,继续点击已经声明的任务 - 或者必须记住继续重新加载他们的仪表板页面可能会令人沮丧。我更喜欢小版本按照定时间隔刷新,所以它总是合理的更新。
答案 0 :(得分:4)
要执行此操作,您需要向文件Alfresco.dashlet.MyTasks
中的客户端类components/dashlets/my-tasks.get.js
(docs,source)添加新功能。首先,您需要将新方法添加到指定为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
});
})();
这不是理想的开发环境,您可以直接在Share webapp中修改JS文件,但您还需要更新相应的-min.js
文件。
完成此操作后,通过在浏览器的JavaScript控制台中运行以下行来检查它是否有效
Alfresco.util.ComponentManager.findFirst("Alfresco.dashlet.MyTasks").reloadData();
如果可行,那么您可以在dashlet网页脚本中将新方法连接到标题栏操作(请参阅我的DevCon presentation以获取更多背景信息)。该方法取决于您使用的是v4.2还是以前的版本,但如果是后者,则需要在dashlet的Freemarker文件my-tasks.get.html.ftl
中添加一些代码(WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/dashlets
下)。
在该文件中,您应该在<script>
标记内看到一些JavaScript代码,这会设置客户端类的实例和一些实用程序类,其内容可以替换使用以下内容,添加自定义标题栏操作。
(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}"
}
]
});
})();
您需要在dashlet的CSS文件my-tasks.css
中为指定的类名添加一些样式,例如以下
.my-tasks .titleBarActions .refresh
{
display: none;
background-image: url('refresh-icon.png');
}
图标文件(您可以重复使用的here is one)必须与CSS文件位于同一目录中。
最后,您需要定义用于标题栏操作的工具提示的标签dashlet.refresh.tooltop
。您可以在dashlet web脚本的.properties
文件中执行此操作。
对于类似的示例,请查看我的Train Times dashlet的来源,其中包含刷新标题栏操作。
在某些方面,定义自己的小面板实际上比扩展Alfresco提供的小面板更容易,但如果您可以选择使用4.2.x,则新方法允许您扩展现有组件而不重复任何代码,这显然使升级更容易。