Events Plugin 📆

I’d also like to able to filter events by tags. If you use the nav bar tag filter, it works only for the agenda view, not for the calendar and maps view. :frowning:
But that’s really complaining on a high level. I’ve just used the plugin on my site for the first time and its fantastic!

Edit: even better, if you could also negate tags, for instance “show me all events except those tagged ‘panel-discussion’”. And then the question becomes, can you do that with combinations of multiple tags? And could it also work for calendar subscriptions?

3 Likes

All good suggestions!

If you could make a formal feature request (and get @outofthebox and a couple of others to vote for it) I can add it into my workflow.

Feature Request (requires an account on my sandbox)

Cheers,

Angus

3 Likes

This great plugin has recently been installed over at https://community.coops.tech and I came here to ask that the date format be customisable, so very happy to discover it already is, thanks! :smiley:

I guess I’ll now just ask our admins to change it! :stuck_out_tongue:

4 Likes

There is an issue with the MIME type in the webcal generated link that prevents calendar from displaying events when imported into Office 365 calendar (Google calendar displays the events regardless).

Here’s the report from the validator:

https://icalendar.org/validator.html?url=https://discourse.angusmcleod.com.au/c/public-work/l/calendar.ics?time_zone=Australia/Melbourne

Invalid MIME type detected, should be ‘text/calendar’ (found MIME type ‘text/plain; charset=utf-8’) near line # 1
Reference: RFC 5545 8.1. iCalendar Media Type Registration

On a side note: thank you for the fantastic work on this plugin! I’m eagerly awaiting the feature to add reminders to events, what is the current status on this?

Hi @angus, it seems to work very well. I have some extra feature requests:

EDIT : I have created some feature requests on Angus’ Sandbox for these proposals as suggested by @Ellibereth:

Hope they are clear enough, thank you for the work!

1 Like

Glad to hear @jdaviescoates! Let us know how it goes!

We’ll take a look at this @md-misko - in the interim can you submit a bug report?

I’m not 100% sure, will check and get back to you.

Hey @Globulle, these are great ideas. Would you mind submitting feature requests for them? Link us to them here so we can go vote for them!

https://community.coops.tech/ now has much clearer dates, thanks! (and I’m now and admin too, so can tweak further if I so choose! :stuck_out_tongue: )

1 Like

That explains why Mac OSX Calendar says the format is invalid :slight_smile:

Problem! Found 1 warning
Warnings
Invalid MIME type detected, should be 'text/calendar' (found MIME type 'text/html') near line # 1
Reference: RFC 5545 8.1. iCalendar Media Type Registration
Problem! Found 2 errors
Errors
This is not an iCalendar file or URL near line # 1
Reference: RFC 5545 3.4. iCalendar Object
Missing VCALENDAR object near line # 1
Reference: RFC 5545 3.4 iCalendar Object
Permalink: https://icalendar.org/validator.html?url=http://discourse.bd2l.com.au/c/cottage-singers/cs-concerts/l/calendar.ics?time_zone=Australia/Adelaide

Permalinks are available when validating by URL. You can use a permalink to send a link of the validation results page using e-mail or web posting.

JSON Permalink: https://icalendar.org/validator.html?url=http://discourse.bd2l.com.au/c/cottage-singers/cs-concerts/l/calendar.ics?time_zone=Australia/Adelaide&json=1

The JSON permalink formats the validation results in JSON format, which can be used by other programs for further analysis.

Done. I’ve edited my post to add the links: Events Plugin 📆

1 Like

Would you be so kind and submit the bug report for me?

I tried to register on the Sandbox but I couldn’t—I never received the confirmation e-mail (it is not in spam folder either), even after multiple retries. Could you check the SMTP logs on your side?

Thanks @Globulle :+1:

Sorry about that @md-misko, I think this was a case of Outlook not behaving well with certain email services - I’ll check with angus but I’m not sure what the long term solution is. (Seen mentions of this pop up around meta every once in a while).

I validated your account manually so you should be able to log in and submit the report - let me know if you still run into any issues.

