SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

290 Plugins, 198 contribs sur SPIP-Zone, 73 visiteurs en ce moment

Accueil > Outils pour plugins > Itérateurs > iCalendar > Plugin iCalendar

Plugin iCalendar

29 décembre 2010 – par Fil – 46 commentaires

20 votes

Libraire iCalcreator

Le plugin icalendar contient la librairie iCalcreator de Kjell-Inge Gustafsson (disponible sur le site http://www.kigkonsult.se/iCalcreator/ en licence GNU/GPL 2.1 ou ultérieure). Cette librairie permet notamment d’écrire et de lire des fichiers au format iCalendar (RFC 2445). C’est le format d’échange qu’utilisent la plupart des logiciels de calendrier, qu’ils soient « de bureau » ou « en ligne ». Vous pouvez utiliser ce plugin pour exploiter la librairie en PHP.

Utilisation avec les itérateurs de SPIP

Le plus intéressant de ce plugin est peut-être le format qu’il offre pour la boucle (DATA) (cf. Les Itérateurs pour SPIP 2.1). Pour en bénéficier en SPIP 2.1, il vous faut donc installer le plugin "Itérateurs". (Pour rappel, ceux-ci sont intégrés en SPIP 3).

Avec ce format il devient possible de boucler sur les événements d’un calendrier géré depuis un logiciel spécialisé, ou publié sur un site internet.

Voici un exemple de boucle en faisant usage.

Boucle :

  1. </B_vacances>
  2. <dl>
  3. <BOUCLE_vacances(DATA)
  4. {source ics, http://media.education.gouv.fr/ics/Calendrier_Scolaire_Zone_B.ics}
  5. {par dtstart/str}
  6. >
  7. <dt>
  8. [(#SET{date,#VALEUR{dtstart/str}})]
  9. [(#GET{date}|jour) ][(#GET{date}|nom_mois)]
  10. [(#SET{date,#VALEUR{dtend/str}})]
  11. [ &mdash; (#GET{date}|jour) ][(#GET{date}|nom_mois)]
  12. </dt>
  13. <dd>[(#VALEUR{summary/value}|replace{- Zone.*$})]</dd>
  14. </BOUCLE_vacances>
  15. </dl>
  16. </B_vacances>

Télécharger

Résultat :

18 décembre — 3 janvier
Vacances de Noël
19 février — 7 mars
Vacances d'hiver
16 avril — 2 mai
Vacances de printemps
2 juillet — 5 septembre
Vacances d'été
22 octobre — 3 novembre
Vacances de la Toussaint

(Une fois le plugin installé, vous pouvez visualiser l’adresse spip.php?page=demo/iterateurs&demo=iter_icalendar pour une version élaborée de cet exemple.)

Données accessibles

Comme le montre l’exemple ci-dessus, la date de début de chaque événement se trouve au format YYYY-MM-DD hh:mm:ss dans le datapath (chemin XPath) dtstart/str.

Pour aller plus loin on peut aussi récupérer l’année, le mois etc. dans les variables dtstart/value/year, dtstart/value/month et dtstart/value/day, dtstart/value/hour, dtstart/value/min, dtstart/value/sec et dtstart/value/tz (time zone).

La date de fin figure, de même, dans le tableau dtend ; la définition du format ics veut que, lorsque l’événement dure une journée entière, dtend soit la date du lendemain (autrement dit, on indique mardi à 00h00 plutôt que lundi à 23h59).

Pour trier par date de début de l’événement, on utilisera :
{par dtstart/str}.

Le résumé (titre) de l’événement se trouve dans summary/value.

Les données possibles sont nombreuses ; pour les explorer dans une boucle icalendar, il suffit d’indiquer [<pre>(#VALEUR|print_r{1})</pre>]. On voit alors apparaître un enregistrement complet, où l’on peut lire le datapath de chaque élément.

Par exemple, le code ci-dessous indique que le contenu du champ description peut s’obtenir via #VALEUR{description/0/value} :

   [description] => Array
       (
           [0] => Array
               (
                   [value] => Vacances d'hiver
                   [params] =>
               )

       )

En procédant ainsi on peut trouver notamment :
— created : date de création de l’événement dans le calendrier ;
— lastmodified : date de mise à jour de l’événement ;
— location/value : lieu de l’événement ;
— uid/value : identifiant unique de l’événement ;
— rrule/0/value/FREQ : fréquence de récurrence (pour les événements se répétant à intervalle défini)
— etc.

 

Trouvailles

Si vous utilisez ce plugin, n’hésitez pas à partager vos trouvailles dans le forum ci-dessous.

modèle "prochainement"

C’est ce qu’à fait Jérome. Dès lors, le plugin propose désormais un modèle simple sous modeles/prochainement.html. Il récupère un flux iCal et retourne les événements futurs.

Insérez ce modèle comme tout autre (voir http://www.spip.net/fr_article3454.html) en lui passant un paramètre ics pointant vers l’url d’un flux ical. Par exemple : <prochainement|ics=http://www.demosphere.eu/events.ics> pour afficher les événements à l’agenda de Démosphère dans un texte. Ou encore [(#MODELE{prochainement}{ics=http://www.demosphere.eu/events.ics})] dans un squelette.

Voir en ligne : http://plugins.spip.net/icalendar

Dernière modification de cette page le 26 juin 2018

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 10 septembre à 17:52, par alouettes21 En réponse à : Plugin iCalendar

    Bonjour à tous,

    J’utilise le plugin avec une boucle DATA et tout fonctionne correctement.
    Les données ics d’un autre site s’affichent sans problème.
    Ma boucle est incluse dans la page sommaire.

    Mon seul soucis et de filtrer l’affichage par exemple sur 15 jours.
    comment faut il modifier le script suivant ?

    #SET{today,#DATE}

    <B_calendrier>
    <BOUCLE_calendrier(DATA)
     {source ics, https://indico.math.cnrs.fr/export/categ/310.ics?from=-31d}
     {datacache 3600} {par dtstart/str}>
       
     
     
     [(#VALEUR{dtend/str}|strtotime|>={#GET{today}|strtotime}|oui)
          [(#VALEUR{dtstart/value/hour}|>{00}|?{
          [(#VALEUR{dtstart/value/month}|=={#VALEUR{dtend/value/month}}|?{
          [(#VALEUR{dtstart/value/day}|=={#VALEUR{dtend/value/day}}|?{
       <dt> <h1>#SET{today,#DATE}</h1>
       <a href="[(#VALEUR{url/value}|replace{- Zone.*$})]"><img src="squelettes/img/icones/icone_calendat_mini.png"></a>  &nbsp;
             [(#SET{date_debut,#VALEUR{dtstart/str}})]
       [(#SET{date_fin,#VALEUR{dtend/str}})]
       Le [(#GET{date_debut}|jour) ][(#GET{date_debut}|nom_mois) ][(#GET{date_debut}|annee) ]<span> de [(#GET{date_debut}|affdate{'G'})]:[(#GET{date_debut}|minutes )] &agrave;  [(#GET{date_fin}|heures)]:[(#GET{date_fin}|minutes )]</span>
       
     </dt>
       <dd>[(#VALEUR{summary/value}|replace{- Zone.*$})<p>#VALEUR{description/1/value}]</p></dd>
     ,
          <dt><h1>#SET{today,#DATE}</h1>
    <a href="[(#VALEUR{url/value}|replace{- Zone.*$})]"><img src="squelettes/img/icones/icone_calendat_mini.png"></a>  &nbsp;
             [(#SET{date_debut,#VALEUR{dtstart/str}})]
       [(#SET{date_fin,#VALEUR{dtend/str}})]
      Du [(#GET{date_debut}|jour) ][(#GET{date_debut}|nom_mois) ][(#GET{date_debut}|annee) ]
        au [(#GET{date_fin}|jour) ][(#GET{date_fin}|nom_mois) ][(#GET{date_fin}|annee)]<span> de [(#GET{date_debut}|affdate{'G'})]:[(#GET{date_debut}|minutes )] &agrave;  [(#GET{date_fin}|affdate{'G'})]:[(#GET{date_fin}|minutes)]</span>
     </a>
     </dt>
     <dd>[(#VALEUR{summary/value}|replace{- Zone.*$})<p>#VALEUR{description/1/value}]</p></dd>

     ,
          <dt>
             [(#SET{date_debut,#VALEUR{dtstart/str}})])
       Du [(#GET{date_debut}|jour) ][(#GET{date_debut}|nom_mois)]
       [(#SET{date_fin,#VALEUR{dtend/str}})]
       [ au (#GET{date_fin}|jour) ][(#GET{date_fin}|nom_mois) ][(#GET{date_fin}|annee)] <span> [(#GET{date_debut}|heures)]:[(#GET{date_debut}|minutes )]</span>
     </dt>
     <dd> [(#VALEUR{summary/value}|replace{- Zone.*$})<p>#VALEUR{spekers/value}]</p></dd>})]})]
       
     ,
     <dt>[(#SET{date_debut,#VALEUR{dtstart/str}})]
       Le [(#GET{date_debut}|jour) ][(#GET{date_debut}|nom_mois) ][(#GET{date_debut}|annee)]
     </dt>
     <dd>[(#VALEUR{summary/value}|replace{- Zone.*$})<p>#VALEUR{description/1/value}]</p></dd>})]
     
     ]
       
    </BOUCLE_calendrier>
    </B_calendrier>

    Merci de votre aide

    Francis

    Répondre à ce message

  • Le 22 août à 16:54, par RealET En réponse à : Plugin iCalendar

    Bonjour,

    En cherchant à intégrer proprement ’DURATION’ dans Import ICS, je me suis rendu compte :

    • que la lib utilisée dans le plugin était très ancienne et que l’auteur l’a réécrite depuis : https://github.com/iCalcreator/iCalcreator
    • et que la lib a été forkée par Maïeul pour gérer un cas concernant Facebook

    Je pose donc ça là histoire de ne pas l’oublier si d’aventure quelqu’un voulait mettre à jour la lib.

    Répondre à ce message

  • Le 3 février à 12:37, par jeanmarie En réponse à : Plugin iCalendar

    Salut,

    il semble que l’adresse de la démo soit /spip.php?page=demo/iter_icalendar et pas/plus spip.php?page=demo/iterateurs&demo=iter_icalendar (dans le paragraphe« Utilisation avec les itérateurs de SPIP »).

    Cf https://zone.spip.org/trac/spip-zone/browser/_plugins_/icalendar/trunk/demo

    Répondre à ce message

  • Le 25 novembre 2017 à 11:32, par sylvain En réponse à : Plugin iCalendar

    quelqu’un a-t-il testé la compatibilité avec SPIP 3.2 ?

    • Le 25 novembre 2017 à 14:20, par Maïeul En réponse à : Plugin iCalendar

      Je pense que non. Mais tu peux le faire toi. Dans paquet.xml, modifie

             compatibilite="[2.1.0;3.1.*]"

      par

             compatibilite="[2.1.0;3.2.*]"

      Cela te pernettra d’activer. A priori, je dirais que c’est compatible. A vérifier.

    • Le 25 novembre 2017 à 17:27, par sylvain En réponse à : Plugin iCalendar

      Je viens de faire le test et ça marche.
      j’ai pu passer à SPIP 3.2 sans problème

    • Le 25 novembre 2017 à 17:39, par Maïeul En réponse à : Plugin iCalendar

      Merci, je viens de mettre à jour sur la zone, le zip sera bientôt regenéré.

    Répondre à ce message

  • Le 8 janvier 2016 à 23:18, par Frank En réponse à : Plugin iCalendar

    Bonjour,

    une version compatible spip 3.1 serait la bienvenue,

    merci !

    • Le 16 mars 2016 à 12:19, par deor En réponse à : Plugin iCalendar

      Je viens de l’utiliser sur un spip 3.1 en changeant tout simplement la version requise dans paquet.xml et plugin.xml.

      Ça marche sans soucis de mon côté.

    Répondre à ce message

  • Le 23 juin 2015 à 11:04, par ttseo En réponse à : Plugin iCalendar

    Bonjour
    J’ai mis en place ce plugin avec une boucle DATA qui va chercher les données à partir de l’url fournie.
    Cela fonctionne parfaitement sur mon serveur local, mais sur 1&1 il ne récupère plus aucune données.
    L’url cible est en https//....
    Avez-vous rencontré ce genre de problème ?

    Répondre à ce message

  • Le 9 février 2012 à 01:53, par erational En réponse à : Plugin iCalendar

    Bonjour Fil,

    Est ce que tu crois qu’il serait possible de partir de ce plugin pour réaliser un plugin d’import d’iCal vers le plugin Agenda (à la manière qu’une syndication de sites) ?

    • Le 9 février 2012 à 07:21, par Fil En réponse à : Plugin iCalendar

      Il y a certainement une bonne base de travail, oui, mais il faut voir précisément ce que signifie « importer » ; est-ce en une fois, ou en continu (avec des problématiques de rendez-vous qui changent d’heure etc)

    • Le 20 septembre 2014 à 20:59, par dut En réponse à : Plugin iCalendar

      Je serais extrémement intéressé par un mécanisme d’import d’évenements d’ics vers l’agenda SPIP comme évoqué. Ce projet a-t’il avancé ?

    • Le 16 juin 2015 à 17:10, par LudoRA En réponse à : Plugin iCalendar

      Ben, c’est possible avec ce plugin : http://contrib.spip.net/Import-ICS

    Répondre à ce message

  • Le 16 juin 2015 à 16:50, par LudoRA En réponse à : Plugin iCalendar

    Bonjour.

    J’ai développé un site qui utilise ce plugin sur ma machine. Tout fonctionnait bien.
    Quand je l’ai mis en production sur mon serveur, ça ne fonctionnait plus. Plus moyen de lire de fichiers ical distants.

    J’ai mis un moment à comprendre d’où ça pouvait venir car je ne voyais pas d’erreurs dans les logs.

    En gros, ce n’est pas moi qui ait généré les aspects sécurité sur le serveur et l’option allow_url_fopen était à Off pour php.

    Une fois cette fonction activée, ça roule, car le plugin en a besoin ( icalendar/lib/iCalcreator.class.php , ligne 1664 ).

    Seulement, de ce que j’en lis, c’est pas super chouette niveau sécurité que d’activé cette option php : http://phpsec.org/projects/phpsecinfo/tests/allow_url_fopen.html

    Bon, je sais que ça concerne la lib http://www.kigkonsult.se/iCalcreator/ et pas directement du plugin, mais ça me parait important à soulever également ici.

    Répondre à ce message

  • Le 4 octobre 2011 à 10:19, par Stéphane Santon En réponse à : Plugin iCalendar

    Bonjour,

    J’ai dû trouver un bug dans ics_to_array.php :

    function inc_ics_to_array($u) {
    [...]
    $table_valeur = function_exists('Iterateurs_table_valeur')
                    ? 'Iterateurs_table_valeur' : 'table_valeur';
    [...]
            $date = $table_valeur($w, "/value");

    $date renvoie toujours 0000/00/00 00:00:00 si le plugin iterateurs n’est pas installé.

    • Le 8 octobre 2011 à 08:41, par Stéphane Santon En réponse à : Plugin iCalendar

      Bon en fait c’est très bizarre,
      j’ai installé le plugin Iterateurs, et un coup sur2 à peu près, les champ date en [str] me renvoient 0000-00-00 00:00:00 bien que les champs individuels de date soient correctement remplis...

    Répondre à ce message

  • Le 18 février 2015 à 22:42, par jeanmichelvideau En réponse à : Plugin iCalendar

    Bonjour. Je n’arrive pas à faire marcher ce merveilleux plugin chez free.fr
    -  spip 2.1.25
    -  Itérateurs 1.0.5
    -  iCalendar 0.4.0

    C’est pour inclure un google calendar dont l’adresse est publique.
    _*Lien que j’ai mis dans l’appel au modèle « prochainement.html »

    agenda

    En panne !
    [(#MODELEprochainement
    ics=https://www.google.com/calendar/ical/44capitelles%40free.fr/public/basic.ics)]


    • Le message du « débug » est : « Critère inconnu par dtstart/str »

      -  Je me dis que c’est aussi peut-être « Itérateur »s qui flanche, donc j’ai vidé tout le « tmp » ... que néni !
      -  Peut-être une solution (ou pas) simple ?
      -  Le site : http://44capitelles.free.fr
      Si vous avez le début d’une explication n’hésitez pas ! (Je suis depuis 2003 sur spip, en me soignant car je n’y comprends rien, avec en particulier un squelette merdique : TDT.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Docker importe vos documents distants

    25 février 2013 – commentaires

    Un plugin qui permet de recopier localement dans le dossier IMG l’ensemble de vos documents distants. SPIP a un mode de documents qui permet d’indexer dans la base des documents en les laissant sur internet. On peut recopier individuellement (...)

  • Créer une Application Twitter pour utiliser dans SPIP

    14 juin 2013 – 19 commentaires

    Depuis le 9 juin 2013, il n’est plus possible d’accéder à l’API Twitter sans authentification. Cela passe par la création d’une Application Twitter qui disposera de ses clés secrètes pour accèder à l’API Twitter. Voici les étapes détaillées de la (...)

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 2508 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • cibloc : mettre en forme le texte d’articles avec des blocs

    9 juillet – 23 commentaires

    Le plugin CIBLOC permet de mettre en forme le texte d’articles avec des blocs. Il offre des blocs, des colonnes, des icônes et des boutons. Les objectifs de ce plugin Le plugin CIBLOC offre des blocs, des colonnes, des icônes et des boutons : (...)

  • Réservations multiples

    4 juillet – commentaires

    Permettre aux utilisateurs d’effectuer de réservations multiples (réserver pour plusieurs personnes à la fois ou réserver un événement plusieurs fois) Dépendances Saisies Réservation d’événements Introduction Il y a deux manières de multiplier les (...)