05.08.2013 Views

Guía básica de Liferay

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

En este curso básico <strong>de</strong> <strong>Liferay</strong> apren<strong>de</strong>rás qué es <strong>Liferay</strong>, qué<br />

ofrece y, en unos sencillo pasos, apren<strong>de</strong>rás a crear tus propios<br />

plugins para ampliar este fantástico CMS.<br />

Sergio Gonzalez Barrios


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Índice<br />

1. ¿Qué es <strong>Liferay</strong>?............................................................................................................ 3<br />

1.2 Versiones ............................................................................................................................. 3<br />

1.3 Licencias .............................................................................................................................. 3<br />

1.4 Tipos <strong>de</strong> servidor ................................................................................................................. 4<br />

1.4 Plugins <strong>Liferay</strong> ..................................................................................................................... 4<br />

1.5 ALLOY................................................................................................................................... 4<br />

2. Instalando un servidor <strong>Liferay</strong> ...................................................................................... 5<br />

3. Plugins ........................................................................................................................... 7<br />

3.1 Tipos <strong>de</strong> Plugins ................................................................................................................... 8<br />

3.1.1 Theme ........................................................................................................................... 8<br />

3.1.2 Layout ........................................................................................................................... 8<br />

3.1.3 Portlet ........................................................................................................................... 8<br />

3.1.4 Hook ............................................................................................................................. 8<br />

3.2 Instala un servidor Apache Ant ........................................................................................... 9<br />

3.3 Instala Java JDK.................................................................................................................. 10<br />

3.4 Instala el IDE <strong>Liferay</strong> en Eclipse ......................................................................................... 11<br />

3.5 Crea tu primer plugin ........................................................................................................ 16<br />

3.6 Crea tu primer Theme ....................................................................................................... 17<br />

3.7 Crea tu primer Layout ....................................................................................................... 19<br />

3.8 Crea tu primer Hook .......................................................................................................... 21<br />

3.9 Crea tu primer Portlet ....................................................................................................... 28<br />

4. ALLOY .......................................................................................................................... 33<br />

4.1 Documentación ................................................................................................................. 33<br />

4.2 Plugins, widgets y utilida<strong>de</strong>s ............................................................................................. 34<br />

4.2.1 Widget ........................................................................................................................ 34<br />

4.2.2 Plugin .......................................................................................................................... 35<br />

4.2.3 Utilida<strong>de</strong>s.................................................................................................................... 35<br />

4.2.4 Ejemplo <strong>de</strong> uso ........................................................................................................... 35<br />

4.3 Crea tu propio plugin......................................................................................................... 37<br />

Visita www.chekis.es<br />

2


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

1. ¿Qué es <strong>Liferay</strong>?<br />

<strong>Liferay</strong> es un gestor <strong>de</strong> contenidos <strong>de</strong> código abierto escrito en Java que nos permite crear<br />

un portal web <strong>de</strong> una forma muy sencilla y rápida y administrar sus contenidos mediante<br />

un panel <strong>de</strong> control muy intuitivo.<br />

Fue creado en el año 2000 y <strong>de</strong>s<strong>de</strong> entonces no ha parado <strong>de</strong> crecer, tanto es así, que cada<br />

año su cuota <strong>de</strong> mercado crece sin parar y ya se ha convertido en uno <strong>de</strong> los principales<br />

CMS <strong>de</strong>l momento dando soluciones a un gran número <strong>de</strong> importantes empresas<br />

nacionales y multinacionales.<br />

1.2 Versiones<br />

Des<strong>de</strong> su creación, <strong>Liferay</strong> ha pasado por numerosas versiones, cada una más<br />

evolucionada que la anterior. Actualmente, su versión más reciente es la 6.1 pero aún<br />

se siguen utilizando, y mucho, las versiones 6.0 y 5.2.x.<br />

Por supuesto, <strong>de</strong>s<strong>de</strong> este libro os vamos a recomendar siempre que utilicéis la versión<br />

más actual <strong>de</strong>l producto ya que será la más estable y solucionará muchas <strong>de</strong> las<br />

<strong>de</strong>ficiencias <strong>de</strong> versiones anteriores.<br />

1.3 Licencias<br />

<strong>Liferay</strong> se distribuye bajo 2 tipos <strong>de</strong> licencias diferentes. La <strong>de</strong>nominada CE y la EE.<br />

La CE es la licencia gratuita y <strong>de</strong> libre distribución que se aplica a todos aquellos<br />

productos que te <strong>de</strong>scargas directamente <strong>de</strong>s<strong>de</strong> su web. Esta licencia te da permiso<br />

para usar su producto, crear plugins y distribuirlos si fuese el caso.<br />

La EE es la licencia Enterprise y como ya habréis imaginado es <strong>de</strong> pago. Como para la<br />

mayoría <strong>de</strong> productos <strong>de</strong> este tipo, las licencias Enterprise son bastante caras y<br />

suelen estar sólo al alcance <strong>de</strong> proyectos con un presupuesto relativamente elevado.<br />

¿Qué diferencia hay entre ambas licencias?<br />

La respuesta es simple, la EE es mucho más completa y estable que la CE a nivel <strong>de</strong><br />

calidad. Si contratas una licencia EE estás adquiriendo un servicio <strong>de</strong> soporte con lo<br />

que tienes la posibilidad, en caso <strong>de</strong> encontrar algún fallo en el producto o bug, <strong>de</strong><br />

solicitar a <strong>Liferay</strong> que lo arregle o te dé una solución para arreglarlo. Si tu licencia es<br />

CE y encuentras un fallo en el producto no podrás solicitar a <strong>Liferay</strong> que te lo<br />

solucione, tendrás que ser tú mismo el que lo arregle o busque una alternativa.<br />

Obviamente, <strong>Liferay</strong> <strong>de</strong>dica la mayoría <strong>de</strong> sus recursos a solucionar los posibles<br />

Visita www.chekis.es<br />

3


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

problemas que surjan en las versiones con licencias EE ya que son las que les reportan<br />

beneficios.<br />

1.4 Tipos <strong>de</strong> servidor<br />

A la hora <strong>de</strong> instalar un servidor <strong>Liferay</strong> <strong>de</strong>bemos elegir sobre qué tipo <strong>de</strong> servidor<br />

queremos que corra.<br />

<strong>Liferay</strong> se distribuye bajo varios tipos <strong>de</strong> servidor. A continuación tenéis la lista <strong>de</strong><br />

servidores:<br />

Tomcat<br />

Geronimo<br />

Glassfish<br />

JBoss<br />

Jetty<br />

JOnAS + Tomcat<br />

Resin<br />

Nosotros te recomendamos que utilices un Tomcat ya que es la más fácil <strong>de</strong><br />

implementar y es el más extendido.<br />

Más a<strong>de</strong>lante veremos cómo se instala un servidor <strong>de</strong> este tipo y lo basaremos en un<br />

servidor Tomcat.<br />

1.4 Plugins <strong>Liferay</strong><br />

En <strong>Liferay</strong> existen 4 tipos principales <strong>de</strong> plugins diferentes:<br />

Themes o temas <strong>de</strong> apariencia<br />

Layouts o plantillas <strong>de</strong> página<br />

Hooks<br />

Portlets<br />

Estos plugins permiten añadir nuevas funcionalida<strong>de</strong>s y servicios al portal original<br />

mejorando la calidad y aumentando su versatilidad. Más a<strong>de</strong>lante podréis ver en que<br />

consiste cada uno <strong>de</strong> estos plugins y cómo po<strong>de</strong>mos crearlos.<br />

1.5 ALLOY<br />

A partir <strong>de</strong> la versión 6.0, <strong>Liferay</strong> incluyó en su portal <strong>de</strong> forma nativa este framework<br />

javascript. En versiones anteriores a la 6.0 incluía la librería jQuery para dar soporte a<br />

todas sus funcionalida<strong>de</strong>s dinámicas.<br />

