Colodus : Différence entre versions

De Bibliopedia
Aller à : navigation, rechercher
(Ajout du code pour alimenter par bookmarklet des champs dans les données d'exemplaires)
(Avec ajout de champs 915 aussi)
 
(11 révisions intermédiaires par le même utilisateur non affichées)
Ligne 55 : Ligne 55 :
 
=== Utilisation de bookmarklets pour les données d'exemplaire ===
 
=== Utilisation de bookmarklets pour les données d'exemplaire ===
 
Les données d'exemplaires sont affichées dans des champs <input>, identifiable par leur attribut ID
 
Les données d'exemplaires sont affichées dans des champs <input>, identifiable par leur attribut ID
 +
 
Par exemple, quand on choisit d'ajouter un champ "Localisation de niveau 2 : Localisation complémentaire (c)", ça correspond à un 930$c : Du coup la balise de saisie sera '''<input id="E930_c-19"></input>'''
 
Par exemple, quand on choisit d'ajouter un champ "Localisation de niveau 2 : Localisation complémentaire (c)", ça correspond à un 930$c : Du coup la balise de saisie sera '''<input id="E930_c-19"></input>'''
Problème : le "19" change d'une fois sur l'autre.
+
 
 +
Problème : le "19" change d'une fois sur l'autre.<br/>
 
Il faut donc que la bookmarklet arrive à identifier les <input> à renseigner en utilisant que le début de l'id.
 
Il faut donc que la bookmarklet arrive à identifier les <input> à renseigner en utilisant que le début de l'id.
Pour cela, le plus simple est d'utiliser du JQuery, sur ce modèle :
 
  
Si on crée une bookmarklet avec le code ci-dessous, quand on clique dessus le code va chercher
+
Pour cela, le plus simple est d'utiliser du '''JQuery''', sur le modèle suivant.
# la zone 930$c (il faut l'avoir créée vierge avant et lui attribuer la valeur SL
+
 
# la zone 930^d (à créer avant aussi) et lui attribuer le code 001.133
+
Si on crée une bookmarklet avec le code ci-dessous, quand on clique dessus le code va  
 +
# récupérer l'identifiant de l'exemplaire à créer (pour pouvoir profiter de la fonction ajt() prévue par Colodus)
 +
# créer la zone 930$c (il utilise la fonction ajt())
 +
# lui attribuer la valeur SL  
 +
# chercher la zone 930$a (déjà existante) et lui attribuer le code 001.133
  
 
<syntaxhighlight lang="javascript" enclose="div">
 
<syntaxhighlight lang="javascript" enclose="div">
javascript:void(
+
javascript:(function(){
(
+
divparent=window.document.getElementById('E9xx');
function(){
+
divclass=divparent.getElementsByClassName('E930_Div');
s=document.createElement("script");
+
divid=divclass[0].getAttribute('id');
s.type="text/javascript";
+
ajt('record0','E930_c',null,divid,null,null,null,null,null);
s.src="http://code.jquery.com/jquery-1.10.2.js";
+
jQuery("input[id*='E930_c']").val("SL");
document.body.appendChild(s);
+
jQuery("input[id*='E930_a']").val("001.133");
$( "input[id*='E930_c']" ).val( "SL" );
+
})
$( "input[id*='E930_a']" ).val( "001.133" );
 
}
 
)
 
 
()
 
()
)
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
La fonction ajt() est dans le code de Colodus. Le problème est que l'identifiant '930-3' change à chaque nouvelle création d'exemplaire. Il faut donc récupérer cet identifiant dans la page pour le reproduire ici.
  
 
Remarque : ce sera plus propre si vous mettez du code sans les saut de lignes et les espaces, mais ça marche aussi
 
Remarque : ce sera plus propre si vous mettez du code sans les saut de lignes et les espaces, mais ça marche aussi
  
=== Utilisation ===
+
==== Mise en place et utilisation courante ====
 
* Se créer un répertoire dans ses favoris, pour y gérer ses bookmarklets Colodus
 
* Se créer un répertoire dans ses favoris, pour y gérer ses bookmarklets Colodus
* Pour chaque fonds alimenté, créer une bookmarklet contenant les valeurs par défaut, en lui donnant le nom du fonds concerné
+
* Pour chaque fonds alimenté, créer une bookmarklet contenant les valeurs par défaut, en lui donnant le nom du fonds concerné. A chaque fois, utiliser d'abord la fonction ajt() pour créer la ligne, avant de l'alimenter (évidemment)
* Lors de la création d'un nouvel exemplaire, créer tous les champs vides qui vont être alimentés par la bookmarklet. Puis cliquer dessus
+
 
 +
'''Modifier/adapter un bookmarklet'''
 +
# Reproduire le code ci-dessous
 +
# ne pas toucher aux lignes avant "ajt()"
 +
# pour chaque sous-champ à créer dans son modèle, dupliquer la ligne "ajt()" en adaptant le nom du sous-champ (premier paramètre de la fonction ajt()
 +
# pour chaque sous-champ à alimenter, dupliquer la ligne commençant par jQuery, et y personnaliser : le nom du sous-champ ; la valeur à renseigner
 +
# supprimer les sauts de ligne
 +
# créer un nouveau favori : dans le champ Nom, lui donner le nom voulu (exemple : "Livres Informatique") ; dans le champ URL, y mettre le code produit aux étapes précédentes
 +
 
 +
Exemple : pour des livres de la BU Droit, mis en magasin et cotés en Dewey (Droit = 340)
 +
 
 +
<syntaxhighlight lang="javascript" enclose="div">
 +
javascript:(function(){
 +
        divparent=window.document.getElementById('E9xx');
 +
        divclass=divparent.getElementsByClassName('E930_Div');
 +
        divid=divclass[0].getAttribute('id');
 +
        ajt('record0','E930_c',null,divid,null,null,null,null,null);
 +
ajt('record0','E930_d',null,divid,null,null,null,null,null);
 +
        jQuery("input[id*='E930_c']").val("DROIT");
 +
jQuery("input[id*='E930_d']").val("MAG");
 +
        jQuery("input[id*='E930_a']").val("34"); 
 +
        })
 +
        ()
 +
</syntaxhighlight>
 +
 
 +
==== Avec ajout de champs 915 aussi ====
 +
 
 +
<syntaxhighlight lang="javascript" enclose="div">
 +
javascript:(function(){
 +
divparent=window.document.getElementById('E9xx');
 +
div930=divparent.getElementsByClassName('E930_Div');
 +
divid930=div930[0].getAttribute('id');
 +
ajt('record0','E930_c',null,divid930,null,null,null,null,null);
 +
ajt('record0','E930_d',null,divid930,null,null,null,null,null);
 +
ajLt('record0','E915',null,null,null,null,null,null,null);
 +
div915=divparent.getElementsByClassName('E915_Div');
 +
divid915=div915[0].getAttribute('id');
 +
ajt('record0','E915_b',null,divid915,null,null,null,null,null);
 +
jQuery("input[id*='E930_c']").val("SCIEN");
 +
jQuery("input[id*='E930_d']").val("MAN");
 +
jQuery("input[id*='E930_a']").val("001");
 +
})()
 +
</syntaxhighlight>
  
 
== Exemple de communication sur Colodus ==
 
== Exemple de communication sur Colodus ==

Version actuelle datée du 18 avril 2014 à 14:02

Colodus est une application Web de l'ABES destinée à la gestion d'exemplaires dans le Sudoc et conçue initialement pour répondre aux besoins des bibliothèques du réseau Sudoc-PS.

Informations techniques[modifier]

Blog technique de l'ABES Punktokomo

Tutoriels et supports de formation[modifier]

Personnalisation de l'interface[modifier]

Il est possible de personnaliser un formulaire pour quatre types de documents.
Autre possibilité, pour les données locales : Colodus : bookmarlet de facilitation (zones bibliographiques locales)

Le tableau ci-dessous n'est pas bon - à adapter pour les données d'exemplaire : d'après @Lully1804, il y a plusieurs champs <input> sur la page Colodus, il faut les distinguer en utilisant par exemple l'attribut id de ces balises. Pb : l'id change à chaque affichage. Donc il faut récupérer le début de l'attribut id seulement (exemple : balise <input id="991_2819272">)

Champs Sous-champs 1 Texte Sous-champs 2 Texte Bookmarklet (ajout manuel d'un favori dans le navigateur : zone URL) Bookmarklet (proposer sur une page web un bouton à glisser comme favori)
991 $a RETRO-2014-LOC $b Rétro2014 861942102 javascript:void((function(){document.getElementsByTagName('textarea')[0].value='L991 ##$aRETRO-2014-LOC$$bRétro2014 861942102'})()) <a href="javascript:void((function(){document.getElementsByTagName('textarea')[0].value='L991 ##$aRETRO-2014-LOC$$bRétro2014 861942102'})())">991 RETRO-2014-LOC</a>
991 $a RETRO-2014-CRE DER $b Rétro2014 861942102
991 $a RETRO-2014-CRE SAI $b Rétro2014 861942102

Utilisation de bookmarklets pour les données d'exemplaire[modifier]

Les données d'exemplaires sont affichées dans des champs <input>, identifiable par leur attribut ID

Par exemple, quand on choisit d'ajouter un champ "Localisation de niveau 2 : Localisation complémentaire (c)", ça correspond à un 930$c : Du coup la balise de saisie sera <input id="E930_c-19"></input>

Problème : le "19" change d'une fois sur l'autre.
Il faut donc que la bookmarklet arrive à identifier les <input> à renseigner en utilisant que le début de l'id.

Pour cela, le plus simple est d'utiliser du JQuery, sur le modèle suivant.

Si on crée une bookmarklet avec le code ci-dessous, quand on clique dessus le code va

  1. récupérer l'identifiant de l'exemplaire à créer (pour pouvoir profiter de la fonction ajt() prévue par Colodus)
  2. créer la zone 930$c (il utilise la fonction ajt())
  3. lui attribuer la valeur SL
  4. chercher la zone 930$a (déjà existante) et lui attribuer le code 001.133
javascript:(function(){
	divparent=window.document.getElementById('E9xx');
	divclass=divparent.getElementsByClassName('E930_Div');
	divid=divclass[0].getAttribute('id');
	ajt('record0','E930_c',null,divid,null,null,null,null,null);
	jQuery("input[id*='E930_c']").val("SL");
	jQuery("input[id*='E930_a']").val("001.133");	
	})
	()

La fonction ajt() est dans le code de Colodus. Le problème est que l'identifiant '930-3' change à chaque nouvelle création d'exemplaire. Il faut donc récupérer cet identifiant dans la page pour le reproduire ici.

Remarque : ce sera plus propre si vous mettez du code sans les saut de lignes et les espaces, mais ça marche aussi

Mise en place et utilisation courante[modifier]

  • Se créer un répertoire dans ses favoris, pour y gérer ses bookmarklets Colodus
  • Pour chaque fonds alimenté, créer une bookmarklet contenant les valeurs par défaut, en lui donnant le nom du fonds concerné. A chaque fois, utiliser d'abord la fonction ajt() pour créer la ligne, avant de l'alimenter (évidemment)

Modifier/adapter un bookmarklet

  1. Reproduire le code ci-dessous
  2. ne pas toucher aux lignes avant "ajt()"
  3. pour chaque sous-champ à créer dans son modèle, dupliquer la ligne "ajt()" en adaptant le nom du sous-champ (premier paramètre de la fonction ajt()
  4. pour chaque sous-champ à alimenter, dupliquer la ligne commençant par jQuery, et y personnaliser : le nom du sous-champ ; la valeur à renseigner
  5. supprimer les sauts de ligne
  6. créer un nouveau favori : dans le champ Nom, lui donner le nom voulu (exemple : "Livres Informatique") ; dans le champ URL, y mettre le code produit aux étapes précédentes

Exemple : pour des livres de la BU Droit, mis en magasin et cotés en Dewey (Droit = 340)

javascript:(function(){
        divparent=window.document.getElementById('E9xx');
        divclass=divparent.getElementsByClassName('E930_Div');
        divid=divclass[0].getAttribute('id');
        ajt('record0','E930_c',null,divid,null,null,null,null,null);
	ajt('record0','E930_d',null,divid,null,null,null,null,null);
        jQuery("input[id*='E930_c']").val("DROIT");
	jQuery("input[id*='E930_d']").val("MAG");
        jQuery("input[id*='E930_a']").val("34");  
        })
        ()

Avec ajout de champs 915 aussi[modifier]

javascript:(function(){
	divparent=window.document.getElementById('E9xx');
	div930=divparent.getElementsByClassName('E930_Div');
	divid930=div930[0].getAttribute('id');
	ajt('record0','E930_c',null,divid930,null,null,null,null,null);
	ajt('record0','E930_d',null,divid930,null,null,null,null,null);
	ajLt('record0','E915',null,null,null,null,null,null,null);
	div915=divparent.getElementsByClassName('E915_Div');
	divid915=div915[0].getAttribute('id');
	ajt('record0','E915_b',null,divid915,null,null,null,null,null);
	jQuery("input[id*='E930_c']").val("SCIEN");
	jQuery("input[id*='E930_d']").val("MAN");
	jQuery("input[id*='E930_a']").val("001");
	})()

Exemple de communication sur Colodus[modifier]

Problèmes soulevés[modifier]