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"
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
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.
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
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
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
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 Ametys
Attribut LDAP
Indexé
lastname
sn
oui
firstname
givenName
oui
email
mail
non
telephone
telephoneNumber
non
role
supannRole
oui
affectation
supannAffectation
oui
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.persondé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.
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
<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>
<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>
<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 :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
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:
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Finalement, il faut désactiver l'ancienne extension du type de contenu "fiche personne". Pour cela, il faut modifier le fichierruntime.xmldans le répertoire WEB-INF/param de votre application CMS. Dans la partie <plugins> <exclude>, rajouter la ligne suivante :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.