lunes, 18 de abril de 2011

Porlet de tareas de Alfresco para Liferay

En la versión 3.4 de Alfresco se ha incluido un portlet JSR-168 llamado Doclib portlet que está preparado para ser desplegado en el portal Liferay. Este portlet está basado en Alfresco Share y tres funcionalidades de acceso al repositorio de Alfresco:
  • Repository browser: permite navegar por todo el repositorio de Alfresco usando las credenciales del usuario autenticado en el portal.
  • Site Document Library: se puede configurar para mostrar la document library de un site concreto de Alfresco Share.
  • My Document Libraries: permite acceder a todas las document libraries de los sites a los que pertenece el usuario autenticado en el portal.
La parte de gestión documental queda muy bien cubierta por estas funcionalidades, pero se hecha en falta alguna de las utilidades incorporadas en esta versión de Alfresco como, por ejemplo, la gestión de tareas. Por suerte, Alfresco es una aplicación fácil de ampliar y se puede conseguir disponer de un portlet de tareas de Alfresco integrado en un portal Liferay.

El primer paso consiste en incluir la definición del nuevo portlet en los ficheros de porltets incluídos en Alfresco Share. Empezamos por el liferay-portlet.xml, donde hay que añadir:

<portlet>
<portlet-name>ShareMyTasks</portlet-name>

<user-principal-strategy>screenName</user-principal-strategy>

</portlet>


A continuación editamos el fichero liferay-display.xml e incluimos lo siguiente:

<portlet id="ShareMyTasks"></portlet>

Por último hay que editar el fichero portlet.xml para añadir:

<portlet>
<description>Alfresco Share: My Tasks</description>
<portlet-name>ShareMyTasks</portlet-name>
<portlet-class>org.alfresco.web.portlet.ProxyPortlet</portlet-class>
<init-param>
<name>viewScriptUrl</name>
<value>/page/my-tasks</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>Share: My Tasks</title>
<short-title>My Tasks</short-title>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>

Estos ficheros se encuentran en la carpeta WEB-INF de la aplicación Share. Cuidado que esta aplicación Share es la que se despliega en el portal, no la que se despliega junto con el repositorio de Alfresco.

A continuación hay que modificar la plantilla de visualización de la página de la lista de tareas para eliminar la barra de cabecera de Alfresco y dejar únicamente los componentes relacionados con la lista de tareas. Esta plantilla se llama my-tasks.ftl y se puede encontrar en la carpeta WEB-INF/classes/alfresco/templates/org/alfresco . El código que hay que comentar o eliminar es el siguiente:

<@region id="header" scope="global" protected=true/>

Por último hay que modificar el fichero web.xml de la aplicación Share para incluir la definición de la implementación del nuevo portlet añadiendo los siguientes elementos. En la sección de servlets:

<servlet>
<servlet-name>ShareMyTasks</servlet-name>
<servlet-class>com.liferay.portal.kernel.servlet.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-class</param-name>
<param-value>org.alfresco.web.portlet.ProxyPortlet</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

y en la sección de servlet-mappings esto:

<servlet-mapping>
<servlet-name>ShareMyTasks</servlet-name>
<url-pattern>/ShareMyTasks/*</url-pattern>
</servlet-mapping>


Una vez hechos todos los cambios hay que volver a desplegar la aplicación Share en Liferay para que reconozca el nuevo portlet. Una vez recargada la aplicación, el nuevo portlet estará listo para ser usado.

3 comentarios:

mkoz dijo...

Excelente! buen trabajo.

Hay alguna manera para arreglar el problema de estilos que ocurre cuando se agrega el portlet? todos los contenidos fuera del portlet están centrados. Donde se puede modificar esto?

Alejandro Ugartondo dijo...

El problema del centrado de los contenidos se puede resolver cambiando uno de los estilos de Alfresco, en concreto en el fichero $ALF_HOME/tomcat/webapps/share/yui/reset-fonts-grids/reset-fonts-grids.css hay que eliminar el elemento:

body{
text-align:center;
}

Sergio dijo...

Busco consultores maneje Alfresco, Jboss, Content management para DF, enviar cv a smhernandez@contactohumano.com