digitalfabrik / integreat-cms

Simplified content management back end for the Integreat App - a multilingual information platform for newcomers
https://digitalfabrik.github.io/integreat-cms/
Apache License 2.0
55 stars 33 forks source link

Events: iCal subscription #100

Open svenseeberg opened 5 years ago

svenseeberg commented 5 years ago

Motivation

Municipalities are using calendars for events in their region. Until now they have been creating events twice, once in their calendar and then again in our CMS. This has been tedious for them.

Proposed Solution

Enable subscribing to external iCal calendars. With this we mean, we want to

Alternatives

None

User Story

As a municipality I want to show my events in my municipality calendar and in the Integreat CMS without needing to create them twice so that users have (multi-lingual) information about the events on both the municipality's website and Integreat

Additional Context

There are two steps for it:

  1. Get the iCal events and display them only in German
  2. Support MT for them (most probably this is going to be another issue and PR)

Design Requirements

None, as this will include no UI

dkehne commented 9 months ago

This issue becomes more and more interesting due to the feedback of e.g. Saarbrücken, Regensburg and some others who already want to use their city-calendars to be (partly) imported into Integreat.

JoeyStk commented 3 months ago

My idea for this feature would be the following:

  1. Add an import section for events, similarly to the section we have for XLIFF import for pages grafik
  2. After clicking importing you get a preview on how the data would be imported, again similarly to how we do it for XLIFF import
  3. After checking if everything looks good, you can confirm and the import starts

Do you have any objections to this workflow or did I forget something?

After taking a look at a few examples for iCal files, I saw that also locations can be filled in. So I assume that other than creating new events also new POIs should be created, if necessary, right?

@osmers & @hauf-toni Do you have any objections?

osmers commented 3 months ago

@JoeyStk I like the workflow - easy enough. Question: location is compulsory for creating an event - if the ical does not have location information, what would happen? And yes to your question - if location data is filled in, a new poi should be created. But there should be a step that checks, whether a poi at that location already exists, right?

JoeyStk commented 3 months ago

if the ical does not have location information, what would happen?

Good question, I think we should take the time to think about these things. I would say the import is rejected then, the user is redirected to the event list view and told via a message that they can't import an event that doesn't have a location either a new one or an existing one

if location data is filled in, a new poi should be created

I need to double check then if iCal provides all the necessary details that we need to create a POI. Do we have some test iCal data (ideally by municipalities) so I can get a feeling on the quality of the files?

But there should be a step that checks, whether a poi at that location already exists, right?

Yes, but at least I'm a bit worried right now that this check might be flaky. This is going to be something on the more technical side to think about

PeterNerlich commented 3 months ago

This might require more intricate design of the workflow we want the user to experience

svenseeberg commented 3 months ago
  1. Add an import section for events, similarly to the section we have for XLIFF import for pages

Actually the idea was to subscribe to an iCal feed that is frequently fetched an all events updated. A onetime import is not really helpful AFAICT. This means we need to store the source ID of the event to be able to update previously imported events. Also, we need a "source" field in the model. If an event does not exist in a source anymore, it has been removed.

I would say the import is rejected then,

Agreed, events with incomplete data will simply be ignored.

dkehne commented 2 months ago

"Actually the idea was to subscribe to an iCal feed that is frequently fetched an all events updated. A onetime import is not really helpful AFAICT. This means we need to store the source ID of the event to be able to update previously imported events. Also, we need a "source" field in the model. If an event does not exist in a source anymore, it has been removed."

--> i completly agree on Sven.

I don't want to talk about the solution but we could also think about some kind of input-field where you can add all the ical-URls separated by semikolon which you want to be imported. This could also be part of the region-settings so that only we as admins can maintain that.

1st horizon: synchronize the events from external sources and show them in german in all languages 2nd horizon: enable some kind of automatic-translation of all new or updated events occuring (should be also part of the MT settings)

I can imagine that we might need event-objects in the CMS to enable a correct sorting of events (internal and external events) but i would not give the cms users the ability to modify/change those events.

david-venhoff commented 1 month ago

This issue becomes more and more interesting due to the feedback of e.g. Saarbrücken, Regensburg and some others who already want to use their city-calendars to be (partly) imported into Integreat.

@dkehne Could you try to reach out to Saarbrücken or Regensburg if they can provide us with their .ics calendar file? I think it could be helpful if we can test this with their data before we release this feature.

dkehne commented 1 month ago

@david-venhoff regensburg/saarbrücken currently cannot deliver an .ics file. i have ask other municipalities.

dkehne commented 1 month ago

I got one here @david-venhoff https://www.saarburg.de/kalender