5 marzo, 2015 Metadology

Adaptando plugins Liferay

En el desarrollo web con Liferay, es bastante común la personalización de componentes (JSP’s, servicios de Portal, traducciones, etc.) del core de Liferay mediante el uso de hooks pero, ¿que ocurre cuando el componente no se encuentra en el core de Liferay, sino que se trata de un plugin?. En estos casos, no es factible la implementación de hooks, pero Liferay proporciona mecanismos alternativos (documentados en el Liferay Portal Developer’s Guide).

En este artículo, describimos el proceso de personalización de plugins, basándonos en un caso práctico, en el que personalizaremos el plugin Calendar.

Obtener el código fuente de los plugins

El primer paso es descargar el código fuente de los plugins (teniendo en cuenta la versión de nuestra instalación de Liferay). Para ello, clonaremos el repositorio github en el que se encuentran los plugins.

git clone https://github.com/liferay/liferay-plugins.git

En nuestro caso, implementaremos el ejemplo para Liferay 6.2-ga3, por lo que accederemos al tag 6.2.x disponible en el repositorio que hemos clonado:

git checkout origin/6.2.x

El código fuente del plugin que vamos a personalizar se encuentra en el directorio $LIFERAY_PLUGINS/portlets/calendar-portlet.

Creación del proyecto

En el IDE, creamos un plugin project en el que seleccionaremos el mismo gestor de proyectos (Build type) con el que ha sido implementado el plugin original, que en el caso concreto del calendario es ANT.

Una vez creado el proyecto, se eliminará el contenido incluido en el directorio docroot. En este momento, el proyecto debe contener los archivos de configuración generados por eclipse (esto es, .settings, .classpath, . project) y un archivo build.xml vacío, como el que se muestra a continuación:

< ?xml version="1.0">
< !DOCTYPE project>


	

postExtendPlugin1-241x300

Para poder realizar la personalización del plugin, es preciso empaquetar un war a partir del código original. Para crear el empaquetado, podemos optar por lanzar ant directamente en el directorio donde se encuentran los fuentes o, desplegar directamente el plugin original sobre el IDE.

Un vez esté disponible el war, lo copiamos en el directorio raíz del proyecto, e incluimos en el archivo build.xml, una referencia al archivo que acabamos de copiar, mediante la propiedad original.war.file:

< ?xml version="1.0">
< !DOCTYPE project>;


		
		

Para vincular la nueva versión del plugin con la versión original y, copiar los archivos necesarios en el proyecto, ejecutaremos ant seleccionando el target «merge». Para lanzar esta ejecución, marcamos el nombre del proyecto y desplegamos el menú contextual (generalmente haciendo click con el botón derecho) y, seleccionamos la opción «Liferay -> SDK -> merge». Como resultado de esta operación, se creará una carrera tmp con el código fuente del plugin original.

Si el plugin original cuenta con algún servicio, será preciso crear una copia de la clase «com.liferay.calendar.service.ClpSerializer» en el nuevo proyecto y, modificar el valor de la variable «_servletContextName» por el nombre del nuevo proyecto:

if (Validator.isNull(_servletContextName)) {
     //_servletContextName = "calendar-portlet";
     _servletContextName = "custom-calendar-portlet";
}

Personalización del Plugin

Una vez preparado el proyecto, podemos realizar los ajustes necesarios para adaptarlo a nuestras necesidades. Como hemos mencionado anteriormente, realizaremos una pequeña modificación el plugin, con el objetivo de mostrar todos los pasos del proceso. En el siguiente ejemplo, modificaremos la vista mensual del calendario para marcar los domingos con un color distinto.

Puesto que el calendario es generado mediante AlloyUI Scheduler (y no vamos a modificar la distribución de este framework incluida en Liferay), aplicaremos los cambios mediante el uso de jQuery. Para ello, crearemos una copia de view_calendar.jsp en el docroot del nuevo proyecto (es decir, realizamos los mismo pasos que en el caso de sobreescritura de una jsp en un hook).

En este caso, para conseguir nuestro objetivo, bastará con incluir el siguiente código al final de view_calendar.jsp :

A partir de este momento, ya es posible empaquetar y realizar el despliegue del componente en el servidor Liferay.

Como se puede ver, la sobreescritura de plugins Liferay requiere una preparación previa del proyecto y, una vez realizada, el proceso es muy similar al seguido en el desarrollo de hooks.

Tagged: ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Las cookies son importantes para el correcto funcionamiento de este sitio. Para mejorar su experiencia, usamos cookies tanto propias como de terceros con la finalidad de permitir al usuario su navegación en esta página web y el uso de sus servicios así como para recordar las preferencias de usuario y recopilar estadísticas con el fin de optimizar la funcionalidad del sitio. Haga clic en Aceptar y continuar para aceptar las cookies e ir directamente al sitio. política de cookies

ACEPTAR
Aviso de cookies