Le DLM (ou gestion de fragments)
Le DLM (distributed layout management) est un mode de fonctionnement des environnements utilisateur qui utilise des fragments de profils répartis dans des utilisateurs modèles.
| Sommaire | ||||||
|---|---|---|---|---|---|---|
|
Principe
On référence dans un fichier XML (dlm.xml) des fragments de profils que les utilisateurs peuvent se voir attribuer.
...
- le portail parcourt le fichier dlm.xml pour savoir quels fragments lui attribuer (en fonction des règles d'audience indiquées dans la balise <dlm/audience>)
- ensuite il va voir le détail du profil de chaque propriétaire (layout owner) concerné (voir gestion des fragments) et attribue la partie de profil (onglet, groupe d'onglets) a l'utilisateur connecté.
- les fragments sont classés et affichés selon l'ordre indiqué dans l'attribut precedence
- pour finir le portail applique les personnalisations faites par l'utilisateur lors de ses connexions précédentes (déplacement, modification, suppression de fragment, ajouts d'onglets et de canaux...)
Le fichier dml.xml
Il se trouve dans le dossier properties du portail. On définit dans ce fichier la position des fragments et leur visibilité pour les utilisateurs. Le contenu des fragments (canaux) est précisé ailleurs, dans les fichiers d'import de fragments ou par l'interface graphique (voir gestion des fragments)
...
- L'utilisateur par défaut (dont tout le monde hérite) : defaultLayoutOwner
- le temps pendant lequel ce fichier est caché : org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore.fragment_cache_refresh
Balise Wiki tous les fragments *<dlm:fragment> \[...\] </dlm:fragment>*
Modification du fichier dlm.xml
Copier le fichier update/uPortal/uportal-impl/src/main/resources/properties/dlm.xml dans custom/uPortal/uportal-impl/src/main/resources/properties et travailler dans le répertoire custom
Définition d'un fragment
| Bloc de code |
|---|
<dlm:fragment name='Default' ownerID='default-lo' precedence='10'>
<dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'>
<paren mode="AND">
<attribute mode='deepMemberOf' name='Etablissement'/>
</paren>
</dlm:audience>
</dlm:fragment>
|
On retrouve :
| Balise Wiki |
|---|
nom \[name\] |
Uniquement utilisé dans ce fichier pour les distinguer
| Balise Wiki |
|---|
propriétaire \[ownerID\] |
C'est le layout owner (par convention on suffixe le login de ces utilisateurs par -lo pour les distinguer des utilisateurs classiques).
| Balise Wiki |
|---|
emplacement de gauche a droite \[precedence\] |
Détermine la place du fragment de gauche a droite par rapport aux autres.
C'est un numérique ; plus il est grand plus il se trouve a gauche.
Les precedences sont évaluées entre différents fragments.
...
En cas de conflit c'est l'ordre de définition dans le fichier dlm.xml qui tranchera.
| Balise Wiki |
|---|
ciblage \[audience\] |
Va déterminer à qui doit être attribué le fragment.
...
- PersonEvaluatorFactory
- equals
- exists
- contains
- startsWith
- endsWith
- GroupMembershipEvaluatorFactory
- memberOf (Membre direct)
- deepMemberOf (Membre Recusif)
Gestion des fragments
Un fragment consiste en un ou des onglets, contenant un ou des canaux disposés en colonnes.
...
- Créer un fichier xml (contenant le détail du fragment) pour chaque utilisateur propriétaire et importer ce fichier .
- Se connecter en tant qu'administrateur du portail (ou avec des droits suffisants) et configurer les fragments avec le canal fragment administrator.
Utilisation de fichiers XML
Fichier d'import de fragment
| Volet |
|---|
package ESUP : Si vous voulez importer automatiquement les fragments lors de l'initialisation de la base, vous devez stocker les fichiers dans le répertoire : custom/uPortal/uportal-impl/src/main/resources/properties/db/mini/fragment-layout |
...
On retrouve dans ce fichier la structure complète de l'environnement utilisateur :
layout
Element racine, indique le nom de l'utilisateur propriétaire du fragment (username)
root
header
Contenu (canaux) de l'en-tête de la page
footer
Contenu (canaux)du bas de page
tab
Un onglet :
- name : Nom de l'onglet affiché à l'écran
Balise Wiki mutable : \[true\|false\] est-il déplaçable ?
Balise Wiki hidden : \[true\|false\] est-il affiché ?
Balise Wiki removable : \[true\|false\] est-il supprimable ?
column
Contient des canaux, qui seront affichés les uns en dessous des autres. Si plusieurs colonnes sont définies pour un onglet, elles seront affichées côte à côte.
- width : largeur de la colonne en pourcentage. pris en compte uniquement s'il y a plusieurs colonnes, sinon 100%
channel
Un canal affiché dans une colonne
- fname : nom fonctionnel (functional name) du canal. voir la partie Publication de canaux
profile
Le profil qui peut être utilisé pour afficher ce fragment, en fonction du navigateur du client (navigateur html, mobile, etc.). Un élément structre par type de client possible
- structure : rendu général
- theme : fichiers de transformation xsl utilisés (structure) et habillage (skin) par défaut
Import d'un fichier de fragment
L'import se fait par la tâche ant :
...
| Bloc de code |
|---|
ant db.export -Ddir= -Dtype=all-fragment-definitions |
Utilisation de l'interface graphique
Pour modifier un fragment avec l'interface graphique, il faut se connecter sous le nom d'un utilisateur ayant le droit d'utiliser le canal fragment administrator
...