Plugin Pages personnelles - Manuel d'intégration v1.8.0

  1. Prérequis
  2. Installation
  3. Intégration graphique
  4. Attributs LDAP et indexation LDAP par défaut
  5. Définition d'un nouveau de type de contenu "fiche personne"

Prérequis

Le gestionnaire d'utilisateurs de votre CMS doit être relié à un annuaire LDAP.

Il existe 2 gestionnaires de LDAP :

  • org.ametys.runtime.plugins.core.Ldap
  • org.ametys.runtime.plugins.core.CredentialsAwareLdap
<org.ametys.runtime.user.UsersManager>org.ametys.runtime.plugins.core.Ldap</org.ametys.runtime.user.UsersManager>
<org.ametys.runtime.user.UsersManager>org.ametys.runtime.plugins.core.CredentialsAwareLdap</org.ametys.runtime.user.UsersManager>

Installation

  • Arrêter le serveur
  • Télécharger les jars du plugin et ajouter-les (ametys-plugin-mypage-1.8.0.jar et ametys-plugin-mypage-resources-1.780.jar) dans le répertoire WEB-INF/lib de votre application Ametys

  • Ajouter les boutons et menus permettants d'ouvrir et de gérer les pages personnelles dans le fichier WEB-INF/params/cms-ribbon-default.xml. Les identifiants sont org.ametys.mypage.person.Open et org.ametys.mypage.person.SearchMenu.
    Il est conseillé de l'ajouter dans l'onglet Accueil, dans le groupe "Outils avancés"

    <group label="RIBBON_TABS_TAB_HOME_GROUPS_GROUP_ADVANCED_TOOL_LABEL" icon="">
           <large></large>
           <medium>
    			...
    			<control id="org.ametys.mypage.person.Open"/>
                <control id="org.ametys.mypage.person.SearchMenu"/>
           </medium>
           <small/>
     </group>
    
  • Afin de permettre aux utilisateurs d'éditer leur propre page, un profil nommé "MYPAGE_PROFILE" doit être créé, possédant les droits suivants :
    • dans la catégorie "Pages personnelles", le droit "Gérer ma page personnelle";
    • selon le worfklow, tous les droits nécessaires pour modifier, supprimer et faire avancer un contenu dans le workflow jusqu'à l'état considéré comme valide pour la publication sur le site web. Dans le application de démonstration, ces droits sont : "Editer", "Proposer", "Refuser", "Valider" et "Supprimer".
  • Les pages personnelles sont gérées comme un type de contenu. Ce type de contenu n'a cependant pas vocation à être inséré dans les pages du site.
    Vous devez donc explicitement le supprimer du menu "Ajouter un content". Pour cela assurez-vous que le type de contenu org.ametys.plugins.mypage.Content.person n'appartient à la liste des types de contenus disponibles définies par le fichier WEB-INF/param/content-types-default.xml.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <content-types mode="exclude">
          <content-type id="org.ametys.plugins.newsletter.Content.newsletter"/>
    	  <content-type id="org.ametys.plugins.mypage.Content.person"/>
    </content-types>
    
    
  • Redémarrer le serveur

Intégration graphique

Cette extension nécessite que votre charte graphique contienne un gabarit "mypage" avec une zone principale nommée "default". Vous devez créer ce gabarit s'il y n'existe pas déjà dans votre charte.
Pour une intégration simple, le fichier template.xsl de ce nouveau gabarit peut se contenter d' importer la feuille de style du gabarit de page

 

<xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
        xmlns:sitemap="http://www.ametys.org/inputdata/sitemap/3.0"
        xmlns:xalan="http://xml.apache.org/xalan"
        xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date"
        exclude-result-prefixes="sitemap">
 
    <xsl:import href="skin://templates/page/stylesheets/template.xsl" />
</xsl:stylesheet>

 

Attributs LDAP et indexation LDAP par défaut

Le type de contenu "fiche personne" par défaut définit 6 champs qui seront extraits de l'annuaire LDAP donc 4 sont indexés pour la recherche.

Champ AmetysAttribut LDAPIndexé
lastnamesnoui
firstnamegivenNameoui
emailmailnon
telephonetelephoneNumbernon
rolesupannRoleoui
affectationsupannAffectationoui

