URLs d'abonnement au calendrier pour les applications de calendrier externes

Nous avons ajouté un nouvel onglet Calendrier aux préférences utilisateur qui vous permet de vous abonner aux flux Discourse dans des applications de calendrier externes comme Google Calendar, Apple Calendar et Microsoft Outlook.

:down_arrow:

Comment ça marche

Accédez à l’onglet Préférences → Calendrier et cliquez sur Générer les URL d’abonnement. Vous obtiendrez des boutons d’abonnement en un clic pour :

  • Google Calendar — ouvre Google Calendar avec le flux pré-rempli
  • Microsoft Outlook — ouvre la boîte de dialogue d’abonnement web d’Outlook
  • Apple Calendar — déclenche l’application Calendrier native via webcal://
  • Copier l’URL — pour toute autre application de calendrier prenant en charge les flux ICS

Flux disponibles

Toujours disponibles :

  • Rappels des éléments enregistrés — vos éléments enregistrés avec des dates de rappel

Avec le plugin discourse-calendar activé :

  • Tous les événements — tous les événements du forum
  • Mes événements — événements auxquels vous participez ou qui vous intéressent

Pour les développeurs de plugins

Les plugins peuvent enregistrer des flux ICS supplémentaires en utilisant la nouvelle API register_calendar_subscription_feed. Les flux enregistrés de cette manière apparaissent automatiquement dans l’onglet Préférences du Calendrier lorsque le plugin est activé.

Sécurité

Les URL d’abonnement utilisent des clés API utilisateur délimitées, restreintes à l’accès en lecture seule au format ICS. Les clés sont limitées en débit, et les URL ne sont affichées qu’une seule fois au moment de la génération — les utilisateurs peuvent les régénérer à tout moment, ce qui révoque les anciennes URL.

25 « J'aime »

Merci @Falco, mais comment supprimer les options d’entreprise ? Je trouve offensant pour ma communauté de devoir voir de la publicité pour des services propriétaires.

1 « J'aime »

Vous pouvez le masquer avec du CSS.

2 « J'aime »

Merci beaucoup pour cette implémentation - cela augmentera l’utilisabilité du plugin calendrier/événements pour de nombreuses communautés !

J’ai la même objection que @hellekin : au sein de Discourse, nous sommes dans un environnement Open Source. Dans notre communauté, personne n’utilise Google Calendar ou Microsoft. Si les utilisateurs ont besoin d’un lien pour ces services propriétaires, ils devraient le décider eux-mêmes, et non l’application. Je préférerais donc sélectionner le type de service de calendrier externe lors de l’étape de création des URL d’abonnement (par exemple avec des cases à cocher), et non plus tard.

1 « J'aime »

Amélioration du « filtre »

Nous avons plusieurs communautés sur notre instance Discourse. Elles sont séparées par des permissions de groupe et certains utilisateurs sont membres de plus d’une communauté. Il serait pratique de filtrer l’URL « Discourse Calendar - All Events » afin qu’elle n’affiche que les entrées de calendrier d’une communauté particulière. URL d’exemple

https://discourse.example.com/discourse-post-event/events.ics?user_api_key=c2aa22d800dd473b62d199d796742382&group=[nomdugroupe]

Avec cette amélioration, il serait possible de partager les événements Discourse d’une communauté particulière (!) sur leur propre site web, par exemple avec le plugin WordPress « ICS calendar ».

2 « J'aime »

Une autre petite amélioration proposée : si vous souhaitez vous abonner aux événements Discourse sur deux clients différents (par exemple, Thunderbird sur deux appareils), vous devez copier l’URL deux fois. Mais actuellement, l’URL n’est affichée qu’une seule fois. Si vous ajoutez un deuxième client, vous devez régénérer les URL et vous perdez les premières.

1 « J'aime »

Un flux généré par un utilisateur dans l’un de ces groupes ne fonctionne-t-il pas déjà de cette manière ? Avez-vous testé ?

Vous n’avez besoin de copier qu’une seule fois, puis de coller dans les deux clients dont vous avez besoin.

Et si vous oubliez un client, vous pouvez régénérer en un seul clic.

2 « J'aime »

C’est plutôt sympa. Une idée de flux pourrait aussi être le plugin Saved Searches (Recherches enregistrées).

[quote=“Falco, post:7, topic:398902”]Vous n’avez besoin de copier qu’une seule fois, puis de coller dans les deux clients dont vous avez besoin.

Et si vous oubliez un client, vous pouvez régénérer en un seul clic.

[/quote]

Je comprends, mais mon point est la régénération nécessaire après que les URL aient été affichées pour la première fois.

Si j’utilise le lien du calendrier sur deux appareils différents, ils ne sont probablement pas disponibles pour la configuration en même temps. J’accéderais à mon profil Discourse depuis le premier appareil, puis à nouveau depuis le second. Il serait préférable d’afficher à nouveau l’ancienne URL et de ne l’invalider que sur demande explicite.

Si je suis membre de deux communautés différentes (et de leurs groupes de permissions), le « https://discourse.example.com/discourse-post-event/events.ics » affiche les événements des deux communautés. C’est correct jusqu’à présent. Mais chaque communauté peut avoir son propre site web. Si je souhaite partager les événements de Discourse sur leurs sites web, je ne voudrais voir que les événements de la « communauté A » et non ceux de la « communauté B ». Et vice-versa.

