Projet Socle ENT
Pages enfant
  • 01 - les DLM uPortal

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Les DLM (oufragment)


Les DLM Sont le nouveau mode de fonctonnement des environnements utilisateur (précédemment ALM).

Principe 

On définit dans un fichier XML (dlm.xml) le ciblage fragment <=> utilisateur.

Chaque fragment appartient a un utilisateur(particulier) le Layout Owner (LO).

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 concerné et attribue la partie d'environnement (onglet, groupe d'onglet) a l'utilisateur connecté.

Le fichier dml.xml

Il se trouve dans le dossier properties du portail.

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>


On retrouve dans ce fichier :  

  • L'utilisateur par défaut (dont tout le monde hérite) : defaultLayoutOwner
  • le temps que ce ficheir est caché :  org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore.fragment_cache_refresh
  • Balise Wiki
    tous les fragments *<dlm:fragment> \[...\]&nbsp; </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 :

Balise Wiki
nom \[name\]

Uniquement utilisé dans ce fichier pour les distinguer

Balise Wiki
propriétaite \[ownerID\]

C'est le layout owner (par convention on suffix le logins de ces utilisateurs par -lo).

Ces utilisateurs doivent exister dans la base du portail, ils sont locaux au portail donc a ajouter avec la tache ant user.add

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.

Bloc de code

<dlm:fragment name='Testing' ownerID='test-lo' precedence='90'>
...
<dlm:fragment name='Other' ownerID='other-lo' precedence='100'>

 
Dans ce cas on retrouve dans l'ordre : Other puis Testing.

Les fragments sont des groupes d'onglets ; si on prend l'exemple de 2 fragments contenant chacun 2 onglets, on peut position 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.

Balise Wiki
ciblage \[audience\]

Va déterminer a qui doit être attribué la fragment.

Balise Wiki
On paramètre une classe java qui va faire l'évaluation \[evaluatorFactory\].

On dispose de plusieurs classe java de base dans le portail :

  • AllUsersEvaluatorFactory : match tous les utilisateurs
  • GroupMembershipEvaluatorFactory  match l'appartenance a un groupe
  • GuestUserEvaluatorFactory : match l'utilisateur guest
  • PersonEvaluatorFactory : match 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)