我试图用alfresco share的扩展模块覆盖components \ node-details的javascript控制器node-header.js
这是我的node-header.get.js
<import resource="classpath:/alfresco/templates/org/alfresco/import/alfresco-util.js">
for (var i=0; i<model.widgets.length; i++)
{
if (model.widgets[i].id == "NodeHeader")
{
if(model.widgets[i].options.nodeRef!=null)
{
var jsNode = new Alfresco.util.Node(model.widgets[i].options.nodeRef);
if(jsNode.hasAspect("custom:intranetFile")){
model.widgets[i].options.showFavourite = false;
model.widgets[i].options.showLikes = false;
}
}
}
}
我收到此错误
错误消息:05270002无法执行脚本 '类路径*:webscripts /定制/ nodeheader / hidelikesync /节点header.get.js': 05270001 ReferenceError:未定义“Alfresco”。 (罐:文件:/ C:!/Alfresco/Alfresco42/tomcat/webapps/share/WEB-INF/lib/customshare.jar /webscripts/custom/nodeheader/hidelikesync/node-header.get.js#1555)
错误在于此行
var jsNode = new Alfresco.util.Node(model.widgets[i].options.nodeRef);
由于Alfresco对象不可用,我怎么能得到它?
答案 0 :(得分:3)
基于昨天answer列表中的share-extras-devel:
您的问题是您将Web脚本JS与客户端JavaScript混合在一起。 Alfresco.util.Node
是一个客户端辅助类,因此可用于在Web浏览器中运行的客户端JS,但不适用于在服务器上运行的Web脚本代码。
如果你看一下你所包含的alfresco-util.js
的来源,你会发现那里有一个帮助类,但它被称为AlfrescoUtil
。
要获得有关此给定节点的一些信息,我建议您使用该类中的静态方法AlfrescoUtil.getNodeDetails()
,例如
var jsNode = AlfrescoUtil.getNodeDetails(model.widgets[i].options.nodeRef);
jsNode
对象的结构将根据doclist-v2 webscripts返回的JSON,因此您应该能够检查aspects
数组属性中是否存在自定义方面
如果您检查alfresco-util.js
的来源,您会发现getNodeDetails()
也支持其他参数。在我看来,如果你愿意,你也可以传递一个可选的网站名称和一些选项。