Este nuevo framework fue <strong>de</strong>sarrollado a partir <strong>de</strong> YUI 3, un framework <strong>de</strong>sarrollado<br />

por la compañía Yahoo y que, aunque en Europa no está muy extendido su uso, sí lo<br />

está en EEUU.<br />

Visita www.chekis.es<br />

4


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

ALLOY da soluciones y funcionalida<strong>de</strong>s para la mayoría <strong>de</strong> código <strong>de</strong>sarrollado para<br />

<strong>Liferay</strong> y, gracias a ser <strong>de</strong>sarrollado a partir <strong>de</strong> YUI3, dispone <strong>de</strong> todas sus<br />

funcionalida<strong>de</strong>s originales.<br />

Como todo framework tiene sus pros y sus contras, en este caso, a pesar <strong>de</strong> dar<br />

infinidad <strong>de</strong> funcionalida<strong>de</strong>s adaptadas a las necesida<strong>de</strong>s <strong>de</strong> <strong>Liferay</strong> y evitar la<br />

necesidad <strong>de</strong> cargar otras librerías javascript hemos <strong>de</strong> <strong>de</strong>cir que su gran<br />

inconveniente es su escasa documentación. Es cierto que dispone <strong>de</strong> una API completa<br />

don<strong>de</strong> podéis encontrar toda la documentación con las diferentes funcionalida<strong>de</strong>s que<br />

ofrece pero carece casi por completo <strong>de</strong> ejemplos completos <strong>de</strong> uso a diferencia <strong>de</strong><br />

otros frameworks como jQuery.<br />

Es por estos motivos que hoy en día todavía no está muy extendido su uso a la hora <strong>de</strong><br />

<strong>de</strong>sarrollar nuevas funcionalida<strong>de</strong>s para un proyecto y muchos programadores optan<br />

por incluir la librería jQuery o cualquier otra para evitar imprevistos o problemas.<br />

Personalmente opino que es un framework muy potente, que ofrece infinidad <strong>de</strong><br />

posibilida<strong>de</strong>s pero que si no tienes unos conocimientos medios/altos no te renta<br />

utilizarlo ya que en cuanto te encuentres un problema tardarás tiempo en solucionarlo<br />

por la escasa documentación, problemas que con frameworks como jQuery no pasaría<br />

ya que si buscas tu problema en Google te saldrán miles <strong>de</strong> entradas con la solución y<br />

con ALLOY eso no pasaría.<br />

Aún así os animo a a<strong>de</strong>ntraros en el mundo <strong>de</strong> ALLOY ya que os resultará muy<br />

interesante y hará que os esforcéis.<br />

2. Instalando un servidor <strong>Liferay</strong><br />

Debemos <strong>de</strong>scargar tanto el portal <strong>Liferay</strong> como el paquete <strong>de</strong> Plugins <strong>de</strong>s<strong>de</strong> este enlace:<br />

http://www.liferay.com/es/downloads/liferay-portal/available-releases<br />

Una vez <strong>de</strong>scargado ambos archivos <strong>de</strong>bemos <strong>de</strong>scomprimir el portal en el directorio que<br />

queramos, por ejemplo en D:\ quedando <strong>de</strong> la siguiente manera D:\<strong>Liferay</strong> 6.1 GA2<br />

Dentro <strong>de</strong> esta carpeta creamos otra carpeta llamada bundles y metemos en ella todo el<br />

contenido <strong>de</strong> "liferay-portal-6.1.1-ce-ga2". Creamos también al mismo nivel que bundles<br />

otra carpeta llamada plugins y <strong>de</strong>scomprimimos en ella el otro archivo que habíamos<br />

<strong>de</strong>scargado ("liferay-plugins-sdk-6.1.1").<br />

Una vez hecho todo esto, vamos a lanzar el portal. Nos vamos a la carpeta<br />

bundles/tomcat/bin/ y ejecutamos startup.bat.<br />

Esto lanzará una consola en la cual veréis todos los registros <strong>de</strong> inicialización <strong>de</strong> <strong>Liferay</strong>.<br />

Una vez termine <strong>de</strong> iniciarse se abrirá automáticamente en vuestro navegador<br />

pre<strong>de</strong>terminado una pestaña don<strong>de</strong> podréis ver el inicializador <strong>de</strong> <strong>Liferay</strong>. En caso <strong>de</strong> no<br />

abrirse sola podéis acce<strong>de</strong>r mediante la URL http://localhost:8080<br />

Visita www.chekis.es<br />

5


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

En esta pantalla podéis configurar los datos <strong>de</strong>l portal, <strong>de</strong>l administrador y la base <strong>de</strong> datos<br />

que utilizará <strong>Liferay</strong> (por <strong>de</strong>fecto Hypersonic).<br />

Tras finalizar la configuración tendremos que esperar unos pocos minutos (2-3min) para<br />

que configure y una vez termine nos mostrará una pantalla <strong>de</strong> confirmación.<br />

A continuación <strong>de</strong>béis establecer una contraseña para vuestra cuenta <strong>de</strong> administrador:<br />

Visita www.chekis.es<br />

6


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Lo siguiente será establecer la típica pregunta secreta y su respuesta para recuperar<br />

nuestra contraseña en caso <strong>de</strong> que se nos olvi<strong>de</strong>:<br />

Tras este último paso nos llevará directamente a nuestro portal que estará accesible<br />

mediante la URL http://localhost:8080<br />

3. Plugins<br />

Un plugin <strong>Liferay</strong> es una extensión <strong>de</strong>l mismo que permite ampliar las funcionalida<strong>de</strong>s y<br />

servicios que ofrece el portal. Existen 4 tipos <strong>de</strong> plugins principales diferentes: Theme,<br />

Layout, Hook y Portlet.<br />

Visita www.chekis.es<br />

7


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

3.1 Tipos <strong>de</strong> Plugins<br />

3.1.1 Theme<br />

Un Theme o Tema <strong>de</strong> Apariencia es un plugin que permite modificar el estilo o<br />

diseño <strong>de</strong> un portal web o <strong>de</strong> una página concreta.<br />

Cada Tema <strong>de</strong> Apariencia pue<strong>de</strong> disponer <strong>de</strong> una serie <strong>de</strong> Esquemas <strong>de</strong> color<br />

que permiten hacer variantes <strong>de</strong>l mismo Tema <strong>de</strong> Apariencia y mantenerlo<br />

todo en un mismo plugin. Por ejemplo, po<strong>de</strong>mos hacer que un Tema <strong>de</strong><br />

Apariencia tenga 2 variantes <strong>de</strong> tonalida<strong>de</strong>s, una en azul y otra en rojo.<br />

3.1.2 Layout<br />

Una Layout o Plantilla es un plugin que permite <strong>de</strong>finir una disposición <strong>de</strong><br />

página diferente para cada página. Son sobre ellas sobre las que se colocan los<br />

portlets y afectan única y exclusivamente al contenido central <strong>de</strong> la página. La<br />

cabecera, navegación principal y footer se <strong>de</strong>finirían directamente en el<br />

theme.<br />

Por ejemplo, po<strong>de</strong>mos tener plantillas <strong>de</strong> 2 columnas al 50%, 3 columnas al<br />

33%, 1 fila al 100% y 2 columnas al 50%, etc.<br />

3.1.3 Portlet<br />

Los Portlets son el componente principal <strong>de</strong> programación <strong>de</strong> <strong>Liferay</strong>.<br />

Funcionan como módulos in<strong>de</strong>pendientes y cada uno tiene una funcionalidad<br />

diferente. Cualquier código creado <strong>de</strong>ntro <strong>de</strong> un portlet no afectará nunca al<br />

código nativo <strong>de</strong>l portal. Por ejemplo, po<strong>de</strong>mos tener un portlet <strong>de</strong> Agenda,<br />

otro <strong>de</strong> Blog, otro <strong>de</strong> RSS, etc.<br />

