Personnalisation de la recherche avancée

De WIKI-BOKEH
Aller à : navigation, rechercher
ATTENTION
En l'état actuel cette fonctionnalité nécessite des connaissances en programmation PHP.

Bokeh propose un formulaire de recherche avancée par défaut.

Recherche avancee.png

Vous pouvez désormais personnaliser ce formulaire et proposer plusieurs formulaires de recherche eux-même personnalisé.

Activation[ ]

La personnalisation de la recherche avancée peut être activée par la variable "CUSTOM_SEARCH_FORM".

Suite à l'activation:

  • un nouveau menu apparait dans l'administration "Système" > "Formulaire de recherche", accessible uniquement aux administrateurs
  • une nouvelle option apparait dans la configuration de l'écran de recherche avancée

Admin menu system customform.png Custom form options.png

Choix des formulaires à afficher[ ]

En tant qu'administrateur, vous pouvez configurer les formulaires à afficher directement à partir de la clef à molette dans l'écran de recherche avancée. Custom form options.png

Le formulaire par défaut de Bokeh est affiché lorsqu'aucun formulaire n'est sélectionné ou si aucun formulaire sélectionné n'est valide.

Si vous êtes connecté en tant qu'administrateur Bokeh affichera toujours les formulaires sélectionnés pour vous permettre de les prévisualiser:

  • avec un message spécifiant que le formulaire n'est pas visible si c'est le cas
  • avec un message d'erreur si le fichier de description du formulaire n'est pas correct (cf. infra pour le format du fichier de description)

Propriétés des formulaires[ ]

Dans l'administration le menu "Système" > "Formulaires de recherche" vous permet d'accéder à la liste des formulaires personnalisés.

Admin searchform index.png

Vous pouvez ajouter et modifier vos formulaires à partir de cette liste.

Admin searchform edit.png

Un formulaire se compose d'un libellé obligatoire qui

  • permettra de le sélectionner dans la configuration de l'écran de recherche avancée
  • servira de libellé de l'onglet affichant le formulaire dans l'écran de recherche avancée

Il se compose aussi d'un fichier de définition obligatoire écrit en PHP et placé dans l'explorateur de fichier (cf. infra pour la description de ce fichier).

Il se compose enfin de la propriété "visible" vous permettant de publier ou dépublier le formulaire sur le site. Un formulaire non publié ne s'affiche que pour les administrateurs.

Format du fichier de description[ ]

ATTENTION: cette section nécessite des connaissances en programmations PHP

Le fichier de description d'un formulaire est au format PHP.

Un fichier de description valide reçoit une variable $form qui représente le formulaire à personnaliser.

Il s'agit d'un objet qui suit l'API de Zend_Form du Zend Framework 1.6 utilisé par Bokeh et lui ajoute des méthodes raccourcis pour faciliter la saisie.

Le script demande au formulaire d'ajouter ou retirer des éléments et des groupes d'éléments.

Exemple:

<?php
$form
  ->addElement('text', 'expression_recherche', ['label' => 'Chercher partout'])
  ->addElement('hidden', 'type_doc', ['value' => 10])
  ->addUniqDisplayGroup('default', ['legend' => 'Critères']);

Explication:

  • ajoute un élément de type text, de nom "expression_recherche" avec un libellé "Chercher partout"
  • ajoute un élément de type hidden, de nom "type_doc" avec une valeur de "10"
  • ajoute tous les éléments définis jusqu'ici dans un groupe d'élément dont la légende sera "Critères"

L'ajout d'un élément de formulaire se compose donc de 3 informations

  • le type d'élément à ajouter, doit exister dans bokeh
  • son nom, doit être compris par le moteur de recherche Bokeh
  • ses options qui varient selon le type

Les types d'éléments basiques[ ]

Tous les éléments basiques ont en commun les options:

  • label : libellé apparaissant à côté de l'élément
  • value : sa valeur lorsqu'on veut préremplir le champ

De plus, toute autre option inconnue de Bokeh sera rendue en tant qu'attribut html de l'élément de formulaire.

