Find all files in a site with Alfresco 4.1 webscripts

[亡魂溺海] 提交于 2019-12-23 03:14:49

问题


Alfresco Share doesn't keep track of content modified outside it's interface which makes the recently modified RSS/Dashlet useless. I'm working on creating an RSS that I can use within sites to pull a list of recently modified items.

Right now I'm just working on getting the list of files and I'm stumbling a little bit as I'm not very familiar with Webscripts. I've got this piece of code that will retrieve the contents of a site then build an array of the files, the problem I'm running into is I could have many subfolders and I'm not sure how to properly traverse them.

var folder = companyhome.childByNamePath("/Sites/foo/documentLibrary");

var docs = new Array();

print(folder);
print("iterating...");
var children = folder.children;
for (i=0; i<children.length; i++)
{
  var c = children[i];
  if (c.isContainer)
  {
    print(c.name + " is a folder, traversing...");
    var subfolder = companyhome.childByNamePath("/Sites/foo/documentLibrary/" + c.name.toString());
    var subchildren = subfolder.children;
    for (j=0; j<subchildren.length; j++)
    {
      var d = subchildren[j];
      if (d.isDocument) docs.push(d);
    }
  }
  if (c.isDocument) docs.push(c);
}

print(docs);

In the end I'll sort by modified time then chop it for presentation, I'm operating under the assumption that getting the content is the hard part :)


回答1:


I would write a recursive function to traverse the folder hiarchy, something like this:

var documentLibrary = companyhome.childByNamePath("sites/foo/documentLibrary");

var children = documentLibrary.children;

traverse(children);

function traverse(nodes){
  for each(var node in nodes) {
    if (node.isContainer){
      logger.log(node.name + " is a folder, traversing down");
      traverse(node.children);
    }else {
      logger.log(node.name + "is a document, modified: " +     node.properties["cm:modified"]); 
    }
  }
}



回答2:


It's quite simple actually. If you look in the code of the docsummary dashlet/js file (Recently Modified Dashlet), you'll see that it's firing:

slingshot/doclib/doclist/documents/site/" + Alfresco.constants.SITE + "/documentLibrary?max=50

So you only need is a list of sites available and good for you that there is a service for it listSites(nameFilter, sitePresetFilter) .

You can just use listSites(null, null), which will return all sites. So just loop through the sites and fire the webscript.



来源:https://stackoverflow.com/questions/16929858/find-all-files-in-a-site-with-alfresco-4-1-webscripts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!