<strong>Liferay</strong> dispone <strong>de</strong> numerosos Portlet nativos pero nosotros po<strong>de</strong>mos crear<br />

tantos como queramos para dar solución a todas nuestras necesida<strong>de</strong>s o<br />

modificar los que ya nos ofrece <strong>Liferay</strong> mediante Hooks<br />

3.1.4 Hook<br />

A diferencia <strong>de</strong> los portlets, este tipo <strong>de</strong> plugin permite modificar el código<br />

nativo <strong>de</strong>l portal. Se utilizan, sobretodo, para modificar el código <strong>de</strong> algún<br />

portlet nativo <strong>de</strong>l portal, <strong>de</strong>finir variables <strong>de</strong> idioma o modificar alguna<br />

funcionalidad <strong>de</strong>l portal.<br />

Existen 4 tipos <strong>de</strong> hooks principales:<br />

Custom JSPs: Permiten modificar el código <strong>de</strong> uno o varios portlets<br />

mediante la modificación <strong>de</strong> sus JSPs.<br />

Portal properties: Permiten modificar las propieda<strong>de</strong>s <strong>de</strong>l portal o <strong>de</strong>finir<br />

nuevas propieda<strong>de</strong>s.<br />

Visita www.chekis.es<br />

8


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Services: Permiten modificar los servicios <strong>de</strong>l portal directamente o añadir<br />

nuevos.<br />

Language properties: Permiten <strong>de</strong>clarar nuevas variables <strong>de</strong> idiomas para<br />

facilitar la internacionalización <strong>de</strong>l portal. Estas variables luego será usadas<br />

en diferentes puntos <strong>de</strong>l portal como, por ejemplo, para traducir algún<br />

texto <strong>de</strong> un Tema <strong>de</strong> Apariencia o <strong>de</strong> un Portlet.<br />

3.2 Instala un servidor Apache Ant<br />

Lo primero que <strong>de</strong>bemos hacer es explicar para que instalamos este servidor.<br />

Gracias a este servidor Apache Ant podremos realizar las compilaciones necesarias<br />

para generar los diferentes paquetes WAR que <strong>de</strong>splegaremos en nuestro portal<br />

<strong>Liferay</strong>.<br />

Lo primero será <strong>de</strong>scargar el servidor <strong>de</strong> la siguiente dirección<br />

http://ant.apache.org/bindownload.cg<br />

Para instalar el Apache Ant no tenemos nada más que <strong>de</strong>scomprimir el archivo en la<br />

carpeta que nosotros queramos.<br />

A continuación <strong>de</strong>bemos <strong>de</strong> añadir a las variables <strong>de</strong> entorno las herramientas Ant<br />

para que podamos ejecutar los comandos necesarios, para ello:<br />

Vamos a Panel <strong>de</strong> Control->Sistema y Seguridad->Configuración avanzada <strong>de</strong>l sistema<br />

->Opciones avanzadas->Variables <strong>de</strong> entorno(ESTAMOS EN WINDOWS 7)<br />

Ahora <strong>de</strong>bemos <strong>de</strong> incluir la ruta <strong>de</strong> la carpeta bin <strong>de</strong> nuestro Apache Ant, en nuestro<br />

caso sería D:\apache-ant-1.8.2\bin\<br />

Buscamos la variable Path en Variables <strong>de</strong>l Sistema y la editamos. Al final <strong>de</strong>l todo<br />

añadimos la ruta <strong>de</strong> vuestro Apache Ant quedando <strong>de</strong> la siguiente forma:<br />

Ahora creamos la variable ANT_HOME y le añadimos la ruta D:\apache-ant-1.8.2\<br />

Visita www.chekis.es<br />

9


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Para probar que todo funciona abrimos la consola cmd(Inicio y ejecutamos CMD) y<br />

escribimos ant -version y <strong>de</strong>beríamos <strong>de</strong> obtener respuesta.(Acordaros que <strong>de</strong>bemos<br />

tener instaladas las JDK <strong>de</strong> java).<br />

3.3 Instala Java JDK<br />

Para instalar las Java JDK <strong>de</strong>bemos <strong>de</strong>scargarnos el paquete <strong>de</strong>s<strong>de</strong><br />

http://www.oracle.com/technetwork/es/java/javase/downloads/in<strong>de</strong>x.html<br />

Una vez <strong>de</strong>scargadas las instalamos y seguimos los pasos que nos va mostrando uno<br />

por uno(no hay pérdida).<br />

Una vez instalado todo <strong>de</strong>bemos <strong>de</strong> añadirlas a las variables <strong>de</strong> entorno <strong>de</strong> nuestra<br />

máquina.<br />

Vamos a Panel <strong>de</strong> Control->Sistema y Seguridad->Configuración avanzada <strong>de</strong>l sistema<br />

->Opciones avanzadas->Variables <strong>de</strong> entorno(ESTAMOS EN WINDOWS 7)<br />

Ahora <strong>de</strong>bemos <strong>de</strong> incluir la ruta <strong>de</strong> la carpeta bin <strong>de</strong> nuestro Java JDK, en nuestro<br />

caso sería C:\Program Files\Java\jdk1.7.0_13\bin<br />

Buscamos la variable Path en Variables <strong>de</strong>l Sistema y la editamos. Al final <strong>de</strong>l todo<br />

añadimos la ruta <strong>de</strong> vuestras Java JDK quedando <strong>de</strong> la siguiente forma:<br />

Visita www.chekis.es<br />

10


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

3.4 Instala el IDE <strong>Liferay</strong> en Eclipse<br />

<strong>Liferay</strong> nos proporciona una serie <strong>de</strong> herramientas para facilitarnos la labor <strong>de</strong><br />

<strong>de</strong>sarrollo <strong>de</strong> sus componentes(portlets, hooks, themes, layouts). Nosotros vamos a<br />

ver cómo po<strong>de</strong>mos instalar el plugin <strong>de</strong> <strong>Liferay</strong> par eclipse paso a paso y como<br />

configurarlo a<strong>de</strong>cuadamente para que todo funcione correctamente.<br />

Antes <strong>de</strong> nada <strong>de</strong>bemos tener instalado en nuestro or<strong>de</strong>nador el servidor <strong>de</strong> <strong>Liferay</strong>(en<br />

nuestro caso <strong>Liferay</strong> 6.1) y sus plugins correspondientes.<br />

Una vez tengamos todo el servidor <strong>de</strong> <strong>Liferay</strong> listo empezaremos con la instalación <strong>de</strong>l<br />

plugin <strong>de</strong> <strong>de</strong>sarrollo.<br />

El plugin lo podéis encontrar en la siguiente dirección <strong>de</strong> <strong>Liferay</strong><br />

http://www.liferay.com/downloads/liferay-projects/liferay-i<strong>de</strong> . Os recomiendo bajar<br />

tanto el eclipse como el plugin todo junto.<br />

En nuestro caso vamos a instalarnos el eclipse <strong>de</strong> cero. Como estamos en Windows<br />

vamos a bajarnos el "Eclipse Juno + <strong>Liferay</strong> IDE v1.6.1 (Windows 64bits)" que es el que<br />

correspon<strong>de</strong> para Windows 7 x64. Tenéis disponibles para Linux y Mac también.<br />

Para instalar el eclipse que nos hemos bajado sólo tenemos que <strong>de</strong>scomprimir el<br />

fichero don<strong>de</strong> nosotros queramos y una vez <strong>de</strong>scomprimido ejecutamos el fichero<br />

"eclipse.exe" .<br />

Una vez <strong>de</strong>ntro <strong>de</strong> eclipse <strong>de</strong>bemos <strong>de</strong> mostrar la vista <strong>de</strong> <strong>Liferay</strong>. Para ello, arriba a la<br />

<strong>de</strong>recha se sitúa un cuadrado en forma <strong>de</strong> tabla que nos abre las perspectivas. Tan solo<br />

