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