6

Alfresco Share で、ツールバーの「リポジトリ」アイコンをクリックすると、次のように表示されます。

/共有/ページ/リポジトリ

このリンクを変更して、ユーザーをホームフォルダーに移動したいと思います。例:

/share/page/repository#filter=パス|/User%2520Homes/g/gi/gillespie/patrick.j.gillespie

これは簡単な変更だと思いましたが、リンクを変更する方法を見つけようとして髪を引っ張っています。そのリンクを変更するために私が何を編集したか知っている人はいますか?

更新: したがって、share-config-custom.xml ファイルを介してリンクを更新し、次の行を変更できます。

<item type="link" id="repository">/repository</item>

しかし、そこにあるフォルダー パス情報を取得する方法がわかりません。誰にもアイデアはありますか?

4

2 に答える 2

5

これは意外と難しかったので、他の誰かが同じ問題を抱えている場合に備えて、私がやったことを投稿すると思いました.

ハッシュされたホーム フォルダーを使用していない場合は、次のように share-config.xml または share-config-custom.xml を更新するだけで、この機能を提供できます。

<item type="link" id="repository">/repository#filter=path|/User%2520Homes/{userid}</item>

ただし、ハッシュされたホーム フォルダーを使用している場合は、少し扱いが難しくなります。XML ファイルを変更する代わりに、Web スクリプトを作成してユーザーのホーム フォルダー パスを取得し、共有テンプレート ファイルを変更してリポジトリへのリンクを置き換えます。以下は、サンプル Web スクリプトと、これを行うために必要なテンプレート ファイルへの変更です。

hfp.get.desc.xml

<webscript>
    <shortname>Home Folder Path</shortname>
    <description>Description here.</description>
    <format default="json">argument</format>
    <url>/demo/get-home-folder-path</url>
    <authentication>user</authentication>
</webscript>

hfp.get.js

このスクリプトはノード ツリーをたどり、フォルダーのパスをまとめます。

var myPerson = person;//used people.getPerson("patrick.j.gillespie") for testing
var currentNode = myPerson.properties.homeFolder;
var myDir = currentNode.properties["{http://www.alfresco.org/model/content/1.0}name"];
var count = 0;

while (count < 100) { // prevent an infinite loop
    currentNode = currentNode.parent;
    if (currentNode === undefined || currentNode === null) {break;}
    if (currentNode.properties === undefined) {break;}
    myDir = currentNode.properties["{http://www.alfresco.org/model/content/1.0}name"] + "/" + myDir;
    count++;
}
if (count === 100) { //something went wrong
    myDir = "";
}

model.homeFolder = myDir;

hfp.get.json.ftl

{
   "homeFolder": "${homeFolder}"
}

最後に、「share/WEB-INF/classes/alfresco/templates/org/alfresco/include」にある「alfresco-template.ftl」ファイルを変更する必要があります。ファイルの下部近くに、以下のコードを追加します。上記の Web スクリプトを呼び出してホーム フォルダー パスを取得し、リポジトリ リンクをホーム フォルダー リンクで更新します。

<script type="text/javascript">
    var callback = {
        success: function(res) {
            var data = YAHOO.lang.JSON.parse(res.responseText);
            var homeFolder = "";
            var hfIndex = data.homeFolder.indexOf("/User Homes/");
            if (hfIndex !== -1) {
                homeFolder = data.homeFolder.substr(hfIndex+12);
            }

            var repoLinks = $("a[title='Repository']");
            for (var ii = 0; ii < repoLinks.length; ii++) {
                repoLinks.get(ii).href = "/share/page/repository#filter=path|/User%2520Homes/" + homeFolder;
            }
        }
    };
    var sUrl = Alfresco.constants.PROXY_URI + "demo/get-home-folder-path";
    var postData = "";
    var getData = "";
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl+getData, callback, postData);
</script>

もっと良い方法があるかもしれませんが、私はそれを見つけることができませんでした。私はおそらく後でそれを改良するでしょう.

于 2012-04-05T20:58:24.480 に答える
1

非常にエレガントではありませんが、リンクに Javascript onclick ハンドラーを使用してパラメーターまたはアンカーを追加できると思います。どの Web スクリプトがツールバーをレンダリングするかはよくわかりませんが、その Web スクリプトはカスタマイズを配置するのに適した場所である可能性があります。

于 2012-04-05T05:21:47.180 に答える