HTML 5. REQUIRED SELECT.

HTML5 Logotipo

HTML 5 ha traído bastantes funcionalidades a los desarrolladores de aplicaciones web que antes era necesario “fabricar”; bastantes de ellas dentro de los llamados Formularios HTML 5 y en concreto aquellas que tienen que ver con validaciones de los campos de formularios, como la frecuente tarea de comprobar si se han rellenado o no, los campos que establezcamos como obligatorios.

Una tarea, simple en su cometido, pero que requería un uso intensivo de JavaScript y CSS. Con HTML 5 solamente tenemos que añadir el atributo required al campo del formulario que consideremos obligatorio completar.
A partir de ahí, será el propio navegador el encargado de controlar si ese campo requerido tiene información adecuada o no, interactuando con el visitante de acuerdo a la implementación que de HTML 5 tenga el navegador que se esté usando. Es el punto donde entra en juego la compatibilidad del navegador con el estándar HTML 5. Hay un muy buen artículo sobre compatibilidades aquí: http://www.wufoo.com.mx/html5/
Puesto que con las nuevas versiones de navegadores esto puede cambiar, la información del artículo al que apunta el enlace, solamente debe servir como guía. En cualquier caso, si queremos cambiar el comportamiento que ofrece el navegador para required, tendremos que utilizar nuevamente CSS y JavaScript. También podemos usar el atributo aria-required (se puede utilizar de manera conjunta a required) que hace lo mismo que éste pero es compatible con algunos navegadores que no lo son con este atributo.
EDITADO 16/12/2016
Actualmente los atributos aria no se consideran necesarios ya que la práctica totalidad de navegadores son compatibles con la mayoría de características de HTML 5 y realmente no aportan nada. En el siguiente hiperenlace se trata este punto de forma exhaustiva:
http://html5doctor.com/on-html-belts-and-aria-braces/

Un usuario anónimo me comentó que la misión de aria-required no es la compatibilidad si no para indicar que un campo es requerido desde un lector de pantalla. Sin entrar en debates baldíos de lo que realmente hace aria-required, es verdad que quizás su uso en este artículo, debería haber sido más detallado para evitar confusiones. Gracias quien seas. La idea de incluirlo aquí, era que, en las fechas en que se publicó el artículo, habían clientes web que no reconocían correctamente el atributo required y aria-required podía ser usado como factor de ampliación de compatibilidad, independientemente de lo que pueda ser su uso real. De todas formas: https://www.w3.org/TR/html-aria/
El uso con cualquier elemento de tipo input, textarea o select es muy simple, ya que simplemente basta con añadirlo al elemento obligatorio. De todas formas, si hay problemas de compatibilidades con navegadores, estas son las posibilidades:

Con todo, su utilización en un elemento select, actualmente implica tener en cuenta algunos detalles más que su mera inclusión. Estos factores son:

  • Debe tener uno o más opciones (elementos option).
  • La primera opción o elemento option debe tener su atributo value vacío o simplemente no tener contenido de texto.
Ejemplos:

A la hora de crear las vistas para nuestras aplicaciones o nuestras herramientas como Liferay, Joomla, Prestashop, etc., no cabe duda de que es un arma excelente que nos ahorrará mucho trabajo, eso, sin tener en cuenta que estaremos ahorrando código CSS y JavaScript, lo que hará que aumente el rendimiento de la aplicación.
Lo dejamos aquí de momento, ya que este artículo tenía como misión mostrar el uso correcto de required con select. La creación de formularios HTML 5 podéis estudiarla con todo detalle, bien en la abundante documentación existente en la web, bien, realizando algún curso como los que podemos ofrecerte. Si quieres más información, puedes hacerlo a josema@orbispservices.com o más cómodamente desde el formulario de contacto.
Un cordial saludo y mis mejores deseos para todos para este nuevo año. 

ERROR ESTE PORTLET HA SIDO DESINSTALADO. LIFERAY

El error este portlet ha sido desinstalado