This has been slotted to be worked on in a couple of weeks per Add event reminders - Tasks - Pavilion.

2 Likes

Thanks, it’s working now, bug report filed as

:heart:

There’s finally a feature request for this. Please vote!

2 Likes

Hi All,

i beleive there is a bug with the event plugin, any idea ?

Is the bellow error related to this plugin? (also posted here)

a user created a topic by copy pasting some content from a facebook page; this has crashed the topic iteslf, the category and his activities page. (the rest of the topics and categories of the site remained accessible)
I managed to destroy the topic from the console and everything went back to normal for the user and category.
Is this error related to the mentioned plugin “discourse-events”?
here follows the errors:
info:

NoMethodError (undefined method `nonzero?' for [1564826442, 1564826442]:Array)
/var/www/discourse/plugins/discourse-events/plugin.rb:155:in `has_event?'

backtrace:

/var/www/discourse/plugins/discourse-events/plugin.rb:155:in `has_event?'
/var/www/discourse/plugins/discourse-events/plugin.rb:223:in `include_event?'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:375:in `include?'
(eval):59:in `_fast_attributes'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:468:in `rescue in attributes'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:455:in `attributes'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:480:in `_serializable_hash'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:359:in `serializable_hash'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:347:in `as_json'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/json/encoding.rb:22:in `encode'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/json/encoding.rb:22:in `encode'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/core_ext/object/json.rb:41:in `to_json'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:331:in `to_json'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:40:in `dump'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:40:in `dump'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:25:in `dump'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/multi_json-1.13.1/lib/multi_json.rb:139:in `dump'
/var/www/discourse/app/controllers/topics_controller.rb:946:in `block (2 levels) in perform_show_response'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/mime_responds.rb:203:in `respond_to'
/var/www/discourse/app/controllers/topics_controller.rb:943:in `perform_show_response'
/var/www/discourse/app/controllers/topics_controller.rb:131:in `show'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/base.rb:194:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:132:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/rescue.rb:22:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications.rb:168:in `block in instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications.rb:168:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/params_wrapper.rb:256:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:24:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/base.rb:134:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionview-5.2.3/lib/action_view/rendering.rb:32:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:104:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal.rb:191:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal.rb:252:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:52:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:34:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:52:in `block in serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:35:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:35:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:840:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.5/lib/rack/protection/frame_options.rb:31:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:32:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/tempfile_reaper.rb:15:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/conditional_get.rb:25:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/head.rb:12:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:220:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:232:in `context'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:226:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/cookies.rb:670:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:98:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/logster-2.3.0/lib/logster/middleware/reporter.rb:30:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/rack/logger.rb:38:in `call_app'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:18:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/method_override.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/sendfile.rb:111:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiler.rb:281:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.0/lib/message_bus/rack/middleware.rb:57:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:163:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/engine.rb:524:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:68:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:605:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:700:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:144:in `start'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'
1 Like

@Jeremie_Leroy @SDKAAA @quimgil Thanks for your bug reports.

After this commit the issue should no longer appear:

For further context:

2 Likes

This patch seems to work! I can tell that the difference between having this patch or not for us meant having a broken site or a(n apparently) fully functional one.

These were the effects of the bug:

  • Discourse not rendering to anonymous users beyond the header (totally unusable site).
  • For registered users, probably non-cached content (i.e. Latest lists) wouldn’t render, and the rest was a hit or miss.
  • Strangely enough, from three admins two would lose access to the web UI completely while a third (myself) still could access the admin interface and create a backup before rebuilding.

In other words: whatever is the bug, it can become a major one breaking the site.

Yesterday morning we upgraded Discourse, and the bug appeared hours later

1 Like

Note that if you were affected by this bug, even after the update you may still be having an issue with the “Agenda” topic list (the rest of the functionality is unaffected by this particular issue). I’ve made a PR to Discourse to address this secondary issue.

1 Like

The Calendar view has issues as well (Error 500). See Wikimedia Space & Events - Wikimedia Space

Er… and now it works without us having touched anything. :thinking:

EDITED: And now it’s broken again…