05 - Recherche et affichage dans ori-oai-search

L'ajout de la métadonnée concernée dans le module ori-oai-search concerne plusieurs étapes :

Recherche avancée

Nous pouvons voir dans le fichier [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/config.xml le bloc suivant :

<!-- LOM -->
<search_menu key="lom">

    <!-- Recherche avancée -->
    <advanced_search key="advanced" file="lom_advanced.xml">
      ...
     </advanced_search>

</search_menu>

Ceci nous indique que la définition du formulaire de recherche avancée de l'onglet « Pédagogie » (LOM) se trouve dans le fichier [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/advanced/lom_advanced.xml. En effet, tous les fichiers de configuration de recherche avancée de type advanced_search d'une contribution C se trouvent dans le dossier [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/C/advanced.

Ouvrez en mode édition ce fichier. On peut y voir que tous les champs de recherche <field> sont regroupés dans différents groupes <group>. Ces groupes sont distingués par différentes zones dans l'interface de recherche.

Le champ de recherche que nous voulons ajouter correspond à un critère pédagogique. Il faut donc ajouter un bloc <field> dans le groupe « peda » :

<field id="peda_semanticDensity" format="text" vocabularyId="common_lom_educ_semantic_density">
     <metadata>lom.educational.semanticDensity</metadata>
</field>
  • id est l'identifiant de ce champ de recherche
  • vocabularyId permet de dire sur quel vocabulaire se base la construction de la liste déroulante dans l'interface de recherche
  • metadata correspond ici à la métadonnée concernée. A noter qu'il peut y avoir plusieurs balises metadata afin qu'un champ de recherche corresponde à plusieurs métadonnées.

Une fois cette configuration ajoutée, il faut définir le libellé du champ de recherche. Tous les libellés présents par défaut se trouvent dans les fichiers [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/i18n/forms_XX.properties où XX correspond aux différents codes de langues supportés dans votre application. Pour modifier ou ajouter des libellés, il est conseillé d'éditer les fichiers [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/i18n/custom_XX.properties

Comme nous nous intéressons ici à la recherche avancée ayant comme clef « advanced » qui elle-même se trouve dans un menu de recherche plus global « lom », il faut ajouter les entrées suivantes dans les fichiers de définition des libellés :

menu.form.label.lom.advanced.peda_semanticDensity=Densit\u00E9 s\u00E9mantique
menu.form.comment.lom.advanced.peda_semanticDensity=m\u00E9tadonn\u00E9e ajout\u00E9e en formation

Affichage dans les résultats de recherche

On ajoutera dans cet exemple l'affichage de ce résultat pour le <result_fields> lom. La même procédure devra être appliquée pour afficher cette métadonnée dans tous les autres modes de recherches.

Dans le fichier [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/config.xml, il faut ajouter le bloc suivant :

<result_fields id="lom" ...>
                 ...
   <result_field key="semanticDensity" format="vocabulary:common_lom_educ_semantic_density" highlight="false">
       <metadata>lom.educational.semanticDensity</metadata>
   </result_field>

</result_fields>

Il faut alors indiquer le libellé de ce champ dans l'interface des résultats dans les fichiers [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/i18n/menus_XX.properties Comme nous avons ajouté la métadonnée semanticDensity dans les résultats <result_fields> lom, il faut ajouter l'élément suivant :

menu.result.lom.semanticDensity=Densit\u00E9 s\u00E9mantique
menu.result.lom.semanticDensity.description=

Affichage dans la notice

L'affichage et le rendu des fiches de métadonnées s'effectuent par une transformation XSLT commandée depuis la JSP [ORI_HOME]/src/ori-oai-search-svn/src/main/webapp/WEB-INF/jsp/notice/notice.jsp. Cette JSP fait le lien entre la fiche de métadonnée au format XML et une feuille de transformation XSL. Aussi, les fichiers de message multilingues étant gérés uniquement au niveau des JSP, notice.jsp fournit en paramètre à la XSL tous les libellés à afficher dans le rendu. La transformation XSLT nécessite une XSL spécifique à chaque format de métadonnée. Cette XSL est spécifiée pour chaque format dans l'attribut xsl de la balise config/notice_formats/format du fichier de configuration config.xml.

Dans le cas du LOM pour notre cas, nous avons la configuration suivante :

<notice_formats>
       <format formatMetadataValue="..." prefix="lom" xsl="lom.xsl" headXsl="lom.xsl">
             ...
       </format>
<notice_formats>

Cela signifie que nous utilisons la XSL lom.xsl qui se trouve dans le dossier [ORI_HOME]/src/ori-oai-search-svn/src/main/webapp/WEB-INF/xsl.

Dans notre exemple, nous n'allons pas modifier la XSL fournie dans les sources, mais surcharger celle-ci en la recopiant dans notre contribution. Copiez donc le fichier [ORI_HOME]/src/ori-oai-search-svn/src/main/webapp/WEB-INF/xsl/lom.xsl vers [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/xsl/lom.xsl

Éditez le fichier que vous venez de coller.

La première étape consiste à ajouter en paramètre d'entrée du fichier l'appel à un paramètre fourni par la JSP au moment de la transformation XSLT. Ce paramètre correspond au libellé de la métadonnée qui sera affiché dans l'interface. A la suite des autres paramètres, ajoutez :

<xsl:param name="xsl.lom.semanticDensity"/>
<xsl:param name="xsl.lom.semanticDensity.description"/>

Il faut maintenant faire appel à ce libellé et afficher la valeur de la métadonnée. Ajoutez le bloc suivant juste après le bloc similaire qui concerne la variable peda_interactivityLevel :

<!-- Densite semantique -->
<xsl:call-template name="print_template">
	<xsl:with-param name="element" select="//lom:educational/lom:semanticDensity/lom:value"/>
	<xsl:with-param name="label" select="$xsl.lom.semanticDensity"/>
	<xsl:with-param name="labelDescription" select="$xsl.lom.semanticDensity.description"/>
	<xsl:with-param name="showLink" select="$ori-oai-show-links"/>
</xsl:call-template>

Enregistrez ce fichier. Il faut alors indiquer le libellé de ce champ dans la notice dans les fichiers [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/i18n/custom_XX.properties :

xsl.lom.semanticDensity=Densit\u00E9 s\u00E9mantique
xsl.lom.semanticDensity.description=

Dans le cas d'ajout de nouveaux messages, il faut les définir dans le fichier [PATH_CUSTOM_CONFIG]/ori-oai-search/contribs-search/votre_contrib/jsp/notice/notice-content-i18n-custom.jsp
Éditez ce fichier afin de donner le paramètre lié aux libellés à la XSL comme ceci à la suite des autres paramètres:

<x:param name="xsl.lom.semanticDensity"><fmt:message key="xsl.lom.semanticDensity"/></x:param>
<x:param name="xsl.lom.semanticDensity.description"><fmt:message key="xsl.lom.semanticDensity.description"/></x:param>

Enregistrez ce fichier.

Mise à jour des modifications

Arrêtez le serveur tomcat :

[ORI_HOME]/tomcat-search/bin/shutdown.sh

Redéployez l'application :

cd [ORI_HOME]/src/ori-oai-quick-install-svn
ant all-search

Relancez le serveur tomcat :

[ORI_HOME]/tomcat-search/bin/startup.sh

Et accédez aux interfaces de recherche pour visualiser les modifications.

  • No labels