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.

Le DLM (ou fragments)


Le DLM (distributed layout management) est le nouveau mode de fonctionnement des environnements utilisateur (précédemment ALM - aggregated layout management-).

Sommaire
minLevel2
indent20px
styledisc

...

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 propriétaire d'environnement (Layout Ownerlayout 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>

...

Balise Wiki
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).

...

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\]

...

On dispose de plusieurs 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. Ils sont automatiquement créés dans la base (table UP_USER) lors de la lecture de dlm.xml au démarrage du portail

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.
  • Connexion directement avec l'utilisateur propriétaire et création de son environnement par l'interface web du portail.

Utilisation de fichiers XML

Fichier

...

d'

...

import de fragment

Les fichiers d'import 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) Balise WikiLes fichiers d'environnement sont stockés dans le portail/properties/layouts/\[USER\]-lo.xml

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>

...

  • Balise Wiki
    le nom de l'utilisateur \[user\] : nom de l'utilisateur propriétaire du fragment
  • Balise Wiki
    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 colonne.

  • Balise Wiki
    les onglets \[folder\]
    • name : Nom qui s'affiche pour de l'onglet affiché à l'ongletécran
    • Balise Wiki
      mutable : \[true\|false\] est -il déplaçable ?
    • Balise Wiki
      removable : \[true\|false\] est -il supprimable ?
    • Balise Wiki
      type : \[header\|regular\|footer\] : type de l'onglet (_header_ et _footer_ sont réservés par le portail)
  • Balise Wiki
    Les colonnes \[folder/folder\] : idem onglets (les noms des colonnes ne s'affichent pas)
  • Les canaux contenus dans une colonne : le fName correspond au "functional name" utilisé lors de la publication du canal.

...

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

...

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 layout 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 :

...

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 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.

...