This plugin is now bundled with Discourse core as part of Bundling more popular plugins with Discourse core. If you are self-hosting and use the plugin, you need to remove it from your app.yml before your next upgrade.
בשמחה – הנה הגרסה המתוקנת, מעט יותר ידידותית ופתוחה, עבור הפוסט שלך באנגלית:
We really need the ability to limit the number of participants for events, as many of our events have limited capacity.
Currently, the event system does not allow us to:
- set a maximum number of participants,
- see who signed up first (no registration timestamps),
- manage a waitlist or notify people when a spot opens up.
We would find the following features very helpful:
- A participant limit (cap) that prevents more users from signing up once full.
- A waitlist for those who still want to attend after the event is full.
- Automatic notifications when a spot becomes available.
- Optional timestamps to see the order of sign-ups (useful for fair prioritization).
This would be incredibly useful for communities running in-person or capacity-limited events.
Is anything like this already planned or in development?
Or are there any known workarounds for this use case?
Thanks so much in advance!
Thanks Aurora — really excited to hear that native calendar work is active again!
We’d also like to surface one additional high-impact request that’s come up in a number of community discussions: iCal feed sync.
This was broken out into its own dedicated topic here:
The ability to subscribe to external .ics feeds (such as school timetables, civic calendars, or organizational events) and have them reflected in a Discourse topic calendar would make this feature vastly more useful for many real-world deployments. Without it, we’re forced to manually copy events over, which is error-prone and hard to maintain.
We’d really appreciate any comment from the Discourse team about whether parts of that proposal — like one-way iCal sync, feed refresh interval settings, or optional event tagging — are in scope for the upcoming implementation.
Either way, thanks again for breathing new life into Discourse Calendar — we’re looking forward to what’s ahead!
if you want to show the create event button from the composer directly like below , use the code below in your theme’s header. admin>appearance>theme>edit>edit code>head(make sure it is placed between tags)
Tested on discourse 3.5.0.beta9-dev on desktop in firefox
<!-- Custom Create Event Button (Icon-based, Language-proof) -->
<script>
(()=>{const e=".d-editor-button-bar",t=".btn.no-text.fk-d-menu__trigger.toolbar-menu__options-trigger.toolbar__button.options.toolbar-popup-menu-options",n=".fk-d-menu__inner-content",o=".d-modal.fk-d-menu-modal",c=e=>{const t=e.querySelector('svg use[href="#calendar-day"]');return t?t.closest("button"):null},r=(e,t,n=4e3)=>new Promise((o,c)=>{const r=t(e);if(r)return o(r);const l=new MutationObserver(()=>{const n=t(e);n&&(l.disconnect(),o(n))});l.observe(e,{childList:!0,subtree:!0}),setTimeout(()=>{l.disconnect(),c()},n)}),l=(e=4e3)=>{const t=new MutationObserver(()=>{document.querySelector(o)&&t.disconnect()});t.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>t.disconnect(),e)},s=e=>{if(e.querySelector(".custom-create-event-btn"))return;const o=document.createElement("button");o.className="btn no-text btn-icon toolbar__button link custom-create-event-btn",o.title="Create event",o.innerHTML='<svg class="fa d-icon d-icon-calendar-day svg-icon"><use href="#calendar-day"></use></svg>',e.appendChild(o),o.addEventListener("click",async()=>{const e=document.querySelector(t);if(!e)return;e.click();let o=document.querySelector(n);o||(await new Promise((e,t)=>{const c=new MutationObserver(()=>{(o=document.querySelector(n))&&(c.disconnect(),e())});c.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{c.disconnect(),t()},2e3)}));try{(await r(o,c)).click(),l()}catch{}})},u=new MutationObserver(()=>{const t=document.querySelector(e);t&&s(t)});u.observe(document.body,{childList:!0,subtree:!0});const d=document.querySelector(e);d&&s(d)})();
</script>
I tried the script, the event creation button is created correctly, but when I click on it, I get the same contextual menu as the plus button. I may have made a mistake.
After the update it has improved, it appears at least only “Create event”
Screenshot is german, sorry.
שלום,
זה עובד על הגרסה האחרונה עם 3.5.0.beta9-dev, אני לא יודע מה הגרסה שלך?
וזה JavaScript, אז אתה צריך לספק את שגיאת ה-JS מהקונסול כשאתה לוחץ F12 בדפדפן שלך.
אני לא משתמש ב-Edge, אתה יכול לנסות שוב עם הסקריפט שעדכנתי זה עתה בפוסט המקורי מכיוון שמצאתי שגיאות ותיקנתי אותן. אם זה לא יעבוד, אעדכן מאוחר יותר לאחר שא инсталирую Edge.
I’ve just updated the script to be more mobile compatible, it should work now, please copy paste the script from the original post
אני מאשר שהקוד המעודכן עובד היטב ב-edge. אם יש לך משהו כמו ublock, אתה תמיד יכול להשבית אותו עבור דף ה-discourse שלך, אבל אני לא חושב שזה קשור.
Sorry, still the same problem for me, I must be doing something wrong
Yet I paste your script here correctly
Allright, thanks to Gilles situation, I could setup a selector based on the .svg class of the icon that is unique instead of a title attribute that would vary according to language, the script is also now minified and IIFE wrapped.
You may find the updated script here Discourse Calendar (and Event) - #535 by opcourdis
Thank you for your help ![]()
יהיה מועיל מאוד אם התסריט שלך יהיה עטוף כ- Theme component, ושהקטגוריות בהן הוא חל יהיו ניתנות לבחירה.
מקרה השימוש שיש לי בראש הוא קטגוריית ‘אירועים’, שבה אני רוצה להפוך פרסום אירועים למאוד ברור.
You may use what’s below and modify the first conditions to specify your categories, and to make the button more visible css will do it: .btn.no-text.btn-icon.toolbar__button.link.custom-create-event-btn {
order: -1;
}
<script>(()=>{if(!(document.body.classList.contains("category-events")||document.body.classList.contains("category-event2")||document.body.classList.contains("category-event3")))return;const e=".d-editor-button-bar",t=".btn.no-text.fk-d-menu__trigger.toolbar-menu__options-trigger.toolbar__button.options.toolbar-popup-menu-options",n=".fk-d-menu__inner-content",o=".d-modal.fk-d-menu-modal",c=e=>{const t=e.querySelector('svg use[href="#calendar-day"]');return t?t.closest("button"):null},r=(e,t,n=4e3)=>new Promise((o,c)=>{const r=t(e);if(r)return o(r);const l=new MutationObserver(()=>{const n=t(e);n&&(l.disconnect(),o(n))});l.observe(e,{childList:!0,subtree:!0}),setTimeout(()=>{l.disconnect(),c()},n)}),l=(e=4e3)=>{const t=new MutationObserver(()=>{document.querySelector(o)&&t.disconnect()});t.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>t.disconnect(),e)},s=e=>{if(e.querySelector(".custom-create-event-btn"))return;const o=document.createElement("button");o.className="btn no-text btn-icon toolbar__button link custom-create-event-btn",o.title="Create event",o.innerHTML='<svg class="fa d-icon d-icon-calendar-day svg-icon"><use href="#calendar-day"></use></svg>',e.appendChild(o),o.addEventListener("click",async()=>{const e=document.querySelector(t);if(!e)return;e.click();let o=document.querySelector(n);o||(await new Promise((e,t)=>{const c=new MutationObserver(()=>{(o=document.querySelector(n))&&(c.disconnect(),e())});c.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{c.disconnect(),t()},2e3)}));try{(await r(o,c)).click(),l()}catch{}})},u=new MutationObserver(()=>{const t=document.querySelector(e);t&&s(t)});u.observe(document.body,{childList:!0,subtree:!0});const d=document.querySelector(e);d&&s(d)})();</script>
Thanks for the suggestion, I am still a bit new to discourse and will check the theme component, the button placement is better indeed but my other script for event participant limit might soon not be necessary because of this FEATURE: introduce max attendees for events by SamSaffron · Pull Request #34313 · discourse/discourse · GitHub
לאחר שדרוג לגרסה האחרונה של Discourse ותוסף discourse-calendar, אני רואה את האזהרה הבאה כמנהל מערכת:
⚠️ פוסטים עשויים לא להופיע כראוי מכיוון שאחד ממעצבי תוכן הפוסטים באתר שלך העלה שגיאה.
נגרם על ידי תוסף 'discourse-calendar'
(הודעה זו מוצגת רק למנהלי אתרים)
- תוסף הלוח שנה כבר לא עובד: תוכן הלוח והאירועים אינם מוצגים בנושאים.
- התוסף עבד כראוי לפני השדרוג האחרון.
- אתר ה-Discourse שלי וכל התוספים הרשמיים מעודכנים כעת.
We’re using the Discourse Post Event plugin on our forum.
Currently, when a user joins (RSVPs) an event, the topic is automatically set to “Watching”, which means every new reply to the event topic triggers a notification to all participants.
We’d like to keep the notification level as “Normal” by default, even after someone joins an event.
I’ve checked the site settings but couldn’t find an option that works.
Is there a way to disable or change this auto “Watching” behavior when users RSVP to an event?
I don’t think so. But this would be a useful feature request.
A useful workaround might be to close the topic to stop replies, but have a chat channel associated with it (these don’t notify by default).
The label on the “Today” button can be misleading.
The button doesn’t actually navigate to the current day, it navigates to the current view of the active timeframe tab (Day/Week/Month/Year). On Day, Week and Month this does bring the current day into view. But on Year, it only navigates to the current year (which always starts in January).
It should probably be
- renamed to more accurately describe it’s functionality, like “Current”
- or, maybe better, not only navigate to the current year, but scroll to the current day on the Year list








