[spip-dev] OpenAgenda et SPIP

Bonjour,

je souhaite dévelloper un plugin OpenAgenda pour le CMS SPIP, afin de
diffuser plus largement les activités du site
https://www.planete-sciences.org/astro

Est-il possible

1) de m'envoyer une clé d'écriture
2) d'avoir une instance "bac à sable"

?

Merci d'avance

Maïeul Rouquette

Bonjour Maïeul,
Je cherche un plugin SPIP pur OpenAgenda, et je tombe naturellement sur ton post.
L’as tu mis au point ? Est-il maintenu ?
je decouvre Open agenda que je dois intégrer à un site d’asso, et j’ai l’impréssion que le model d’ifram, ne me permet pas de faire la mise en page que je veux.

Merci pour ta réponse,
Gaston

Bonjour,

non finalement je n’ai pas avancé sur ce dossier.

Mais si l’enjeu est de récupréer des evenements depuis OpenAgenda (et non pas envoyer vers OpenAgenda), alors le plugin « Import ICS » devrait pouvoir faire l’affaire.

Je ne connais rien a Open Agenda,

L’idée est bien de pouvoir extraire de Open agenda, sur la page sommaire, le titre et la date et un petit résumé, et d’avoir une page où tout est importé, événements à venir et passés.

J’ai téléchargé import ICS, mais il demande plein de pluging en même temps :
API de vérification
Agenda
Calendrier Mini
Champs Extras
YAML
iCalendar

Est-ce que pour Open Agenda je dois me concentrer sur Juste Import ICS ?

Je pensais qu’Open Agenda avait prévu un intégrateur plus simple, mais le truc par default ne permet pas de gerer le css pour personnaliser l’habillage.

Clarifions donc

  • je ne connais rien non plus à OpenAgenda
  • Mais ce que je sais c’est qu’il existe un protocole, appelé ICAL, qui permet de suivre des flux d’evenement distant
  • Dans SPIP, avec le plugon Import ICS, on peut ainsi suivre des flux distant d’evenement fournit par un prestataire (open agenda ou autre)
  • C’est normal que le plugin demande d’installer d’autrs plugins
  • Je t’invite à lire la doc du plugin en question
  • Une fois que tu auras « importé » les evenements distant d’openagenda, charge à toi d’écrire les boucles / modeles pour afficher cela
    L’avantage c’est que du coup tu peux aussi importer les flux d’un autre prestataires (par ex un site SPIP ami, ou autre)

Merci pour cette clarification,

En lisant le pluging, sans avoir de compétence en php, je connais les boucles spip, le html et css.
je suis bloqué à la Configuration du plugin et « La configuration PHP l’emporte sur la configuration
par formulaire. », si j’utilise le formulaire, je ne comprends pas a quoi correspond « identifiant de l’article par default » et quand je créer un almanach Open agenda et que je met l’adresse de l’agenda, « Cet almanach ne contient aucun événement », j’ai une clé API et un numéro identifiant, mais je ne comprends pas comment l’intégrer.
Et j’ai tenté avec Mistral, mais ça ne marche pas.

Question, une fois que j’aurais réussi à « importer » les événements d’Open Agenda, quand tu dis "à toi d’écrire les boucles/ modéles pour afficher cela ", est-ce que je dois utiliser un langage PHP et les critères d’Open Agenda, ou cela marcherait avec une boucle ÉVÉNEMENTS SPIP ? (sans trop savoir si c’est possible, mais je demande pour avoir les idées plus clairs :wink: ).

Reprenons donc

  1. Il existe dans SPIP un plugin « Agenda » permettant de gérer des evenements.
  2. On peut boucler sur ces evenements avec les boucles SPIP (cf doc.)
  3. Le plugin « Import ICS » permet de lire un flux ICAL distant pour importer les evenements dans SPIP.
  4. OpenAgenda fournit des flux ical (cf documentation Synchroniser un OpenAgenda sur un calendrier personnel | Documentation OpenAgenda)
  5. Dans SPIP chaque evenement est associé à un article (c’est comme ca, me demande pas pourquoi).
  6. Pour pouvoir importer un flux ICAL il faut créer un almanach, indiquer l’url du flux distant au moment de la création de l’almanach, et associer l’almanach à l’article qui portera les evenements.
  7. Je ne vois pas dans la config du plugin de phrase " « La configuration PHP l’emporte sur la configuration
    par formulaire. »"

Bonjour Maïeul,

  • Le plugin Agenda, je le connais pour l’avoir déjà installé sur plusieurs sites de ce coté, je sais faire une boucle spip pour afficher les événements associés à un article SPIP.

  • Je comprends que le plugins permet de lire un flux Ical avec le critère {id_almanach},.

  • Si je cherche sur Open Agenda ce flux ICAL, dans exporter, j’ai effectivement un lien pour l’agenda google, qui devrait être le même selon moi, mais j’ai un message "Erreur lors de la synchronisation de cet almanach (12 avril 2025 à 16h41min), j’ai aussi un fichier « ical/Ics » mais c’est un fichier qui se télécharge, pas un lien : le lien https://openagenda.com/agendas/25152653/events.v2.ics?relative[0]=passed&relative[1]=current&relative[2]=upcoming

  • Si je met un lien comme ceci (Mistral me l’a simplifié) : https://openagenda.com/agendas/25152653/events.ics, je n’ai plus le message d’erreur mais il est écrit « Cet almanach ne contient aucun événement. », alors que sur Open Agenda , j’ai un evenement.

  • " J’ai bien associé l’Almanachs a mon article N°68 Rubrique « Agenda » "article « Open AGenda »

  • Dans open agenda, il est question d’une clé API, et identifiant AID également.

  • C’est dans « Configuration » que je ne comprend pas, et la documentation du plugins Imports ICS ne m’aident pas. Que faut-il mettre à « Identifiant article par défaut » ? J’ai mis 68 pour le moment.

