Identifiants personnels


Moi ... Moi ... et re Moi
« [SPIP] Plugin Innerfade   Informatique  [SPIP] Filtres d’images / (...) »

[SPIP Plugin] Plugin Timeline pour agenda

mercredi 25 octobre 2006, modifié le 19 août 2007, par Quentin Drouet

Développé pour le site Lx5.net

PNGUtilisation de la timeline en javascript du laboratoire SIMILE du MIT.

Ce plugin est en cours de développement.... Ceci est un bloc-note de développement constituant également un début de documentation.

Lorsque le plugin sera jugé apte à devenir stable, cette documentation sera déplacée sur spip-contrib

Objectifs

En complément du plugn agenda de Cedric Morin, offir aux webmasters une autre méthode d’afficher ces évènements que l’utilisation d’un calendrier à la dotclear.

- Utilisation de la timeline en javascript du laboratoire SIMILE du MIT.
- Adaptation au maximum à SPIP.
- SPIP utilise par défaut la librairie javascript Jquery... on va donc l’utiliser également un petit peu.

La boucle des évènements à récupérer

Il semble nécessaire de pouvoir spécifier quels évènements nous souhaitons récupérer en particulier...

Pour cela il suffit d’appeler la timeline de cette manière :
- <timeline1|article=12> : récupère les évènements de l’article 12
- <timeline1|mot=12> : récupère les évènements dans tout le site qui ont le mot clé numéro 12

Un peu de doc pour SIMILE Timeline

La documentation étant assez peu fournie et en anglais ... on va expliquer ici ce que l’on comprend...

2Le Javascript2

Tout d’abors et avant tout il faut insérer le js de la timeline... Le plus simple est de le chopper directement chez eux ... Donc on insère entre les balises head ceci :

<script src="http://simile.mit.edu/timeline/api/timeline-api.js" type="text/javascript"></script>

Ensuite ... il va falloir bien entendu définir notre timeline :

  1. <script type="text/javascript">
  2. var tl; // On définit la Timeline
  3.  
  4. $(document).ready(function (){ //Fonction Jquery qui remplace onload et qui charge le js après le chargement complet de la page
  5.  
  6.         // On utilise le theme classic
  7.         var theme = Timeline.ClassicTheme.create();
  8.         theme.event.label.width = 150; // px
  9.         theme.event.bubble.width = 200;
  10.         theme.event.bubble.height = 160;
  11.  
  12.         var eventSource = new Timeline.DefaultEventSource();
  13.  
  14.         //On définit les bandes de données
  15.         var bandInfos = [
  16.  
  17.                 // La première
  18.                 Timeline.createBandInfo({
  19.                         eventSource: eventSource,
  20.                         // on définit la date ou la tieline va se centrer
  21.                         date: "[(#ENV{date_debut}|?{#ENV{date_debut},[(#ENV{date}|affdate{M d Y H:00:00}) GMT]})]",
  22.                         width: "70%",
  23.                         //On définit la valeur de chaque intervalle dans la timeline : ici 1 mois
  24.                         intervalUnit: Timeline.DateTime.MONTH,
  25.                         // chaque intervalle = 300px
  26.                         intervalPixels: 300
  27.                 }),
  28.  
  29.                 Timeline.createBandInfo({
  30.                         eventSource: eventSource,
  31.                         date: "[(#ENV{date_debut}|?{#ENV{date_debut},[(#ENV{date}|affdate{M d Y H:00:00}) GMT]})]",
  32.                         width: "30%",
  33.                         intervalUnit: Timeline.DateTime.YEAR,
  34.                         intervalPixels: 500
  35.                 })
  36.         ];
  37.  
  38.         bandInfos[1].syncWith = 0;
  39.         bandInfos[1].highlight = true;
  40.         Timeline.loadXML("[(#URL_PAGE{backend_agenda_timeline})]", function(xml, url) { eventSource.loadXML(xml, url); });
  41.         tl = Timeline.create(document.getElementById("my-timeline"), bandInfos);
  42. });
  43. </script>

2Le XML Contenant les évènements2

"start" est la date de début de l’évènement "end" est la date de fin "latestStart" "earliestEnd" "isDuration" != "true", "title" ... Le titre description "image" ... L’image "link" ... Le lien de l’évènement "icon" ... L’icone de l’évènement "color" ... La couleur dans laquelle appraîtra l’évènement dans la timeline "textColor" ... La couleur que prendra le texte dans l’infobulle

Ces éléments sont définis dans le fichier "sources.js" inclus automatiquement par "timeline-api.js".

Dépendances pour spip

- Plugin CFG
- Plugin Agenda de Cédric Morin
- Plugin Widget calendar de Cédric Morin

Configuration à travers CFG

La plupart des options sont configurables dans CFG et sont réparties en plusieurs parties ...

Design de la timeline
- largeur : largeur en pourcentages ou pixels du cadre de la timeline. Il est nécessaire de mettre "%" ou "px" à la fin de la valeur. Par défaut : 100%
- hauteur : hauteur en pixels du cadre de la timeline. Il est nécessaire de mettre "px" à la fin de la valeur. Par défaut : 300px

Méthode de mise en place

- Rajouter la balise #AGENDA_TIMELINE entre les balises de vos squelettes
- Rajouter le modèle agenda_timeline à l’emplacement ou vous souhaitez faire apparaitre votre timeline...

Note : il sera possible de modifier l’affichage dans le futur (taille couleur...).

Portfolio

Répondre à cet article


Un message, un commentaire ?
  • (Pour créer des paragraphes, laissez simplement des lignes vides.)

Lien hypertexte (optionnel)
  • (Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d'informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Qui êtes-vous ? (optionnel)
Connexion


Propulsé par : SPIP 2.0.0 dev SVN [12309]