# 📅 Supporta il feed iCal in Discourse Calendar Plugin (Importa da URL .ics)

**URL:** https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245
**Category:** Feature
**Tags:** events
**Created:** [28 Luglio 2025, 6:34pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245 "2025-07-28T18:34:25Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [28 Luglio 2025, 6:34pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/1 "2025-07-28T18:34:25Z")

</div>

Ho ricostruito con successo la mia istanza Discourse🥲

* * *

Il plugin ufficiale `discourse-calendar` di Discourse supporta già l’esportazione in formato `.ics`, estremamente utile per condividere eventi di Discourse esternamente. Tuttavia, molte community — in particolare in ambito educativo, governativo o aziendale — si affidano a **feed iCal** esterni per pubblicare informazioni sugli eventi (ad esempio da Moodle, Office365, Google Calendar o piattaforme CMS istituzionali).

Al momento, **non esiste un modo integrato per _importare o sincronizzare_ da sorgenti `.ics`**. Questo limita l’uso di Discourse come vero e proprio hub di calendari per le community che già pubblicano calendari importanti altrove.

* * *

## ✨ Proposta di Funzionalità

Aggiungere la **sincronizzazione dei feed iCal** (importazione da URL `.ics`) al plugin Discourse Calendar.

### ✅ Funzionalità Principali

- **Configurare un URL di feed `.ics`** per una categoria o un argomento abilitato al calendario.
- **Importare automaticamente gli eventi** nel calendario, corrispondenti al feed `.ics`.
- Specificare un **intervallo di sincronizzazione** (ad esempio, orario, giornaliero) o consentire un pulsante manuale “Sincronizza ora”.
- Utilizzare il campo UID dell’evento per **evitare duplicati** e aggiornare gli eventi modificati in modo pulito.

### 🔧 Configurazioni Opzionali

- Taggare o etichettare gli eventi importati per mostrare la loro origine esterna.
- Scegliere tra:
  - **Sincronizzazione unidirezionale** (esterno → Discourse soltanto),
  - o **sincronizzazione bidirezionale** (la modifica degli eventi sincronizzati all’interno di Discourse ripubblica le modifiche — ambito futuro).

- Supportare **feed `.ics` multipli per calendario** , uniti in un’unica visualizzazione.
- Indicazione visiva che un evento è sincronizzato esternamente (ad esempio, “Sincronizzato da: [outlook.university.edu](http://outlook.university.edu)”).

* * *

## 🧑‍🏫 Casi d’Uso

| Settore | Esempio di Caso d’Uso |
| --- | --- |
| Educazione | Popolare automaticamente i forum degli studenti con date di semestre, orari dei corsi, esami, ecc. |
| Governo | Sincronizzare eventi ufficiali da CMS o intranet a un calendario della community pubblica |
| Aziende | Rispecchiare calendari di riunioni interne (da Outlook o Google Calendar) |
| Forum Eventi | Integrare elenchi di relatori o calendari di sessioni da fornitori esterni |

* * *

## 🔐 Sicurezza e Privacy

- I feed del calendario potrebbero supportare l’accesso **pubblico** o **tokenizzato** (ad esempio, URL contenente un token segreto).
- Il supporto per **OAuth2 / Basic Auth** potrebbe essere un miglioramento futuro.

* * *

## 📎 Correlati

- [`discourse-calendar`](https://meta.discourse.org/t/discourse-calendar/97376)
- L’esportazione `.ics` è già supportata — ottimo precedente!
- Esigenza simile discussa in thread più vecchi, ad esempio [qui](https://meta.discourse.org/t/how-to-import-events-from-ical-into-calendar-plugin/212214)

* * *

## 🔄 Compatibilità

Questa funzionalità **non richiederebbe `discourse-events`** (ora deprecato) e funzionerebbe nativamente con la sintassi esistente di Discourse Calendar (`[calendar]` e `[event]`). Gli utenti potrebbero ancora creare eventi nativi di Discourse manualmente — la sincronizzazione iCal _aumenterebbe_ semplicemente questi calendari.

* * *

Mi piacerebbe sapere se questa funzionalità è già in roadmap — o se altri nella community la troverebbero utile.

Grazie!

---

<div class="post-metadata">

### Author: ![Halden42](https://avatars.discourse-cdn.com/v4/letter/h/e0b2c6/32.png) [@Halden42](https://meta.discourse.org/u/Halden42)
#### Post date: [30 Luglio 2025, 4:33pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/2 "2025-07-30T16:33:20Z")

</div>

@Ethsim2 Questa sarebbe una funzionalità enorme e ho approfondito la fattibilità ora che Discourse sta passando a FullCalendar.

[@sam](https://meta.discourse.org/u/sam) ha recentemente collegato direttamente a [fullcalendar.io](https://fullcalendar.io/), e si scopre che FullCalendar ora ha un **supporto di prima classe per i feed `.ics`** tramite il suo sistema di plugin ufficiale, quindi il lavoro più pesante è già svolto dalla libreria.

* * *

## 🚀 Proposta: Abilitare la sincronizzazione dei feed `.ics` utilizzando il supporto nativo di FullCalendar

Con l’imminente integrazione di FullCalendar v6 in Discourse, le basi sono pronte per supportare questa funzionalità in modo nativo.

Il plugin di FullCalendar `@fullcalendar/icalendar` (con `ical.js` sotto il cofano) consente di caricare feed `.ics` pubblici in questo modo:

```js
new Calendar(calendarEl, {
  plugins: [dayGridPlugin, iCalendarPlugin],
  events: {
    url: 'https://example.com/my-calendar.ics',
    format: 'ics'
  }
});

```

Tutto ciò che serve per visualizzare un feed iCal remoto nell’interfaccia utente del calendario: nessuna analisi personalizzata, solo plug-and-play.

* * *

## 🛠 Passaggi di implementazione suggeriti per Discourse

1. Aggiungere `@fullcalendar/icalendar` e `ical.js` al plugin (una volta che FullCalendar v6 sarà completamente integrato).
2. Aggiungere un’impostazione admin/plugin (o un’opzione per categoria) per inserire uno o più URL `.ics`.
3. Sul lato client, visualizzare il feed nella vista calendario.
4. (Opzionale) Implementare la sincronizzazione lato server che:
  - Recupera periodicamente il feed
  - Analizza eventi nuovi/aggiornati
  - Crea o aggiorna argomenti Discourse associati

* * *

## 🔄 Frequenza di sincronizzazione

È importante notare che la gestione predefinita dei `.ics` di FullCalendar recupera il feed solo **al caricamento iniziale del calendario** nel browser. Ciò significa:

- Non c’è un aggiornamento giornaliero o automatico.
- Gli utenti vedranno una copia obsoleta a meno che non ricarichino o attivino manualmente un aggiornamento.
- Non c’è persistenza: se un utente naviga altrove, i dati del feed vengono persi.

Per rendere questa funzionalità veramente utile, Discourse dovrebbe idealmente:

- Eseguire un **job Sidekiq** giornaliero (o pianificato) che recupera il feed lato server.
- Memorizzare nella cache gli eventi analizzati per una visualizzazione coerente tra gli utenti.
- Collegare facoltativamente gli eventi agli argomenti o crearne di nuovi per una piena integrazione.

Ciò consentirebbe un comportamento di sincronizzazione corretto e riporterebbe in vita una funzionalità chiave precedentemente gestita dal [plugin di Angus](https://meta.discourse.org/t/events-plugin/69776/880?u=halden42), ma utilizzando una base pulita e manutenibile.

* * *

## ✅ Vantaggi

- Integra perfettamente i feed `.ics` da Google Calendar, Outlook, iCal, ecc.
- Rende Discourse un _consumatore_ di calendari, non solo un esportatore.
- Ottimo per forum comunitari, gruppi di studenti, eventi civici, ecc.
- Costruito interamente su funzionalità FullCalendar supportate: JavaScript personalizzato minimo necessario.

* * *

Mi piacerebbe vedere questa funzionalità implementata ora che il plugin del calendario sta ricevendo nuovamente attenzione. Sono felice di aiutare a testarla o a contribuire a una proof-of-concept.

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [30 Luglio 2025, 4:55pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/3 "2025-07-30T16:55:13Z")

</div>

Mi dispiace @Halden42 ma sono un po’ confuso riguardo al tuo post.

Capisco che Discourse stia “riparando le fondamenta” del sistema di calendario con l’aggiornamento di FullCalendar, ma sono preoccupato per quanto tempo mi ci vorrebbe per popolare manualmente un calendario fitto di appuntamenti. Uso l’interfaccia grafica di Discourse ogni giorno per tutto, e dover duplicare contenuti al di fuori dell’interfaccia non è un’opzione.

Ho notato che hai menzionato una funzionalità che mi manca molto dal plugin di Angus, che credo colga il punto principale della sincronizzazione degli eventi in Discourse:

> [@Halden42](#):
>
> collegare eventi a argomenti o crearne di nuovi

Questa parte sarebbe essenziale per il mio caso d’uso.

Ma sono preoccupato perché non sei entrato nei dettagli su come ciò potrebbe essere implementato. Potresti spiegare come apparirebbe in pratica? Discourse creerebbe un argomento per ogni evento? Supporterebbe aggiornamenti o eliminazioni se il calendario di origine cambia?

Questa è la parte su cui dovrei fare più affidamento, e non sono ancora sicuro di quanto ci siamo vicini.

Grazie ancora per la tua risposta dettagliata.

---

<div class="post-metadata">

### Author: ![Halden42](https://avatars.discourse-cdn.com/v4/letter/h/e0b2c6/32.png) [@Halden42](https://meta.discourse.org/u/Halden42)
#### Post date: [30 Luglio 2025, 5:02pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/4 "2025-07-30T17:02:16Z")

</div>

Grazie @Ethsim2 — è un ottimo seguito e penso che la tua preoccupazione sia esattamente quella giusta: non si tratta solo di _visualizzare_ eventi da un feed `.ics`, ma di _incorporarli_ in Discourse in modo utile e tracciabile.

Quando ho detto “collegare eventi agli argomenti o crearne di nuovi”, immaginavo una configurazione simile a come funzionava il plugin di Angus — dove ogni evento nel feed corrisponderebbe a un argomento su Discourse e gli aggiornamenti al feed si rifletterebbero nell’argomento nel tempo.

* * *

Al momento, FullCalendar da solo non memorizza gli eventi — li visualizza solo dal feed al caricamento della pagina. Quindi, se un evento scompare dal feed (cioè è stato cancellato o eliminato esternamente), semplicemente scompare silenziosamente dall’interfaccia del calendario.

Ma questo non è abbastanza buono per la maggior parte dei flussi di lavoro basati su forum, specialmente dove i post degli eventi vengono utilizzati per discussioni, RSVP o annunci.

* * *

### Ecco cosa proporrei per questo:

Invece di rimuovere l’argomento quando un evento scompare dal feed, Discourse potrebbe:

- **Mantenere l’argomento al suo posto**
- Aggiungere una riga in cima come:  
`⚠️ Questo evento è stato cancellato o rimosso dal calendario di origine.`
- Opzionalmente bloccare o rimuovere l’argomento dall’elenco, a seconda delle preferenze dell’amministratore

Ciò preservarebbe il contesto, consentirebbe risposte e renderebbe visibile la cancellazione — senza eliminare nulla. Tecnicamente, questo è abbastanza fattibile: basterebbe segnalare che l’`UID` non esiste più nel file `.ics` e aggiornare lo stato dell’argomento corrispondente.

* * *

Quindi sì — mentre FullCalendar da solo non gestisce questo stato, **Discourse potrebbe gestirlo** a livello di sincronizzazione. Il processo che recupera il feed (ad esempio, tramite Sidekiq) terrebbe traccia di quali eventi esistevano in precedenza e non esistono più, e contrassegnerebbe di conseguenza l’argomento corrispondente.

Se abbastanza persone fossero interessate a questo, penso che potremmo sviluppare una specifica adeguata. Non sarebbe difficile creare un prototipo.

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [30 Luglio 2025, 5:59pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/5 "2025-07-30T17:59:25Z")

</div>

Grazie per la risposta ponderata @Halden42 — questo chiarisce molto.

Ciò che hai descritto qui…

> [@Halden42](#):
>
> Quando ho detto “collega eventi a argomenti o creane di nuovi”, ho immaginato una configurazione simile a come funzionava il plugin di Angus — dove ogni evento nel feed corrispondeva a un argomento su Discourse, e gli aggiornamenti al feed si riflettevano nell’argomento nel tempo.

…è esattamente il caso d’uso principale che ho cercato di recuperare da quando ho abbandonato il plugin di Angus. Per me, la parte più critica non è solo la visualizzazione degli eventi, ma la sincronizzazione di un calendario esterno live nel forum, dove ogni evento ha un argomento e le modifiche a quell’evento (ad es. cancellazione, riprogrammazione) si riflettono in quell’argomento nel tempo.

Sarei felice di iniziare con un modello di sincronizzazione unidirezionale — di sola lettura da .ics a Discourse — e anche solo un rilevamento di base degli aggiornamenti coprirebbe il 90% dei miei casi d’uso. Uno stato “cancellato” visualizzato nell’argomento dell’evento se viene rimosso dal feed sarebbe ideale, piuttosto che eliminare l’argomento del tutto.

Se c’è un posto preferito dove proporre una specifica per questo — magari una volta che l’aggiornamento di FullCalendar si stabilizza — sarei molto interessato a contribuire o testare.

Grazie ancora.

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [30 Luglio 2025, 6:32pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/6 "2025-07-30T18:32:30Z")

</div>

Manteniamo diversi calendari di Office 365 — ognuno con il proprio feed `.ics` — per diversi tipi di riunioni: Comitato Esecutivo, Sessioni di Coinvolgimento Pubblico, Gruppi di Lavoro Interni, e così via. Questi feed sono già ben strutturati e regolarmente mantenuti da impiegati e team amministrativi.

Ciò di cui abbiamo urgentemente bisogno è un modo per:

- Iscriversi a diversi feed `.ics` per categoria (ad esempio, un feed per tipo di riunione)
- Creare automaticamente un nuovo argomento nella **categoria Discourse** corrispondente
- Validare che l’argomento finisca nella **categoria corretta** , simile a come il plugin di Angus ci permetteva di filtrare per tag o altri metadati
- Riflettere le modifiche (ora, titolo) nell’argomento se l’evento del calendario viene aggiornato
- Opzionalmente segnalare o chiudere l’argomento se l’evento viene cancellato o rimosso dal feed

Per consigli come il nostro, le categorie vengono utilizzate per gestire la visibilità granulare — alcune riunioni sono private (ad esempio, esecutive o di pianificazione), altre sono pubbliche. Un argomento archiviato in modo errato potrebbe comportare l’esposizione di dati sensibili, quindi la validazione a livello di categoria è un must.

Ci piacerebbe vedere qualcosa di simile supportato ufficialmente nel prossimo overhaul di FullCalendar. Ridurrebbe significativamente il lavoro manuale e renderebbe Discourse molto più valido come unica fonte di verità per il coordinamento e la trasparenza delle riunioni.

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [30 Luglio 2025, 7:30pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/7 "2025-07-30T19:30:01Z")

</div>

Sono uno studente di farmacia negli Stati Uniti e la nostra università fornisce tutti i nostri orari di rotazione, esami e pratiche attraverso un portale del calendario. Gli URL dei feed non terminano con `.ics`, ma quando li apro in Chrome, scaricano immediatamente un file `.ics` valido. Quindi sono sicuramente feed iCal standard, solo con una struttura URL diversa.

Fino a poco tempo fa, utilizzavo il plugin di Angus, e gestiva questi feed perfettamente. Ogni evento generava un argomento e potevo instradare feed diversi in categorie diverse (ad esempio, “Terapeutica”, “Rotazioni”, “Esami”), il che aiutava il nostro gruppo di studio a rimanere organizzato.

Ma da quando il recente errore `this.router` ha interrotto il plugin, ho dovuto disabilitarlo - come Ethsim2 - e ora non c’è un modo semplice per mantenere sincronizzato il nostro calendario.

Se il plugin ufficiale potesse supportare:

- Feed `.ics` in entrata (anche se l’URL non termina con `.ics`)
- Creazione di argomenti con targeting per categoria
- Configurazione specifica del feed (ad esempio, un feed → una categoria)
- Rilevamento degli aggiornamenti e gestione opzionale dell’annullamento degli eventi

…renderebbe Discourse uno strumento potente per la collaborazione accademica. Funzionava perfettamente per noi prima che il plugin si rompesse, quindi mi piacerebbe vedere questa funzionalità implementata nativamente.

Sono felice di condividere un URL di calendario di esempio privatamente se questo aiuta con i test.

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [30 Luglio 2025, 7:41pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/8 "2025-07-30T19:41:36Z")

</div>

> [@Ethsim2](#):
>
> Feed `.ics` in entrata (anche se l’URL non termina con `.ics`)

questo vale anche per Office 365, capisco che molte università negli Stati Uniti utilizzino quell’ecosistema

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [30 Luglio 2025, 7:59pm UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/9 "2025-07-30T19:59:26Z")

</div>

sì uso quell’ecosistema 👍

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [14 Settembre 2025, 10:01am UTC](https://meta.discourse.org/t/support-ical-feed-sync-in-discourse-calendar-plugin-import-from-ics-urls/376245/10 "2025-09-14T10:01:27Z")

</div>

non in elenco perché originariamente si trattava di un utente e dei suoi sockpuppet. ma gli account sono stati uniti e ora l’argomento è confuso poiché l’utente sembra postare avanti e indietro con se stesso.
