buscar carpeta y mover documento

cancel
Showing results for 
Search instead for 
Did you mean: 
giorgio
Member II

buscar carpeta y mover documento

Buenas, tengo un script el cual ejecuto al modificar cierta propiedad de un documento, y lo que hace es mover el documento a la carpeta destino que viene
dada por la propiedad que modifico, para moverlo utilizo la siguiente linea de codigo

var carpetaDestino=companyhome.childByNamePath(destino);
document.move(carpetaDestino);

Pero me encuentro con el problema de que si estoy dentro de un espacio que no esta en el raiz, es decir  en el compani home,
el destino no lo encuentra, porque con esta linea solamente busca el destino dentro de companyhome, pero el destino puede estar por encima o por debajo
del espacio en el que estoy, como podria hacer para poder mover el archivo arriba o abajo?, alguna manera de buscar el destino por todos los espacios?

Un saludo.
14 Replies
pjcaracuel_2349
Active Member II

Re: buscar carpeta y mover documento

Uhmmmm, puedes poner el ejemplo concreto que no te funciona???

Saludos
giorgio
Member II

Re: buscar carpeta y mover documento

pues a ver, tengo esta estructura

     RaizAlfresco
               Carpeta1
                        Carpetasub1
                                 Carpetainf1   —> el archivo que quiero mover está aqui por ejemplo. y lo quiero mover a carpeta2, o a Carpetainf2 por ejemplo
                        Carpetasub2
                                Carpetainf2
                        ….
               Carpeta2
                  ….

Con las instrucciones 

var destino=document.properties["my:haciadonde"];
var carpetaDestino=companyhome.childByNamePath(destino);
document.move(carpetadestino);

de esta manera solo busca desde companyhome, entre sus hijos, sin llegar a buscar mas abajo, y como dentro de companyhome no lo encuentra y ya no busca mas, peta al moverlo.

Aparte de que yo igual estoy en el raiz, que igual estoy dos niveles dentro, o en cualquier  otro sitio, de manera que me gustaria poder buscar hacia arriba o hacia abajo, esté donde esté.Pero como siempre con la esacas doc de la api de javascript, no encuentro el como, no se si por ejemplo existe un metodo, if(space.exists).

Saludos.
pjcaracuel_2349
Active Member II

Re: buscar carpeta y mover documento

Pues lo unico que a mi se me ocurre es componer la variable destino en tiempo de ejecucion. Claro esta, que es por usar js, si fuera con java compondria la busqueda con lucene y listo.

TE cuento, haciendo uso del space.parent (para arriba) o space.chidren (para abajo), ir componiendo la ruta tal que al final, le pases la cadena completa. Me sigues?

Saludos
giorgio
Member II

Re: buscar carpeta y mover documento

bueno en javascript tambien existe el search.luceneSearch();  pero no se como funciona tampoco.

no existe un api javascript mas detallada que lo que hay en la wiki?

Saludos y gracias. voy a pegarme con esto.
pjcaracuel_2349
Active Member II

Re: buscar carpeta y mover documento

Seria interesante encontrala pero…..

En fin, se que no te consolara, pero yo en las funcionalidades que he desarrollado tanto en Alfresco, como en otros gestores documentales, la ruta para mover tienes que calcularla previamente y en base a algo, si tienes la ruta exacta para mover te funciona la clausula de busqueda sin problemas.

Saludos
giorgio
Member II

Re: buscar carpeta y mover documento

Buenas una pregunta? que diferencia hay entre crear los grupos de usuario unos dentro de otros, o crearlos independiente?
heredan los permisos?
como podria hacer para que si tengo la carpeta B dentro de la A, y tengo un grupo A y uno B, el grupoB tiene acceso a la carpeta B, pero no quiero que pueda ver el contenido de A, y el grupoA tiene que ver la carpeta A y B sin problemas, es que me he encontrado el problema de que grupoB para poder ver la carpetaB, tiene que poder ver tambien la A, si solo lo añado al espacio B, no puede ver ni el A ni el B y eso no es lo que quiero.

en cuanto a la busqueda de los espacios espero que le sirva a alguien, es una chapucilla pero bueno:

function replace(texto,s1,s2){
    return texto.split(s1).join(s2);
}

   var log = "";
   var sub = "";
   var encontrado = false;
function sacar(hi){
          for (var a=0; a<hi.length; a++)
          {
                  // log += " SubdocName: " + hi[a].name + "\tPath: " + hi[a].displayPath + "\r\n";
          if(destino==hi[a].name){
          log += " ENCONTRADO SubdocName: " + hi[a].name + "\tPath: " + hi[a].displayPath + "\r\n";

          cadena=replace(hi[a].displayPath,"/Company Home/","");

          log += "CADENA "+ cadena + "\r\n";
          carpetaDestino=companyhome.childByNamePath(cadena+ "/"+hi[a].name);
          encontrado = true;
          break;
          }
                 var su= hi[a].children;
                if(su.length!=0 && encontrado==false){
                sacar(su);
                }
          }

}

