Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#26 19/09/2012 12:05:36

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

vous avez complètement dupliqué le plugin 'mypage' ???

soit vous le dupliquez complètement et il faut retirer le jar actuel.
soit vous créez un nouveau plugin vierge qui surcharge le minimum de choses

C'est la 2ème solution qui est à faire dans la mesure du possible.
Dans votre cas, dans votre nouveau plugin.xml vous avez des extensions déjà utilisées


Raphael Franchet
Expert Ametys

Offline

#27 19/09/2012 13:52:00

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

En résumé, voilà ce que j'ai fait :
Récupérer sur le svn  le fichier plugin.xml que j'ai mis dans mon rep cm/plugins/mypage et ajouté mes attributs

<plugin xmlns="http://www.ametys.org/schema/plugin"
        xmlns:cms="http://www.ametys.org/schema/cms"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.ametys.org/schema/plugin
        runtimeVersion="2.0" version="2.0">

    <feature name="org.ametys.mypage.content-type">
        <extensions>
            <extension point="org.ametys.cms.contenttype.ContentTypeExtensionPoint"
                       id="org.ametys.plugins.ummypage.Content.person"
                       class="org.ametys.plugins.mypage.contenttype.LdapPersonContentType">
                <cms:content-type private="true">
                    <cms:label i18n="true">PLUGINS_MYPAGE_CONTENT_TYPE_PERSON_LABEL</cms:label>
                    <cms:description i18n="true">PLUGINS_MYPAGE_CONTENT_TYPE_PERSON_DESCRIPTION</cms:description>
                    <cms:default-title i18n="true">PLUGINS_MYPAGE_CONTENT_TYPE_PERSON_DEFAULT_TITLE</cms:default-title>
                    <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>

                    <cms:directory-attribute name="lastname" alpha-search="true" order="1">
                        <label i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_LASTNAME</label>
                        <description i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_LASTNAME_DESC</description>
                        <attribute>sn</attribute>
.....
                   <cms:directory-attribute name="fonction">
                        <label i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_FONCTION</label>
                        <description i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_FONCTION_DESC</description>
                        <attribute>umFonction</attribute>
                    </cms:directory-attribute>
                    <cms:directory-attribute name="telfonction">
                        <label i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_TELFONCTION</label>
                        <description i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_TELFONCTION_DESC</description>
                        <attribute>supannAutreTelephone</attribute>
                    </cms:directory-attribute>
                    <cms:directory-attribute name="mailfonction">
                        <label i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_MAILFONCTION</label>
                        <description i18n="true">PLUGINS_MYPAGE_CONTENT_PERSON_MAILFONCTION_DESC</description>
                        <attribute>mailAlternateAddress</attribute>
                    </cms:directory-attribute>

J'ai gardé l'intégralité du fichier, donc toutes les extensions ...
J'ai également mis le fichiers person-content-type.xml dans param comme indiqué précédemment.

Offline

#28 19/09/2012 14:03:21

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Ce n'est pas ça qu'il faut faire.
Il faut partir d'un plugin.xml vide (sauf l'entête bien sur)
Y mettre juste une feature avec juste une extension (celle que vous modifiez) et dont vous aurez changé l'id.

Tout le reste est défini et importé par le mypage.jar


Raphael Franchet
Expert Ametys

Offline

#29 19/09/2012 14:40:34

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

