2012-04-04 2 views
6

In Alfresco Share, wenn Sie das "Repository" Symbol in der Symbolleiste klicken, werden Sie genommen ihre Home-Ordner, zB:Wie ändern Sie den Repository-Link auf Alfresco Share?</p> <p>/share/Seite/Repository</p> <p>Ich möchte diesen Link ändern, um den Benutzer zu ergreifen, um:

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

ich dachte, dies eine einfache Änderung wäre, Aber ich ziehe mir die Haare aus und versuche herauszufinden, wie ich den Link ändern kann. Weiß jemand, was ich bearbeite, um diesen Link zu ändern?

aktualisieren: So kann ich den Link über die Freigabe-config-custom.xml Datei aktualisieren, zu ändern Sie diese Zeile:

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

Aber ich bin nicht sicher, wie Sie den Ordnerpfad Informationen erhalten in Dort. Hat jemand irgendwelche Ideen?

Antwort

5

Dies war überraschend schwierig, also dachte ich, ich würde posten, was ich getan habe, falls jemand anderes das gleiche Problem hat.

Wenn Sie nicht gehasht Home-Ordner verwenden, können Sie diese Funktionalität bereitstellen, indem Sie einfach Ihren Anteil-config.xml oder share-config-custom.xml wie so Aktualisierung:

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

Wenn Sie jedoch Verwenden Sie hashed Home-Ordner, die Dinge werden ein wenig schwierig. Anstatt XML-Dateien zu ändern, erstellen Sie stattdessen ein Webskript, um den Benutzerordnerpfad des Benutzers abzurufen, und ändern dann die Datei für die Freigabevorlage, um die Verknüpfungen zum Repository zu ersetzen. Im Folgenden finden Sie ein Beispiel-Webskript und die Änderungen an der Vorlagendatei, die dazu benötigt werden.

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

Dieses Skript den Knotenbaum durchquert und legt den Pfad des Ordners zusammen.

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}" 
} 

Schließlich müssen Sie den "Freien-template.ftl" Datei, in „share/WEB-INF/classes sich ändern/alfresco/templates/org/alfresco/include ". Fügen Sie unten in der Datei den folgenden Code hinzu. Es ruft das obige Webscript auf, um den Home-Ordnerpfad abzurufen, und aktualisiert dann die Repository-Links mit der Home-Ordner-Verknüpfung.

<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> 

Möglicherweise gibt es einen besseren Weg, aber ich konnte es nicht finden. Ich werde es wahrscheinlich später verfeinern, und das sollte meistens nur als Ausgangspunkt verwendet werden, aber ich dachte mir, ich würde es posten, falls jemand ein ähnliches Problem hat.

1

Obwohl nicht super elegant, ich denke, Sie können Parameter oder Anker mit einem Javascript onclick-Handler auf den Link anhängen. Nicht ganz sicher, welches Webskript die Toolbar darstellt, aber es könnte ein guter Ort für die Anpassung sein.

+0

Ich denke, das wird letztendlich das sein, was ich am Ende mache (dynamische Aktualisierung der Verbindung auf der Client-Seite). Es sieht so aus, als ob "replaceUriTokens" in header-min.js der Link ist. Wenn ich jedoch Alfresco auf den neuesten Stand bringe, könnte dies eine Dose Würmer öffnen. Außerdem muss ich noch einen Weg finden, den Home-Ordner-Pfad zu bekommen (möglicherweise mit einem benutzerdefinierten Web-Skript über einen AJAX-Anruf). Ich muss darüber ein wenig nachdenken. – patorjk

Verwandte Themen