logo Alfresco
Version Enterprise 3.4.2

Le besoin est de mettre en place un tableau de bord utilisateur (et/ou site) unique (donc identique pour tous) et de pouvoir le mettre à jour facilement.

Problème

Une réponse simple à notre besoin est de configurer le fichier preset.xml qui définit les éléments par défaut qui seront instanciés sur le tableau de bord utilisateur puis de limiter l’accès à l’action de personnalisation.

Cette réponse n’est pas complète car le tableau de bord par défaut, défini dans preset.xml, est pris en compte uniquement pour les nouveaux utilisateurs ou nouveaux sites. Cette solution ne s’applique donc qu’au démarrage du projet. De plus, il sera compliqué d’ajouter un dashlet ou tout autre affichage sur TOUS les tableaux de bord à l’avenir.

Il existe tout de même des solutions, je vous invite à consulter un très bon article à cette adresse : http://charles.torda.net/2012/01/01/souhaitez-une-bonne-annee-a-vos-utilisateurs-12/

Solution

Modifier le tableau de bord

La solution est de modifier directement le template dashboard.ftl qui affiche de tableau de bord.

  • Copier le template vers web-extension/templates/org/alfresco/
  • Remplacer la ligne <@layout.grid gridColumns gridClass "component" /> par ce que vous souhaitez afficher sur le tableau de bord.

Différencier les tableaux de bord de sites et d’utilisateurs

Pour différencier l’affichage des deux tableaux de bord il suffit d’utiliser <#if page.url.templateArgs.site??>
Si par exemple on souhaite uniquement que le tableau de bord utilisateur soit statique :

<#if page.url.templateArgs.site??>
<@layout.grid gridColumns gridClass "component" />
<#else>
Le code de mon tableau de bord utilisateur statique
</#if>

Cacher le bouton qui permet de personnaliser le tableau de bord

Il suffit de commenter le bout de code qui affiche le bouton de configuration des tableaux de bord (ou d’ajouter une clause qui afficherait le bouton aux administrateurs) et de bloquer l’accès aux pages de personnalisation en posant une restriction.

site-webscript/org/alfresco/components/title/user-dashboard-title.get.html.ftl
<!--span>
<span>
<a href="${url.context}/page/customise-user-dashboard"
${linkClass}>${msg("link.customiseDashboard")}</a>
</span>
</span-->

site-data/pages/customise-user-dashboard.xml

<authentication>admin</authentication>

site-webscript/org/alfresco/components/title/collaboration-title.get.html.ftl
<!--span>
<span>
<a href="${url.context}/page/site/${page.url.templateArgs.site!}/customise-site-dashboard"
${linkClass}>${msg("link.customiseDashboard")}</a>
</span>
</span-->

site-data/pages/customise-site-dashboard.xml

<authentication>admin</authentication>

Afficher des dashlets

Il serait quand même plus propre d’utiliser des dashlets que du code non ?
La première chose à faire est de créer un composant global pour le dashlet qu’on souhaite afficher (mydashlet ici).

  • Créer un fichier global.mydashlet.xml dans web-extension/site-data/components/

<?xml version="1.0" encoding="UTF-8"?>
<component>
<scope>global</scope>
<region-id>mydashlet</region-id>
<source-id>global</source-id>
<url>/components/dashlets/my-dashlet</url>
</component>

  • Depuis le template dashboard.ftl vous pouvez maintenant appeler <@region id="mydashlet" scope="global" protected=true />

Il s’agit de la solution la plus simple que j’ai trouvé pour résoudre ce problème, je reste ouvert à d’autres solutions 🙂

A vous de jouer !

Publicités