You are not logged in.
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
J'imagine que la solution qui consiste à modifier directement les libellés dans le LDAP n'est pas satisfaisante...
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