J'ai maintenant ce fichier plugins/ummypage/plugin.xml
(voir
Et j'obtiens au lancement du cms l'erreur :

2012-09-19 14:27:40,113 ERROR [core.manager] (main;) Caught an exception trying to initialize the component handler.
java.lang.RuntimeException: Unable to access to plugin at /usr/local/tomcat/webapps/cms330/plugins/ummypage/plugin.xml
    at org.ametys.runtime.plugin.PluginsManager._getConfigurationFromStream(PluginsManager.java:607)
    at org.ametys.runtime.plugin.PluginsManager._addPluginConfiguration(PluginsManager.java:577)
    at org.ametys.runtime.plugin.PluginsManager._getConfigurations(PluginsManager.java:511)
    at org.ametys.runtime.plugin.PluginsManager.init(PluginsManager.ja
........
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'feature'.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)

Offline

#30 19/09/2012 14:44:20

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

vous avez oublié l'entête de fichier de plugin qui est

<plugin xmlns="http://www.ametys.org/schema/plugin"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.ametys.org/schema/plugin http://www.ametys.org/schema/plugin-2.0.xsd"
        runtimeVersion="2.0" version="2.0">

...

</plugin>

Raphael Franchet
Expert Ametys

Offline

#31 19/09/2012 14:46:24

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Oups, j'avais compris entete xml  roll

Offline

#32 19/09/2012 14:59:03

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

C'est corrigé. Le plugin ne se charge tjrs pas :
Caused by: org.xml.sax.SAXParseException: The prefix "cms" for element "cms:content-type" is not bound.
Mon plugin.xml semble pourtant syntaxiquement correct (dans oxygen, etiteur html)

Offline

#33 19/09/2012 15:16:36

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

ah oui.
Dès qu'on a un content-type a déclarer il faut le namespace 'cms'.
voici le bon entête :

<plugin xmlns="http://www.ametys.org/schema/plugin"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:cms="http://www.ametys.org/schema/cms"
           xsi:schemaLocation="http://www.ametys.org/schema/plugin http://www.ametys.org/schema/plugin-2.0.xsd
                            http://www.ametys.org/schema/cms http://www.ametys.org/schema/cms-3.0.xsd"
        runtimeVersion="2.0" version="2.0"

...

</plugin>

Raphael Franchet
Expert Ametys

Offline

#34 19/09/2012 15:24:32

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

On avance ...
Maintenant, j'ai l'erreur :
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'cms:default-title'. One of '{"http://www.ametys.org/schema/cms":category, "":icons}' is expected.

Offline

#35 19/09/2012 15:31:10

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Quelle version d'Ametys utilisez-vous ?

Je pense que vous avez dupliqué la déclaration du type de contenu de la dernière version de mypage qui est pour la 3.4.
Il faut partir du fichier plugin.xml de la bonne version de mypage que vous utilisé.

En l'occurence, retirer la ligne <cms:default-title> devrait vous sortir d'affaire.
C'est un nouvel élément facultatif de la 3.4 qui sert à ne plus avoir de "Nouveau Article" mais "Nouvel article".


Raphael Franchet
Expert Ametys

Offline

#36 19/09/2012 16:32:45

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Nous sommes encore en 3.3.
J'ai récupéré le plugin mypage 1.3 et modifié.
(voir  … lugin.xml)
J'ai maintenant l'erreur :
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'cms:directory-attribute'. One of '{"http://www.ametys.org/schema/cms":right, "":metadata, "":repeater, "":global-validator, "":dublin-core, "":metadata-set}' is expected.

Offline

#37 19/09/2012 16:57:49

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

alors, je me suis peut être emballé, pour l'entête du plugin... le type de contenu mypage ne doit pas respecter le schema cms.

essayez en retirant "http://www.ametys.org/schema/cms

pour obtenir finalement comme dans mypage smile

<plugin xmlns="http://www.ametys.org/schema/plugin"
        xmlns:cms="http://www.ametys.org/schema/cms"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.ametys.org/schema/plugin http://www.ametys.org/schema/plugin-2.0.xsd"
        runtimeVersion="2.0" version="2.0">
...
</plugin>

Ne désespérons pas smile on va y arriver


Raphael Franchet
Expert Ametys

Offline

#38 19/09/2012 17:13:40

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Bingo !
Le plugin ummypage a bien été chargé.
Mon service d'annuaire contient bien maintenant les attributs ajoutés.
Je m'occupe du rendu dans la xsl et vous tiens informé de la conclusion.
Merci encore pour votre patience ...  smile

Offline

#39 20/09/2012 14:23:47

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Bonjour,
J'ai 2 problèmes :
1) je peux créer une page perso (la mienne), mais le rendu m'envoie une erreur ci-dessous :
J'ai mis le fichier sitemap.xmap du svn dans mon plugin.