<strong>de</strong>bemos clicar sobre la <strong>de</strong> <strong>Liferay</strong> y en caso <strong>de</strong> que no esté visible elegimos Other-<br />

><strong>Liferay</strong>.<br />

Visita www.chekis.es<br />

11


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Una vez hecho esto, ya estamos preparados para empezar a configurar el eclipse con<br />

nuestro servidor <strong>Liferay</strong>.<br />

Ahora <strong>de</strong>bemos se situarnos en la pestaña <strong>de</strong> Server(abajo a la izquierda). Clic <strong>de</strong>recho<br />

-> New -> Server.<br />

Visita www.chekis.es<br />

12


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

En la siguiente ventana elegimos <strong>Liferay</strong> Inc -> <strong>Liferay</strong> v6.1 CE Server.<br />

Ahora <strong>de</strong>bemos <strong>de</strong> seleccionar la ruta don<strong>de</strong> está el Tomcat <strong>de</strong> nuestro servidor<br />

<strong>Liferay</strong>. En nuestro caso "D:\<strong>Liferay</strong> 6.1 GA2\bundles\tomcat-7.0.27". El resto lo<br />

<strong>de</strong>jamos por <strong>de</strong>fecto y le damos a "Finish".<br />

Visita www.chekis.es<br />

13


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Lo siguiente es instalar el SDK plugins <strong>de</strong> <strong>Liferay</strong>. Para ello vamos al menú superior y le<br />

damos a Window->Preferences-><strong>Liferay</strong>->Installed Plugin SDKs->Add.<br />

Visita www.chekis.es<br />

14


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Ahora <strong>de</strong>bemos seleccionar la ruta don<strong>de</strong> tenemos el SDK <strong>de</strong> <strong>Liferay</strong>, en nuestro caso<br />

"D:\<strong>Liferay</strong> 6.1 GA2\plugins". Le damos a OK y vemos como se aña<strong>de</strong> una nueva<br />

entrada en preferences con el plugin que acabamos <strong>de</strong> añadir.<br />

Visita www.chekis.es<br />

15


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Una vez hecho todo esto ya tenemos nuestro entorno <strong>de</strong> <strong>de</strong>sarrollo en Eclipse listo<br />

para empezar a crear nuestros propios componentes <strong>Liferay</strong>. Po<strong>de</strong>mos controlar el<br />

servidor <strong>de</strong>s<strong>de</strong> la ventana <strong>de</strong> Servers, compilar y <strong>de</strong>splegar componentes, etc.<br />

Para comprobar que todo va bien vamos a la pestaña <strong>de</strong> servers y le damos al botón<br />

ver<strong>de</strong> en forma <strong>de</strong> "play". Una vez lanzado el servidor(tarda unos minutos)<br />

comprobamos que se lanza correctamente entrando en http://localhost:8080<br />

Así, <strong>de</strong> esta forma, hemos instalado el plugin <strong>de</strong> <strong>Liferay</strong> para Eclipse <strong>de</strong> una forma muy<br />

fácil y sencilla y hemos <strong>de</strong>jado todo preparado para empezar a <strong>de</strong>sarrollar<br />

componentes.<br />

3.5 Crea tu primer plugin<br />

Una vez tengamos instaladas tanto las Java JDK y el servidor Apache Ant ya podremos<br />

empezar a crear plugins nuevos.<br />

Para hacerlo es tan fácil como abrir una consola CMD (Inicio -> cmd). Una vez abierta<br />

nos <strong>de</strong>splazamos hasta la ruta <strong>de</strong> nuestro servidor <strong>Liferay</strong> y una vez en él acce<strong>de</strong>mos a<br />

la carpeta “plugins”.<br />

En nuestra explicación vamos a crear un theme pero el proceso es el mismo para<br />

cualquier tipo <strong>de</strong> plugin.<br />

Como vamos a crear un theme nos <strong>de</strong>splazamos a la carpeta “plugins/themes” con la<br />

consola CMD y una vez en esa carpeta ejecutamos el siguiente comando:<br />

Visita www.chekis.es<br />

16


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

create new “Este es mi primer tema <strong>de</strong> apariencia”<br />

Don<strong>de</strong> “new” es el nombre <strong>de</strong>l plugin y “Este es mi primer tema <strong>de</strong> apariencia” es la<br />

<strong>de</strong>scripción <strong>de</strong>l plugin.<br />

Tras ejecutar el comando anterior automáticamente creara un plugin <strong>de</strong> tema <strong>de</strong><br />

apariencia con el nombre new-theme(ya que estábamos en plugins/themes ).<br />

De esta forma tan fácil y encilla podremos crear plugins. En las siguientes secciones<br />

podréis ver como se crea cada uno <strong>de</strong> los plugins <strong>de</strong>tallando a fondo cada uno <strong>de</strong> ellos.<br />

3.6 Crea tu primer Theme<br />

Los temas <strong>de</strong> apariencia en <strong>Liferay</strong> son el pilar básico sobre el que se sustenta todo el<br />

portal, su estructura y su estilo.<br />

Cada uno <strong>de</strong> los temas lleva en su interior 4 carpetas <strong>básica</strong>s: css, templates, images y<br />

javascript.<br />

En la carpeta <strong>de</strong> css podréis encontrar todos los css que se aplican <strong>de</strong>s<strong>de</strong> nuestro tema<br />

al portal. A pesar <strong>de</strong> que incluye muchos ficheros .css os recomiendo que todo cambio<br />

css que <strong>de</strong>báis hacer lo realicéis sobre custom.css ya que es el último css que se incluye<br />

a través <strong>de</strong> main.css, el cual se encarga <strong>de</strong> incluir todos los ficheros .css.<br />

Luego tenemos la carpeta <strong>de</strong> templates, y <strong>de</strong>ntro <strong>de</strong> ella unos cuantos archivos .vm .En<br />

ella po<strong>de</strong>mos encontrar el archivo portal-normal.vm. Este es el archivo que le da forma<br />

a nuestra web. Se encarga <strong>de</strong> crear tanto el head como el body y sobre ellos cargar<br />

todo lo necesario para crearla (cabecera, pie, navigation, bloques <strong>de</strong>finidos por<br />

nosotros, etc).<br />

El resto <strong>de</strong> archivos .vm <strong>de</strong> esta carpeta no son más que pequeños bloques que<br />

mejoran la organización y modularidad <strong>de</strong> la página cuyo fin último es el <strong>de</strong> ser<br />

cargados <strong>de</strong>s<strong>de</strong> portal-normal.vm en la página.<br />

La tercera carpeta que tenemos es la <strong>de</strong> images y no creo que necesite explicación.<br />

Contiene todas las imágenes que se utilizan en los css.<br />

Visita www.chekis.es<br />

17


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Y por último tenemos la carpeta <strong>de</strong> javascript que, como su propio nombre indica,<br />

tendrá todos los archivos javascript que utilicemos en nuestro tema.<br />

Si añadimos nuevos archivos .JS a esta carpeta <strong>de</strong>beríamos <strong>de</strong> incluirlos en el head<br />

<strong>de</strong>clarado en portal-normal.vm para que se puedan incluir en el tema.<br />

Vamos a pasar ahora a explicar cómo <strong>de</strong>bemos <strong>de</strong> crear los temas <strong>de</strong> apariencia.<br />

Para crear un tema <strong>de</strong> apariencia abriremos una consola cmd y nos <strong>de</strong>splazaremos a la<br />

carpeta themes <strong>de</strong>ntro <strong>de</strong> los plugins. En nuestro caso D:\<strong>Liferay</strong> 6.1<br />

GA2\plugins\themes<br />

Una vez en la carpeta themes ejecutamos el siguiente comando.<br />

create new "Esto es mi primer tema"<br />

Don<strong>de</strong> "new" es el nombre <strong>de</strong>l tema y "Esto es mi primer tema" es la <strong>de</strong>scripción <strong>de</strong>l<br />

