Aller au contenu principal

Date de retour d’un prêt – Ajouter à mon agenda

01/12/2010

Objectif : dans le compte lecteur, à côté de la date de retour de chaque prêt en cours, proposer un bouton cliquable « Ajouter cette date dans mon agenda Google ». En cliquant sur ce bouton, on génère un formulaire prérempli de création d’événement Google.

C’est un service qui ne coûte rien, qui ne prend pas beaucoup de place et qui aide les lecteurs curieux de consulter leur compte lecteur. Donc ceux qui, a priori, utilisent plus que d’autres les services internet disponibles.

Il faut pouvoir récupérer au moins deux variables :

  • le titre de l’ouvrage (que nous appellerons la variable title)
  • la date du retour (que nous appellerons Catherine, en hommage à Pierre Desproges qui lui même faisait révérence à Catherine de Médicis) dans un format AAAAMMJJ

et ensuite construire une URL simple, acceptée par l’outil de gestion d’agenda.

Pour Google Agenda

Pour écrire un événement dans son agenda Google en utilisant une URL, il faut construire l’URL ainsi :

https://www.google.com/calendar/event?&action=TEMPLATE&&hl=fr&text=Retour de l’ouvrage title&dates=Catherine/Catherine+1&location=ville&ctz=Europe%2FParis&details

  • paramètre text : c’est le titre de l’événement. On y intègre la variable title
  • paramètre dates : Il s’agit d’un événement considéré comme durant toute la journée. Pour Google, cela signifie un événement qui commence à la date dite, et se termine le lendemain.
  • location : La localisation (ville) sera mise par défaut : c’est une constante pour une bibliothèque donnée. Sauf si vous pouvez en plus récupérer l’adresse exacte, ce qui dans Google Agenda permettra un affichage plus précis sur une carte. Si vous n’avez qu’un seul site, indiquez-le.
  • ctz désigne le fuseau horaire
  • Le paramètre details (le dernier) permet de renseigner le champ Description. On peut l’estimer optionnel — mais si vous avez des choses à mettre dedans
    du genre : la phrase « Car si je ne le rends pas à temps je serai puni ! »

Illustration : dans l’opac d’Aleph

Pour Aleph, il faut modifier le fichier bor-loan-body.

Voici le code que le formidable collègue développeur qui bosse à trois mètres de mon bureau a rédigé en 10 minutes (j’y ai ajouté quelques commentaires explicatifs).

<a target="_blank" id="Inscrire_dans_mon_agenda_Google_$1100" title="Inscrire dans mon agenda Google" href="https://www.google.com/calendar/event?&action=TEMPLATE&hl=fr&text=Rendre $0200 ($1300)&dates=&location=Nice&ctz=Europe%2FParis&amp;details=Bibliothèque : $0600">
<img width="20" height="20" style="border: none; text-align: right" src="&icon_path/GCal.png" alt="Inscrire dans mon agenda Google"/>
</a>

<!--Le lien généré a un ID unique : celui-ci utilise la variable $1100 dans Aleph, qui concatène le n° de notice bib dans la base et le n° d'exemplaire pour cette notice bib.
L'identifiant est ensuite appelé par la fonction ci-dessous, laquelle va associer la date de retour (Catherine) au bon lien.
Les variabes utilisées sont : $1100 (n° unique pour l'exemplaire) ; $0200 (titre de l'ouvrage) ; $1300 (Auteur) ;  $0600 (nom de la bibliothèque)-->

<script language="Javascript">
<!--La variable "Date de retour ($0300) est renvoyée par Aleph sous la forme JJ/MM/AA. Si la date est le 1er février 2011, Aleph renvoie la valeur : 1/2/11
Le code ci-dessous récupère cette date pour la mettre en forme AAAAMMJJ, en rajoutant les 0 initiaux éventuels (pour que 1/2/11 devienne 20110201)-->
var myAlephDate = '$0300';
var elems = myAlephDate.split('/');
var my_Date = String(2000+(elems[2]*1)) + String(elems[1]) + String(elems[0]);
var new_date = new Date(elems[2], elems[1]*1 - 1, elems[0]*1 + 1);
var new_day = new_date.getDate();
new_day = ((new_day < 10) ? '0' : '') + new_day;
var new_month = new_date.getMonth() + 1;
new_month = ((new_month < 10) ? '0' : '') + new_month;
var new_year = new_date.getYear();
new_year = ((new_year < 2000) ? 2000 : 0) + new_year;
my_Date = 'dates=' + my_Date + '/' + new_year + new_month + new_day;
document.getElementById("Inscrire_dans_mon_agenda_Google_$1100").href = document.getElementById("Inscrire_dans_mon_agenda_Google_$1100").href.replace("dates=", my_Date);
</script>