El siguiente artículo trata sobre un, llamémosle problema que si no llevas tiempo con Liferay, suele dar algunos dolores de cabeza: el error este portlet ha sido desinstalado.

“Este portlet ha sido desinstalado. Por favor, instálelo de nuevo o elimínelo de la página”.

O en idioma anglosajón:

“This portlet has been undeployed. Please, deploy it or remove it from the page”.

La causa de esto, es que por alguna razón, el registro de la instancia del portlet en cuestión, está mal y, la causa principal, suele ser que se ha eliminado el registro del portlet pero ha quedado una referencia en la página donde aparece, hacia una instancia de éste (las propiedades del portlet instanciado casi siempre).

Vamos con las soluciones.

La primera consiste en simplemente, evitar que aparezca el mensaje, puesto que se trata de un portlet inactivo:
Editamos el fichero (uso Tomcat en el ejemplo):

Si no estuviera creado, lo creamos en ese momento. En cualquier caso, lo editamos y añadimos o cambiamos la siguiente propiedad:

Personalmente, esto lo veo más como una “ñapa” que como una solución ya que la referencia a la instancia inexistente del portlet, sigue en alguna parte.
El principal problema es que no encontramos el enlace para eliminar el portlet de manera definitiva de la página porque no se eliminó anteriormente de la forma adecuada. Sin embargo está ahí, aunque no se vea. Podemos usar Firebug o las herramientas de desarrollo del navegador que se esté usando (Firefox en el ejemplo). Usamos la herramienta de inspeccionar nodos y buscamos el del enlace para eliminar el portlet:
El error este portlet ha sido desinstalado. Inspeccionar DOM del portlet
Una vez tenemos localizado el enlace (elemento a, atributo href), copiamos el valor del atributo href y lo pegamos en la barra de direcciones del navegador y pulsamos la tecla [Intro].
Es una buena solución porque elimina las referencias que queden “errantes”.
Otra posibilidad bastante más laboriosa consiste en parar el servidor de aplicaciones, eliminar la carpeta del portlet de la carpeta webapps. Acto seguido, eliminar los contenidos de las carpetas $TOMCAT/temp y $TOMCAT/work. Reiniciamos el servidor y redesplegamos el portlet.
Por último, podemos eliminar directamente estas referencias huérfanas en la base de datos. Para ello, visualizamos los registros de la tabla layout. Buscamos el registro correspondiente a la página que tiene la instancia incorrecta del portlet y localizamos el campo typesettings. Eliminamos el valor correspondiente a la instancia del portlet problemático.
Hasta otra y ¡Felices fiestas a todos!

MODIFICAR LA SECCIÓN DEL HEAD DESDE EL CÓDIGO DE UN COMPONENTE. JOOMLA.

Modificar la sección del head desde el código en Joomla

Modificar la sección del head desde el código de un componente

La sección head de toda página web es de suma importancia. En ella solemos insertar o enlazar el código CSS y de scripts típicos (como JavaScript). Además los datos que contenga pueden tener bastante relevancia en lo que a SEO se refiere. Modificar la sección del head desde el código de un componente no es tan fácil como puede parecer. Vamos a ver como hacerlo.
Normalmente insertamos la cabecera utilizando el siguiente código:

La anterior línea carga el fichero libraries/joomla/document/html/renderer/head.php que contiene los métodos que procesan la sección head y devuelven el código HTML generado.
Ese mismo código HTML lo podemos obtener con:

Pero si lo que queremos es modificar esa sección desde un componente, la cosa se complica un poco si no conocemos lo que Joomla pone a nuestra disposición para realizar esta tarea. Para toda modificación, el método de la clase estática JFactory::getDocument(), nos proveerá de todo lo necesario. Para los siguientes ejemplos, seguiremos usando el ejemplo del código anterior.

Cambiar el título de la página dependiendo de la lógica del componente

El método setTitle(“”) nos permitirá modificar el título:

Añadir estilos CSS dependiendo de la lógica del componente

El enlace a un fichero de reglas de estilos CSS lo hacemos con:

Si solamente queremos añadir unas reglas pero no un fichero completo:

Añadir código JavaScript dependiendo de la lógica del componente

Podemos enlazar un fichero:

O bien simplemente añadir un poco de JavaScript:

La insercción de ficheros CSS y de script, las podemos hacer también, usando el objeto JHTML:

Modificando los metatags dependiendo de la lógica del componente

Desde que los metatags o etiquetas no son tan relevantes en el posicionamiento SEO, su uso se ha quedado un tanto olvidado. Si miramos el código fuente de una web, es probable que nos encontremos con una etiqueta meta del tipo:
… donde se está indicando el software que ha generado el código de la página. Sin embargo sus usos pueden ser muchos y variados, desde redirecciones automáticas de la página, hasta usar las etiquetas meta sugeridas por Facebook que nos permiten compartir nuestros contenidos en su red social.
Joomla pone a nuestra disposición una funcionalidad mediante la cual podemos insertar etiquetas meta. Para ello nos vamos al área de administración y una vez dentro, vamos a:
[En Joomla 3.x] -> [Sitio -> Configuración global]
[En Joomla 2.5] -> [Sistema -> Configuración global]
Nos vamos al apartado donde dice [Configuración de los metadatos] y una vez allí, insertamos las metatags que estimemos oportuno.
En la práctica, lo cierto es que frecuentemente necesitamos una manera dinámica de establecer estos metatags.

Código para modificar los metadatos

Quitar el metatag “generator” puesto por defecto por Joomla:

Otros metatags también tienen su propio método para cambiarlos o establecerlos:

Pero si no dispone de método propio, usamos setMetaData():

Los metas formados de esta manera son los típicos que contienen los atributos name y content. Si queremos que el resultado sea un meta con atributo http-equiv, tendremos que usar el mismo método pero con un argumento más:

Finalmente, debemos tener en cuenta que existen metatags que no corresponden a los estándares, sino que deben ser añadidos para la correcta ejecución de lógica de terceros (como scripts de Facebook por ejemplo):

Eso es todo. Recordad que toda esta información y más, forma parte de los cursos que ofrecemos de Joomla.
Espero que este artículo os sea de utilidad y como reencuentro con la actividad del blog que no he podido atender por falta de tiempo, durante una temporada que ya se hacía larga.
Nada más. Un cordial saludo a todos y hasta otra.

VER UN CONTENIDO WEB COMPLETO EN UN PUBLICADOR DE CONTENIDOS DE OTRA PÁGINA

Ver un contenido web completo en un publicador de contenidos de otra página, con Liferay

liferay ver un contenido web completo en un publicador de contenidos de otra páginaAunque Liferay tiene un amplio abanico de posibilidades, son muchos los usuarios de esta herramienta que la usan únicamente para gestión de contenidos (no olvidemos que Liferay en realidad es un gestor de portales). Antes o después acaban usando el portlet Publicador de contenidos. En este artículo vamos a aprender como ver un contenido web completo en un publicador de contenidos de otra página.
Sabemos que entre otras cosas, este portlet permite una presentación preliminar o resumen de un contenido web que incluye un botón para ver el contenido completo. El comportamiento por defecto es que al pulsar ese botón, se cargue el contenido web completo.
La presentación preliminar o resumen, aparece de una forma bastante simple y se puede cambiar, pero eso lo dejo para otra entrada.

Otro uso del publicador de contenidos

Es frecuente la necesidad de que queramos ver el contenido web completo en una página distinta de la que está mostrando el resumen. Caso real: un portal con noticias, donde en la página principal del portal hay un listado con los resúmenes de las noticias más recientes y cada resumen tiene un enlace o botón que lleva a la noticia completa, en otra página.
Esto es algo que podemos hacer con Liferay pero que tal vez no sea tan simple si no se conoce bien el proceso. No es algo complejo aunque hay que dar varios pasos y olvidar el detalle más pequeño hará que no funcione. Por eso en los cursos que imparto, solemos hacer varios ejercicios al ver esta funcionalidad.
Veamos entonces como hacerlo mediante un ejercicio:

