 
					
				
		
08-13-2019 07:34 AM
08-13-2019 09:58 AM
You can do it by searching all folder/subfolder nodes in a site and find the display path. You can implement a webscript in JavaScript or Java. Here is an example written in JavaScript which can provide display based on input parameters.
getFolderInfo.get.js
main();
function main() {
    var siteShortName = args["siteShortName"];
    var folderPath = args["folderPath"]; //if you want to get to a folder level
    var skipCount = (args["skipCount"] == null || args["skipCount"] == undefined) ? 0 : args["skipCount"];
    var maxCount = (args["maxCount"] == null || args["maxCount"] == undefined) ? 10000 : args["maxCount"];
    var additionalQuery = args["additionalQuery"];
    var successNodes = [];
    var failedNodes = [];
    var totalNodes;
     
    var query = buildQuery(siteShortName, folderPath, additionalQuery)
    var page = {
        skipCount: parseInt(skipCount),
        maxItems: parseInt(maxCount)
    };
    var searchQuery = {
        query: query,
        language: "fts-alfresco",
        page: page
    };
    logger.log("Executing SearchQuery: " + query)
    var nodes = search.query(searchQuery);
    totalNodes = nodes.length;
    logger.log("Total Nodes: " + totalNodes)
    for each(node in nodes) {
        var folderDetails = [];
        var folderName = node.name;
        var nodeReference = node.nodeRef;
        try {
            logger.log("Fetching details for folder: " + folderName);
            folderDetails["FolderName"] = folderName;
            folderDetails["NodeRef"] = nodeReference;
            folderDetails["DisplayPath"] = node.displayPath+"/"+folderName;
	    logger.log(node.displayPath+"/"+folderName);
            //TODO:: Add more details as required.
            successNodes[nodeReference] = folderDetails;
        } catch (ex) {
            logger.log("Exception occurred: " + ex.message);
            failedNodes[nodeReference] = folderName + " - " + ex.message;
        }
    }
     
    model.successNodes = successNodes;
    model.failedNodes = failedNodes;
    model.totalNodes = totalNodes;
}
function buildQuery(siteShortName, folderPath, additionalQuery) {
    var query = 'PATH:"/app:company_home/st:sites/cm:' + siteShortName;
    if (!!folderPath) { //if not null then process
         query = query + '/cm:documentLibrary/';
         var pathTokens = folderPath.split('/');
         for (var each = 0; each < pathTokens.length; each++) {
            query = query + 'cm:' + search.ISO9075Encode(pathTokens[each].trim()) + '/';
         }
         query = query + '/*"';
     } else {
         query = query + '/cm:documentLibrary//*"';
     }
	 
     query = query + ' AND (TYPE:"cm:folder")';
    //Append additionalQuery query if any
    if ( !! additionalQuery) { //if not null then append
        query = query + ' AND ' + additionalQuery;
    }
    return query;
}getFolderInfo.get.desc.xml:
<webscript>
     <shortname>Extract folder information</shortname>
     <description>
          <![CDATA[         
            Parameter Name     : {siteShortName}
            Description          : It is a mandatory parameter. E.g. of property name: test-site
            
            Parameter Name     : {folderPath}
            Description          : It is an optional parameter.
                                  
            Parameter name      : {skipCount}
            Description          : It is an optional parameter. Possible values are 0 to n
            Default value          : 0
            
            Parameter Name     : {maxCount}
            Description          : It is an optional parameter. Possible values are 0 to n
            Default value          : 10000
             
            Parameter Name     : {additionalQuery}
            Description          : It is an optional parameter. E.g. of additionalQuery is--> =@cm\\:name:"*Test" (folder name ends with Test) 
            ]]>
     </description>
     <url>/abhinav/getFolderInfo?siteShortName={siteShortName}&folderPath={folderPath}&skipCount={skipCount}&maxCount={maxCount}&additionalQuery={additionalQuery}</url>
     <authentication>admin</authentication>
</webscript>
getFolderInfo.get.html.ftl:
<html>
<head>
<title>Folder Information</title>
</head>
<body>
     <h3>Total Folders: <#if totalNodes??>${totalNodes}<#else>-</#if></h3>
     <#if successNodes??>
         <table border="1">
              <tr>
                   <th align="center">FolderName</th>
                   <th align="center">Type And NodeRef</th>
                   <th align="center">DisplayPath</th>
              </tr>
           
          <#list successNodes?keys as nodeReference>
               <tr>
                <td align="center"> ${successNodes[nodeReference].FolderName}</td>
                <td align="center"> ${successNodes[nodeReference].NodeRef}</td>
                <td align="center"> ${successNodes[nodeReference].DisplayPath}</td>
               </tr>
        </#list>
            </table>
     </#if>
     
     <#if failedNodes?is_hash_ex>
         <table border="1">
              <tr>
                   <th align="center">NodeRef</th>
                   <th align="center">ErrorMsg</th>
              </tr>
              <#assign keys = failedNodes ?keys>
           <#list keys as key>
             <tr>
                     <td align="center">${key}</td>
                     <td align="center">${failedNodes [key]}</td>
                </tr>
           </#list>
            </table>
     </#if>
</body>
</html>When you run the webscript: http://127.0.0.1:8080/alfresco/service/abhinav/getFolderInfo?siteShortName=test&skipCount=0&maxCount...
You will see following result:

