Controlar nombres de ficheros "antes" de cargarlos

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

Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Me gustaría agregar a una carpeta una regla que verifique que el nombre del fichero que voy a cargar incluya el nombre corto del site en el que está dicha carpeta.

En caso que no sea así quiero evitar la carga del fichero y dar un mensaje de error al usuario.

Supongo que es un requisito bastante común... ¿alguien lo ha resuelto?

O alguien tiene idea de dónde puedo buscar.

Muchas gracias.

1 Solution

Accepted Solutions
angelborroy
Alfresco Employee

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Quizá podrías utilizar "logger.log" para ver qué valor tienen las variables en ese punto. O montarte un caso de prueba con la JavaScript console (https://github.com/share-extras/js-console)

Hyland Developer Evangelist

View solution in original post

7 Replies
cesarista
Customer

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Hola:

Solo tienes que crear una regla cuando se añaden documentos que cambie el nombre del documento con el nombre del site. No parece difícil con un script de javascript API que se aplique a la regla.

Pero no entiendo bien la segunda frase, la regla se aplica si o si. La regla es un postproceso y se aplica tras la subida del documento. Si te da un error (por ejemplo, porque ya existe el documento) podrías llegar a capturar el error en el javascript (dentro de un try-catch) y llegar a borrar el documento. Pero no creo que puedas mandar un mensaje al usuario.

Sobre si es un requisito común te diría que de primeras no le veo mucha utilidad. El nombre corto del site ya está en el path o en la url de documento. El buscador ya tiene un contexto de Sitio, e incluso un filtro por Sitio como faceta.

Saludos.

--C.

nicecons
Active Member II

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Muchas gracias César.

Te explico:

No se trata de cambiarle el nombre al documento, se trata de "comprobar" que el nombre que tiene el documento que se quiere cargar ya "incluye" dentro de sí el nombre corto del site.

Por ejemplo si estoy intentando cargar el documento "PRU002-Contrato.txt" en el sitio "PRU002" la carga se hace, pero si el mismo documento se intenta cargar en el sitio "PRU001" se impide la carga.

No tengo tan claro que la regla sea exactamente un postproceso, de hecho si una regla da un error ni se carga el documento ni se ejecutan las siguientes reglas asociadas a su carga (cosa que me viene muy bien para lo que estoy buscando).

Más o menos lo he conseguido pero tengo dos problemas:

1. No consigo encontrar la forma de obtener el nombre corto del site antes de que el documento se cargue (no me sirve "").

2. Fuerzo un error el el script, pero no consigo que el usuario vea un mensaje.

Si se te ocurre algo por favor avísame.

Un saludo.

angelborroy
Alfresco Employee

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

El nombre corte del site puedes conseguirlo así:

document.siteShortName

No puedes hacer que el usuario vea el mensaje lanzado por la API JavaScript. Creo que solo es posible si se modifica Alfresco, lo cual no es muy recomendable.

Hyland Developer Evangelist
nicecons
Active Member II

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Hola Ángel:

Eso lo he probado y no "trae" el nombre del Site, creo que puede deberse a que en realidad todavía no ha incorporado el documento.

¿Sabes si puedo obtenerlo desde las propiedades de un objeto que no sea el documento?

Muchas gracias, un saludo.

angelborroy
Alfresco Employee

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Si no trae el nombre del Site es porque no estás incorporando el archivo a una carpeta de Site.

Hyland Developer Evangelist
nicecons
Active Member II

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Hola Ángel,

Teóricamente tienes razón, pero sí que lo estoy intentando cargar en una carpeta de la biblioteca de documentos del portal.

Digo que tienes razón porque de echo estoy utilizando "document.siteShortname" en otros JS (en reglas de esa misma carpeta) y funcionan.

Te doy más detalles por si puedes ayudarme a encontrar el problema.

Lo que se me ocurrió, para evitar la incorporación de documentos que no incluyan el nombre del portal fue poner en la carpeta una regla inicial (hay dos más luego) que verifica eso y, en caso de no coincidir, intenta una copia que da error.

Con esto consigo que el documento no se cargue y que las dos reglas siguientes no se ejecuten (justo lo que busco).

Lamentablemente el mensaje no dice cual es el error y solo permanece unos segundos, pero me vale.

Ahora bien, el JS que ejecuta esa primera regla es el siguiente:

var documento = document.name.substr(6,6);
var portal = "ECI120";
if (documento !== portal) {
var origen = companyhome.childByNamePath("algoquenoexiste");
var destino = companyhome.childByNamePath("kkkkkkk");
var accion = origen.copy(destino, true);}

Con esto si intento cargar un documento que no tenga ECI120 en las  posiciones  adecuadas se intenta hacer una copia que falla y el documento no se carga, en cambio si tiene ECI120 en las  posiciones  adecuadas se carga perfectamente.

El nombre corto del portal es ECI120 (comprobado porque en otras reglas lo pongo dentro de mensajes de correo y estos lo muestran bien).

Ahora bien, si en ese JS reemplazo "ECI120" por document.siteShortname el efecto es como si el valor no se cargara en la variable.

¿Se te ocurre cuál puede ser el problema?

La verdad es que ya no sé qué más buscar.

Muchas gracias por tu ayuda.

Un saludo.

angelborroy
Alfresco Employee

Re: Controlar nombres de ficheros "antes" de cargarlos

Jump to solution

Quizá podrías utilizar "logger.log" para ver qué valor tienen las variables en ese punto. O montarte un caso de prueba con la JavaScript console (https://github.com/share-extras/js-console)

Hyland Developer Evangelist