diff --git a/_data/event-links.yml b/_data/event-links.yml index 51b6db68e..63cf4f226 100644 --- a/_data/event-links.yml +++ b/_data/event-links.yml @@ -1,8 +1,8 @@ # used for event layout -- key: ICS +- key: calendar-path icon: calendar-plus text: events.links.add-calendar - url: /events.ics + url: https://calendar.antennapod.org/ - key: more-information icon: external-link-square-alt text: events.links.more-information @@ -10,7 +10,7 @@ - key: meeting-room icon: headset text: events.links.open-meeting - url: + url: https://meet.antennapod.org/ - key: blog-post icon: newspaper text: events.links.open-blog @@ -22,4 +22,4 @@ - key: location icon: map text: events.links.open-map - url: https://www.openstreetmap.org/relation/ + url: https://www.openstreetmap.org/ diff --git a/_data/ics-timezones.yml b/_data/ics-timezones.yml deleted file mode 100644 index fcc60916c..000000000 --- a/_data/ics-timezones.yml +++ /dev/null @@ -1,16 +0,0 @@ -# used for ics file -Europe/Brussels: |- - BEGIN:DAYLIGHT - TZOFFSETFROM:+0100 - TZOFFSETTO:+0200 - TZNAME:CEST - DTSTART:19700329T020000 - RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU - END:DAYLIGHT - BEGIN:STANDARD - TZOFFSETFROM:+0200 - TZOFFSETTO:+0100 - TZNAME:CET - DTSTART:19701025T030000 - RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU - END:STANDARD diff --git a/_events/0_A meeting template.md b/_events/0_A meeting template.md index 7b5ce81a4..528808343 100644 --- a/_events/0_A meeting template.md +++ b/_events/0_A meeting template.md @@ -1,49 +1,37 @@ --- title: Awesome get-together on topic X 😎 -# Required. Displayed both on the event detail page and in the ICS calendar event. -summary: -# Required. Displayed on the Events overview page. -image: -# Optional. Displayed on Events overview page and the event detail page. -permalink: -# Optional. "/events/:slug" recommended for recurring events, to avoid that the event gets a date-based URL. -uid: -# Required. Don't edit after publishing. Get one here: https://www.random.org/strings/?num=1&len=20&digits=on&upperalpha=on&unique=on&format=html&rnd=new -sequence: -# Optional. Defaults to 0 if left empty. Should be increased with 1 on every big event edit. -timezone: -# Optional. Timezone used for the event. If not specified, UTC will be used. View & add timezones in _data/ics-timezones.yml -datetime-start: -# Required. Format: yyyy-mm-dd hh:mm. To find the meeting time in UTC, use https://www.timeanddate.com/worldclock/converter.html?p1=1440 -datetime-end: -# Required. Format: yyyy-mm-dd hh:mm. If recurring, this end time is applied also to all occurrences of the generated recurrence set +# Required. Displayed on the event detail page. recurring: # Optional. Can be "yes" recurrence-text: # Required if "recurring: yes". Displayed on Events overview page and the event detail page. View & add strings in _i18n/en.yml -recurrence-rule: -# Required if "recurring: yes". iCAL recurrence rule. Create recurrence rule here: https://icalendar.org/rrule-tool.html -# If used, the UNTIL rule part MUST be specified as a date with UTC time. -recurrence-exceptions: -# Optional. List of dates on which the event is not taking place. Put starting dates that match the recurrence pattern. Time of original meeting will be used & cancelled. Format: -# - yyyy-mm-dd -# - yyyy-mm-dd -recurrence-additions: -# List of date-times on which the event is additionally taking place. Format: -# - start: yyyy-mm-dd hh:mm -# end: yyyy-mm-dd hh:mm -# - start: yyyy-mm-dd hh:mm -# end: yyyy-mm-dd hh:mm +datetime-start: +# Required. Format: yyyy-mm-dd hh:mm. To find the meeting time in UTC, use https://www.timeanddate.com/worldclock/converter.html?p1=1440 +timezone: +# Optional. Timezone used for the event (e.g. Europe/Brussels). If not specified, UTC will be used. Used to complement the time HTML tag on the event page. +summary: +# Required. Displayed on the Events overview page. +image: +# Optional. Displayed on Events overview page and the event detail page. location: -# Required. Must be an osm.org relation ID or the text 'online'. -location-label: -# Recommended. Human-readable description of the location (e.g. address) for ICS. If not provided, link to meeting-room or to OSM will be used. -more-information: -# Optional. Must be a URL. +# Required. Must be an osm.org type + ID (e.g. node/13473395006) or the text 'online'. + +# Links on the events page: meeting-room: # Optional. Must be a URL. Link displayed on event page if "location: online". +more-information: +# Optional. Must be a URL. blog-post: # Optional. Must be the path of the blog post, starting with the year (e.g. 2022/10/translation-coordinator). +recording: +# Optional. Must be a URL. + +# Calendar links: +calendar-path: +# Required for recurring events. Path under https://calendar.antennapod.org, for example "community-call". +uid: +# Required for one-off events. Davis/Sabre event UID used to build the direct .ics download URL. + --- -Event description goes here. Displayed on the event detail page, and used for the body of the ICS calendar event. +Event description goes here. Displayed on the event detail page. diff --git a/_events/2022-07-22-10 year anniversary.md b/_events/2022-07-22-10 year anniversary.md index 776e3e983..afc4e6c54 100644 --- a/_events/2022-07-22-10 year anniversary.md +++ b/_events/2022-07-22-10 year anniversary.md @@ -1,13 +1,13 @@ --- title: 10 Year anniversary 🎉 -uid: c9c773d2-8106-4075-89b6-e071a1daedeb timezone: Europe/Brussels datetime-start: 2022-07-22 18:00 datetime-end: 2022-07-22 19:00 recurring: no location: online more-information: https://forum.antennapod.org/t/antennapod-10-years-anniversary-call-friday-at-18-00-6-pm-cest/2184 -meeting-room: https://meet.antennapod.org/10YearsAnniversary +meeting-room: 10YearsAnniversary +uid: c9c773d2-8106-4075-89b6-e071a1daedeb --- AntennaPod’s very first release was on 2012-07-22. This is also when the app was first uploaded to Google Play. AntennaPod is turning a decade old! diff --git a/_events/2026-01-31-fosdem.md b/_events/2026-01-31-fosdem.md index 6842d983e..ee301373b 100644 --- a/_events/2026-01-31-fosdem.md +++ b/_events/2026-01-31-fosdem.md @@ -1,13 +1,13 @@ --- title: FOSDEM meetup -uid: d9342ce0-e029-4fe4-805a-50fda92d2f4f +uid: 9223c695-e382-4ad5-9340-856388138ab3 timezone: Europe/Brussels datetime-start: 2026-01-31 19:30 -datetime-end: 2026-01-31 21:30 recurring: no more-information: https://forum.antennapod.org/t/antennapod-fosdem-2026/7923 image: brussels.jpg blog-post: 2026/02/fosdem +location: node/13473395006 --- Some core AntennaPod contributors plan to join the [FOSDEM](https://fosdem.org/2026/) conference in Brussels from the 31th of January to the 1st of February. We plan to grab some drinks together on Saturday at 19:30. To join, please leave a post on [our forum](https://forum.antennapod.org/t/antennapod-fosdem-2026/7923). diff --git a/_events/community-call.md b/_events/community-call.md new file mode 100644 index 000000000..684a6130c --- /dev/null +++ b/_events/community-call.md @@ -0,0 +1,15 @@ +--- +title: Monthly community call ☎ 🎙 +summary: Our monthly call to discuss anything AntennaPod (and beyond). Join us! +uid: 0718779a-5b92-48df-87e3-801e02154c06 +calendar-path: community-call +timezone: Europe/Brussels +datetime-start: 2022-04-09 18:00 +recurring: yes +recurrence-text: every-2nd-saturday +location: online +more-information: https://forum.antennapod.org/t/monthly-community-call/1869 +meeting-room: community-call +--- + +{% tf "events/{{ page.slug }}.md" %} diff --git a/_events/community-meeting.md b/_events/community-meeting.md deleted file mode 100644 index 5c5377132..000000000 --- a/_events/community-meeting.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Monthly community meeting ☎ 🎙 -summary: Our monthly meeting to discuss anything AntennaPod. Join us! -permalink: /events/:slug -uid: 0fc58c3c-517f-4467-b0e3-7e036cf1420c -sequence: 4 -timezone: Europe/Brussels -datetime-start: 2022-04-09 18:00 -datetime-end: 2022-04-09 19:00 -recurring: yes -recurrence-text: every-2nd-saturday -recurrence-rule: FREQ=MONTHLY;BYDAY=SA;BYSETPOS=2 -recurrence-exceptions: -- 2022-10-08 -- 2023-06-10 -- 2023-07-08 -- 2023-08-12 -- 2023-09-09 -- 2024-08-10 -- 2025-11-08 -recurrence-additions: -- start: 2022-10-22 16:00 - end: 2022-10-22 17:00 -- start: 2023-06-17 18:00 - end: 2023-06-17 19:00 -- start: 2023-09-21 18:00 - end: 2023-09-21 19:00 -location: online -location-label: AntennaPod's Jitsi Meet -more-information: https://forum.antennapod.org/t/monthly-community-call/1869 -meeting-room: https://meet.antennapod.org/CommunityCall ---- - -{% tf "events/{{ page.slug }}.md" %} diff --git a/_events/needs-decision.md b/_events/needs-decision.md index 695a56e6b..aaf1169e5 100644 --- a/_events/needs-decision.md +++ b/_events/needs-decision.md @@ -1,27 +1,15 @@ --- title: "Needs: Decision - AntennaPod UX discussions" summary: A bi-weekly meeting where core contributors discuss feature requests & make tough choices. -permalink: /events/:slug -uid: TDL9-28GB-50YV-P6X4-D48Y -sequence: -# Optional. Defaults to 0 if left empty. Should be increased with 1 on every big event edit. +uid: dcb8867b-32a2-493f-8a43-60ff885028ed +calendar-path: needs-decision timezone: Europe/Brussels datetime-start: 2024-02-14 20:30 -datetime-end: 2024-02-14 21:30 recurring: yes recurrence-text: 2nd-4th-wednesday -recurrence-rule: FREQ=WEEKLY;INTERVAL=2;BYDAY=WE -recurrence-exceptions: -- 2024-07-02 -recurrence-additions: -# List of date-times on which the event is additionally taking place. -- start: 2023-12-28 21:00 - end: 2023-12-28 22:30 -- start: 2024-07-10 21:00 - end: 2024-07-10 22:30 location: online more-information: https://github.com/AntennaPod/AntennaPod/issues?q=state%3Aopen%20label%3A%22Needs%3A%20Decision%22 -meeting-room: https://meet.antennapod.org/needsdecision +meeting-room: needs-decision --- We are very careful about AntennaPod's User Experience (UX). The [project's goal](/about) here is to balance simplicity with feature-richness. Sometimes that requires some hard thinking on how to implement a feature request. diff --git a/_i18n/en.yml b/_i18n/en.yml index f7d100066..0d8472de5 100644 --- a/_i18n/en.yml +++ b/_i18n/en.yml @@ -292,8 +292,9 @@ events: upcoming-events: "Upcoming Events" past-events: "Past Events" download-ics: "Download ICS file" - copy-url: "Copy calendar URL" - announce-add-calendar: "Always want to have the latest events and update community call information at hand? Then subscribe to our calendar in your favorite app via the 'Add to calendar' link!" + subscribe-event: "Copy event URL" + subscribe-all: "Copy URL for all events" + announce-add-calendar: "Always want to have the most up-to-date event information at hand? Subscribe to our calendar in your favorite app via the 'Add to calendar' link!" links: add-calendar: "Add to calendar" more-information: "More information" diff --git a/_i18n/en/events/community-call.md b/_i18n/en/events/community-call.md new file mode 100644 index 000000000..c285950b7 --- /dev/null +++ b/_i18n/en/events/community-call.md @@ -0,0 +1,3 @@ +Every month we meet to discuss anything related to AntennaPod. From feature and enhancement suggestions by contributors, via usability questions and donation expense proposals, to branding updates. + +We’ll discuss and announce the next topics, and report back on what we discussed on the forum. \ No newline at end of file diff --git a/_i18n/en/events/community-meeting.md b/_i18n/en/events/community-meeting.md deleted file mode 100644 index 5095ed2a4..000000000 --- a/_i18n/en/events/community-meeting.md +++ /dev/null @@ -1,3 +0,0 @@ -Every month we meet to discuss anything related to AntennaPod. From feature and enhancement suggestions by contributors, via usability questions and donation expense proposals, to branding updates. - -We’ll discuss and announce the next topics, and report back on what we discussed on the forum. Do you want to receive a notification every now and then about the community calls? Then join the ['community callers' group on the forum](https://forum.antennapod.org/g/community-callers). The group will be tagged before and after the meetings, so you'll get a ping at each relevant update. diff --git a/_i18n/en/general/event-sidebar.md b/_i18n/en/general/event-sidebar.md index 12b66c121..123d3ccd0 100644 --- a/_i18n/en/general/event-sidebar.md +++ b/_i18n/en/general/event-sidebar.md @@ -6,4 +6,5 @@ Do you know of an event in your neighbourhood and would love to meet up with Ant [Propose a meet-up](https://forum.antennapod.org) -Add our events to your calendar +{% assign calendar_base_url = site.data.event-links | where: 'key', 'calendar-path' | map: 'url' | first %} +Add our events to your calendar \ No newline at end of file diff --git a/_i18n/en/general/events-add-calendar-modal.md b/_i18n/en/general/events-add-calendar-modal.md index 65b6539a3..23d96117e 100644 --- a/_i18n/en/general/events-add-calendar-modal.md +++ b/_i18n/en/general/events-add-calendar-modal.md @@ -1,3 +1 @@ -Always want to have the latest community call dates and times in your calendar? Then copy the URL and add it as a remote calendar in your calendar app. - -Hope to see you! +Want to download the calendar file of this gathering, or subscribe to all our calls and meetings? \ No newline at end of file diff --git a/_includes/ICS-modal.html b/_includes/ICS-modal.html deleted file mode 100644 index ef11a736e..000000000 --- a/_includes/ICS-modal.html +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/_includes/add-to-calendar-modal.html b/_includes/add-to-calendar-modal.html new file mode 100644 index 000000000..d287af691 --- /dev/null +++ b/_includes/add-to-calendar-modal.html @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/_includes/event-link-visible.html b/_includes/event-link-visible.html new file mode 100644 index 000000000..9687df399 --- /dev/null +++ b/_includes/event-link-visible.html @@ -0,0 +1,13 @@ +{%- if page[link.key] or link.key == 'calendar-path' -%} + {%- unless link.key == 'location' and page.location == 'online' -%} + {%- unless link.key == 'meeting-room' and page.location != 'online' -%} + {%- unless link.key == 'meeting-room' and status == 'past' -%} + {%- unless link.key == 'calendar-path' and page.recurring != true and page.uid == nil -%} + {%- unless link.key == 'calendar-path' and status == 'past' -%} + 1 + {%- endunless -%} + {%- endunless -%} + {%- endunless -%} + {%- endunless -%} + {%- endunless -%} +{%- endif -%} \ No newline at end of file diff --git a/_includes/share.html b/_includes/share.html index 8e2abdee6..52878eb4e 100644 --- a/_includes/share.html +++ b/_includes/share.html @@ -1,7 +1,7 @@
{%- assign author = site.data.authors[page.author] %}