Crear las páginas

Creamos dos páginas. A una la llamamos origen y a otra destino.

Liferay, dos nuevas páginas. Liferay ver un contenido web completo en un publicador de contenidos de otra página

Creación del contenido de ejemplo

Creamos un contenido web básico con bastante contenido. Así nos aseguramos de que en la vista previa no se verá todo. Para ello habrá que pulsar en el botón correspondiente para mostrar el contenido web completo.

Liferay, nuevo contenido básico. Liferay ver un contenido web completo en un publicador de contenidos de otra página

Clasificando el contenido

Aunque no es necesario, vamos a establecer una clasificación al contenido, para que pueda ser seleccionado desde el publicador de contenidos de forma dinámica.

EDITADO 12/01/2017

Insisto en que este punto no es necesario. Solamente se muestra como práctica muy común en el trabajo de selección de contenidos que mostrar en el publicador de contenidos de forma dinámica.

Publicador de contenidos de destino

Ahora vamos a preparar la página que contendrá el publicador de contenidos que mostrará el contenido de forma completa: es decir, la página de destino. Para ello, lo primero es añadir un publicador de contenidos a la página.

Liferay, publicador de contenidos, añadir. Liferay ver un contenido web completo en un publicador de contenidos de otra página
Liferay, publicador de contenidos, configuración. Liferay ver un contenido web completo en un publicador de contenidos de otra páginaTras añadir el publicador de contenidos, nos dedicaremos a configurarlo adecuadamente:

Debemos establecer varias opciones de configuración.

Liferay, publicador de contenidos, selección dinámica. Liferay ver un contenido web completo en un publicador de contenidos de otra páginaLo primero es indicar que la selección de contenidos, sea dinámica:

EDITADO 12/01/2017

Tampoco es obligatorio, salvo que, siguiendo el ejercicio, nos basemos en la Clasificación para seleccionar el/los contenidos a buscar.
Lo siguiente es que el tipo de contenido, sea contenido web:

Liferay, publicador de contenidos, tipo de contenido. Liferay ver un contenido web completo en un publicador de contenidos de otra página
Ahora hay que establecer el filtro seleccionando todos y añadiendo la etiqueta que asignamos al contenido web que creamos.

Liferay, publicador de contenidos, filtro. Liferay ver un contenido web completo en un publicador de contenidos de otra página
Indicamos como estilo de presentación: contenido completo, número de elementos a mostrar: 1. Y el punto más importante: marcar la opción establecer como publicador de contenidos por defecto para esta página.

Liferay, publicador de contenidos, establecer por defecto. liferay ver un contenido web completo en un publicador de contenidos de otra página

Página de visualización de destino

En este punto, volvemos al contenido web que creamos en el punto 2, lo editamos y nos vamos a la opción de página de visualización:

Liferay, contenido web, página de visualización. Liferay ver un contenido web completo en un publicador de contenidos de otra página

Una vez en este apartado de página de visualización, seleccionamos la página que utilizará el contenido para ser mostrado al completo. Esa página debe tener un publicador de contenidos configurado para ser el que por defecto, en esa página, muestre los contenidos. Se indica en el último paso del punto anterior.

Liferay, contenido web, página de visualización, selección. Liferay ver un contenido web completo en un publicador de contenidos de otra página

Únicamente nos ha permitido seleccionar la página Destino. Es la única que tiene un publicador de contenidos establecido por defecto. De otro modo, no podremos seleccionar la página

Preparar la página de origen

