Déclarer ce nouveau critère dans le fichier search-engine-config.xml
Dans le fichier properties/search-engine-config-cdmfr-2012-rof-3.10Xml, ajouter le nouvel index :
<search-engine>
<folder identFolder="/CDM/program[1]/@id">
[…]
<!-- Ajout Critère de recherche = Thematique de la mention -->
<index name="thematiqueMention"
terms="/CDM/program[@mention='true']/habilitation/field/fieldName/free/text/text()"
keyword="true" />
</communs-indexes>
<languages defaultLang="fr">
<language name="fr">
[...]
<sort>
[...]
<by index="thematiqueMention" />
</sort>
</language>
<languages defaultLang="en">
<language name="en">
[...]
<sort>
[...]
<by index="thematiqueMention" />
</sort>
</language>
[...]
Alimenter la liste déroulante de la nouvelle recherche
Pour cela, alimenter le fichier initdb/constantes.xml :
On aurait pour cet exemple la liste des nomenclatures issues de la table ROF_TY_LIS_MEN :
[...]
<thematiqueMention>
<data id="SAPAS" import="SAPAS">
<value lang="fr-FR">ACTIVITÉ PHYSIQUE ADAPTÉE ET SANTÉ</value>
</data>
<data id="DAENT" import="DAENT">
<value lang="fr-FR">ADMINISTRATION DES ENTREPRISES</value>
</data>
<data id="DAES" import="DAES">
<value lang="fr-FR">ADMINISTRATION ECONOMIQUE ET SOCIALE</value>
</data>
<data id="AAMEO" import="AAMEO">
<value lang="fr-FR">ADMINISTRATION, MANAGEMENT ET ECONOMIE DES ORGANISATIONS</value>
</data>
<data id="DAPUB" import="DAPUB">
<value lang="fr-FR">ADMINISTRATION PUBLIQUE</value>
</data>
<data id="AARCH" import="AARCH">
<value lang="fr-FR">ARCHEOLOGIE</value>
</data>
<data id="AARTS" import="AARTS">
<value lang="fr-FR">ARTS</value>
</data>
[...]
</thematiqueMention>
Insérer le nouveau critère dans l’écran de recherche avancée
Deux fichiers sont à modifier :
- stylesheets/commun/composants/commun/commun.xsl pour ajouter le paramètre du formulaire à récupérer :
<xsl:param name="thematiqueMention" />
- stylesheets/commun/composants/rechercheAvancee.cdmfr.xsl
<!-- Ajout : Recherche par thematique -->
<div class="ligne_form">
<label for="__thematiqueMention">Thématique : </label>
<select size="1" name="__thematiqueMention">
<option value=""><xsl:if test="$thematiqueMention=''"><xsl:attribute name="selected">selected</xsl:attribute></xsl:if>Toutes les thématiques</option>
<xsl:for-each select="/CDM/properties/infoBlock/extension/uniform/constantes/thematiqueMention/data">
<option value="{./@id}">
<xsl:if test="./@id=$thematiqueMention"><xsl:attribute name="selected">selected</xsl:attribute></xsl:if>
<xsl:value-of select="./value[@lang=$_lang]"/>
</option>
</xsl:for-each>
</select>
</div>