1 « J'aime »

J’utilise cela avec Google Calendar, et c’est vraiment excellent !

Cependant, les modifications apportées aux événements ne semblent pas se synchroniser ici, qu’il s’agisse de modifications ou de suppressions.

Voici l’intégration du calendrier Google :

Voici le calendrier sur mon site, où vous pouvez constater que j’ai supprimé Test event number 5 et déplacé A fourth test event :

https://spokes.nz/upcoming-events/month/2026/3/1

Avez-vous une idée de pourquoi ces éléments ne semblent pas se synchroniser avec Google ?

1 « J'aime »

Google Calendar récupère les mises à jour en moyenne deux fois par jour, il faut donc quelques heures pour que les modifications soient prises en compte.

2 « J'aime »

Ah oui, ils sont maintenant synchronisés.

C’est très bon à savoir. Ne vous attendez pas à ce que les modifications de dernière minute soient déployées ou communiquées automatiquement !

Est-ce similaire pour les autres services ?

1 « J'aime »

Si tu parles des services agendas des autres fournisseurs, c’est le même principe 1 à 2 fois par jours. A l’époque, je n’ai pas trouvé de solution pour augmenter le nombre de synchronisation. Après, je me suis que c’est tout à fait normal finalement vu le nombre d’agenda à synchroniser dans le monde :rofl: Je pense qu’il limite histoire de ne pas saturer leurs serveurs !

Peut être que je me trompe

2 « J'aime »

Retour après quelques tests réels :

Contexte : notre instance Discourse est partagée entre plusieurs groupes d’utilisateurs/communautés, chacun disposant de ses propres groupes de permissions. Nous avons une catégorie principale pour chacun de ces groupes. Cette catégorie est visible publiquement et son contenu est fédéré dans le Fediverse (Discourse ActivityPub). Elle affiche également un calendrier public. Exemple (https://forum.netzwissen.de/c/meshcore-str/84) :

Pasted image 20260401075142.png

Le calendrier affiche les événements issus des publications de la catégorie principale ainsi que ceux des sous-catégories. Les publications d’événements dans les sous-catégories (qui ne sont visibles que pour les utilisateurs “connectés” appartenant au groupe de permissions de la communauté) ne s’affichent pas sur le calendrier principal pour les utilisateurs anonymes (non connectés). Parfait — c’est le comportement attendu !

Je vois deux exigences qui rendraient le lien du calendrier ICS « complet » en termes de fonctionnalités. Nous utilisons ce nouveau lien de calendrier ICS pour partager les événements créés dans Discourse sur les sites web publics des communautés (CMS : WordPress).

  1. Les événements affichés dans le fichier ICS devraient être « filtrables » par communauté ou groupe de permissions. Syntaxe proposée :
[ics_calendar url="https://discourse.example.com/discourse-post-event/events.ics?user_api_key=[xxxx];group=[discourse_group_id]"]

  1. Le fichier ICS ne devrait afficher que les événements dont le statut est « public ». Les statuts « privé » ou « autonome » ne devraient généralement pas être publiés dans le fichier ICS. Note : je n’ai pas encore vérifié si cela est déjà implémenté…
1 « J'aime »

C’est un excellent ajout ! :clap:

Malheureusement, même si le plugin Calendrier est activé (et que nous l’utilisons régulièrement), seule l’abonnement aux Favoris est créé lorsque je génère les URLs pour mon utilisateur. Avez-vous des idées sur la raison possible de ce comportement ?

Je suis également d’accord avec @Thomas_Rother pour dire que les URLs d’abonnement devraient rester visibles jusqu’à leur révocation ou régénération. Les appareils et les applications évoluent avec le temps, et devoir se réabonner sur tous les appareils simplement parce que l’on souhaite en ajouter un de plus est fastidieux et semble inutile. Peut-être que cela pourrait être une option de configuration du plugin, selon la sensibilité des données d’événements.

1 « J'aime »

Vous devez activer le paramètre « Événement de publication Discourse activé » pour qu’il s’affiche.

1 « J'aime »

Nous utilisons les événements de publication depuis des années :

Cela pourrait-il être un problème avec les installations qui utilisaient auparavant le plugin séparé ? J’ai également essayé de désactiver et de réactiver le plugin, mais cela n’a pas résolu le problème.

1 « J'aime »

Je suis venu ici à la recherche exactement de cette fonctionnalité, alors je suis ravi qu’elle ait été implémentée !

Je partage l’avis de @hellekin et @Thomas_Rother concernant les liens vers les entreprises. Si ceux-ci pouvaient être rendus optionnels, ce serait formidable. Beaucoup de gens utilisent Discourse car ils croient en la souveraineté numérique, alors afficher ces logos n’est pas approprié.

Plus important encore, la découvrabilité de la fonctionnalité. Elle est enfouie dans les préférences utilisateur, mais ce serait un vrai plus de l’avoir directement dans la navigation de l’interface du calendrier. Cliquer sur « Événements à venir » puis voir un lien pour s’abonner serait génial. :1st_place_medal:

2 « J'aime »

Tu as la solution ici

1 « J'aime »