var docs = companyhome.children;
   for (var i=0; i<docs.length; i++)
   {

         // log += "Name: " + docs[i].name + "\tPath: " + docs[i].displayPath + "\r\n";
          if(destino==docs[i].name){
          log += "ENCONTRADO Name: " + docs[i].name + "\tPath: " + docs[i].displayPath + "\r\n";
          cadena=replace(docs[i].displayPath,"/Company Home","");
          log += "CADENA "+ cadena + "\r\n";
          carpetaDestino=companyhome.childByNamePath(cadena+ "/"+docs[i].name);
          encontrado = true;
          break;
          }
          var subdocs =docs[i].children;
     if(subdocs.length!=0 && encontrado==false){
             sacar(subdocs);
     }
   }

/* para debug
var mail = actions.create("mail");
mail.parameters.to="correo que quieras";
mail.parameters.subject = "DEBUG";
mail.parameters.from = "noreply@noreply.com";
mail.parameters.text = log;
var doc=companyhome.childByNamePath("Data Dictionary/Email Templates/notify_user_email.ftl");
mail.execute(doc);*/

document.move(carpetaDestino);

Saludos
venzia
Senior Member

Re: buscar carpeta y mover documento

Hola Giorgio, hace poco tiempo analicé el funcionamiento de grupos anidados en Alfresco 3Stable. La conclusión fue :
-Dada una estructura tal como :
   GrupoA—-
                  |——-GrupoB
                  |——-GrupoC——-
                                               |——–GrupoD
Si añades un usuario X en el GrupoD, para alfresco, este usuario pertenece al GrupoD, GrupoC y GrupoA.
En cualquier elemento del repo que asignes permisos a esos grupos, dicho usuario X tendrá los correspondientes permisos.
Saludos,
venzia
Senior Member

Re: buscar carpeta y mover documento

Por otro lado, cual es el contenido normal de la propiedad document.properties["my:haciadonde"];?
Si tienes el nombre de la carpeta y sabes que es unico puedes buscar por name mediante lucene http://wiki.alfresco.com/wiki/3.0_JavaScript_API#Search_API.
Para mi la docu no es tan escasa, eso si .. tienes que mirar en varios sitios.
Por ejemplo, yo buscaría por path, nombre de carpeta y tipo de contenido :
http://wiki.alfresco.com/wiki/Search#Path_Queries
http://wiki.alfresco.com/wiki/Search#Finding_nodes_by_text_property_values
http://wiki.alfresco.com/wiki/Search#Finding_Nodes_By_Type

//tu codigo inicial
var destino=document.properties["my:haciadonde"];
var carpetaDestino=companyhome.childByNamePath(destino);
document.move(carpetadestino);

//el que yo probaría
var destino=document.properties["my:haciadonde"];
var carpetaDestino=search.luceneSearch("PATH:\"/app:company_home//*\" +TYPE:\"cm:folder\" +@cm\:name:\"+destino+"\"");
document.move(carpetadestino);

//PATH:\"/app:company_home//*\" : dice que busque desde company_home hacia abajo, en cualquier nivel. Podemos acotarlo si hay un espacio general que no sea company_home.
//+TYPE:\"cm:folder\" : y que sea carpeta
//+@cm\:name:\"+destino+"\" : y que el nombre sea el valor de la propiedad

Lo mismo sería interesante hacer una comprobacion del número de registros devueltos en carpetaDestino.
No lo he probado, por lo que he podido cometer algun error de sintaxis.
Ya nos dices si te vale.
Saludos y suerte!
giorgio
Member II

Re: buscar carpeta y mover documento

Hola, gracias por tu aportacion, tengo un problema que imagino que será de sintaxis, pero es muy raro,
si ejecuto esta consulta lucene, desde el node browser
search.luceneSearch("PATH:\/app:company_home//*\" + TYPE:"cm:folder" +@cm\:name:SAI);

ME trae los resultados sin problemas,
pero al ejecutarla en el script:

Script:


var carpetaDestino= search.luceneSearch("PATH:\/app:company_home//*\" + TYPE:"cm:folder" +@cm\:name:SAI);
   var log = "";
log=carpetaDestino;


var mail = actions.create("mail");
mail.parameters.to="micorreo";
mail.parameters.subject = "DEBUG";
mail.parameters.from = "noreply@noreply.com";
mail.parameters.text = log;
var doc=companyhome.childByNamePath("Data Dictionary/Email Templates/notify_user_email.ftl");
mail.execute(doc);



me da el siguiente error

  Per favor, corregiu els errors següents i després cliqueu 'Ok'.
Sha produït un error en el sistema durant loperació: Failed to execute script 'workspace://SpacesStore/d3fbfb0f-dc57-40f4-b235-002b85a1082d': missing ) after argument list (AlfrescoScript#8)

sin enbargo no veo que me falte ningun ")" en el codigo, ni en la busqueda lucene, porque ya he detectado que si quito la consulta lucene, el script se ejecuta sin error alguno.Sabes por donde pueden ir los tiros?

Un saludo.