{% t generic.share %}

- nowunix %} {% assign status = 'upcoming' %} {% else %} {% assign status = 'past' %} {% endif %} -{% endif %} +{%- endif -%}
@@ -44,30 +52,25 @@

{{ page.title }}

+ {% assign info_counter = 0 %} {% for link in site.data.event-links %} - {% if page[link.key] or link.key == 'ICS' %}{% unless page.location != 'online' and link.key == 'meeting-room' %}{% unless status == 'past' and link.key == 'meeting-room' %}{% unless status == 'past' and link.key == 'ICS' %}{% assign info_counter = info_counter | plus:1 %}{% endunless %}{% endunless %}{% endunless %}{% endif %} + {%- capture link_visibility %}{%- include event-link-visible.html -%}{%- endcapture -%} + {% if link_visibility != '' %} + {% assign info_counter = info_counter | plus: 1 %} + {% endif %} {% endfor %} - {% assign info_counter = info_counter | minus:1 %} - @@ -86,4 +89,4 @@

{{ page.title }}

-{% include ICS-modal.html %} +{% include add-to-calendar-modal.html %} diff --git a/_plugins/recurring_events_permalink.rb b/_plugins/recurring_events_permalink.rb new file mode 100644 index 000000000..367cedd8a --- /dev/null +++ b/_plugins/recurring_events_permalink.rb @@ -0,0 +1,17 @@ +module Jekyll + class RecurringEventsPermalinkGenerator < Generator + safe true + priority :highest + + def generate(site) + events = site.collections['events'] + return unless events + + events.docs.each do |event| + if event.data['recurring'] && !event.data['permalink'] + event.data['permalink'] = '/events/:slug' + end + end + end + end +end \ No newline at end of file diff --git a/_sass/_custom.scss b/_sass/_custom.scss index c86868199..2cd739cb9 100644 --- a/_sass/_custom.scss +++ b/_sass/_custom.scss @@ -624,6 +624,18 @@ blockquote { padding-right: 1rem; } +.event-links-grid > .event-link-item { + border-left: 0; +} + +.event-links-grid > .event-link-item + .event-link-item { + border-left: $border-width solid var(--bs-border-color); +} + +.event-links-grid.row-cols-2 > .event-link-item:nth-child(2n + 1) { + border-left: 0; +} + // Boxes and Cards - Use Bootstrap's .card-img-top for images .project-card { background: var(--bs-tertiary-bg); diff --git a/assets/js/copy-url.js b/assets/js/copy-url.js index 373183631..8dc3a05ee 100644 --- a/assets/js/copy-url.js +++ b/assets/js/copy-url.js @@ -1,9 +1,23 @@ -function copyUrl() { - let url = (event.target.value ==null) ? document.location.href:event.target.value; +function copyUrl(event) { + event?.preventDefault(); + const url = event?.currentTarget?.getAttribute('data-copy-url') + ?? event?.currentTarget?.getAttribute('value') + ?? event?.currentTarget?.value + ?? document.location.href; - navigator.clipboard.writeText(url).then(function() { - console.log('Copied!'); - }, function() { - console.log('Copy error') - }); -}; + if (!navigator.clipboard?.writeText) { + return; + } + + navigator.clipboard.writeText(url) + .then(function() { + const tooltipTrigger = event?.currentTarget; + if (tooltipTrigger?.getAttribute('data-bs-toggle') === 'tooltip' && window.bootstrap?.Tooltip) { + const tooltip = bootstrap.Tooltip.getOrCreateInstance(tooltipTrigger); + tooltip.show(); + } + }) + .catch(function() { + // Clipboard access can fail when permissions are denied. + }); +} diff --git a/events-with-RDATE.ics b/events-with-RDATE.ics deleted file mode 100644 index cc95f5fdd..000000000 --- a/events-with-RDATE.ics +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: null ---- -BEGIN:VCALENDAR -CALSCALE:GREGORIAN -VERSION:2.0 -PRODID:-//AntennaPod//Website events section 0.1//EN -LAST-MODIFIED:{{ 'now' | date: "%Y%m%dT%H%M00Z"}} -NAME:AntennaPod - -{%- assign recurringevents = site.events | sort: 'datetime-start' | reverse | where:"recurring", true %} -{%- assign normalevents = site.events | sort: 'datetime-start' | reverse | where:"recurring", false %} -{%- assign events = recurringevents | concat: normalevents %} - -{%- for event in events -%}{% if event.unlisted != true %} -BEGIN:VEVENT -DTSTAMP:{{ event.datetime-start | date: "%Y%m%dT%H%M00Z" }}{% if event.sequence %} -SEQUENCE:{{ event.sequence }}{% endif %} -UID:{{ event.uid | upcase }} -DTSTART -{%- if event.timezone -%};TZID={{ event.timezone }}{% endif %}: -{{- event.datetime-start | date: "%Y%m%dT%H%M00" }}{% unless event.timezone %}Z{% endunless %} -DTEND -{%- if event.timezone -%};TZID={{ event.timezone }}{% endif %}: -{{- event.datetime-end | date: "%Y%m%dT%H%M00" }}{% unless event.timezone %}Z{% endunless %} -STATUS:CONFIRMED -SUMMARY:{{ event.title }} - -{%- capture description %} -DESCRIPTION: -{{- event.content | remove_last: '