En este último punto realizamos algunos pasos que ya hemos visto anteriormente, sólo que ahora vamos a hacerlos en la página de origen:

  • Añadir un publicador de contenidos y pasamos a configurarlo.
  • Escogemos selección de contenidos dinámica.
  • Tipo de contenido web.
  • Filtro: todos y etiqueta del contenido web (ejercicio, en el que he hecho yo).
  • Estilo de presentación: resúmenes.
  • Número de elementos a mostrar: 1.
EDITADO 12/01/2017

En Liferay 6.2 no es necesario el paso, tanto en la página destino como en la de origen, donde indicamos el número de elementos a mostrar. De todas formas, si queremos indicarlo, veremos que el rango de selección de elementos a mostrar puede cambiar entre versiones (incluyendo versiones GA.X). Si queremos modificar esos rangos, en el artículo COMO MODIFICAR LA PAGINACIÓN POR DEFECTO DE LISTADOS EN LIFERAY 6.2.
Ahora, otro punto muy importante. Comportamiento del enlace entre contenidos: Ver en el portlet específico.
Liferay ver un contenido web completo en un publicador de contenidos de otra página
Esta opción, junto con la de publicador de contenidos por defecto para la página más la selección de la página de visualización para el contenido web, son la clave para que esta funcionalidad se pueda utilizar adecuadamente.
Nada más, un cordial saludo y hasta otra.

TIPOS DE EXTENSIONES EN JOOMLA.

Tipos de extensiones en Joomla

Tipos de extensiones en JoomlaAlgo que tienen en común la práctica totalidad de herramientas o aplicaciones basadas en PHP, como pueden ser Joomla, Drupal, WordPress, etc., es que permiten su crecimiento, el aumento de sus funcionalidades, mediante el desarrollo de añadidos. Trataremos en esta entrada los tipos de extensiones en Joomla.
Cada herramienta proveerá una serie de reglas que aplicar al desarrollo de estos añadidos que de no aplicarse, harían que nuestros nuevos añadidos no funcionen, no lo hagan correctamente, estemos “reinventando la rueda” (porque ya existe alguna clase o función en la herramienta que realiza lo que queremos, etc.).
En Joomla, estos añadidos reciben el nombre de extensiones y pueden ser de diferentes tipos. Cada uno es distinguible principalmente, por la función que desempeñan en Joomla. De hecho, muchas de las funcionalidades que utiliza Joomla por defecto, han sido creadas mediante extensiones.
¿Cuáles son entonces estos tipos de extensiones?

  • Componentes,
  • Módulos,
  • Plugins,
  • Plantillas,
  • Lenguajes

Componentes

Los componentes son las extensiones más complicadas. Tienen una parte pública (frontend) que muestra los datos resultantes de utilizar el componente y otra administrativa (backend), encargada de permitir la gestión del componente.
Cada componente puede añadirse al menú de navegación del sitio, como un elemento más del menú. De hecho, cada opción de menú, acaba llamando a un componente.
Los componentes son aplicaciones que pueden ser tan grandes como una red social o un portal de empleo y pueden servir de base para otras extensiones. Es común que un componente provea el contenido principal de una página de Joomla.
El menú Componentes contiene un enlace a todos los componentes instalados
Joomla, menú Componentes
Joomla, menú Extensiones
El resto de extensiones, tienen su correspondiente menú en Extensiones

Módulos

Los módulos o “boxes” podemos verlos como miniaplicaciones que podemos situar en diferentes posiciones de las páginas y que presentarán cierta información. Pueden trabajar independientemente, pero suelen estar enlazados a un componente.
Podemos acceder a los módulos a través del Gestor de módulos en el menú Extensiones.

Plugins

Los plugins son un tipo de extensión un tanto especial, pues siempre trabajan en conjunción con otras. Un plugin modifica el comportamiento básico de otra extensión ante un evento. Un ejemplo simple: queremos que cuando se guarde un contenido, el plugin tome ese contenido y elimine de él cualquier palabra que consideremos ofensiva.
El nombre tradicional para los plugins es “Mambots”.
Podemos acceder a los plugins a través del Gestor de plugins en el menú Extensiones.

Plantillas

