Discourse Calendar

(Vinoth Kannan) #1

Official calendar plugin for Discourse.

Repo: https://github.com/discourse/discourse-calendar

The Discourse calendar plugin allows you to create a dynamic calendar in the first post of a topic. You can add new events by posting a reply with a date using “Insert Date” modal.


To embed the calendar, add the following BBCode (note the separate lines) in the first post of a topic:


Optionally you can hide weekends and other days with special attributes. Hidden days are 0 to 6 for Sunday to Saturday respectively.

[calendar weekends="false" hiddenDays="1,2"]

To add events to the calendar, in subsequent replies use the Insert Date function from the composer options menu to insert a single date or date range. For example,

[date=2018-12-20 timezone="America/Boise"] → [date=2018-12-21 timezone="America/Boise"]

Once the reply is submitted, the date range should be added to the calendar in the OP. Once the event is over the post containing the dates will be automatically deleted.

Holiday Calendar

By holiday_calendar_topic_id setting you can use a calendar to manage staff holidays. It will add an emoji :desert_island: next to the staff names in their holiday period. It will also include a calendar icon in their mentions.


Dynamic Events Calendar

Holiday Calendar

Holiday Flair


Holiday Mention Icon


How to use the calendar plugin?
How to use the calendar plugin?
Discourse 2.2.0.beta3 Release Notes
Ability to mark any post as unread
Calendar plugin, nothing is displayed
Vacation autoresponder for users who are away?
Sorting Categories by Title
Events Plugin :calendar:
(Etienne Girardet) #2

great idea. thanks. would it be possible to dynamically pull in content from other calendars (like google or icloud)?

1 Like
(Vinoth Kannan) split this topic #3

14 posts were split to a new topic: Discourse calendar events are not displaying in local timezone

(Markus) #4

Is it possible to subscribe the calendar via CalDAV by other nativ calendar applications?
(This would be the most important feature for me.)

Discourse calendar events are not displaying in local timezone
(Joffrey Jaffeux) #5

No, but we definitely want to explore options on this in the future.

(Markus) #6

A really great project! Love to see more on this …

Currently, I’m exploring multiple solutions to organise lectures, courses and other kind of events with Discourse. With all the great features, Discourse accomplish most of my knowledge base goals. Discussions become much more vibrant and focused for learning new things. In my case, most (sub-)categories are used for notes and material specially for each lecture.

Until now, I have to link each lecture/course event manually on the about topic of the category.

The (unofficial) Events Plugin is also a great way to go. But it has some very disturbing disadvantages.

What I actually require is this great plugin with …

  1. the option to add category-wide dates to the calendar.
  2. some kind of agenda overview (with filtering start and end date)
  3. and last but not least a filter option to only add dates from a specific user group.


(Kankuro) #7

Is there any way to hide the calendar completely from users who aren’t logged in? Maybe show a “you must be logged in to view this” page/modal instead?

1 Like
(Vinoth Kannan) #8

It is not possible. Instead you should create the calendar in a secure category.

Discourse calendar events are not displaying in local timezone
Click counter missing for some internal links
(Andrew McNeil) #9

I run an events heavy forum that could definitely use a calendar, but using this plugin all the events are titled with the poster’s user name.
Is there a way that users are able to name their calendar posts, so that they can be more descriptive of the event? So instead of just their user name it could be the name of the event instead.


1 Like
(Vinoth Kannan) #10

No, it will add poster’s username only in the holiday calendar. By default it will display only the event description. I updated the screenshots in OP.

1 Like
Discourse calendar events are not displaying in local timezone
(Joffrey Jaffeux) #11

Unless you are on calendar holiday topic as explained vinoth you can write your post like this:

this is my event title

more content

And the first line will be used as the event title.

(Andrew McNeil) #12

Thanks, that’s it sorted.

1 Like
(Ken-ichi) #13

Any plans to make this available on hosted Discourse?

(Iceman) #14


First of all, excellent plugin, works like a charm.

A side doubt, would it be possible for the system to not delete the posts from events that already happened?

This can be useful for calendars that need to retain history of events.

(Vinoth Kannan) #17

I introduced a new site setting delete_expired_event_posts_after to delay/disable the deletion. You should set “-1” to not delete the expired event posts.


It is currently available on our Enterprise plan (as are all official plugins).

(Iceman) #19

Hi @vinothkannans,

First of all thank you very, very much for your quick response and for adding this feature. (Honestly, can’t thank you enough).

I just updated to use it, I think that maybe I’m doing something wrong (maybe is some encoding issue, I even tried copying the value from the message itself to guarantee that it was not my keyboard), can someone please confirm?

(Vinoth Kannan) #20

This is fixed in below commit

(Iceman) #25

Updated and tested.

Works like a charm!

Once again, thanks a million @vinothkannans.

(Kyle Copas) #26

Tbh, this would be an extremely helpful feature to include in the hosted plan.