Tout ce que vous avez à faire est donc :

  1. d’ajouter ce code dans votre fichier bor-loan-body, à l’endroit que vous voulez (il me semble qu’à côté de la date de retour prévue, c’est pas mal…)
  2. d’ajouter une icône appelée GCal.png dans votre fichier icons.

Pour Facebook

La documentation sur Facebook est un peu différente, et pour l’instant je n’ai pas pour ma part réussi à comprendre si la même chose était possible sans y mettre plus de code (la doc Facebook sur les API pour créer des événements est , et on en trouve ici aussi).

Comme je ne sais pas si il y a un vrai usage consistant à utiliser les événements Facebook comme un agenda personnel, j’ignore si développer cette fonctionnalité en vaut la chandelle.

En revanche je suis intéressé par toute proposition de développement pour pointer non pas vers l’agenda Google, mais vers un de ces outils de gestion de calendrier que proposent parfois les ENT, et que certains utilisent pour leurs rendez-vous pro, notamment. En particulier pour les ENT tournant avec ESUP-Portail.

Pourquoi faire ?

  1. parce que moi-même, comme lecteur, je trouve ça très pratique de ne pas avoir à aller sur mon compte lecteur pour savoir à quelle date rendre mes bouquins (et par ailleurs je passerais trop de temps à recopier cette info)
  2. parce que l’opac n’est pas une fin en soi, il doit déboucher non seulement sur une lecture (c’est la moindre des choses, et non le meilleur des cas), mais sur d’autres services utilisés par l’internaute.

En fait, cette icône-là n’est pas une petite merveille ou un trait génial. Mais il faudrait que ce soit une évidence.

