Menus contextuels

I Fonctionnement

Dans WB, on est susceptible d'interagir avec les différents objets via des menus contextuels.
Le menu pourra être différent selon le type d'objet (biblio, auteur...) et selon le contexte (recherche, catalogage, prêt...)

II Formatage de la chaine

Pour qu'une chaine de caractère soit cliquable, il faut la formater comme ceci :

<span class="objet_cliquable" onclick="affiche_notice('ville', 2, 0);" oncontextmenu="return(fn_mc(event, 'ville', 2, 0));">Fay de Bretagne</span>

où on a :
type_obj => ville
ID => 2
idx => 0

Ce code apelle la fonction fn_mc() qui est définie dans templates/defaut/bib/tmpl_js_div.php et qui doit donc être inclus dans toutes les pages.

III Fonctions javascript

Les fonctions qui seront appelées auront la forme :

function mc_voir (a, b, param) {

}

> Par convention, préfixer la fonction avec "mc_"
> param1 et param2  (a et b) =  utilisation interne YUI
> param3 (param) => objet contenant :
param.ID 
param.idx
param.contexte => le contexte
param.type_obj => type d'objet
+ les paramètres qu'on peut définir dans le registre (cf plus bas)

IV Définir le contexte

On définira le contexte d'une page via le registre dans le noeud _parametres/mc_contexte

Si aucun contexte n'est défini, on utilisera le contexte "defaut"

La gestion du paramètre mc_contexte se fait dans templates/defaut/bib/tmpl_js_div.php 

V Le web service

Lorsqu'on clique sur un objet, un WS est appelé pour retourner le menu en fonction du type d'objet et du contexte.

Ce WS est toujours de la forme 
"bib_ws.php?module=div/menus_contextuels&operation=get_menu_contextuel&ID="+ID+"&type_obj="+type_obj+"&contexte="+mc_contexte+"&idx="+idx

Il appelle le script bib_ws/div/menus_contextuels.php

Ce script va ensuite appeler automatiquement le plugin div/menus_contextuels/$type_obj/$contexte

VI Paramétrer le menu dans le registre

Il faut créer un noeud  div/menus_contextuels/$type_obj/$contexte qui aura la forme :

+ chemin_fichier => div
+ nom_fonction => plugins_2_array
+ parametres
     + menus
          + 01 - voir
               + ??text => bib_ws/div/menus_contextuels/voir
               + onclick
                    + fn => mc_voir
                    + obj
          + 02 - cataloguer
               + ??text => bib_ws/div/menus_contextuels/cataloguer
               + onclick
                    + fn => mc_cataloguer
                    + obj
          + 03 - sélectionner
               + ??text => bib_ws/div/menus_contextuels/selectionner
               + onclick
                    + fn => mc_selectionner
                    + obj

l'argument fn contient le nom de la fonction à appeler
l'argument obj peut être un tableau passé en paramètre. Il est automatiquement enrichi avec ID, idx, type_obj et contexte.

Ne pas oublier de créer un contexte "defaut" pour chaque type d'objet (quand le contexte n'est pas défini)