Điều này thật đáng ngạc nhiên, vì vậy tôi đã đoán tôi sẽ đăng những gì tôi đã làm trong trường hợp bất kỳ ai khác có cùng vấn đề.
Nếu bạn không sử dụng các thư mục nhà băm, bạn có thể cung cấp chức năng này bằng cách đơn giản cập nhật phần-config.xml của bạn hoặc chia sẻ-config-custom.xml như vậy:
<item type="link" id="repository">/repository#filter=path|/User%2520Homes/{userid}</item>
Tuy nhiên, nếu bạn đang sử dụng các thư mục nhà băm, mọi thứ trở nên phức tạp một chút. Thay vì sửa đổi bất kỳ tệp XML nào, thay vào đó bạn sẽ tạo một tập lệnh web để nhận đường dẫn thư mục chính của người dùng và sau đó sửa đổi tệp mẫu chia sẻ để thay thế các liên kết đến kho lưu trữ. Dưới đây là một kịch bản web mẫu và các sửa đổi đối với tệp mẫu cần thiết để thực hiện việc này.
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
Kịch bản này đi qua lên cây nút và đặt cùng con đường của thư mục.
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}"
}
Cuối cùng, bạn sẽ cần phải sửa đổi "ngoài trời-template.ftl" tập tin, nằm trong "share/WEB-INF/classes/alfresco/templates/org/alfresco/include ". Gần cuối tệp, thêm mã bên dưới. Nó sẽ gọi kịch bản lệnh trên để tìm đường dẫn thư mục chính, sau đó cập nhật liên kết Kho lưu trữ với liên kết thư mục chính.
<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>
Có thể có cách nào tốt hơn, nhưng tôi không thể tìm thấy. Tôi có lẽ sẽ tinh chỉnh nó sau này, và điều này chủ yếu chỉ nên được sử dụng như là một điểm khởi đầu, nhưng tôi figured tôi muốn đăng nó trong trường hợp bất cứ ai có một vấn đề tương tự.
Tôi nghĩ rằng điều này cuối cùng sẽ là những gì tôi sẽ làm (tự động cập nhật liên kết ở phía máy khách). Có vẻ như "replaceUriTokens" trong header-min.js là nơi đặt liên kết. Tuy nhiên, thay đổi đó có thể mở một thùng giun khi tôi cập nhật Alfresco xuống đường. Thêm vào đó, tôi vẫn phải tìm cách để có được đường dẫn thư mục chính (có thể với một kịch bản web tùy chỉnh thông qua một cuộc gọi AJAX). Tôi sẽ phải suy nghĩ về điều này một chút. – patorjk