As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
<#assign contador = 0 > <#assign tamanio = 0 > <#list space.childrenByXPath[".//*"] as child> <#if child.isDocument> <#assign contador = contador+1 > <#assign tamanio = tamanio + child.size> </#if> </#list> <#assign tamanio = (tamanio/1024)/> <#assign tamanio = (tamanio/1024)/> <table border="0" celpadding="0" cellspacing="0"> <tr><td>Numero de docs en el espacio: ${contador}</td></tr> <tr><td>Tamaño de los documentos: ${tamanio}</td></tr> </table>
<table> <#macro recurse_macro node depth> <#if node.isContainer> <tr> <td align='left'>(${depth}) <#if (depth>0) > <#list 1..depth as i>.</#list> </#if> <img src="/alfresco${node.icon16}"> <a href="/alfresco${node.url}">${node.properties.name}</a> </td> </tr> <#list node.children as child> <#if child.isContainer && node.children?size != 0 > <@recurse_macro node=child depth=depth+1/> </#if> </#list> </#if> </#macro> <b>Recursive Listing of Spaces:</b> <table border="1" celpadding="1" cellspacing="1"> <tr><th> Name Space </th></tr> <@recurse_macro node=companyhome depth=0/> </table>
var carpeta = args.carpeta; var resultados = new Array(); var espacio = roothome.childByNamePath(carpeta); var i=0; for(var j=0; j<espacio.children.length; j++){ var hijo = espacio.children[j]; if(hijo.isDocument){ resultados[i]=hijo; i++; } // A partir de aquí no me entra , no sé como acceder a un asubcarpeta en webscript if(hijo.isContainer){ var espacio2 = roothome.childByNamePath(carpeta+"/"+hijo.name); for(var x=0; x<espacio2.children.length; x++){ var hijo2=espacio2.childen[x]; if(hijo2.isDocument){ resultados[i]=hijo2; i++; } } } } model.resultados=resultados;
… Lo que tengo que realizar es recorrer una carpeta y sus subcarpetas recursivamente, y obtener los documentos de dichas carpetas.En el js, solo consigo recorrer la carpeta de un nivel, pero el resto no me funciona, no sé como crear una subcarpeta en webscritp, te muestro el código para ver si me podrías comentar como tirar:
function muestraRutas(node) { for each(n in node.children) { if ( n.isDocument ) salida+="Ruta de los archivos: "+n.displayPath+"/"+n.name+"\n\r"; for ( var i = 0; i < n.children.length; i++ ) { if ( n.children[i].isContainer == true ) muestraRutas( n.children[i] ); } } } // Objetos modificables var nodo_raiz = "" ; var salida = ""; var logFile = script.parent.childByNamePath( "muestraRutas.txt" ); // Precondiciones if ( logFile == null ) logFile = script.parent.createFile( "muestraRutas.txt" ); if ( nodo_raiz == "" ) { var space = companyhome; } else{ var space = companyhome.childByNamePath( nodo_raiz ); } if (space != null) { muestraRutas( space ); } else{ salida += "Error al localizar el espacio raiz: " + nodo_raiz + "\n\r"; if (logger.isLoggingEnabled()) { logger.log("Error al localizar el espacio raiz: " + nodo_raiz ); } } logFile.content = salida; logFile.save(); logFile.content;
var tabla1 = new Array();
If your scripts access a lot of different Java classes it can get awkward to use the full package name of the class every time. Rhino provides a top-level function importPackage that serves the same purpose as Java's import declaration. For example, we could import all of the classes in the java.io package and access class java.io.File using just the name File: importPackage(java.io) File [JavaClass java.io.File]
companyhome.childByNamePath["XXXXXX"]
<table> <#list companyhome.childrenByLuceneSearch["TEXT:alfresco* AND TEXT:tutorial*"] as child> <tr><td><a href="/alfresco${child.url}" target="new">${child.properties.name}</a></td></tr> </#list> </table>
de hecho si vas a empezar a trastear los ftls un consejillo: Ten siempre cerca el cookbook de templates de Freemarker que hay publicado en la wiki de alfresco (aquí).
1. Puedes hacerlo directamente con el ChildByName (o el childByNamePath que no lo recuerdo bien)
No he encontrado nada referente a ftl sin embargo sí que he leído mucho de webscripts. Me da que es porque no se puede hacer porque a fin de cuentas es una plantilla. ¿No puedes hacer un js? ¿O crearte una acción usando POI para darle formato al excel?
Consejo, mejor usad JavaScript para todo el recorrido ya sea recursivamente o no y pasáis el recorrido en "model" a la plantilla FreeMarker, se ahorran muchos quebraderos de cabeza… Se tiende a intentar "codificar" en FreeMarker como si de un lenguaje de scripting se tratase y no es así.
A lo primero, tienes toda la razón ¿le has encontrado alguna lógica? A lo mejor es recargando (como con los webscripts) y listo :roll: Si has dado con la clave: Cuenta!!
A lo segundo: ¿Y si lo tratas como un .csv? He realizado la siguiente prueba y me ha ido bien:Créate el txt tal que así (por ejemplo)Nombre;Apellidos;PoblacionCristina;Martin Ruiz;SevillaGuárdalo como un csv en vez de txt y ábrelo con el excel y ya verás por ti mismo. El salto de linea es importante porque es el que te va a definir el salto de linea dentro del excel 😃