cancel
Showing results for 
Search instead for 
Did you mean: 

Script para cambiar la descripcion de una carpeta/espacio

witho
Champ on-the-rise
Champ on-the-rise
Hola,

Estoy intentando hacer un script para modificar la "descripcion" de unas capretas/espacios de Alfresco y no consigo que me coja bien los datos. Posteo mi script de ejemplo que crea una capreta y le da un texto a la descripcion. Si alguien puede ayudarme para cambiar la descripcion lo agradecería,


var nombreCarpeta = "Test";
var descCarpeta = "Descripcion";
var carpeta = userhome.createFolder(nombreCarpeta);
carpeta.properties["cm:description"] = descCarpeta;

he intentado de esta manera tambiés con el mismo resultado,


carpeta.properties.description = descCarpeta;

en ambos casos la propiedad de la carpeta/espacio queda vacía, espero que alguien me pueda ayudar, muchas gracias.

Saludos
11 REPLIES 11

fdelgado
Champ in-the-making
Champ in-the-making
Hola, yo tengo un web Script que cambia la descripción de una carpeta/espacio. Lo tendrás que adaptar, ya que veo que tu creas el espacio. Yo sin embargo, busco un espacio preexistente.

Lo hago de esta forma:


//Con el noderef, no hay confusion y si existe, siempre devuelve un unico nodo

var h = search.findNode(args.q); //Busco el espacio que quiero cambiar por su identificador

if (h != null)
  {        
          h.properties["cm:description"] = args.desc; //Le asigno su nueva descripcion, la cual se encuentran en args.desc
          h.save(); //Persisto los cambios.
    
  }

status.code = 200;
status.redirect = true;

fdelgado
Champ in-the-making
Champ in-the-making
He probado el siguiente código, y crea un espacio nuevo con la descripcion indicada.

//var h = search.findNode(args.q);

var h =  userhome.createFolder(args.q);

if (h != null)
  {        
          h.properties["cm:description"] = args.desc;
          h.save();
    
  }

status.code = 200;
status.redirect = true;

ajv
Champ in-the-making
Champ in-the-making
Hola witho,

Puedes ser que te falte llamar a carpeta.save() para que se reflejen los cambios del script…
var nombreCarpeta = "Test";
var descCarpeta = "Descripcion";
var carpeta = userhome.createFolder(nombreCarpeta);
carpeta.properties["cm:description"] = descCarpeta;
carpeta.save();
Saludos!

witho
Champ on-the-rise
Champ on-the-rise
Muchas gracias, lo acabo de probar y va perfecto.

Mi objetivo es crear un script que cambie la descripción de un gran número de carpetas. Por ejemplo, tengo 50 carpetas dentro de las cuales tengo 20 subcarpetas que se llaman de igual manera en las 50 carpetas. Es decir en la carpeta A tengo 20 subcarpetas (subcarpeta1, subcarpeta2, …) en la carpeta B otras 20 subcarpetas de igual nombre que en la carpeta A(subcarpeta1, subcarpeta2, …). Ahora lo que quiero es un script para cambiar la descripción de esas subcarpetas sin tener que hacerlo una a una.

Mi idea es recoger todas las carpetas con el nombre subcarpeta1 y cambiarle la descripción que será la misma también y así consecutivamente. ¿de qué manera puedo obtener todas las subcarpetas con el mismo nombre ubicadas en las distintas carpetas?

Gracias de nuevo y perdón por mi torpeza.

ajv
Champ in-the-making
Champ in-the-making
Hola de nuevo witho,

Para ello, supongo que lo más sencillo es lanzar búsquedas dentro del javascript.
Por ejemplo, para encontrar todos los nodos que se encuentran bajo company_home que se llaman subCarpeta1:
var nodes = search.luceneSearch("PATH:\"/app:company_home//cm:subCarpeta1\"");
Después, pues tendrás que aplicarle a todos esos nodos el cambio de descripción para subCarpetas1…y así con el resto de subCarpetasX.

Si quisieras darle la misma descripción a todas las subcarpetas, podrías hacer la query más compleja de modo que obtuvieses todas las subCarpetas en la misma variable nodes:
var nodes = search.luceneSearch("PATH:\"/app:company_home//cm:subCarpeta1\" OR PATH:\"/app:company_home//cm:subCarpeta2\" …");
Espero que te sirva.
Saludos!

witho
Champ on-the-rise
Champ on-the-rise
Ok la busqueda funciona perfectamente pero me da error cuando intento buscar una carpeta con titulo 1, 2, … es decri cuando intento buscar un número:

var nodes = search.luceneSearch("PATH:\"/app:company_home//cm:1\"");

Hay alguna forma diferente de indicar el nombre de las carpetas a buscar para que no de error.

Muchas gracias, de nuevo.

witho
Champ on-the-rise
Champ on-the-rise
Hola,

He leido que Alfresco no lee bien los nombres de carpetas que contienen solo numeros, ¿alguien sabe si este problema se puede evitar de alguna manera?

Gracias

ajv
Champ in-the-making
Champ in-the-making
Buenos días Witho,

Las búsquedas por Lucene están basadas en codificación ISO9075, por lo que hay ciertos caracteres por los que no pueden empezar los ítems, entre ellos los números  Smiley Very Happy
Puedes emplear la codificación ISO9075. Por ejemplo, los espacios se reemplazan por _x0020_, las cadenas que comienzan con números se codifica el primer numero de la siguiente forma: _x003Y_, donde Y es el número a codificar.
Por ejemplo, la cadena "1 2" sería "_x0031__x0020_2"

Por tanto, en tu caso creo que deberías lanzar la siguiente búsqueda:
var nodes = search.luceneSearch("PATH:\"/app:company_home//cm:_x0031_\"");

Espero que te haya resultado útil.  :wink:
Saludos!!

witho
Champ on-the-rise
Champ on-the-rise
Muchísimas gracias, la información me ha ayudado mucho en mi problema.

Un saludo.