URL di sottoscrizione del calendario per app di calendario esterne

Abbiamo aggiunto una nuova scheda Calendario alle preferenze utente che ti consente di iscriverti ai feed di Discourse in applicazioni di calendario esterne come Google Calendar, Apple Calendar e Microsoft Outlook.

:down_arrow:

Come funziona

Vai alla scheda Preferenze → Calendario e fai clic su Genera URL di iscrizione. Otterrai pulsanti di iscrizione con un clic per:

  • Google Calendar — apre Google Calendar con il feed precompilato
  • Microsoft Outlook — apre la finestra di dialogo di iscrizione web di Outlook
  • Apple Calendar — attiva l’app Calendario nativa tramite webcal://
  • Copia URL — per qualsiasi altra applicazione di calendario che supporti i feed ICS

Feed disponibili

Sempre disponibili:

  • Promemoria con segnalibro — i tuoi segnalibri che hanno date di promemoria

Con il plugin discourse-calendar abilitato:

  • Tutti gli eventi — tutti gli eventi del forum
  • I miei eventi — eventi a cui parteciperai o che ti interessano

Per gli sviluppatori di plugin

I plugin possono registrare feed ICS aggiuntivi utilizzando la nuova API register_calendar_subscription_feed. I feed registrati in questo modo appaiono automaticamente nella scheda Preferenze Calendario quando il plugin è abilitato.

Sicurezza

Gli URL di iscrizione utilizzano chiavi API utente con ambito ristrette all’accesso in sola lettura in formato ICS. Le chiavi sono soggette a limitazione di frequenza e gli URL vengono visualizzati solo al momento della generazione — gli utenti possono rigenerarli in qualsiasi momento, il che revoca i vecchi URL.

25 Mi Piace

Grazie @Falco, ma come si rimuovono le opzioni aziendali? Trovo offensivo per la mia community dover vedere pubblicità per servizi proprietari.

1 Mi Piace

Puoi nasconderlo con CSS.

2 Mi Piace

Grazie mille per questa implementazione, aumenterà l’usabilità del plugin calendario/eventi per molte community!

Ho la stessa obiezione di @hellekin: all’interno di Discourse, siamo in un ambiente Open Source. Nella nostra community, nessuno usa Google Calendar o Microsoft. Se gli utenti hanno bisogno di un link per questi servizi proprietari, dovrebbero deciderlo loro stessi, non l’applicazione. Pertanto, preferirei selezionare il tipo di servizio calendario esterno durante la fase di creazione degli URL di sottoscrizione (ad esempio, con alcune caselle di controllo), non successivamente.

1 Mi Piace

Potenziamento del “filtro”

Abbiamo diverse community sulla nostra istanza di Discourse. Sono separate dai permessi di gruppo e alcuni utenti sono membri di più di una community. Sarebbe conveniente filtrare l’URL di “Discourse Calendar - All Events” in modo che visualizzi solo le voci del calendario di una particolare community. URL di esempio

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

Con questo potenziamento sarebbe possibile condividere gli eventi di Discourse di una particolare (!) community sul proprio sito web, ad esempio con il plugin WordPress “ICS calendar”.

2 Mi Piace

Un’altra piccola proposta di miglioramento: se si desidera iscrivere gli eventi di Discourse su due client diversi (ad esempio Thunderbird su due dispositivi), è necessario copiare l’URL due volte. Ma attualmente l’URL viene visualizzato una sola volta. Se si aggiunge un secondo client, è necessario rigenerare gli URL e si perdono quelli precedenti.

2 Mi Piace

Un feed generato da un utente in uno di quei gruppi non funziona già in questo modo? Hai provato?

Devi copiare solo una volta, quindi incollare nei due client di cui hai bisogno.

E se dimentichi un client, puoi rigenerare con un clic.

2 Mi Piace

Questo è piuttosto interessante. Un’idea per un feed potrebbe essere anche il plugin Ricerche Salvate.

[quote=“Falco, post:7, topic:398902”]Devi copiare una sola volta, quindi incollare nei due client di cui hai bisogno.

E se dimentichi un client, puoi rigenerare con un clic.

[/quote]

Capisco, ma il mio punto è la rigenerazione richiesta dopo che gli URL sono mostrati per primi.

Se uso il link del calendario su due dispositivi diversi, probabilmente non sono disponibili per la configurazione contemporaneamente. Accederei al mio profilo Discourse dal primo dispositivo e successivamente di nuovo dal secondo dispositivo. Sarebbe meglio mostrare di nuovo il vecchio URL e invalidarlo solo su richiesta esplicita.

Se sono membro di due comunità diverse (e dei loro gruppi di autorizzazione), “https://discourse.example.com/discourse-post-event/events.ics” mostra gli eventi di entrambe le comunità. Fin qui è corretto. Ma entrambe le comunità possono avere il proprio sito web. Se voglio condividere gli eventi di Discourse sui loro siti web, vorrei vedere solo gli eventi della “comunità A” ma non della “comunità B”. E viceversa.