' | replace: '

','\n\n' | strip_html | replace:',','\,' | replace:':','\:' | replace:';','\;' | strip_newlines }} -{%- if event.location == 'online' %}{% if event.location-label %}\n\n{{ event.meeting-room }}{% endif %}{% endif %} -{%- endcapture %} -{%- assign description = description | replace: '\n\n\n\n','\n\n' %} - -{%- assign descriptionChars = description.size %} -{%- assign descriptionTotalRows = descriptionChars | divided_by: 74.00 | ceil %} -{%- assign descriptionChars = descriptionChars | plus: descriptionTotalRows %} -{%- assign descriptionTotalRows = descriptionChars | divided_by: 74.00 | ceil %} -{%- assign descriptionChars = descriptionChars | minus: descriptionTotalRows %} -{%- assign start = 0 %} -{%- assign separator = '\||/' %} -{%- assign descriptionWorker = '' %} - -{%- for rowToBe in (1..descriptionTotalRows) %} - {%- if descriptionChars <= 74 %} - {%- assign descriptionWorker = description %} - {%- break %} - {%- else %} - {%- assign descriptionRow = description | slice: start, 73 | prepend: ' ' | append: separator %} - {%- assign descriptionWorker = descriptionWorker | append: descriptionRow %} - {%- assign start = start | plus: 73 %} - {%- endif %} -{%- endfor %} - -{%- if descriptionChars > 74 %} - {%- assign descriptionWorker = descriptionWorker | lstrip %} - {%- assign lastChar = descriptionWorker.size | minus: separator.size %} - {%- assign descriptionWorker = descriptionWorker | slice: 0, lastChar %} - {%- assign descriptionArray = descriptionWorker | split: separator %} -{%- endif %} - -{%- for descriptionLine in descriptionArray %} -{{ descriptionLine }} -{%- endfor %} -LOCATION:{% if event.location-label %}{{ event.location-label }} -{%- elsif event.location == 'online' %}{{ event.meeting-room }} -{%- else %}{{ site.data.event-links[location].url }}{{ event.location }} -{%- endif %}{% if event.location == 'online' %} -URL:{{ event.meeting-room }} -CONFERENCE:{{ event.meeting-room }} -{%- endif %}{% if event.recurring == true %} -RRULE:{{ event.recurrence-rule -}} -{%- endif %}{% if event.recurrence-exceptions %} -EXDATE -{%- if event.timezone -%};TZID={{ event.timezone }}{% endif %}: -{%- for exception in event.recurrence-exceptions %} -{{- exception | date: "%Y%m%d" }}T{{ event.datetime-start | date: "%H%M00" }}{% unless event.timezone %}Z{% endunless %} -{%- unless forloop.last %},{% endunless %} -{%- endfor -%} -{%- endif %}{% if event.recurrence-additions %} -RDATE;VALUE=PERIOD -{%- if event.timezone -%};TZID={{ event.timezone }}{% endif %}: -{%- for extra-occurrence in event.recurrence-additions %} -{{- extra-occurrence.start | date: "%Y%m%dT%H%M00" }}{% unless event.timezone %}Z{% endunless %}/ -{{- extra-occurrence.end | date: "%Y%m%dT%H%M00" }}{% unless event.timezone %}Z{% endunless %} -{%- unless forloop.last %},{% endunless %} -{%- endfor -%} -{%- endif %} -END:VEVENT -{%- endif %} -{%- endfor %}{%- for timezone in site.data.ics-timezones %} -BEGIN:VTIMEZONE -TZID:{{ timezone[0] }} -{%- comment %} Following is unfortunately necessary to ensure that CRLF is used for EOL, as Jekyll uses LF when printing an array value in build process on Unix machine {% endcomment %} -{%- assign timezoneDefinitionArray = timezone[1] | split: ' ' %} -{%- for definitionLine in timezoneDefinitionArray %} -{{ definitionLine }} -{%- endfor %} -END:VTIMEZONE -{%- endfor %} -END:VCALENDAR diff --git a/events.ics b/events.ics deleted file mode 100644 index a4ee19f88..000000000 --- a/events.ics +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: null ---- -BEGIN:VCALENDAR -CALSCALE:GREGORIAN -VERSION:2.0 -PRODID:-//AntennaPod//Website events section 0.1//EN -LAST-MODIFIED:{{ 'now' | date: "%Y%m%dT%H%M00Z"}} -NAME:AntennaPod - -{%- assign recurringevents = site.events | sort: 'datetime-start' | reverse | where:"recurring", true %} -{%- assign normalevents = site.events | sort: 'datetime-start' | reverse | where:"recurring", false %} -{%- assign events = recurringevents | concat: normalevents %} - -{%- for event in events -%}{% if event.unlisted != true %} -BEGIN:VEVENT -DTSTAMP:{{ event.datetime-start | date: "%Y%m%dT%H%M00Z" }}{% if event.sequence %} -SEQUENCE:{{ event.sequence }}{% endif %} -UID:{{ event.uid | upcase }} -DTSTART -{%- if event.timezone -%};TZID={{ event.timezone }}{% endif %}: -{{- event.datetime-start | date: "%Y%m%dT%H%M00" }}{% unless event.timezone %}Z{% endunless %} -DTEND -{%- if event.timezone -%};TZID={{ event.timezone }}{% endif %}: -{{- event.datetime-end | date: "%Y%m%dT%H%M00" }}{% unless event.timezone %}Z{% endunless %} -STATUS:CONFIRMED -SUMMARY:{{ event.title }} - -{%- capture description %} -DESCRIPTION: -{{- event.content | remove_last: '