Pour « La configuration PHP l’emporte sur la configuration par formulaire. » »"
c’est ici (au dessus de la capture) :

Merci pour ton aide en tout cas

Pour répondre rapidement

  1. Le fait que le fichier se telecharge est juste un règlage navigateur, mais c’est bien un lien que tu pointe
  2. Il faut croire que OpenAgenda a encore une spécifitié sur la manipère de gérer les ICS, je vais essayer de debuger le plugin import ICS
  3. « Dans open agenda, il est question d’une clé API, et identifiant AID également. » a priori on s’en fiche pour le cas présent
  4. "Que faut-il mettre à « Identifiant article par défaut » ? " Bah c’est pourtant ce que ca dit : l’identifiant de l’article auquel un almanach est associé par défaut
  5. Pour « La configuration PHP l’emporte sur la configuration par formulaire. » »" → ok bah tu t’en fiche, vu que tu configure via l’interface et pas via PHP (et si tu voulais le faire bah tu lirais la suite de la doc et tu aurais la réponse).

C’est bien ça, les flux OPENAgenda sont mal formatés (sur un point spécific) et du coup bah paf ça plante parce que l’analyseur de flux que import ics utilise est très stricte.

Je viens de préparer une version qui corrige cela. Avant de la sortir publiquement, je voudrais juste savoir si tu n’a qu’un seul calendrier à importer, ou d’autre ? Parce que si tu a d’autres calendrier de concerné, je voudrais les tester avant de sortir la version.

Ok, ça venait de ça,
Je n’ai qu’un seul calendrier / flux à intégrer au site.
J’attends la correction pour voir si ça marche :slight_smile:

La v6.2.2 devrait etre dispo dans ton spip demain matin.

1 « J'aime »

Bonjour Maïeul,

sans mettre de pression :slight_smile:
La V6.2.2 n’est pour le moment pas en ligne, est-ce un oubli ou il y a quelque chose de plus compliqué de prévu ?

J’avais oublié de pousser le tag. C’est chose faite. Devrait donc être dispo dans les 24h.

1 « J'aime »

Merci pour cette mise à jour, effectivement, on peux charger des événements directement d’open agenda maintenant !

Mais j’ai l’impréssion que je ne vais pas pouvoir faire ce que l’on me demande.
Je remarque que le plugin me créer autant d’événements que de date sans utiliser l’option « répétition ».

Mais surtout, l’idée est de ne jamais aller sur Open agenda. Quand on clique sur une date on va sur l’article Agenda du site.
J’ai l’impression que le pluging « ramène » les champs propres au plugin Événements (date, heure, descriptif court (avec lien vers open agenda), lieu) mais pas le visuel, ni le texte complet par ex.
Je pense que pour cela, il faut se plonger dans la doc d’open agenda et tout afficher par soi-meme sans passer par le langage SPIP.

Un exemple de ce que j’aimerai faire ici (Architelier est précisément ce que je dois mettre sur mon site) : https://www.ma-lereseau.org/

Merci en tout cas

Effectivement le plugin ne gère pas les répétitions car cela ne « rentre pas » dans le cadre des evenements SPipien,

Quand au visuel et au texte complet, tout depend encore une fois de ce que fournit OpenAgenda dans le flux ICAL.

Bonjour,

ici Romain d’OpenAgenda, je découvre la conversation et vient de discuter avec Gaston.

Attention, le format ICS est adapté aux agendas personnels, il est très basique : titre et date obligatoire, horaires et lieux facultatifs, pas d’image, pas de multidates. Ce format ne peut rendre fidèlement une annonce d’événement public.

Nous suivons plutôt un modèle d’agenda public, où un événement a une info un peu plus riche, pour bien informer le public : lieu défini par un nom et une adresse, a minima, + une ou plusieurs plages horaires. Puis d’autres infos facultatives mais normées

A priori une extension Spip pourrait utiliser l’export Json pour une synchro de données structurées.
Actuellement des extensions sont dispos pour différents CMS, mais pas encore SPIP

Pas mal d’associations très variées utilisent OpenAgenda pour saisir leur programmation une seule fois et permettre d’alimenter d’autres agendas (de fédérations, collectivités, presse locale, etc.).

À votre dispo si nous pouvons être utiles !

Merci pour ce message.

Alors ICAL c’est un format qui peut aller aussi pour des informations riches, car la RFC propose explicitement la possibilité de champs étendus. Mais le souci est principalement lié au fait que justement c’est souple, et qu’il est difficile de parser bien un flux ICAL. Mais c’est un autre sujet.

Bon cela étant pour répondre au besoin initial de Gaston, si OpenAgenda fournit un flux JSON, alors la mailleur solution pour lui serait d’utiliser les boucles DATA de SPIP

c’est sans doute ce qu’utilise le diocèse de Paris si vraiment openagenda est leur lieu primaire

Mais de là à faire un plugin « generique » SPIP pour openagenda en lecture, c’est encore une autre paire de manche (notamment si on veut pouvoir intégrer un calendrier issue d’open agenda avec d’autres calendriers issue d’autres sources)