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