2012-04-04 10 views
6

、あなたはツールバーの「リポジトリ」アイコンをクリックすると、あなたがに取られている:Alfresco Shareのリポジトリリンクはどのように変更しますか? Alfrescoはシェアで

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

私は、ユーザーを取るために、このリンクを変更したいです自分のホームフォルダ、例:

/share/page/repository#filter=path|/User%2520Homes/g/gi/gillespie/patrick.j.gillespie私は、これは単純な変更であると考えましたしかし、私はリンクを変更する方法を理解しようとしている私の髪を引っ張っています。誰かが私がそのリンクを変更するために編集するものを知っていますか?

更新:だから私は、この行を変更し、共有-CON​​FIG-custom.xmlファイルを経由してリンクを更新することができます。

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

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

答えて

5

これは驚くほど困難だったので、他の誰かが同じ問題を抱えている場合に私が行ったことを投稿すると思いました。

あなたは、単にそのようなあなたの株式-config.xmlの株-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}" 
} 

最後に、あなたは「共有/ WEB-INF /クラスにある "屋外-template.ftl" ファイルを、/変更する必要がありますalfresco/templates/org/alfresco/include "を参照してください。ファイルの下部に、以下のコードを追加します。上記の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> 

もっと良い方法があるかもしれませんが、見つけられませんでした。私はおそらく後でそれを改良するでしょう、そして、これはほとんどの場合、出発点として使用されるべきですが、誰かが同様の問題を抱えている場合に備えて私はそれを投稿したいと考えました。

1

スーパーエレガントではありませんが、リンク上のJavascript onclickハンドラを使用してパラメータやアンカーを追加できます。どのWebスクリプトがツールバーをレンダリングするのかは不明ですが、カスタマイズを置くのに適しているかもしれません。

+0

私はこれが最終的に(クライアント側でリンクを動的に更新する)ことになると思います。 header-min.jsの "replaceUriTokens"はリンクが設定されているようです。しかし、それを変更することで、Alfrescoを更新する際に、ワームの蓋が開く可能性があります。また、私はまだホームフォルダのパスを取得する方法を見つける必要があります(おそらくAJAX呼び出しを介してカスタムWebスクリプトで)。私はこれについて少し考えなければならないでしょう。 – patorjk

関連する問題