Gestión de imágenes y documentos (prototipo con GRAILS)

Como parte de las mejoras propuestas para nuestro sistema Sistema de Administración de PROpiedades INmobiliarias vamos a incluir la opción de añadir documentos multimedia a los elementos que lo conforman:

  • Imagen principal: a propiedades y entidades (clientes, proveedores y empresas propias)
  • Otras imágenes: a propiedades
  • Planos: a propiedades
  • Documentos: a propiedades y entidades
  • Vídeos: a propiedades

Las imágenes y documentos se alojan en el servidor de la aplicación, mientras que los vídeos deben estar alojados en Youtube o Vimeo.

A la hora de seleccionar los documentos multimedia a subir al servidor se ha validado su formato en cliente (con el parámetro accept del input y en JavaScript una vez seleccionado) y en servidor,  y su tamaño en cliente (en JavaScript una vez seleccionado) y en servidor.

*Actualización: se ha dejado de controlar el tamaño máximo de las imágenes, ahora se redimensionan al subirlas al servidor.

El diseño de la aplicación debe permitir incluir con facilidad documentos multimedia a otros objetos, como podrían ser los arrendamientos (podría subirse el contrato escaneado). Además, puede que se requiera la implementación de un gestor documental que permita acceder a los documentos multimedia sin tener que hacerlo desde el objeto que los contiene.

De este modo, lo primero ha sido montar un prototipo muy sencillo que tenga esta funcionalidad, para posteriormente incluirlo en el sistema. Sobre un proyecto en blanco de GRAILS 2.5.1, sólo añadiendo Twitter Bootstrap (para la visualización de las secciones de los documentos  multimedia), y una galería de imágenes en Jquery, este ha sido el resultado:

Se ha buscado poder reutilizar tango pantallas como código en el servidor (la gestión de los documentos multimedia se hace desde un controlador común haciendo un forward desde el controlador de cada objeto que los contiene).

Los parámetros de número máximo de elementos están guardados en el fichero de configuración Config.groovy, y los parámetros tamaño máximo están guardados en las clases (cada objeto sabe cual es su tamaño máximo permitido), de esta forma hay un ejemplo de las 2 formas de gestionarlos.

Para quien pueda servirle, el código fuente del prototipo está disponible en esta dirección:

Anuncios