在Alfresco Share中,当您单击工具栏中的“存储库”图标时,您将被带到:
/共享/页/存储库
我想更改此链接以将用户带到其主文件夹,例如:
/share/page/repository#filter=path|/User%2520Homes/g/gi/gillespie/patrick.j.gillespie
我认为这将是一个简单的改变,但是,我正在试图弄清楚如何改变链接。有谁知道我编辑什么来改变这个链接?
更新:所以我可以通过share-config-custom.xml文件更新链接,更改此行:
<item type="link" id="repository">/repository</item>
但我不知道如何获取文件夹路径信息。有没有人有任何想法?
答案 0 :(得分:5)
这是非常困难的,所以我想我会发布我所做的事情以防其他人遇到同样的问题。
如果您没有使用散列主文件夹,只需更新您的share-config.xml或share-config-custom.xml即可提供此功能:
<item type="link" id="repository">/repository#filter=path|/User%2520Homes/{userid}</item>
但是,如果你使用散列的主文件夹,事情会变得有点棘手。您将创建一个Web脚本来获取用户的主文件夹路径,然后修改共享模板文件以替换指向存储库的链接,而不是修改任何XML文件。下面是一个示例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>
可能有更好的方法,但我无法找到它。我可能会在以后改进它,这应该主要用作起点,但我想我会发布它以防万一有类似的问题。
答案 1 :(得分:1)
虽然不是超级优雅,但我猜你可以在链接上使用Javascript onclick处理程序附加参数或锚点。不太确定哪个webscript呈现工具栏,但是这个可能是放置自定义的好地方。