Ainsi, vous pouvez passer une option "maxlength" à un élément "text", Bokeh produira le html suivant:

<input type="text" maxlength="..."

text[ ]

Un simple champ de saisie de texte

select, radio[ ]

Un sélecteur, une suite de boutons radio ou de cases à cocher proposant de choisir dans une liste. La liste des choix possibles doit être passée en tant que tableau dans l'option "multiOptions". Pour chaque élément du tableau, la clé deviendra la valeur choisi, le contenu de la cellule deviendra le libellé visible. Par exemple:

<?php
$types = [
  '' => 'Tous',
  '1' => 'Livres',
  '2' => 'Périodiques'
];
$form->addElement('select', 'type_doc', ['label' => 'Type de document', 'multiOptions' => $types]);

Si vous passez l'option "value" avec une valeur faisant partie de la liste, elle sera préselectionnée.

checkbox[ ]

Une case à cocher. Par défaut la valeur non cochée est "0", la valeur cochée est "1". Vous pouvez modifier cela en utilisant les options "checkedValue" et "uncheckedValue".

Types d'éléments avancés[ ]

Il s'agit d'éléments spécifiques au moteur de recherche Bokeh.

searchAxe[ ]

Élément composite proposant à la fois le choix d'un opérateur et la saisie d'un texte. Cet élément n'accepte pas d'option particulière mais il faut noter que l'option "value" sera sans effet.

range[ ]

Élément composite proposant la saisie de 2 valeurs. Il accepte les options spécifiques suivantes:

  • "separator" : texte devant s'afficher entre les 2 champs de saisie
  • "from_suffix" : texte ajouté à la fin du nom de champ pour le premier champ de saisie
  • "to_suffix": texte ajouté à la fin du nom de champ pour le second champ de saisie

Par exemple, si le nom de champ est "annee" et "from_suffix" est "_debut" alors le nom du premier champ de saisie sera "annee_debut". Il faut noter que l'option "value" sera sans effet pour cet élément.

cochesSuggestion[ ]

Élément composite proposant une aide à la saisie sur un grand nombre de cases à cocher pour certains types de données de Bokeh. Il accepte l'option spécifique "rubrique" qui doit préciser quel type de données proposer. Les types possibles sont :

  • type_doc
  • section
  • genre
  • langue
  • emplacement
  • nature_doc
  • bibliotheque
  • annexe
  • profile

Les critères compris par le moteur de recherche[ ]

Tous les critères possibles sont inscrit dans un objet Bokeh Class_CriteresRecherche.

Si vous ajouter des éléments à votre formulaire dont le "name" n'est pas dans la liste des paramètres compris par Class_CriteresRecherche ils seront simplement ignorés.

De plus, certains critères ont une liste finie de valeurs possibles comprises par le moteur de recherche. Par exemple le critère de tri de la liste de résultat ne peut avoir comme valeur que

  • SORT_RELEVANCE = '*',
  • SORT_TITLE = 'alpha_titre',
  • SORT_AUTHOR = 'alpha_auteur',
  • SORT_PUBLICATION = 'annee desc',
  • SORT_DOCTYPE = 'type_doc,alpha_titre',
  • SORT_NOVELTY = 'date_creation desc',
  • SORT_VIEWS = 'nb_visu desc',

Limitations[ ]

Dans le fichier de description vous n'avez pas accès à toutes les fonctionnalités de PHP mais seulement à un sous-ensemble nécessaire à la définition des formulaires.

Si votre fichier contient des appels non autorisés le formulaire ne s'affichera pas pour les personnes non connectées et un message d'erreur s'affichera si vous êtes connecté en tant qu'administrateur.

Searchform forbidden call.png

Il en sera de même si votre fichier contient des erreurs de syntaxe.

Searchform syntax error.png

Reproduire le formulaire par défaut[ ]

Cet objet dispose d'une methode loadDefaults() qui reproduit le comportement du formulaire de recherche avancée par défaut. Le détail de cette construction est disponible dans le code source.

<?php
$form->loadDefaults();