' | replace: '

','\n\n' | strip_html | replace:',','\,' | replace:':','\:' | replace:';','\;' | strip_newlines }} -{%- if event.location == 'online' %}{% if event.location-label %}\n\n{{ event.meeting-room }}{% endif %}{% endif %} -{%- endcapture %} -{%- assign description = description | replace: '\n\n\n\n','\n\n' %} - -{%- assign descriptionChars = description.size %} -{%- assign descriptionTotalRows = descriptionChars | divided_by: 74.00 | ceil %} -{%- assign descriptionChars = descriptionChars | plus: descriptionTotalRows %} -{%- assign descriptionTotalRows = descriptionChars | divided_by: 74.00 | ceil %} -{%- assign descriptionChars = descriptionChars | minus: descriptionTotalRows %} -{%- assign start = 0 %} -{%- assign separator = '\||/' %} -{%- assign descriptionWorker = '' %} - -{%- for rowToBe in (1..descriptionTotalRows) %} - {%- if descriptionChars <= 74 %} - {%- assign descriptionWorker = description %} - {%- break %} - {%- else %} - {%- assign descriptionRow = description | slice: start, 73 | prepend: ' ' | append: separator %} - {%- assign descriptionWorker = descriptionWorker | append: descriptionRow %} - {%- assign start = start | plus: 73 %} - {%- endif %} -{%- endfor %} - -{%- if descriptionChars > 74 %} - {%- assign descriptionWorker = descriptionWorker | lstrip %} - {%- assign lastChar = descriptionWorker.size | minus: separator.size %} - {%- assign descriptionWorker = descriptionWorker | slice: 0, lastChar %} - {%- assign descriptionArray = descriptionWorker | split: separator %} -{%- endif %} - -{%- for descriptionLine in descriptionArray %} -{{ descriptionLine }} -{%- endfor %} -LOCATION:{% if event.location-label %}{{ event.location-label }} -{%- elsif event.location == 'online' %}{{ event.meeting-room }} -{%- else %}{{ site.data.event-links[location].url }}{{ event.location }} -{%- endif %}{% if event.location == 'online' %} -URL:{{ event.meeting-room }} -CONFERENCE:{{ event.meeting-room }} -{%- endif %}{% if event.recurring == true %} -RRULE:{{ event.recurrence-rule -}} -{%- endif %}{% if event.recurrence-exceptions %} -EXDATE -{%- if event.timezone -%};TZID={{ event.timezone }}{% endif %}: -{%- for exception in event.recurrence-exceptions %} -{{- exception | date: "%Y%m%d" }}T{{ event.datetime-start | date: "%H%M00" }}{% unless event.timezone %}Z{% endunless %} -{%- unless forloop.last %},{% endunless %} -{%- endfor -%} -{%- endif %} -END:VEVENT -{%- endif %} -{%- endfor %}{%- for timezone in site.data.ics-timezones %} -BEGIN:VTIMEZONE -TZID:{{ timezone[0] }} -{%- comment %} Following is unfortunately necessary to ensure that CRLF is used for EOL, as Jekyll uses LF when printing an array value in build process on Unix machine {% endcomment %} -{%- assign timezoneDefinitionArray = timezone[1] | split: ' ' %} -{%- for definitionLine in timezoneDefinitionArray %} -{{ definitionLine }} -{%- endfor %} -END:VTIMEZONE -{%- endfor %} -END:VCALENDAR diff --git a/events/index.html b/events/index.html index 5dd30af1d..a9991e9f0 100644 --- a/events/index.html +++ b/events/index.html @@ -87,6 +87,4 @@

- - -{% include ICS-modal.html %} + \ No newline at end of file