Liens entre objets

Comprendre les liens implicites et explicites

Exemple un champ 700 dans la notice bibliographique pointant vers une notice Auteur

Biblio : 700 $3 : 123456 ---------> Auteur

              --------------------> lien explicite
              <-------------------- lien implicite

Le lien explicite va de la notice qui possède le champ de lien (ici 700$3) vers la notice liée. Le lien implicite va dans l'autre sens.

1) Créer le formatage

Le formatage permet de décrire quels sont les champs de la notice liée qui devront être reproduits vers la notice d'origine.

plugins/catalogue/marcxml/formatage/auteur/liens_explicites/biblio_700

2) Paramétrer les infos sur le lien explicite

plugins/catalogue/marcxml/db/param_liens_explicites/biblio/unimarc_standard/700

-> indiquer le plugin de formatage (cf 1)
-> ss-champs à conserver et ss-champs de jointure
-> autres infos sans pb.

3) Ajouter ça à la liste des liens explicites

plugins/catalogue/marcxml/db/param_liste_liens_explicites/biblio/unimarc_standard

mettre un lien !!700 vers le plugin paramétré en 2)

4) Paramétrer le plugin get_liste_liens_explicites

A faire une seule fois par objet, en plaçant un lien vers le plugin défini en 3)
plugins/catalogue/marcxml/db/get_liste_liens_explicites/biblio/unimarc_standard

5) Paramétrer les liens implicites

C'est la symétrique des liens explicites. On utilise le même plugin de paramètre du lien (cf 2)

plugins/catalogue/marcxml/db/maj_liens_implicites/auteur/unimarc_standard

Gestion des $9a et des $3

La plupart du temps, un champ de lien comprend un ss-champ de recherche synthétique 9a et un ss-champ de lien 3

1) Sous champ 9a

+ !!evenements
     + nom_plugin => catalogue/catalogage/definitions_groupes_evenements/biblio/unimarc_standard/autocomplete
+ !!icones
     + nom_plugin => catalogue/catalogage/definitions_groupes_icones/biblio/unimarc_standard/ss_champ_rien
+ ??intitule => bib/catalogue/catalogage/grilles/biblio/unimarc_standard/ss_champ_700_9a_description
+ auto_plugin => catalogue/catalogage/definitions_ss_champs/biblio/unimarc_standard/700_9a
+ forceSelection => true
+ nom => 9a
+ type => autocomplete
+ ws_url => bib_ws.php?module=autocomplete/auteur/standard/personne_physique&

Les événements sont les mêmes pour tous les autocomplete, on peut donc utiliser la définition de biblio
Pas d'icones
Type autocomplete
web service de recherche (cf plus bas)

2) Sous champ 3

+ !!evenements
     + nom_plugin => catalogue/catalogage/definitions_groupes_evenements/biblio/unimarc_standard/standard
+ !!icones
     + nom_plugin => catalogue/catalogage/definitions_groupes_icones/biblio/unimarc_standard/ss_champ_rien
+ ??intitule => bib/catalogue/catalogage/grilles/biblio/unimarc_standard/ss_champ_700_3_description
+ auto_plugin => catalogue/catalogage/definitions_ss_champs/biblio/unimarc_standard/700_3
+ nom => 3
+ readonly => readonly
+ type => textbox

rien de spécial. Pas d'icones

3) Le champ autocomplete

cf. tutoriel champ autocomplete

4) Le Switcher de validation du $3

Quand on met un numéro de notice en $3, il récupère la notice liée er regénère le champ de lien

+ validation
     + nom_plugin => catalogue/catalogage/grilles/actions_grilles/validation_lien_explicite
     + parametres
          + !!param_lien_explicite
               + nom_plugin => catalogue/marcxml/db/param_liens_explicites/biblio/unimarc_standard/700

On utilise le plugin validation_lien_explicite en lui fournissant en paramètre le plugin de paramétrage du lien

5) Le Switcher de validation du $9a

Quand on valide le ss-champ de recherche, il met juste le numéro de notice dans le ss-champ de lien (généralement $3)
On utilise le plugin validation_ss_champ_stnyhétique en lui fournissant le nom du ss-champ de lien

+ validation
+ nom_plugin => catalogue/catalogage/grilles/actions_grilles/validation_ss_champ_synthetique
+ parametres
     + nom_ss_champ_lien => 3

6) Le Switcher wizard_creation_notice du $9a

** option ** on peut placer un wizard sur le champ 9a de telle sorte qui si on ne sélectionne pas une proposition de la liste, il crée automatiquement un nouvel objet lié.
Pour cela, il faudra définir une certaine syntaxe (ponctuation) qui correspondra à des champs/sous-champs

On utilisera le plugin wizard_creation_notice en lui fournissant :
> un plugin pour analyser la chaine et retourner des informations dans le paramètre "variables"
> un plugin pour créer un objet dans lequel on intégrera les vraibles récupérées précédemment à l'aide d'alias
> un plugin pour créer l'objet

+ wizard_creation_notice
+ nom_plugin => catalogue/catalogage/grilles/actions_grilles/wizard_creation_notice
+ parametres
     + nom_ss_champ_lien => 3
     + plugin_analyse_chaine
          + nom_plugin => catalogue/catalogage/grilles/actions_grilles/wizard_elem_analyse_auteur
     + plugin_crea_objet
          + alias
               + variables|dates => definition/02/definition/03/valeur
               + variables|nom => definition/02/definition/01/valeur
               + variables|prenom => definition/02/definition/02/valeur
          + nom_plugin => catalogue/marcxml/crea_marcxml
          + parametres
               + definition
                    + 01
                         + definition
                              + 01
                                   + code => a
                                   + valeur => a
                         + tag => label
                    + 02
                         + definition
                              + 01
                                   + code => a
                                   + valeur => a_modifier
                              + 02
                                   + code => b
                                   + valeur => a_modifier
                              + 03
                                   + code => f
                                   + valeur => a_modifier
                         + tag => 200
     + plugin_notice_2_db
          + nom_plugin => catalogue/marcxml/db/notice_2_db/auteur/unimarc_standard