Télécharger les jars du plugin et ajouter-les (ametys-plugin-user-directory-1.0.0.jar et ametys-plugin-user-directory-resources-1.0.0.jar) dans le répertoire WEB-INF/lib de votre application Ametys
Ajouter les bouton permettant d'ouvrir l'outil de recherche et d'ouvrir sa propre fiche dans le fichier WEB-INF/params/cms-ribbon-default.xml. L'identifiant des boutons est org.ametys.plugins.user.directory.Search et org.ametys.plugins.user.directory.EditSelfCard.
Il est conseillé de l'ajouter dans le groupe "Outils" de l'onglet Accueil.
Attention Attention ! Si le groupe contient une description <large>, <medium> et <small> , il faut ajouter le bouton dans les 3
Dans ce même fichier, ajouter le bouton permettant de positionner la racine d'un annuaire sur une page : org.ametys.plugins.user.directory.SetRoot
Chaque population d'utilisateurs définie le ou les types des contenus qui seront créés suite à une synchronisation.
Vous êtes libre de définir n'importe quel type de contenus. Le plugin Annuaires n'apporte aucun types de contenus, à vous de définir vos propres contenus correspondant à chacune des populations.
Pour vos types de contenus, vous devez respecter les règles suivantes :
l'identifiant des types de contenus doit commencer par org.ametys.plugins.userdirectory.Content
la classe Java associée aux types de contenus doit être org.ametys.plugins.userdirectory.contenttype.UserContentType
les types de contenus doivent être déclarés privés
les types de contenus doivent être déclarés dans votre propre plugin (conséquence de la règle n°2)
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Voici un exemple de plugin définissant le type de contenu "org.ametys.plugins.userdirectory.Content.employee" et les paramètres de configuration nécessaires pour la connexion au serveur LDAP: employee.zip Il est fortement recommandé de partir de ce plugin et de le modifier selon vos besoins.
Définition des "populations"
Une population est un ensemble d'utilisateurs / membres issue d'une même source de données (LDAP, SQL, ...).
Les "populations" d'utilisateurs sont définies dans le fichier XML WEB-INF/param/user-populations.xml
Chaque population doit définir :
sa source de données (un serveur LDAP par exemple)
la classe Java qui sera responsable de la synchronisation des contenus (ex: org.ametys.plugins.userdirectory.population.LDAPPopulation)
le ou les types de contenus à laquelle elle est liée
les champs de recherche et colonnes résultats possibles
un mapping entre les champs du type de contenus et les attributs de la source de données
Exemple de population
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
La section <content-types> contient la liste des types de contenus (UserContentType) qui seront créés/synchronisés avec la source de données
Les paramètres
Les paramètres sont les paramètres nécessaires pour se connecter à la source de données.
Ils font référence à des identifiants de paramètres de configuration.
Les critères de recherche
La section <search-criteria> défini les métadonnées qui seront utilisées comme critère de recherche dans l'annuaire.
L'attribut "metadata-ref" contient le chemin vers la métadonnée.
L'attribut "analyzed" est optionel. Positionnez l'attribut à false pour ne pas utiliser d'analyseur textuel lors de l'indexation.
Les colonnes résultats
Si les résultats de recherche sur l'annuaire sont affichés sous forme d'un tableau, vous pouvez définir dans la section <result-columns> quelles seront les colonnes du tableau.
Comme pour les critères de recherche, l'attribut "metadata-ref" contient le chemin vers la métadonnée à afficher en colonne résultat.
La colonne portant l'attribut main="true", sera la colonne qui comportera le lien vers la fiche complète du membre de la population.
Si une colonne doit afficher un email, ajoutez l'attribut type="email" pour qu'il soit traité différemment lors de l'affichage afin de lutter contre les spams.
Le mapping
Le mapping définit quels champs (métadonnées du contenu) seront synchronisés avec les informations de la source externes.
Le mapping contient nécessairement un tag <id> identifiant la métadonnée et l'attribut/colonne de la source de données permettant de garantir l'unicité du contenu.
Pour les autres champs (métadonnées), il est possible de dire si la valeur distante, doit être synchronisée ou doit écraser la métadonnée locale (synchro = "true|false"):
si synchro="true", alors la métadonnée associée possédera 2 valeurs: la valeur locale, modifiable, et la valeur distante, extraite de la source de donnée, non modifiable. En édition, le contributeur pourra choisir d'utiliser la valeur locale (Ametys) ou la valeur distante (BD) :
si synchro="false", la métadonnée n'a qu'une seule valeur, qui sera toujours synchronisée avec la valeur de la source de donnée.
Attribut "boSource"
Si une population est liée à la même population d'utilisateurs pouvant se connecter au back-office, ajoutez l'attribut boSource=true.
Ceci permet de donner accès au bouton "Ouvrir ma fiche personnelle", pour les utilisateurs cette population.
Attribut "sourcePrevails"
Cet attribut est important lors de la synchronisation d'une population. Il signifie "faire confiance à la source de donnée". Ainsi lors de la synchronisation d'une population, si un contenu créé par une précédente synchronisation, est lié à un identifiant/login qui n'existe plus dans la source de donnée, il sera supprimé d'Ametys si sourcePrevails = true.
Pour aller plus loin Le plugin Annuaires fournit une seule classe Java pour la synchronisation d'une population issue d'un annuaire LDAP : org.ametys.plugins.userdirectory.population.LDAPPopulation. Cette classe est suffisante pour une population issue d'un serveur LDAP dans le cas général suivant : - la source de donnée est un annuaire LDAP - la synchronisation avec l'annuaire donne lieu à la création d'un seul type de contenu - une métadonnée est synchronisée avec un seul attribut de l'annuaire Vous devrez définir votre propre classe Population dès que votre cas d'usage ne rentre pas dans le cas général. Par exemple, si vous souhaitez créer plusieurs types de contenus à partir de la même population, si une métadonnée doit être synchronisée avec 2 ou plus attributs LDAP, etc ... Pour ce faire, votre classe devra étendre la classe org.ametys.plugins.userdirectory.population.AbstractPopulation ou org.ametys.plugins.userdirectory.population.LDAPPopulation et définir sa propre méthode #populate. La méthode #populate a pour but d'extraire les "membres" de la source de donnée et de créer/synchroniser des contenus Ametys.
Cycle de vie des contenus
Les contenus Ametys issus d'une population possède leur propre workflow.
Téléchargez le fichier de description du workflow pour ces contenus et copier-le dans le répertoire WEB-INF/param de votre application. Modifiez ensuite le fichier WEB-INF/param/workflows.xml afin d'ajouter la référence à ce fichier en utilisant le nom "user-directory", comme ci-dessous:
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.