从几天前开始,我一直在努力寻找在默认情况下在每个 dashlet 的标题栏中添加自定义操作的最佳方法。
在这个阶段,我知道这些操作在每个 dashlet 的 webscript 中都设置为一个小部件。例如,在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 的原型。我相信它也不起作用,因为当小部件被实例化时,“动作”对象总是被覆盖,正如您在上面粘贴的代码中看到的那样。
为每个 dashlet 的 webscript 创建一个扩展模块,为每个 Alfresco.widget.DashletTitleBarActions 小部件定义添加自定义操作,就像 Dave Drapper 在他的帖子http://blogs.alfresco.com/wp/ddraper/2012/05/22中解释的那样/customizing-share-javascript-widget-instantiation-part-1/
获取每个 dashlet div 容器,并在页面准备好后添加直接操作 DOM 所需的操作。它应该可以工作,但我认为它有点脏且不一致,因此我想避免它。
谁能想象一个更好和可行的解决方案?