org.apache.cocoon.ResourceNotFoundException : No pipeline matched request: _plugins/ummypage/org.ametys.plugins.ummypage.Content.person.html
<map:mount> - resource://org/ametys/runtime/kernel/sitemap.xmap - 142 : 82

2) la recherche d'une personne n'affiche pas les nouveaux attributs (demandés dans l'interface du service)
En regardant la requete ldap envoyé au serveur ldap, je vois bien l'attribut supannautretelephone renseigné, mais il ne s'affiche pas (quelque soit le modele d'afichage choisi search.xsl, ou search_1.3.xls du svn)
De plus, je ne vois de trace des attributs umfonctions et mailAlternateAddress dans la réponse, alors que je récupère bien ces attributs en utilisant une requête ldap dans un contenu en utilisant la meme source ldap et le même compte d'accès.

Offline

#40 20/09/2012 14:47:27

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Parlons déjà du 1er problème.

ah oui.
en effet, il y a deux 2 façon de déclarer un nouveau content type.
1) en ajoutant un nouveau plugin, mais il faut en effet faire la sitemap qui va avec
2) en mettant dans un sous répertoire de WEB-INF, mais il faut que le rendu soit standard.

Dans votre cas, le rendu est standard donc vous pourriez éventuellement faire la solution 2, mais puisqu'on est parti sur la 1 allons jusqu'au bout.
Le seul bout de pipeline qui vous intéresse est celui-là (vous pouvez effacer le reste de la sitemap)

<map:match pattern="org.ametys.plugins.mypage.Content.*.*">
                <map:redirect-to uri="cocoon://_plugins/web/content-type.{1}.{2}?pluginName={request-attr:pluginName}"/>
</map:match>

Dans lequel il faut remplacer l'id actuel de mypage par le votre ce qui va donner

<map:match pattern="org.ametys.plugins.ummypage.Content.person.*">
                <map:redirect-to uri="cocoon://_plugins/web/content-type.{1}.{2}?pluginName={request-attr:pluginName}"/>
</map:match>

Raphael Franchet
Expert Ametys

Offline

#41 20/09/2012 15:52:19

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

C'est fait.
Voici mon fichier sitemap.xmap

L'affichage de ma page perso ne plante plus. Par contre elle est vide ..

Offline

#42 20/09/2012 17:22:19

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Alors, vous que vous avez déclaré une nouveau type de contenu, il faut lui associer des xsl de rendu.

