La semana pasada Alfredo Sanchez, del equipo de zylk.net, estuvo
haciendo algunas pruebas de desarrollo con la versión 6 del gestor de
portales de Liferay. Los conceptos que se querían probar eran los siguientes:
- El servicio de notificaciones, que está accesible en el core del producto
- La posibilidad de añadir portlets de manera estática desde el
portal-ext.properties, tal como está añadido el portlet de chat.
Para ello hizo el siguiente desarrollo, un portlet que verifica las
notificaciones para un usuario/role/comunidad/portal y muestra la
notificación en un pop-up si el usuario logueado tiene pendiente leer
alguna notificación concreta destinada a él. Las notificaciones a
comunidad/role/portal se pueden añadir desde el panel de
administración de notificaciones del producto, pero las de usuario,
pese que el servicio las permite, deben añadirse de manera
programática. La comprobación de si existe o no una notificación se
hace en cada petición, no se ha implementado un patrón poll tipo el
que hay implementado en el portlet de chat dado que no hemos
considerado crítico que se notifique instantaneamente.
Las conclusiones son las siguientes:
- El servicio de notificaciones se puede utilizar como canal de
comunicaciones entre usuarios de manera más o menos sencilla, para
ello se podría ampliar el portlet de notificaciones para que permita
la comunicación user to user. - Sería interesante poder añadir código html con un rich-editor a
las notificaciones creadas desde el panel de administración - Sería interesante que las notificaciones fueran internacionalizables.
- Sería interesante que los conceptos que se manejan en el portlet
de actividades, tipo de objeto (classname) origen de la actividad y
objeto origen de la actividad classPK, estuvieran accesibles para su
uso en el servicio de notificaciones del core.
A continuación mostramos unas capturas del portlet y un link
para la descarga
del mismo. Para añadirlo basta con incluir en el portal-ext.properties
la referencia al mismo:
En esta primera captura vemos el popup con las notificaciones
pendientes de leer.
Si pinchamos en el botón de cierra las notificaciones no volverán a
mostrarse hasta que no se vuelva al portal.
Marcamos una notificación como leída:
Y nos quedan por leer el resto de notificaciones.
El parámetro que hay que modificar en el portal-ext.properties es el siguiente,
layout.static.portlets.all=notifications_WAR_notificationsportlet