Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 18/04/2012 17:08:01

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

Modification formulaire de l'annuaire mypage

Bonjour,
Je voudrais  modifier le rendu du formulaire (sur le champ affectation qui est multivalué) :
exemple : affectation
1: UFR Sciences - services centraux
2: IUT - Departement Chimie
à transformer en
UFR Sciences - services centraux
IUT - Departement Chimie
et si possible les classer par ordre alphabétique ....
voir sur

Last edited by pdelage (19/04/2012 13:23:51)

Offline

#2 25/04/2012 10:31:40

Nicolas Gavalda
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 32

Re: Modification formulaire de l'annuaire mypage

J'imagine que la solution qui consiste à modifier directement les libellés dans le LDAP n'est pas satisfaisante... smile

Le plus simple reste donc de surcharger le rendu du service annuaire. Pour cela, créez le dossier "services/mypage/pages/services" dans le répertoire de votre skin, puis placez un fichier "search_1.3.xsl" à l'intérieur (ou éditez-le s'il existe déjà), avec la structure suivante :

<xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
        xmlns:ametys="org.ametys.web.transformation.xslt.AmetysXSLTHelper">
    
    <xsl:import href="plugin:mypage://pages/services/search/search_1.3.xsl"/>
    
    <xsl:template match="attribute[@id = 'affectation']" mode="input">
    </xsl:template>
    
</xsl:stylesheet>

Le template viendra surcharger le rendu de votre champ affectation. Il faudra que vous recopiiez le bloc de XSL qui génère la liste à choix, qui se trouve dans le fichier dans la balise <xsl:template match="attribute" mode="input"> dans le fichier search_1.3.xsl original (qui peut être trouvé dans le plugin mypage ou à l'adresse

Le rendu de la liste est géré dans le bloc suivant, il va falloir que vous travailliez au niveau du <xsl:value-of select="."/> pour ne garder que ce qui vient après les ":" dans vos libellés. Et pour les classer par ordre alphabétique, cela se fait par un tri au niveau du "xsl:for-each".

<select id="{$fieldId}" name="{@name}">
    <option value=""></option>
    <xsl:for-each select="value">
        <option value="{.}">
            <xsl:if test="ancestor::search/values/value[@attribute = $id and @value = current()]">
                <xsl:attribute name="selected">selected</xsl:attribute>
            </xsl:if>
            <xsl:value-of select="."/>
        </option>
    </xsl:for-each>
</select>

Last edited by Nicolas Gavalda (25/04/2012 10:32:54)

Offline

#3 26/04/2012 17:00:33

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

Re: Modification formulaire de l'annuaire mypage

Merci pour la réponse.
Je teste de suite ...

Offline

Board footer

Powered by FluxBB