tema que veremos a la hora <strong>de</strong> elegir el tema a aplicar en la administración <strong>de</strong> páginas.<br />

Ahora ya tenemos creado el tema pero está vacío, por tanto, el siguiente paso será<br />

copiar las carpetas <strong>de</strong> un tema por <strong>de</strong>fecto que trae <strong>Liferay</strong> y, a partir <strong>de</strong> él, nosotros lo<br />

personalizaremos a nuestra manera.<br />

Para ello ,hemos elegido el tema classic que está en D:\<strong>Liferay</strong> 6.1<br />

GA2\bundles\tomcat-7.0.27\webapps\ROOT\html\themes\classic .Copiaremos las<br />

carpetas css, templates, images y javascript y las pegaremos en la carpeta _diffs <strong>de</strong>ntro<br />

<strong>de</strong> nuestro nuevo tema creado. Ahora ya estamos preparados para empezar a<br />

personalizar nuestro tema a nuestro gusto pero eso ya será trabajo <strong>de</strong> cada uno.<br />

Cuando queramos aplicar los cambios <strong>de</strong>l tema en nuestro portal <strong>de</strong>beremos hacer lo<br />

siguiente: nos <strong>de</strong>splazaremos como antes, mediante la consola a la ubicación<br />

D:\<strong>Liferay</strong> 6.1 GA2\plugins\themes y ejecutaremos el siguiente comando:<br />

ant <strong>de</strong>ploy<br />

Visita www.chekis.es<br />

18


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Con esto, tendremos ya compilado el tema y listo para usarse en el portal. Para<br />

aplicarlo, como ya se explicó antes vamos a nuestro portal y nos logueamos.<br />

Una vez logueados vamos al dockbar y le damos a "Administrar" -> Página -><br />

Apariencia -> Defina un estilo específico para esta página .En este punto veremos<br />

todos los temas que tenemos disponibles, incluido el que acabamos <strong>de</strong> compilar<br />

recientemente y con darle un simple click aplicaremos el tema, así <strong>de</strong> sencillo. Siempre<br />

y cuando estemos trabajando <strong>de</strong> manera local.<br />

En caso <strong>de</strong> tener que trabajar con una máquina remota, <strong>de</strong>beremos subir el tema a ella<br />

una vez compilado y para ello haremos lo siguiente: vamos al Panel <strong>de</strong> control-><br />

Instalación <strong>de</strong> plugins->Temas <strong>de</strong> apariencia->Instalar más temas <strong>de</strong> apariencia->Subir<br />

y aquí elegimos el war correspondiente a nuestro tema.<br />

Estos WAR están en la carpeta D:\<strong>Liferay</strong> 6.1 GA2\plugins\dist<br />

(NOTA: acordaros <strong>de</strong> hacer el ant <strong>de</strong>ploy al tema antes <strong>de</strong> subirlo)<br />

Y con esto ya tendríamos nuestro tema subido y listo para usarse.<br />

3.7 Crea tu primer Layout<br />

Las plantillas son el elemento que le da forma al contenido central <strong>de</strong> cada página <strong>de</strong><br />

nuestro portal. Por lo general tendremos numerosas plantillas por cada portal ya que<br />

se suelen distribuir <strong>de</strong> forma diferente en función <strong>de</strong> cada página(2 columnas iguales,<br />

3 columnas, 2 columnas con una más ancha que otra, etc).<br />

Las plantillas <strong>de</strong> <strong>Liferay</strong> tienen una peculiaridad y es que son ellas las que <strong>de</strong>finen la<br />

propiedad <strong>de</strong> drag&drop <strong>de</strong> los portlets sobre ellas. Para ello, siempre que creemos<br />

una nueva plantilla <strong>de</strong>bemos <strong>de</strong> acordarnos <strong>de</strong> añadir la class="lfr-column" a cada<br />

columna que es la que permite el drag&drop sobre ellas.<br />

Para crear una nueva plantilla es igual <strong>de</strong> simple que con los temas. Abrimos una<br />

consola cmd y vamos hasta D:\<strong>Liferay</strong> 6.1 GA2\plugins\layouttpl .Una vez aquí<br />

ejecutamos create miplantilla "Mi plantilla" don<strong>de</strong> “miplantilla” es el nombre <strong>de</strong> la<br />

plantilla y “Mi plantilla” es la <strong>de</strong>scripción <strong>de</strong> la misma que veremos <strong>de</strong>s<strong>de</strong> <strong>Liferay</strong> a la<br />

hora <strong>de</strong> aplicarla al portal.<br />

Visita www.chekis.es<br />

19


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Llegados a este punto, vamos a hacer que nuestra plantilla cumpla con los requisitos<br />

básicos <strong>de</strong> <strong>Liferay</strong> y para ello, como en los temas, copiamos la estructura <strong>básica</strong> <strong>de</strong> una<br />

plantilla ya creada por <strong>Liferay</strong>. Nosotros hemos elegido D:\ <strong>Liferay</strong> 6.1<br />

GA2\bundles\tomcat-7.0.27\webapps\ROOT\layouttpl\2_column_i. Copiamos el<br />

contenido <strong>de</strong> los 3 archivos correspondientes a esta plantilla:<br />

2_column_i.png,2_column_i.tpl y 2_column_i.wap.tpl en los archivos <strong>de</strong> la nueva<br />

plantilla. Sólo copiamos el contenido <strong>de</strong> cada uno.<br />

En 2_column_i.png tenemos el thumb que mostrará <strong>Liferay</strong> en el panel <strong>de</strong><br />

administración <strong>de</strong> plantillas.<br />

La estructura <strong>de</strong> la plantilla estará en 2_column_i.tpl. A partir <strong>de</strong> esta plantilla <strong>básica</strong><br />

<strong>de</strong> <strong>Liferay</strong> que distribuye las columnas con un ancho <strong>de</strong>l 50% nosotros vamos a<br />

convertirla en una <strong>de</strong> 2 columnas pero con una distribución <strong>de</strong>l 40% 60%. Para ello tan<br />

sólo <strong>de</strong>bemos <strong>de</strong> cambiar don<strong>de</strong> trae aui-w50 por aui-w40 y aui-w60<br />

respectivamente(a la columna 1 le ponemos el 40 y a la segunda el 60). Dependiendo<br />

<strong>de</strong> la versión <strong>de</strong> <strong>Liferay</strong> que tengáis este código variará un poco pero todo el proceso<br />

<strong>de</strong> creación es igual(nosotros estamos usando <strong>Liferay</strong> 6.1).<br />

Ahora tan sólo <strong>de</strong>beríamos <strong>de</strong> compilar la plantilla con “ant <strong>de</strong>ploy” y tendríamos ya la<br />

plantilla lista para usarse.<br />

Visita www.chekis.es<br />

20


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Del mismo modo que los temas, si trabajamos en local nos aparecerá la plantilla<br />

directamente en el Dockbar->Administrar->Disposición <strong>de</strong> la página pero si estamos<br />

trabajando remotamente <strong>de</strong>beremos <strong>de</strong> subir el war al servidor y para ello vamos al<br />

Panel <strong>de</strong> control->Instalación <strong>de</strong> plugins->Plugins <strong>de</strong> plantillas <strong>de</strong> página->Instalar más<br />

plantilla->Subir y aquí elegimos el war <strong>de</strong> la plantilla que estará en D:\liferay-portal-<br />

6.0.6\plugins\dist y listo.<br />

Las plantillas se aplican siempre <strong>de</strong> forma local, por tanto, <strong>de</strong>beremos <strong>de</strong> ir página por<br />

página aplicando la que corresponda en cada caso.<br />

3.8 Crea tu primer Hook<br />

En el caso <strong>de</strong> los Hooks os recomendamos que utilicéis el IDE <strong>de</strong> <strong>Liferay</strong> para crearlos y<br />