13 commentaires
  1. 02/12/2010 11:37

    C’est effectivement intéressant.
    Mais la fonctionnalité qui serait la plus générique, ce serait d’avoir un lien permettant à tous les lecteurs d’avoir un fichier ics. ics est le format des calendriers. Cela permettrait de :
    * ne pas dépendre de l’API de Google et d’être intégrable dans tout agenda qui se respecte
    * d’être fait une bonne fois pour toute (le ics rajoutera les évènements adhoc dans l’agenda au fur et à mesure des emprunts)

    Là, si j’ai bien compris, moi qui n’utilise pas google agenda, ce lien ne me sera pas utile.

    Seul défaut de cette proposition (mais il est de taille !) c’est au SIGB de fournir ce service, ou à minima une API pour pouvoir construire le ics !

  2. 02/12/2010 14:16

    @Paul Poulain : sur le principe, je suis tenté d’être d’accord — à savoir : un format standard existe, le ics (Julien Sicot m’a aussi suggéré de voir du côté du microformat hcalendar, mais j’avoue n’en avoir pas pris le temps). Et c’est mieux de l’utiliser plutôt que de se concentrer sur un seul service (privé, en plus).
    Mais si je propose un fichier ics, comment réagit le navigateur de l’internaute ? Il va proposer de le télécharger.
    Pour le recharger ensuite (si tant est que l’internaute sache quoi en faire) dans le service d’agenda (que ce soit un logiciel en local ou un service dans les nuages).
    Tout ça pour une seule date ? Personnellement, si j’ai ces manipulations à faire, je préfère encore aller dans mon agenda et inscrire la date manuellement. Une récupération de fichier ics, c’est utile pour charger un agenda entier, pas un unique « rendez-vous » (ou événement).

    Donc je reste sur l’idée qu’un lien permettant d’emblée de créer l’événement est la seule chose util(isabl)e.
    Mais je trouve tout à fait légitime qu’on veuille l’élargir à d ‘autres services d’agenda ! (comme je le dis dans mon billet, j’ai tout de même des doutes sur la pertinence de Facebook)
    Lesquels ?
    Permettent-ils cette opération ?

    Oui, on dépend de la syntaxe des services utilisés. Mais l’idée consistant à dire : « ça va forcément bouger donc dans six mois ça ne marchera plus », laisse entendre que ça servira au moins six mois 🙂 C’est mieux que de ne pas s’en servir du tout.

  3. 02/12/2010 15:30

    Lully : l’intérêt de l’ics, c’est qu’on le met *une bonne fois pour toutes*. Tous les documents à rendre seront automatiquement rajoutés dans le calendrier ultérieurement. Ce n’est donc pas qqc à mettre en face des documents empruntés, mais « au niveau du dessus ».
    En fac, on explique à l’étudiant qui arrive que s’il ajoute le calendrier
    bib.universite.fr/sigb/calendrier.ics?login=&password= dans son système d’agenda (sur son iphone, son calendrier google, ptet même dans facebook -que je ne connais pas-), et hop, automatiquement lorsqu’il emprunte un doc, la date de retour apparaitra, lorsqu’une résa sera disponible, elle apparaîtra, …

    Suis-je plus clair ?

  4. 02/12/2010 15:37

    @Paul Poulain : beaucoup plus clair, vu que je n’avais pas du tout compris…
    Effectivement, c’est à un autre niveau !
    Et beaucoup plus intéressant. Je vais creuser, tiens !
    Merci !
    (et Koha, dans tout ça ?)

  5. 04/12/2010 16:30

    Pour info, le bureau virtuel (celui que nous avons tous en PACA – je ne sais pas bien dans quelle mesure il est lié ou pas à ESUP) est ics-compatible.

  6. 05/12/2010 18:12

    @Marlene : effectivement. On peut par exemple afficher dans son bureau virtuel (donc dans l’ENT de PACA, qui tourne bien sous ESUP) un agenda Google (ce n’est pas de la synchronisation complète, d’ailleurs).
    Mais comme le suggère Paul Poulain, si on décide de manipuler de l’ics, c’est pour avoir un calendrier complet.
    J’ignore si certains SIGB fournissent cela clé en main.
    Personnellement, concernant l’ajout du lien vers Google Agenda, j’ai apprécié la « simplicité du geste ».
    Je ne trouve pas que le supplément de service que serait l’import automatisé de tout nouveau prêt dans son agenda justifie le développement d’API spécifiques, qui me semble assez lourd en temps de développement.
    Comme je le disais, le lien vers Google Agenda a pris 10 minutes à un développeur web. Et c’est un argument essentiel pour avoir motivé son apparition chez nous.

  7. 06/12/2010 09:03

    Ce qui me gène dans le lien google direct, c’est que, l’air de rien, on met en avant une plateforme. J’utilise google agenda, c’est impressionnant ce que fait google, on est d’accord.
    Mais puisque dans ce domaine il existe une norme ouverte, utilisée par tous les gestionnaires d’agenda, je pense que c’est elle qu’il faut favoriser (je met de coté la contrainte technique « est-ce faisable? »)
    Là, on risque de se retrouver avec un utilisateur de Lotus Notes qui demande un bouton « mettre dans mon lotus note ». Un utilisateur de MS-Exchange qui demande un bouton « Mettre dans mon agenda Exchange »,…
    ps : ma remarque n’a plus lieu d’être si ggl utilise pour ce service une API commune à tous les gestionnaires de calendriers, ce que j’avoue ignorer complètement.

  8. 06/12/2010 09:22

    @Paul Poulain : pour ma part, je refuse le principe d’entrer dans ce genre de scrupules.
    Pour avoir la conscience tranquille, une bibliothèque souhaitant créer un groupe ou une page Facebook doit-elle aussi s’inscrire chez Diaspora ? Si elle veut créer un compte Twitter, doit-elle aussi aller chez Friendfeed ?
    etc. etc.
    Disons que les arguments sont tout à fait compréhensibles, mais on sait parfaitement qu’ils conduisent plutôt vers l’immobilisme que vers la prolifération des services.

    Après tests rapides, je constate que Yahoo Agenda permet d’ajouter un événement sur ce modèle :
    http://fr.calendar.yahoo.com//?v=60&ST=20101216T120000%2B0000&TITLE=Rendre+le+Parfum+de+S%fcskind&DUR=0100&VIEW=d&DESC=BU+Lettres&in_loc=Nice

    L’événement ainsi créé étant :
    1. Titre : « Rendre le Parfum de Süskind »
    2. Date : 16/12/2010 (journée complète)
    3. Description : « BU Lettres »
    4. Lieu : Nice
    (vous pouvez d’ailleurs cliquer sur le lien, si vous avez un compte Yahoo)
    Donc la syntaxe utilisée par Google n’est pas normalisée.

    Pardon : je dois tout de même nuancer ce que je viens de dire.
    Je suis bien sûr pour l’utilisation de standards permettant de n’avoir pas à tenir compte des spécificités de telle ou telle plate-forme. Mais en l’état, il faut bien voir la situation de départ et celle de l’arrivée :
    1. Avant : rien. Aucun échange aisé entre n’importe quel logiciel d’agenda et notre opac. Le SIGB ne fournit (à ma connaissance) pas ce genre de services
    2. 10 minutes après : un petit lien bien pratique.
    Cela ne ferme pas la porte à l’extension du service vers d’autres plate-formes, voire une manière de l’universaliser. Mais comme pour l’instant cette universalisation ne me semble pas possible, je me contenterai de mon étape 2.
    Que ceux qui veulent prendre le relai… 🙂

  9. 06/12/2010 10:51

    Allez, je saute à pied joint dans le « troll », mais ce genre de scrupules, c’est exactement ce qui permet d’avoir des données dont on maitrise le contenu, la forme et la diffusion.
    Tout le monde sait que je suis un militant du logiciel libre. Mais ce que je suis par dessus tout, c’est un militant des données ouvertes. Il m’est même arrivé de dire « choisissez un logiciel propriétaire si vous voulez, mais vérifiez que les données sont à vous ! ». Ce d’autant plus qu’en informatique documentaire, votre richesse, ce sont vos données !

    Dans ce cas, c’est légèrement différent, nous sommes d’accord, même si je reste géné par le fait que le bouton est dédié à une plateforme et qu’en toute hypothèse il faudrait avoir le bouton « ggl », le bouton « yahoo », le bouton « exchange », le bouton « lotus Notes »,…

    Mais nous sommes à 100% d’accord par contre sur le fait qu’avec les outils que vous avez à disposition, vous ne pouvez probablement pas faire mieux.

  10. 06/12/2010 10:56

    Ouf !
    En fait, nous sommes d’accord sur tout. Comme le billet le signalait, je suis pour l’extension du service aux utilisations les plus larges possibles.
    Pour moi, le premier pas était déjà d’avoir l’idée de vouloir coordonner SIGB (prêts en cours) et agenda perso.
    Je n’ai pas cherché à savoir si quelqu’un l’avait déjà évoqué ou même mis en place, mais le fait est que je ne me suis inspiré d’aucune réalisation rencontrée pour y penser.
    Mais ce n’est, vraiment, qu’un premier pas 🙂

  11. 06/12/2010 20:02

    En fait, en creusant un peu, ça me paraît techniquement très simple : en plus de produire un fichier HTML (listant les prêts en cours), le SIGB doit fournir un fichier .ics avec le même contenu, en utilisant les mêmes variables, mais dans un autre format (ICS est en plus assez simple).
    En fait, le problème majeur réside dans l’authentification : il faut communiquer à son logiciel d’agenda une URL où figure son login et son mot de passe.
    Dans un contexte universitaire où l’authentification passerait par l’annuaire LDAP, ça me semble inconcevable.
    (certes, on pourrait le proposer tout en disant : c’est uniquement pour les logiciels d’agenda installés sur votre ordi — mais ça me semble très hasardeux).

    Y a-t-il des manières de faire une authentification intermédiaire ? Du genre OAuth ?

  12. 07/12/2010 10:09

    Excellente idée ! je reprends l’idée et je la mets en place sur Koha.
    Merci bien.

Trackbacks

  1. Tweets that mention Date de retour d’un prêt – Ajouter à mon agenda « Bibliothèques [reloaded] -- Topsy.com

Commentaires fermés