jueves, 16 de agosto de 2012

Modificar User Dashboards

El cliente web Alfresco Share está muy orientado a usuario y por eso el punto de entrada a la aplicación es un panel de inicio donde se muestra la información de interés para el usuario. Este panel de inicio (user dashboard) está personalizado para cada usuario.

El panel de inicio de los usuarios de Alfresco Share se configura usando presets. Estos presets se definen en el fichero /WEB-INF/classes/alfresco/site-data/presets/presets.xml (o en su equivalente de la carpeta de extensión). Un preset contiene la definición del layout de la página y la lista de componentes que aparecerán en ella. En el caso del panel de inicio de los usuarios, cuando estos acceden por primera, se crea una instancia de panel de inicio siguiendo la plantilla definida en el preset y a partir de ahí los usuarios pueden modificar la apariencia y contenido de su panel de inicio como quieran.

Este enfoque es válido cuando se quiere que los usuarios tengan el control total sobre su panel de inicio pero no lo es cuando se quiere que sea el administrador el responsable de mantener la apariencia del panel de inicio común para todos los usuarios. Imaginemos la siguiente situación. El administrador define un preset y los usuarios empiezan a acceder. Se ha hecho una modificación en el cliente web para que los usuarios no tengan disponible el botón que les permite editar su panel de inicio, por lo que todos los usuarios conservan el mismo panel de inicio desde que acceden por primera vez y todos los paneles de inicio son iguales. Hasta aquí todo va según las necesidades del administrador. Ahora bien, ¿qué pasará si el administrador hace un cambio en el preset y quiere que se aplique a todos los usuarios? Pasará que el cambio en el preset sólo se aplicará a los usuarios que accedan por primera vez después de la modificación. Todos aquellos usuarios que hubieran accedido antes del cambio conservarán el panel de inicio anterior. ¿Cómo se puede solucionar esto?

En Alfresco 4.0, la información de los paneles de inicio de los usuarios se guarda en el propio repositorio, en la ruta /company_home/Sites/surf-config . Esta ruta no se puede ver desde Alfresco Share y sólo se puede alcanzar desde Alfresco Explorer (o desde cualquiera de las APIs de Alfresco). En esta ruta hay varios espacios, entre ellos dos llamados pages y components. El primero corresponde a las páginas de los paneles de inicio de los usuarios y el segundo corresponde a cada uno de los componentes que aparecen en cada página.

Para solucionar el problema planteado, bastaría con borrar el contenido de estos dos espacios y reiniciar Alfresco para que todos los usuarios tengan su panel de inicio según lo indicado en el nuevo preset.

Esta solución también nos permitiría tratar problemas más concretos, como el de eliminar el panel de inicio de un usuario concreto o quitar un componente de un panel de inicio que esté dando problemas. También se podría aplicar esta solución para aplicar cambios mediante código. El único problema que he encontrado en esta solución es la necesidad de reiniciar Alfresco para que los cambios tengan efecto.