programarlos ya que es más sencillo que crearlos <strong>de</strong>s<strong>de</strong> cero <strong>de</strong>s<strong>de</strong> la consola CMD.<br />

Lo primero que <strong>de</strong>bemos hacer es <strong>de</strong>scargar el SRC <strong>de</strong> <strong>Liferay</strong> don<strong>de</strong> podremos<br />

encontrar todo el código fuente <strong>de</strong> <strong>Liferay</strong>, el cual necesitaremos para saber don<strong>de</strong><br />

<strong>de</strong>bemos modificar y las rutas <strong>de</strong> cada portlet <strong>de</strong>ntro <strong>de</strong> <strong>Liferay</strong>. Po<strong>de</strong>mos <strong>de</strong>scargarlo<br />

<strong>de</strong>s<strong>de</strong> el siguiente enlace don<strong>de</strong> <strong>de</strong>bemos seleccionar "Portal Source".<br />

Lo último será importar el código fuente a eclipse y estamos preparados para empezar.<br />

Una vez hecho todo esto ya estamos listos para empezar a <strong>de</strong>sarrollar un hook.<br />

Como ejemplo a <strong>de</strong>sarrollar vamos a coger el portlet <strong>de</strong> blogs y modificar su código<br />

mediante un hook para que muestre un texto por ejemplo "FECHA:".<br />

Para crear nuestro primer hook <strong>de</strong>bemos ir al eclipse, justo <strong>de</strong>bajo <strong>de</strong> search po<strong>de</strong>mos<br />

ver un icono cuadrado oscuro <strong>de</strong> "Create a new <strong>Liferay</strong> Plugin Proyect".<br />

Visita www.chekis.es<br />

21


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Le damos y nos aparece una nueva ventana don<strong>de</strong> seleccionamos el nombre <strong>de</strong>l<br />

proyecto(MiHook) y más abajo seleccionamos como tipo <strong>de</strong> plugin Hook.<br />

Visita www.chekis.es<br />

22


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Po<strong>de</strong>mos observar también en esta ventana que po<strong>de</strong>mos seleccionar tanto el plugin<br />

SDK a usar como el servidor, en nuestro caso, sólo tendremos uno y no <strong>de</strong>beremos <strong>de</strong><br />

modificar nada pero si tuviéramos más <strong>de</strong> 1 servidor nos aparecerían ahí todos los que<br />

tuviéramos.<br />

Una vez hecho todo le damos a "Finish".<br />

Ya tenemos el hook creado pero está vacío.<br />

Visita www.chekis.es<br />

23


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Ahora <strong>de</strong>bemos ir al SRC <strong>de</strong> <strong>Liferay</strong> y buscar don<strong>de</strong> se encuentra el portlet a modificar,<br />

en nuestro caso el <strong>de</strong> blogs.<br />

Se encuentra en portal->portal-web->docroot->html->portlet->blogs.<br />

Para hacer el hook <strong>de</strong>bemos <strong>de</strong> copiar el archivo a modificar <strong>de</strong>l portlet, en este caso<br />

sería "view_entry_content.jsp", y copiarlo en nuestro hook pero <strong>de</strong> la siguiente<br />

manera:<br />

Debemos <strong>de</strong> reproducir toda la ruta <strong>de</strong>l archivo a modificar <strong>de</strong>l portlet en nuestro<br />

hook <strong>de</strong>s<strong>de</strong> la carpeta HTML a partir <strong>de</strong> /docroot/WEB-INF <strong>de</strong>l hook.<br />

En nuestro caso, el archivo view_entry_content.jsp <strong>de</strong>l portlet blogs a modificar esta<br />

en: /portal-web/docroot/html/portlet/blogs/view_entry_content.jsp<br />

Nuestro hook quedaría <strong>de</strong> la siguiente forma estructurado: MiHookhook/docroot/WEB-INF/html/portlet/blogs/view_entry_content.jsp.<br />

En<br />

view_entry_content.jsp es don<strong>de</strong> <strong>de</strong>bemos <strong>de</strong> copiar el código <strong>de</strong>l fichero <strong>de</strong>l portlet y<br />

es aquí don<strong>de</strong> modificaremos el código para que el hook sobrescriba las funciones <strong>de</strong>l<br />

portlet.<br />

Visita www.chekis.es<br />

24


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Una vez creada la estructura <strong>de</strong>l hook vamos a modificar el archivo<br />

view_entry_content.js <strong>de</strong>l hook para mostrar el mensaje "FECHA:" para que salga<br />

<strong>de</strong>lante <strong>de</strong> la fecha <strong>de</strong> publicación <strong>de</strong> cada entrada <strong>de</strong>l blog.<br />

En nuestro caso, <strong>de</strong>beríamos <strong>de</strong> buscar el bloque que tiene por class "entry-date" y ahí<br />

<strong>de</strong>ntro añadir una línea como la siguiente:<br />

FECHA:<br />

Como vemos es muy simple <strong>de</strong> modificar lo que nosotros queramos. Acordaros<br />

siempre <strong>de</strong> hacerlo sobre la copia <strong>de</strong> la JSP sobre el hook.<br />

Por último <strong>de</strong>bemos indicar la ruta a partir <strong>de</strong> la cual <strong>Liferay</strong> <strong>de</strong>be buscar los cambios<br />

<strong>de</strong> nuestro hook. Esto se <strong>de</strong>be hacer sobre el fichero liferay-hook.xml que se encuentra<br />

en /MiHook-hook/docroot/WEB-INF/liferay-hook.xml<br />

Aquí <strong>de</strong>ntro <strong>de</strong>bemos <strong>de</strong> añadir entre las etiquetas lo siguiente:<br />

/WEB-INF<br />

Visita www.chekis.es<br />

25


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

De esta forma indicamos que la carpeta HTML cuelga <strong>de</strong> WEB-INF. Si quisiéramos<br />

podríamos cambiar la estructuración <strong>de</strong> nuestro hook e indicarle aquí don<strong>de</strong> se halla la<br />

carpeta HTML.<br />

Para terminar, sólo nos queda <strong>de</strong>splegar el hook yendo a la ventana <strong>de</strong> Ant en el<br />

eclipse que se encuentra abajo a la <strong>de</strong>recha.<br />

Visita www.chekis.es<br />

26


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Seleccionamos nuestro hook, lo abrimos, buscamos "<strong>de</strong>ploy" y clicamos sobre él.<br />

Visita www.chekis.es<br />

27


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Una vez termine <strong>de</strong> <strong>de</strong>splegar tendremos listo nuestro hook. Tan solo <strong>de</strong>bemos ir al<br />

