...
Le DLM (ou
...
gestion de fragments)
Les DLM Sont Le DLM (distributed layout management) est le nouveau mode de fonctonnement fonctionnement des environnements utilisateur (précédemment ALM - aggregated layout management-).
Sommaire | ||||||
---|---|---|---|---|---|---|
|
...
On définit dans un fichier XML (dlm.xml) le ciblage fragment <=> utilisateur.
Chaque fragment appartient a un utilisateur ( particulier ) : le Layout Owner (LO). layout owner (LO). Les propriétaires des fragments sont des utilisateurs du portail et sont automatiquement créés dans la base (table UP_USER) lors de la lecture de dlm.xml au démarrage du portail
Lors de la connexion d'un utilisateur "normal" le portail regarde le fichier dlm.xml pour savoir quel fragment lui attribuer ; ensuite il va voir l'environnement de chaque Layout Owner propriétaire d'environnement (layout owner) concerné et attribue la partie d'environnement (onglet, groupe d'onglet) a l'utilisateur connecté.
...
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)
Bloc de code |
---|
<?xml version="1.0"?> <!-- $Header$ --> <managedLayoutFragments xmlns:dlm="http://org.jasig.portal.layout.dlm.config"> <dlm:property name='defaultLayoutOwner' value='fragmentTemplate'/> <!-- <dlm:property name='layoutDecorator' value='someClass'/> --> <!-- Controls clearing of dlm fragment cache. This allows changes made to layout owners to be reflected once the cache has been updated. Specified in minutes. --> <dlm:property name='org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore.fragment_cache_refresh' value="5"/> <dlm:fragment name='Guests' ownerID='guest-lo' precedence='20'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GuestUserEvaluatorFactory'/> </dlm:fragment> <dlm:fragment name='Admin' ownerID='admin-lo' precedence='10'> <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.PersonEvaluatorFactory'> <paren mode="AND"> <attribute name="username" mode='equals' value='admin'/> </paren> </dlm:audience> </dlm:fragment> <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> </managedLayoutFragments> |
...
- L'utilisateur par défaut (dont tout le monde hérite) : defaultLayoutOwner
- le temps que pendant lequel ce ficheir fichier est caché : org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore.fragment_cache_refreshunmigrated-wiki-markup
- tous les fragments *<dlm:fragment> \ [...\] </dlm:fragment>*
Détails 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 :
...
nom
...
[name
...
]
Uniquement utilisé dans ce fichier pour les distinguer
...
propriétaite
...
[ownerID
...
]
C'est le layout owner (par convention on suffix suffixe le logins login de ces utilisateurs par -lo pour les distinguer des utilisateurs classiques).
Ces utilisateurs doivent exister dans la base du portail, ils sont locaux au portail donc a ajouter avec la tache ant user.add
...
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.
...
Les fragments sont des groupes d'onglets ; si on prend l'exemple de 2 fragments contenant chacun 2 onglets, on peut position positionner le fragment complet, pas les onglets.
Il n'est donc pas possible d'intercaler un onglet d'un fragment puis un onglet d'un autre et ainsi de suite.
En cas de conflit c'est l'ordre de définition dans le fichier dlm.xml qui tranchera.
...
ciblage
...
[audience
...
]
Va déterminer a à qui doit être attribué la le fragment.unmigrated-wiki-markup
On paramètre une classe java qui va faire l'évaluation \ [evaluatorFactory\].
On dispose de plusieurs classe classes java de base dans le portail :
- AllUsersEvaluatorFactory : match évalue tous les utilisateurs
- GroupMembershipEvaluatorFactory match évalue l'appartenance a un groupe
- GuestUserEvaluatorFactory : match évalue l'utilisateur guest
- PersonEvaluatorFactory : match évalue sur des attributs uPortal
On peut aussi faire des combinaisons a base de directive parent AND, OR, NOT.
La partie mode d'égalité dépend de la classe evaluatorFactory :
- 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.Les Layout Owner sont des utilisateurs du portail, il existe donc dans la base (nécessité de la créer)
Vous pouvez gérer ces environnements les fragments de 2 deux manières :
- Utilisation de fichiers XML contenant l'environnement de l'utilisateur (fichiers d'import de fragment) puis importation/exportation via des tâches ANT.
- Se connecter Connexion directement avec l'utilisateur propriétaire et créer création de son environnement par l'interface web du portail.
Utilisation de fichiers XML
Fichier
...
d'
...
import de fragment
Les fichiers d'environnement sont stocké dans le portail/properties/layouts/\[USER\]-lo.xmlimport de fragment sont stockés dans le répertoire properties/layouts. Il y a un fichier par fragment. Par convention, on donne au fichier le nom de son propriétaire (guest-lo.xml pour le propriétaire guest-lo)
Bloc de code |
---|
<?xml version="1.0" encoding="UTF-8"?> <layout user="guest-lo"> <root-folder> <folder mutable="True" removable="True" type="header"> <name>Header folder</name> <channel fName="header"/> <channel fName="portal/login/general"/> <channel fName="session-locales-selector"/> </folder> <folder mutable="True" removable="True" type="regular"> <name>Accueil</name> <folder mutable="True" removable="True" type="regular"> <name>Column</name> <channel fName="accueil-esup-portail"/> </folder> </folder> <folder mutable="True" removable="True" type="footer"> <name>Footer folder</name> <channel fName="footer"/> </folder> </root-folder> </layout> |
On retrouve dans ce fichier la strucutre structure complète de l'environnement utilisateur :
...
- le nom de l'utilisateur \ [user\] : nom de l'utilisateur propriétaire du fragmentunmigrated-wiki-markup
- dossier racine \ [root-folder\] : contient l'ensemble des folders
Un folder dossier de premier niveau est un onglet, un folder dossier de second niveau (folder/folder) est une colnne.
...
colonne.
- les onglets \ [folder\]
- name : Nom qui s'affiche pour de l'onglet affiché à l'ongletécran
- mutable :
mutable : \ [true\|false\] est -il déplacableBalise Wiki Balise Wiki removalbe : \[true\|false\] est il supprimable
Balise Wiki type : \[header\|regular\|fotter\] : type de l'onglet (header et footer sont réservé par le portail)
Balise Wiki Les colonnes \[folder/folder\] : idem onglets
- déplaçable ?
- removable : [true|false] est-il supprimable ?
- type : [header|regular|footer] : type de l'onglet (header et footer sont réservés par le portail)
- Les colonnes [folder/folder] : idem onglets (les noms des colonnes ne s'affichent pas)
- Les canaux contenus Les canaux contenu dans une colonne : le fName correspond au "functional name" utiliser utilisé lors de la pulbication publication du canal.
Import/Export ANT
Importation du fichier uPortal/properties/layouts/guest-lo.xml (appartenant a guest-lo) dans la base du portail :
Bloc de code |
---|
ant layout.import -Dusername=guest-lo |
On peut aussi importer tous les environnements contenu contenus dans le dossier layouts
Bloc de code |
---|
ant layout.import -Dusername=all |
NB :En base, les fragments sont stockés dans les tables UP_LAYOUT_STRUCT et UP_LAYOUT_PARAM
Opération inverse : Exportation de l'environnement de guest-lo dans uPortal/properties/layouts/guest-lo.xml (utile par exemple si on a créé/modifié l'environnement de guest-lo avec l'interface graphique)
Bloc de code |
---|
ant layout.export -Dusername=guest-lo |
Utilisation de l'interface graphique
Pour modifier un fragment avec l'interface graphique, il faut pouvoir se connecter sous le nom de l'utilisateur propriétaire. Il faut donc préalablement le créer dans la table servant à l'authentification locale :
Bloc de code |
---|
ant user.add -Dusername=guest-lo
|
Puis indiquer son mot de passe.
NB : Ceci ajoute l'utilisateur dans la table UP_PERSON_DIR
Une fois l'utilisateur créé dans le portail vous pouvez vous connecter avec celui-ci (attention il faut s'authentifier localement au portail : base de données)sous son nom. Attention il s'agit d'une authentification locale, le paramètre esup.db.auth de config.properties doit donc être égal à true. On devrait aussi pouvoir passer par une authentification distante (CAS => LDAP), mais je n'en voit pas l'intérêt.
Vous pouvez comme tout utilisateur ajouter des onglets, des colonnes et de des canaux.
Ensuite si vous voulez gérer des restrictions vous aller , allez dans le canal préférence (Menu en haut a droite "Préférence")
En cliquant sur un onglet vous pourrez dire indiquer si on peut :
- Déplacer l'onglet
- Editer les propriétés
- Ajouter des colonnes
- Supprimer l'onglet
En cliquant sur une colonne vous pourrez dire indiquer si on peut :
- Déplacer la colonne
- Editer les propriétés
- Ajouter des canaux
- Supprimer la colonne
En cliquant sur un canal vous pourrez dire indiquer si on peut :
- Déplacer le canal
- Supprimer le canal
Toutes les modifications seront répercutées sur le layout, donc sur les utilisateurs autorisés à voir ce fragment.