Soit vos xsl de mypage sont déjà dans la skin et il va utiliser les mêmes (celles de skins/MYSKIN/stylesheets/content/perso/*.xsl)

Soit ce n'est pas le cas et il faut copier (puis modifier) les xsl de rendu par défaut de mypage que vous trouverez dans le svn

mais c'est étrange, car si aucune xsl n'est définie, normalement, tous les champs sont affichés (label + champ)


Raphael Franchet
Expert Ametys

Offline

#43 21/09/2012 10:18:46

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Bonjour,
J'ai mis les xsl en place et j'obtiens bien le contenu de la page perso.
Je regarde maintenant pour avoir le rendu avec les nouveaux attributs.

Last edited by pdelage (21/09/2012 14:00:20)

Offline

#44 21/09/2012 14:22:21

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

J'ai modifié person.xsl ajout de :

<xsl:template name="person-fonction">
        <xsl:if test="normalize-space(directory-attributes/fonction) != ''">
            <p class="role">fonction
                <xsl:value-of select="directory-attributes/fonction" />
            </p>
        </xsl:if>
    </xsl:template>

    <xsl:template name="person-telfonction">
        <xsl:if test="normalize-space(directory-attributes/telfonction) != ''">
            <p class="role">telfonction
                <xsl:value-of select="directory-attributes/telfonction" />
            </p>
        </xsl:if>   
    </xsl:template>

    <xsl:template name="person-mailfonction">
        <xsl:if test="normalize-space(directory-attributes/mailonction) != ''">
            <p class="role">mailfonction
                <xsl:value-of select="directory-attributes/mailfonction" />
            </p>
        </xsl:if>   
    </xsl:template>

et person-main.xsl :

<xsl:call-template name="person-role"/>
        <xsl:call-template name="person-affectation"/>
        <xsl:call-template name="person-email"/>
        <xsl:call-template name="person-fonction"/>
        <xsl:call-template name="person-telfonction"/>
        <xsl:call-template name="person-mailfonction"/>
        <xsl:call-template name="person-mobile"/>

et je n'obtiens pas les nouveaux attributs sur ma page perso : (ci-dessous données récupérées dans un article avec la requete ldap)
nom            prenom    mail                                             umFonction              supannautretelephone    mailAlternateAddress    telephonenumber
Delage    Patrick    Patrick.Delage@univ-lemans.fr    1:chef de projet web    1:0243833045    1:gu-web@univ-lemans.fr    1:0243833041

On avance , on avance, on avance (sur un air de Souchon  wink  )

Offline

#45 21/09/2012 14:29:58

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Ce que vous pouvez tenter c'est un toto-debugging : mettez <toto><xsl:copy-of select="."/></toto> dans votre xslt de contenu
puis analysez le source de la page générée en cherchant <toto> pour retrouver le xml que vous avez en entrée.


Raphael Franchet
Expert Ametys

Offline

#46 21/09/2012 14:53:37

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Après toto-debugging  :

</h3><toto><content lastcontributor="delage" lastmodifiedat="2012-09-20T15:48:34.525+02:00" creator="delage" createdat="2012-09-20T13:38:46.882+02:00" language="fr" title="Patrick Delage (fr)" name="mypage-delage-fr" id="defaultWebContent://e1dd7fb1-a521-424f-8550-7fc5eac57a02"><metadata><title>Patrick Delage (fr)</title><publications><entry name="1"><author/></entry></publications></metadata><directory-attributes login="delage" dn="uid=delage,ou=people"><lastname>Delage</lastname><firstname>Patrick</firstname><email>Patrick.Delage@univ-lemans.fr</email><telephone>1:0243833041</telephone><role>RSSI-adjoint</role><affectation>1:SERVICES CENTRAUX - Division des Systèmes d'Informations</affectation></directory-attributes><workflow-step icon-large="/plugins/web/resources/img/workflow/WORKFLOW_STATE_DRAFT-large.png" icon-medium="/plugins/web/resources/img/workflow/WORKFLOW_STATE_DRAFT-medium.png" icon-small="/plugins/web/resources/img/workflow/WORKFLOW_STATE_DRAFT-small.png" id="1">Brouillon</workflow-step><dublin-core-metadata><creator>delage</creator><contributor>delage</contributor><type>Text</type><format>text/html</format><identifier>defaultWebContent://e1dd7fb1-a521-424f-8550-7fc5eac57a02</identifier><language>fr</language><coverage>fr</coverage></dublin-core-metadata><tags/></content></toto><p class="affectation">1:SERVICES CENTRAUX - Division des Systèmes d'Informations</p><p class="email"><span class="label">Email :</span> <a href="mailto:Patrick.Delage@univ-lemans.fr" class="simple">Patrick.Delage<span style="display: none;"> </span>@<span style="display: none;"> </span>univ-lemans.fr</a><script type="text/javascript">&lt;!--

on ne voit pas de trace des nouveaux attributs  .....

Offline

#47 21/09/2012 15:35:39

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Pour que les metadonnées remontent dans une vue, il faut les lister.
Quand vous avez déclaré votre type de contenu dans votre nouveau plugin, vous avez ajouté la métadonnée en haut, mais il faut en plus la référence à la métadonnées dans la ou les vues qui vous interesse (par exemple la vue main en visualisation)


Raphael Franchet
Expert Ametys

Offline

#48 24/09/2012 09:11:06

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Bonjour,
J'ai modifié le fichier plugin.xml  en ajoutant les 3 lignes (voir ci-dessous) :

<!-- Full view -->
                    <cms:metadata-set name="main" type="view">
            <cms:directory-attribute name="fonction"/>
            <cms:directory-attribute name="telfonction"/>
            <cms:directory-attribute name="mailfonction"/>
                        <cms:metadata-ref name="title" />
                        <cms:metadata-ref name="mobile" />
                        <cms:metadata-ref name="fax" />
                        <cms:metadata-ref name="address" />
                        <cms:metadata-ref name="website" />
.....

J'ai un doute sur la façon de nommer la métadonnée qui est dans ce cas un attribut ldap et non pas une donnée Ametys ...
Cela ne donne rien de plus :

<toto><content id="defaultWebContent://08374072-cb31-496e-9ccd-c60918c473bc" name="mypage-delage-fr" title="Patrick Delage (fr)" language="fr" createdAt="2012-09-21T19:12:55.811+02:00" creator="delage" lastModifiedAt="2012-09-21T19:12:55.811+02:00" lastContributor="delage"><metadata><title>Patrick Delage (fr)</title></metadata><directory-attributes dn="uid=delage,ou=people" login="delage"><lastname>Delage</lastname><firstname>Patrick</firstname><email>Patrick.Delage@univ-lemans.fr</email><telephone>1:0243833041</telephone><role>RSSI-adjoint</role><affectation>1:SERVICES CENTRAUX - Division des Syst&egrave;mes d&#039;Informations</affectation></directory-attributes><workflow-step id="1" icon-small="/plugins/web/resources/img/workflow/WORKFLOW_STATE_DRAFT-small.png" icon-medium="/plugins/web/resources/img/workflow/WORKFLOW_STATE_DRAFT-medium.png" icon-large="/plugins/web/resources/img/workflow/WORKFLOW_STATE_DRAFT-large.png">Brouillon</workflow-step><dublin-core-metadata><creator>delage</creator><contributor>delage</contributor><type>Text</type><format>text/html</format><identifier>defaultWebContent://08374072-cb31-496e-9ccd-c60918c473bc</identifier><language>fr</language><coverage>fr</coverage></dublin-core-metadata><tags></tags></content></toto>

Offline

#49 24/09/2012 12:05:05

pdelage
Guest
From: Le Mans
Registered: 07/10/2010
Posts: 196
Website

Re: Ajouter un nouvel attribut ldap dans l'annuaire

En consultant le dialogue ldap, les attributs demandé pour l'article intégrant une requte ldap sont bien présent dans le champ attributes (dont umFonction    supannautretelephone    mailAlternateAddress    )
le filter est (&(objectclass=*)(uid=delage))
baseobjetc = dc=univ-lemans,dc=fr
Par contre, pour le service d'annuaire,
baseobject=uid=delage,ou=people,dc=....
filter =  (objectclass=*)
et attributes :ss,givenname, mail, telephoenNumber,supannRole,suppaAffectation

Il doit manquer un élément de config quelque part ....

Offline

#50 24/09/2012 17:28:05

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Ajouter un nouvel attribut ldap dans l'annuaire

Oui, vous avez raison concernant le post du dessus : il ne faut lister que les métadonnées... pas les attributs ldap dans ce cas.


Raphael Franchet
Expert Ametys

Offline

Board footer

Powered by FluxBB