navegador y abrir <strong>Liferay</strong>( http://localhost:8080 ) acordándonos <strong>de</strong> lanzarlo antes <strong>de</strong><br />

abrirlo ,obviamente, y una vez abierto añadimos el portlet blogs a cualquier página.<br />

Añadimos una entrada al blog y podremos ver como se muestra el mensaje "FECHA:"<br />

junto a la fecha <strong>de</strong> publicación <strong>de</strong> cada entrada.<br />

3.9 Crea tu primer Portlet<br />

Al igual que con los Hooks, os recomendamos que utilicéis el IDE <strong>Liferay</strong> <strong>de</strong> Eclipse para<br />

crear los portlets ya que nos genera toda la estructura <strong>básica</strong> con tan solo unos pocos<br />

clicks.<br />

Para crear nuestro primer Portlet iremos al Eclipse y clicaremos sobre File->New-<br />

><strong>Liferay</strong> Proyect<br />

Visita www.chekis.es<br />

28


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

En la siguiente pantalla <strong>de</strong>bemos elegir el nombre <strong>de</strong> nuestro plugin, el servidor sobre<br />

el que se creará y sus SDK. Por último <strong>de</strong>bemos seleccionar el tipo <strong>de</strong> plugin(portlet).<br />

Una vez rellenemos todos los campos le damos a “Next” en la siguiente pantalla<br />

<strong>de</strong>bemos marca la casilla “Create custom portlet class”.<br />

Visita www.chekis.es<br />

29


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Continuamos a la siguiente pantalla y escribimos el nombre que queremos dar a la<br />

class CSS <strong>de</strong> nuestro portlet, en nuestro caso” MiPrimerPortlet”.<br />

En la siguiente pantalla vamos a modificar la ruta <strong>de</strong> las JSPs para que estén en<br />

/html/jsps y a<strong>de</strong>más, vamos a marca la casilla Edit en Portlets Mo<strong>de</strong>s para que cree esa<br />

vista. Más a<strong>de</strong>lante explicaremos para qué son cada vista <strong>de</strong>l portlet y que representa<br />

cada una.<br />

Visita www.chekis.es<br />

30


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Por último, en la pantalla final nos permite seleccionar si queremos que nuestro<br />

portlet tenga múltiples instancias, si queremos que se añada al panel <strong>de</strong> control y<br />

a<strong>de</strong>más, a qué categoría se aña<strong>de</strong>. En nuestro caso, <strong>de</strong>jaremos <strong>de</strong>smarcada la opción<br />

<strong>de</strong> instancias múltiples pero marcaremos que se añada al panel <strong>de</strong> control, a la<br />

categoría “Samples”.<br />

Tras marca estas casillas, le damos a Next y en la siguiente pantalla le daremos a<br />

“Finish” y automáticamente se creará el Portlet.<br />

Debería <strong>de</strong> quedarnos una estructura parecida a la siguiente:<br />

Visita www.chekis.es<br />

31


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Lo más importante en lo que <strong>de</strong>bemos fijarnos es en las JSPs edit.jsp y view.jsp.<br />

View.jsp correspon<strong>de</strong> a la vista pública <strong>de</strong>l portlet, la que cualquier persona con los<br />

mínimos permisos pue<strong>de</strong> ver.<br />

Edit.jsp correspon<strong>de</strong> a la vista <strong>de</strong> preferencias <strong>de</strong>s<strong>de</strong> la que podremos configurar<br />

cualquier parámetro que creemos.<br />

Para nuestro ejemplo <strong>de</strong> creación <strong>de</strong> un Portlet vamos a modificar view.jsp y<br />

<strong>de</strong>splegaremos el Portlet para saber que todo ha ido bien.<br />

En view.jsp vamos a escribir lo siguiente:<br />

Este es mi primer portlet<br />

Hola mundo. <br />

Una vez hecho guardamos y, al igual que con los Themes o Layouts, abrimos una<br />

consola CMD, nos <strong>de</strong>splazamos a la ruta <strong>de</strong>l portlet y escribimos el comando:<br />

ant <strong>de</strong>ploy<br />

Con esto ya tendremos disponible para su uso el portlet por lo que solo nos quedará<br />

irnos al navegador web, entrar en nuestro <strong>Liferay</strong> local, loguearnos y una vez<br />

logueados vamos al Dock -> Add -> More<br />

Visita www.chekis.es<br />

32


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Buscamos <strong>de</strong>ntro <strong>de</strong> la categoría “Sample” nuestro portlet y lo tiramos en el portal.<br />

De esta forma po<strong>de</strong>mos crear los portlets <strong>de</strong> una manera sencilla y en apenas unos<br />

minutos. Otra cosa muy diferente será programarlos para que hagan exactamente lo<br />

que queramos.<br />

4. ALLOY<br />

En un apartado anterior <strong>de</strong>finíamos lo que era ALLOY y cuáles eran sus pros y , sobretodo,<br />

sus contras. En este apartado vamos a resaltar cuales son las bonda<strong>de</strong>s <strong>de</strong> este framework<br />

<strong>de</strong>sarrollado para hacernos la vida <strong>de</strong>ntro <strong>de</strong> <strong>Liferay</strong> mucho más fácil.<br />

4.1 Documentación<br />

En http://alloyui.com/<strong>de</strong>ploy/api/ disponéis <strong>de</strong> toda la información relacionada<br />

con este framework aunque como ya <strong>de</strong>cíamos anteriormente no encontraréis<br />

muchos ejemplos completos.<br />

Visita www.chekis.es<br />

33


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

En la siguiente dirección http://www.liferay.com/community/liferayprojects/alloy-ui/<strong>de</strong>mos<br />

podréis encontrar todos los plugins, widgets y utilida<strong>de</strong>s<br />

adicionales <strong>de</strong> que dispone el framework<br />

4.2 Plugins, widgets y utilida<strong>de</strong>s<br />

ALLOY dispone <strong>de</strong> una serie <strong>de</strong> widgets, plugins y utilida<strong>de</strong>s que nos hacen la vida<br />

más fácil a la hora <strong>de</strong> <strong>de</strong>sarrollar ciertos aspectos <strong>de</strong> nuestros portales. Por<br />

ejemplo, <strong>de</strong> forma nativa nos permite generar ventanas emergente o “Dialogs”,<br />

tooltips, autocompletadores, etc.<br />

A continuación vamos a ver todos los componentes <strong>de</strong> que dispone y para qué<br />

sirve cada uno:<br />

4.2.1 Widget<br />

Autocomplete: Crea una lista <strong>de</strong> opciones pre<strong>de</strong>finidas que ira sugiriendo<br />

al usuario a medida que vaya escribiendo en un campo <strong>de</strong> texto.<br />

Button: Permite crear botones que mejoran y generalizan el estilo <strong>de</strong> todo<br />

ellos.<br />

Calendar: Crea un calendario que pue<strong>de</strong> ser mostrado <strong>de</strong> diferentes<br />

formas. Por ejemplo al clicar sobre un campo <strong>de</strong> fecha o estar siempre<br />

mostrado.<br />

Charts: Muestra datos numéricos representados mediante un gráfico<br />

interactivo.<br />

Color Picker: Genera un selector <strong>de</strong> color con el que pue<strong>de</strong>s interactuar y<br />

posteriormente el selector produce el código HEX <strong>de</strong>l color elegido.<br />

Dialog: Permite generar ventanas modales y a su vez estas pue<strong>de</strong>n cargar<br />

lo que le indiquemos(portlets, contenido web, texto plano, código HTML,<br />

etc).<br />

Editable: Crea un editor <strong>de</strong> contenido en línea.<br />

Image Gallery: Crea una galería <strong>de</strong> imágenes, la cuales, al ser clicadas se<br />

muestran en un carrusel <strong>de</strong> imágenes a pantalla completa.<br />

Paginator: Permite paginar cualquier conjunto <strong>de</strong> datos.<br />

Panel: Es un contenedor con funcionalidad específica y componentes<br />

estructurales con aplicaciones orientadas a interfaces <strong>de</strong> usuario.<br />

Ratings: Crea un componente <strong>de</strong> puntuación mediante estrellas.<br />

Tabs: Muestra una serie <strong>de</strong> pestañas las cuales se asocian con contenidos<br />

concretos.<br />

TextBox List: Crea una lista <strong>de</strong> elementos seleccionados a partir <strong>de</strong> una<br />

caja <strong>de</strong> texto.<br />

Toolbar: Crea una barra <strong>de</strong> herramientas.<br />

Tooltips: Muestra información <strong>de</strong> ayuda para imágenes, enlaces, títulos,<br />

etc.<br />

Treeview: Genera un árbol <strong>de</strong> contenidos estructurados.<br />

Visita www.chekis.es<br />

34


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

4.2.2 Plugin<br />

Loading Mask: Muestra una máscara <strong>de</strong> Loading que evita la<br />

interacción <strong>de</strong>l usuario con el portal hasta que <strong>de</strong>saparece.<br />

4.2.3 Utilida<strong>de</strong>s<br />

CSS Forms: Es un framework <strong>de</strong> CSS que nos permite maquetar los<br />

formularios <strong>de</strong> forma homogénea mediante una serie <strong>de</strong> class.<br />

CSS Layouts: Es un framework CSS que permite dar anchos a los<br />

columnas <strong>de</strong> las Layouts mediante la utilización <strong>de</strong> una serie <strong>de</strong><br />

class(aui-w30, aui-w75,…)<br />

Live Search: Permite filtrar el contenido por los datos introducidos en<br />

la búsqueda.<br />

Nested List: Son listas que permiten or<strong>de</strong>nar sus elementos mediante<br />

un drag&drop (arrastrar y soltar).<br />

Overlay Manager: Crea una colección <strong>de</strong> capas superpuestas que<br />

pue<strong>de</strong>n ser manejadas en grupo.<br />

Resize: Permite redimensionar prácticamente cualquier elementos <strong>de</strong><br />

la página.<br />

Sortable: Permite or<strong>de</strong>nar elementos mediante drag&drop.<br />

SWF Writer Utility: Es una utilidad que nos permite ren<strong>de</strong>rizar archivos<br />

SWF(flash) en una página.<br />

4.2.4 Ejemplo <strong>de</strong> uso<br />

Vamos a ver un ejemplo útil <strong>de</strong> uso como es la generación <strong>de</strong> ventana<br />

modales o Dialogs:<br />

Para generar un bocadillo nos valdremos <strong>de</strong> la librería "aui-dialog" <strong>de</strong><br />

ALLOY que nos ofrece las funciones necesarias para generarlo todo. Las<br />

opciones <strong>de</strong> configuración <strong>de</strong> la ventana son numerosas pero nosotros<br />

vamos a abordar unas cuantas en el ejemplo y explicar más a<strong>de</strong>lante para<br />

qué sirve cada una, las principales.<br />

<br />

AUI().ready('aui-dialog', function(A) {<br />

var instance = new A.Dialog({<br />

bodyContent: 'Dialog body',<br />

centered: true,<br />

constrain2view: true,<br />

<strong>de</strong>stroyOnClose: true,<br />

draggable: true,<br />

height: 250,<br />

resizable: false,<br />

Visita www.chekis.es<br />

35


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

stack: true,<br />

title: 'Dialog title',<br />

width: 500,<br />

modal:true,<br />

cssClass: 'clasePrueba',<br />

id: 'i<strong>de</strong>ntificadorDialog',<br />

buttons: [<br />

{<br />

text: 'Alerta1',<br />

handler: function() {<br />

alert('alerta1');<br />

}<br />

},<br />

{<br />

text: 'Alerta2',<br />

handler: function() {<br />

alert('alerta2');<br />

}<br />

}<br />

]<br />

}).ren<strong>de</strong>r();<br />

});<br />

<br />

A continuación se muestra una tabla con todas las options utilizadas y su<br />

explicación:<br />

Option Descripción Tipo<br />

bodyContent:<br />

Es el contenido <strong>de</strong>l dialog. Pue<strong>de</strong> contener tanto<br />

texto plano, como código, como portlets.<br />

string<br />

centered:<br />

Establece si queremos que el dialog salga centrado<br />

en la pantalla.<br />

true/false<br />

constrain2view:<br />

Comprime el dialog para que solo se vea la región<br />

visible <strong>de</strong>l portlet.<br />

Destruye el dialog cuando lo cerramos. En caso <strong>de</strong><br />

true/false<br />

<strong>de</strong>stroyOnClose: no <strong>de</strong>struirlo, quedaría creado en el código pero<br />

oculto. Admite valores true o false.<br />

true/false<br />

draggable:<br />

Establece si queremos que podamos arrastrar el<br />

bocadillo o no. Admite valores true o false.<br />

true/false<br />

height: La altura <strong>de</strong>l bocadillo.<br />

Permite redimensionar el bocadillo creado<br />

int<br />

resizable:<br />

mediante un pequeño icono que sale en una<br />

esquina. Admite valores true o false.<br />

true/false<br />

title: Establece el título <strong>de</strong>l bocadillo. Necesita un string. string<br />

Visita www.chekis.es<br />

36


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

width: El ancho <strong>de</strong>l bocata.<br />

Si se pone a true, hace que al mostrar el dialog se<br />

int<br />

modal:<br />

muestre un overlay oscuro por <strong>de</strong>trás <strong>de</strong> él que<br />

<strong>de</strong>shabilita todo lo que hay por <strong>de</strong>trás <strong>de</strong> él.<br />

Admite valores true o false.<br />

Permite añadir botones al dialog estableciendo<br />

true/false<br />

buttons:<br />

simplemente el titulo <strong>de</strong>l botón y una acción a<br />

llevar a cabo tras clicarlo. Po<strong>de</strong>mos ver su modo <strong>de</strong><br />

uso en el ejemplo.<br />

-<br />

close:<br />

Muestra el icono <strong>de</strong> cerrar el bocadillo. Admite<br />

valores true o false.<br />

true/false<br />

cssClass: Aña<strong>de</strong> una clase al dialog. Necesita un string. string<br />

id: Aña<strong>de</strong> un id al dialog. Necesita un string. string<br />

4.3 Crea tu propio plugin<br />

Al igual que con otros frameworks como jQuery o YUI3, ALLOY nos permite generar<br />

nuestros propios plugins para luego utilizarlos <strong>de</strong> una forma muy simple y rápida.<br />

Su creación es muy similar a la <strong>de</strong> un plugin en YUI 3. Todos los plugins <strong>de</strong>ben seguir la<br />

misma estructura <strong>básica</strong> y a partir <strong>de</strong> ella ampliar el código para que haga lo que<br />

nosotros queramos.<br />

La estructura <strong>básica</strong> es la siguiente:<br />

AUI().add('basic-plugin', function(A) {<br />

A.namespace('MyPlugins').PluginEjemplo =<br />

A.Base.create("PluginEjemplo", A.Plugin.Base, [], {<br />

_handle : null,<br />

//constructor<br />

initializer : function() {<br />

this._handle = this.get("host");<br />

var tgt = this.get("host");<br />

var param1 = this.get("parametro1"),<br />

param2 = this.get("parametro2"),<br />

param3 = this.get("parametro3");<br />

/*Tu código***/<br />

},<br />

//clean up on <strong>de</strong>struction<br />

<strong>de</strong>structor : function() {<br />

this._handle.<strong>de</strong>tach();<br />

this._handle = null;<br />

}<br />

},<br />

{<br />

NS : "bp",<br />

ATTRS : {<br />

parametro1 : { value : "valor <strong>de</strong> parametro1 por<br />

<strong>de</strong>fecto" },<br />

parametro2 : { value : "valor <strong>de</strong> parametro2 por<br />

<strong>de</strong>fecto" },<br />

parametro3 : { value : "valor <strong>de</strong> parametro3 por<br />

<strong>de</strong>fecto" }<br />

Visita www.chekis.es<br />

37


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

}<br />

});<br />

}, "0.1", { requires : [ "base", "plugin", "no<strong>de</strong>" ] });<br />

Como veis, el uso <strong>de</strong>l código anterior se reduce a <strong>de</strong>clarar una serie <strong>de</strong> parámetros que<br />

serán los que se le puedan introducir al plugin y luego simplemente se crea el código<br />

personalizado <strong>de</strong>l plugin.<br />

Una vez creado el plugin podremos utilizarlo <strong>de</strong> la siguiente manera:<br />

A.use("no<strong>de</strong>", "basic-plugin", function(A) {<br />

A.all("#elemento").plug(A.MyPlugins.PluginEjemplo, {<br />

parametro1 : 'valor1',<br />

parametro2 : 'valor2'<br />

});<br />

});<br />

Don<strong>de</strong> ‘#elemento’ es le ID <strong>de</strong>l bloque al que afecta el plugin y sobre el que se construye.<br />

Visita www.chekis.es<br />

38


<strong>Guía</strong> <strong>básica</strong> <strong>de</strong> <strong>Liferay</strong><br />

Visita www.chekis.es<br />

39

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!