Las plantillas son las extensiones que establecen el diseño de un portal Joomla y al mismo tiempo, indican las posiciones donde podemos situar módulos. Podemos hacer la plantilla más o menos completa, proveyendo incluso un área administrativa donde el usuario pueda modificar el diseño de ésta, sin necesidad de modificar el código fuente de la plantilla.
Podemos acceder a las plantillas mediante el Gestor de plantillas en el menú Extensiones como siempre.

Lenguajes

Por último, los lenguajes son extensiones más bien simples comparadas con las anteriores, ya que “solamente” traducen los textos de la interfaz de Joomla.
Podemos acceder a las plantillas mediante el Gestor de lenguajes en el menú Extensiones.
En conclusión: todas las extensiones se instalan a través del Gestor de Extensiones:
Joomla, gestor de extensiones
Y eso es todo por hoy, un saludo a todos.

COMO MODIFICAR LA PAGINACIÓN POR DEFECTO DE LISTADOS EN LIFERAY 6.2

Como modificar la paginación por defecto de listados en Liferay

Una entrada corta, pero que puede ser muy útil, ya que puede hacernos ganar tiempo a la hora de, por ejemplo, buscar un contenido, una plantilla, una estructura, etc., en uno de los típicos listados que nos muestra Liferay. Así que en esta ocasión veremos como modificar la paginación por defecto de listados en Liferay.
Lógicamente, podemos hacer uso de la utilidad de buscar…, pero por experiencia, no siempre nos devuelve el resultado que se espera (al menos hasta la versión 6.2) y se hace necesario buscar página a página por los listados. Por defecto, Liferay establece un máximo de 75 elementos a la hora de paginar un listado:
Como modificar la paginación por defecto de listados en Liferay 6.2. Rangos por defecto para listados
Esto sin embargo, es muy fácil de cambiar, como puede verse en la anterior figura, donde se muestra un valor de 200 elementos por página, que además, hemos hecho que sea el rango a mostrar por defecto.
Para lograrlo, editamos el fichero portal-ext.properties que encontraremos en /webapps/ROOT/WEB-INF/classes (usando Tomcat como servidor de aplicaciones). Añadimos estas líneas:

Finalmente, reiniciamos el servidor de aplicaciones. Puede verse una muestra del resultado en la siguiente imagen:
Como modificar la paginación por defecto de listados en Liferay. Nuevos posibles rangos para la paginación del listado

Otros posibles usos

Sin embargo, tal vez no nos hayamos percatado de los rangos de listados que aparecen en Liferay: a todos ellos afecta este cambio. Ejemplo: el publicador de contenidos permite mostrar un número determinado de contenidos, seleccionables en su configuración. También quedaría afectado este rango tal como se indica en este otro artículo:
LIFERAY. VER UN CONTENIDO WEB COMPLETO EN UN PUBLICADOR DE CONTENIDOS DE OTRA PÁGINA
Otro ejemplo. En Liferay 6.2 nos vamos a [Panel de control]/[Configuración]/[Administración del servidor]/[Niveles de trazas], accederemos a todas las clases Java que usa Liferay y son monitoreadas para lanzar trazas y en el nivel que se indican. Lógicamente podemos buscar pero veremos que aquí también tenemos rangos de listados que quedarán afectados por el cambio sugerido en este artículo.
Nada más, saludos cordiales y hasta la próxima.

INTEGRAR IMAGEMAGICK CON LIFERAY 6.2

Integrar Imagemagick con Liferay

