0

components\node-details の javascript コントローラー node-header.js を alfresco share の拡張モジュールでオーバーライドしようとしています

これは私の 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 Web スクリプトによって返される JSON に従っているため、aspects配列プロパティにカスタム アスペクトが存在するかどうかを確認できるはずです。

のソースを確認するalfresco-util.jsと、追加のパラメータも でサポートされていることがわかりますgetNodeDetails()。オプションのサイト名と、必要に応じていくつかのオプションを渡すこともできるようです。

于 2013-06-28T09:50:59.967 に答える