Définition d'un nouveau de type de contenu "fiche personne"

Le plugin Pages personnelles apporte un nouveau type de contenu "fiche personne" composé de champs issus de l'annuaire LDAP et de champs Ametys classiques.

Ce type de contenu est un type de contenu particulier qui ne peut pas être surchargé par le mécanisme de surcharge classique. Dès lors que vous voudrez modifier, ajouter ou supprimer des champs (LDAP ou Ametys) de ce type de contenu, vous devrez redéfinir entièrement le type de contenu dans votre application.

Pour cela il faut déclarer dans le fichier plugin.xml d'un plugin, une extension de type org.ametys.cms.contenttype.ContentTypeExtensionPoint utilisant l'implémentation org.ametys.plugins.mypage.contenttype.LdapPersonContentType

Au besoin, vous serez amené à créer un nouveau plugin, suivez alors les instructions de la page Architecture d'un plugin Ametys.

Inspirez-vous du type de contenu org.ametys.plugins.mypage.Content.person défini par le plugin Pages personnelles. Il est vivement conseillé de copier-coller sa déclaration et de ne modifier que les champs nécessaires.

<extension point="org.ametys.cms.contenttype.ContentTypeExtensionPoint"
           id="mycontenttypeperson"
           class="org.ametys.plugins.mypage.contenttype.LdapPersonContentType">
   <cms:content-type private="true">
        <cms:label i18n="true">plugin.mypage:PLUGINS_MYPAGE_CONTENT_TYPE_PERSON_LABEL</cms:label>
        <cms:description i18n="true">plugin.mypage:PLUGINS_MYPAGE_CONTENT_TYPE_PERSON_DESCRIPTION</cms:description>
        <cms:icons>
            <cms:small>img/person_16.png</cms:small>
            <cms:medium>img/person_32.png</cms:medium>
            <cms:large>img/person_48.png</cms:large>
        </cms:icons>

		<!-- Exemple de champ issu du LDAP -->
        <cms:directory-attribute name="lastname" alpha-search="true" order="1">
             <label i18n="true">plugin.mypage:PLUGINS_MYPAGE_CONTENT_PERSON_LASTNAME</label>
             <description i18n="true">plugin.mypage:PLUGINS_MYPAGE_CONTENT_PERSON_LASTNAME_DESC</description>
             <attribute>sn</attribute>
        </cms:directory-attribute>
		...

		<!-- Exemple de champ Ametys classique -->
		<cms:metadata name="fax" type="string">
             <label i18n="true">plugin.mypage:PLUGINS_MYPAGE_CONTENT_PERSON_FAX</label>
             <description i18n="true">plugin.mypage:PLUGINS_MYPAGE_CONTENT_PERSON_FAX_DESC</description>
        </cms:metadata>

        ...
        <!-- Exemple d'attribut LDAP à indexer pour la recherche -->
        <cms:ldap-indexation>
            <cms:attribute-ref name="lastname" />
            <cms:attribute-ref name="firstname" />
            <cms:attribute-ref name="role" />
            <cms:attribute-ref name="affectation" />
        </cms:ldap-indexation>
   </cms:content-type>
</extension>

Pour le rendu de votre type de contenu, il faut ajouter un pipeline dans le fichier sitemap.xmap de votre plugin :

<map:match pattern="mycontenttypeperson.*">
    <map:redirect-to uri="cocoon://_plugins/web/content-type.person.{1}?pluginName=mypage"/>
</map:match>

Pour utiliser ensuite votre type de contenu "fiche personne" en lieu et place du type de contenu "org.ametys.plugins.mypage.Content.person" par défaut, créez un fichier person-content-type.xml dans le répertoire WEB-INF/param de votre application CMS. Ce fichier doit contenir les lignes suivantes:

<?xml version="1.0" encoding="UTF-8"?>
<mypage>
    <person-content-type>mycontenttypeperson</person-content-type>
</mypage>

Finalement, il faut désactiver l'ancienne extension du type de contenu "fiche personne". Pour cela, il faut modifier le fichier runtime.xml dans le répertoire WEB-INF/param de votre application CMS. Dans la partie <plugins> <exclude>, rajouter la ligne suivante :

<feature>mypage/org.ametys.mypage.content-type</feature>

 

 

.