Alfresco Object在alfresco共享中的扩展模块中不可用

时间:2013-06-27 05:40:10

标签: alfresco alfresco-share

我试图用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对象不可用,我怎么能得到它?

1 个答案:

答案 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()也支持其他参数。在我看来,如果你愿意,你也可以传递一个可选的网站名称和一些选项。