08-13-2019 09:58 AM
You can do it by searching all folder/subfolder nodes in a site and find the display path. You can implement a webscript in JavaScript or Java. Here is an example written in JavaScript which can provide display based on input parameters.
getFolderInfo.get.js
main();
function main() {
    var siteShortName = args["siteShortName"];
    var folderPath = args["folderPath"]; //if you want to get to a folder level
    var skipCount = (args["skipCount"] == null || args["skipCount"] == undefined) ? 0 : args["skipCount"];
    var maxCount = (args["maxCount"] == null || args["maxCount"] == undefined) ? 10000 : args["maxCount"];
    var additionalQuery = args["additionalQuery"];
    var successNodes = [];
    var failedNodes = [];
    var totalNodes;
     
    var query = buildQuery(siteShortName, folderPath, additionalQuery)
    var page = {
        skipCount: parseInt(skipCount),
        maxItems: parseInt(maxCount)
    };
    var searchQuery = {
        query: query,
        language: "fts-alfresco",
        page: page
    };
    logger.log("Executing SearchQuery: " + query)
    var nodes = search.query(searchQuery);
    totalNodes = nodes.length;
    logger.log("Total Nodes: " + totalNodes)
    for each(node in nodes) {
        var folderDetails = [];
        var folderName = node.name;
        var nodeReference = node.nodeRef;
        try {
            logger.log("Fetching details for folder: " + folderName);
            folderDetails["FolderName"] = folderName;
            folderDetails["NodeRef"] = nodeReference;
            folderDetails["DisplayPath"] = node.displayPath+"/"+folderName;
	    logger.log(node.displayPath+"/"+folderName);
            //TODO:: Add more details as required.
            successNodes[nodeReference] = folderDetails;
        } catch (ex) {
            logger.log("Exception occurred: " + ex.message);
            failedNodes[nodeReference] = folderName + " - " + ex.message;
        }
    }
     
    model.successNodes = successNodes;
    model.failedNodes = failedNodes;
    model.totalNodes = totalNodes;
}
function buildQuery(siteShortName, folderPath, additionalQuery) {
    var query = 'PATH:"/app:company_home/st:sites/cm:' + siteShortName;
    if (!!folderPath) { //if not null then process
         query = query + '/cm:documentLibrary/';
         var pathTokens = folderPath.split('/');
         for (var each = 0; each < pathTokens.length; each++) {
            query = query + 'cm:' + search.ISO9075Encode(pathTokens[each].trim()) + '/';
         }
         query = query + '/*"';
     } else {
         query = query + '/cm:documentLibrary//*"';
     }
	 
     query = query + ' AND (TYPE:"cm:folder")';
    //Append additionalQuery query if any
    if ( !! additionalQuery) { //if not null then append
        query = query + ' AND ' + additionalQuery;
    }
    return query;
}getFolderInfo.get.desc.xml:
<webscript>
     <shortname>Extract folder information</shortname>
     <description>
          <![CDATA[         
            Parameter Name     : {siteShortName}
            Description          : It is a mandatory parameter. E.g. of property name: test-site
            
            Parameter Name     : {folderPath}
            Description          : It is an optional parameter.
                                  
            Parameter name      : {skipCount}
            Description          : It is an optional parameter. Possible values are 0 to n
            Default value          : 0
            
            Parameter Name     : {maxCount}
            Description          : It is an optional parameter. Possible values are 0 to n
            Default value          : 10000
             
            Parameter Name     : {additionalQuery}
            Description          : It is an optional parameter. E.g. of additionalQuery is--> =@cm\\:name:"*Test" (folder name ends with Test) 
            ]]>
     </description>
     <url>/abhinav/getFolderInfo?siteShortName={siteShortName}&folderPath={folderPath}&skipCount={skipCount}&maxCount={maxCount}&additionalQuery={additionalQuery}</url>
     <authentication>admin</authentication>
</webscript>
getFolderInfo.get.html.ftl:
<html>
<head>
<title>Folder Information</title>
</head>
<body>
     <h3>Total Folders: <#if totalNodes??>${totalNodes}<#else>-</#if></h3>
     <#if successNodes??>
         <table border="1">
              <tr>
                   <th align="center">FolderName</th>
                   <th align="center">Type And NodeRef</th>
                   <th align="center">DisplayPath</th>
              </tr>
           
          <#list successNodes?keys as nodeReference>
               <tr>
                <td align="center"> ${successNodes[nodeReference].FolderName}</td>
                <td align="center"> ${successNodes[nodeReference].NodeRef}</td>
                <td align="center"> ${successNodes[nodeReference].DisplayPath}</td>
               </tr>
        </#list>
            </table>
     </#if>
     
     <#if failedNodes?is_hash_ex>
         <table border="1">
              <tr>
                   <th align="center">NodeRef</th>
                   <th align="center">ErrorMsg</th>
              </tr>
              <#assign keys = failedNodes ?keys>
           <#list keys as key>
             <tr>
                     <td align="center">${key}</td>
                     <td align="center">${failedNodes [key]}</td>
                </tr>
           </#list>
            </table>
     </#if>
</body>
</html>When you run the webscript: http://127.0.0.1:8080/alfresco/service/abhinav/getFolderInfo?siteShortName=test&skipCount=0&maxCount...
You will see following result:

 
					
				
				
			
		
Explore our Alfresco products with the links below. Use labels to filter content by product module.