1 Mi Piace

Sto usando questo con Google Calendar e funziona davvero bene!

Le modifiche agli eventi, però, non sembrano essere aggiornate qui, né per le modifiche né per le eliminazioni.

Ecco l’embed del calendario Google:

Ecco il calendario sul mio sito, dove puoi vedere che ho eliminato Test event number 5 e spostato A fourth test event:

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

Hai idea del motivo per cui non sembrano sincronizzarsi con Google?

1 Mi Piace

Google Calendar aggiorna le informazioni in media due volte al giorno, quindi i cambiamenti richiedono alcune ore per essere visualizzati.

2 Mi Piace

Ah sì, ora sono sincronizzati.

È molto utile saperlo. Non aspettatevi che le modifiche dell’ultimo minuto vengano pubblicate o comunicate automaticamente!

È simile anche per altri servizi?

1 Mi Piace

Se parli dei servizi calendario di altri fornitori, il principio è lo stesso: 1-2 volte al giorno. All’epoca non ho trovato una soluzione per aumentare il numero di sincronizzazioni. Poi ho pensato che fosse del tutto normale, visto il numero di calendari da sincronizzare in tutto il mondo :rofl: Penso che lo limiti per non saturare i loro server!

Forse mi sbaglio.

2 Mi Piace

Feedback dopo alcuni test reali:

Contesto: la nostra istanza di Discourse è condivisa tra più gruppi/comunità di utenti, ciascuno con i propri gruppi di permessi. Abbiamo una categoria principale per ciascuno di questi gruppi. Questa categoria è pubblicamente visibile e il contenuto viene federato nel Fediverse (Discourse ActivityPub). Mostra anche un calendario pubblico. Esempio (https://forum.netzwissen.de/c/meshcore-str/84):

Pasted image 20260401075142.png

Il calendario visualizza eventi provenienti dai post nella categoria principale e anche dalle sottocategorie. I post di eventi nelle sottocategorie (visibili solo “dopo il login” con il gruppo di permessi della comunità) non vengono mostrati nel calendario principale per gli utenti anonimi (non loggati). Perfetto: questo è il comportamento previsto!

Vedo due requisiti che renderebbero il link del calendario ICS “completo dal punto di vista delle funzionalità”. Utilizziamo il nuovo link del calendario ICS per condividere gli eventi creati in Discourse sui siti web pubblici delle comunità (CMS: WordPress).

  1. Gli eventi mostrati nel file ICS dovrebbero essere “filtrabili” per comunità/gruppo di permessi. Sintesi proposta:
[ics_calendar url="https://discourse.example.com/discourse-post-event/events.ics?user_api_key=[xxxx];group=[discourse_group_id]"]

  1. Il file ICS dovrebbe visualizzare solo eventi con stato “pubblico”. Gli stati degli eventi “privato” o “autonomo” generalmente non dovrebbero essere pubblicati nel file ICS. Nota: non ho ancora verificato se questa funzionalità sia già implementata…
1 Mi Piace

Questa è un’ottima aggiunta! :clap:

Purtroppo, anche se il plugin Calendario è abilitato (e lo stiamo utilizzando regolarmente), viene creata solo l’iscrizione ai Segnalibri quando genero gli URL per il mio utente. Avete qualche idea sul perché possa succedere?

Sono anche d’accordo con @Thomas_Rother sul fatto che gli URL di iscrizione dovrebbero rimanere visibili fino alla revoca o rigenerazione. Dispositivi e app cambiano nel tempo, e dover ri-sottoscrivere su tutti i dispositivi solo perché si vuole aggiungerne uno nuovo è noioso e sembra inutile. Forse potrebbe essere un’opzione di configurazione del plugin, a seconda della sensibilità dei dati degli eventi.

2 Mi Piace

Devi avere l’impostazione Discourse post event enabled abilitata affinché venga visualizzata.

1 Mi Piace

Utilizziamo gli eventi post da anni:

Potrebbe essere un problema per le installazioni che utilizzavano il plugin separato in precedenza? Ho anche provato a disattivare e riattivare il plugin, ma non ha risolto il problema.

1 Mi Piace

Sono venuto qui cercando proprio questa funzionalità, quindi sono così felice che sia stata implementata!

Condivido il feedback di @hellekin e @Thomas_Rother riguardo ai link aziendali. Se questi potessero essere resi opzionali, sarebbe fantastico. Molte persone usano Discourse perché credono nella sovranità digitale, quindi la presenza di questi loghi non è appropriata.

Più importante è la scopribilità della funzionalità. È nascosta nelle preferenze dell’utente, ma sarebbe molto gradita direttamente nella navigazione dell’interfaccia del calendario. Cliccare su “Prossimi eventi” e poi vedere un link per iscriversi sarebbe oro. :1st_place_medal:

2 Mi Piace

Hai la soluzione qui

1 Mi Piace