A fecha de hoy, Liferay utiliza un software llamado PDFBox para realizar previsualizaciones de documentos que pueden apreciarse si subimos un documento .pdf a Documentos y Multimedia. Es por eso que esta entrada está dedicada a integrar Imagemagick con Liferay.
En el log de arranque de Liferay, podemos apreciar un texto similar (todo depende de nuestra versión de Liferay) a:
Liferay is not configured to use ImageMagick for generating Document Library previews and will default to PDFBox. For better quality previews, install ImageMagick and enable it in portal-ext.properties.
Donde se nos insta a utilizar ImageMagick como alternativa a PDFBox para obtener unas previsualizaciones mejores. El proceso está descrito en la documentación online de la comunidad de Liferay, como puede verse aquí.
Sin embargo, el proceso de integración de ImageMagick con Liferay, puede no ser tan simple como se indica en el citado artículo, teniendo en cuenta además, que han habido bugs relacionados, aunque solucionados en versiones más recientes.
Describo en esta entrada el proceso de integración, de una forma más detallada para evitar posibles quebraderos de cabeza, aunque orientado a sistemas windows, por ser la plataforma más extendida.

Instalando GhostScript e Imagemagick

El primer paso es descargar e instalar GhostScript.
Integrar Imagemagick con Liferay. Ghostscript download
Seleccionamos la opción indicada y en la siguiente pantalla…
Integrar Imagemagick con Liferay. Ghostscript Licencias
Pulsamos en la versión adecuada para descargar el fichero conveniente para nosotros…
Instalamos GhostScript en el lugar que queramos. Una vez instalado, añadimos la ruta hasta la carpeta bin (ejemplo: $RUTA_INSTALACIÓN_GHOSTSCRIPT/GS9.14/BIN), en la variable de entorno PATH. Con esto facilitamos el acceso a GhostScript.
Hecho esto, vamos al segundo paso que es instalar ImageMagick. Descargamos el software adecuado para nosotros, de alguno de los mirrors indicados en la siguiente página, o bien un instalador (más cómodo): http://www.imagemagick.org/script/binary-releases.php#windows.
Si nos hemos decidido por la primera opción, de entre todas las posibilidades, pulsamos en la que necesitamos (en este caso, windows). Aparece otra pantalla ofreciéndonos diferentes opciones. Elegiremos la indicada para nosotros.
Integrar Imagemagick con Liferay. ImageMagick Download Mirrors
Descomprimimos el fichero en la carpeta de nuestra elección y, al igual que hicimos con GhostScript, añadimos a la variable de entorno PATH (recordamos que hemos orientado el artículo a Windows) la ruta de la carpeta donde hemos instalado ImageMagick, para hacernos más cómodo todo el proceso. En el anterior enlace se indica como instalar y comprobar si ésta es correcta.
En este punto debemos estar seguros de que todo ha ido bien: tanto GhostScript como ImageMagick deben estar perfectamente instalados y funcionando.
Nos vamos a la carpeta donde tengamos instalado Liferay y editamos el fichero portal-ext.properties (que estará probablemente en $CARPETA_LIFERAY/WEBAPPS/ROOT/WEB-INF/CLASSES).
En este tercer paso, añadimos las siguientes líneas:

Nótense las rutas con dobles barras y que se indican tanto la ruta a la carpeta bin de GhostScript, como la ruta de instalación de ImageMagick.
En el cuarto paso, arrancamos nuestro Liferay y, logados como administrador nos vamos al Panel de Control:
Integrar Imagemagick con Liferay 6.2. Menú de Administración de Sitio Actual
Seguidamente pulsamos en Administración del servidor:
Integrar Imagemagick con Liferay 6.2. Panel de Control. Administración del servidor
Pulsamos en Servicios externos, nos aseguramos de activar la casilla de verificación correspondiente y poner las rutas (tanto la ruta a la carpeta bin de GhostScript como a la carpeta de instalación de ImageMagick):
Integrar Imagemagick con Liferay 6.2. Administración de servicios externos

Finalizado

Hecho todo esto, reiniciamos el servidor asegurándonos que hemos eliminado cualquier caché. Al subir un fichero .pdf por ejemplo, se nos mostrará una viñeta previsualizándolo.
Espero que este artículo ayude a integrar esta herramienta con Liferay más fácilmente. En próximas entradas veremos como lograr lo mismo con Xuggler.
Un cordial saludo y hasta otra.