0

我正在尝试使用 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 无法执行脚本 'classpath*:webscripts/custom/nodeheader/hidelikesync/node-header.get.js':05270001 ReferenceError:未定义“Alfresco”。(jar:file:/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 对象不可用,我该如何获得它?

4

1 回答 1

3

根据我昨天在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(). 在我看来,您还可以传入一个可选的站点名称,如果您愿意,还可以添加一些选项。

于 2013-06-28T09:50:59.967 回答