外部日历应用的日历订阅URL

我们在用户偏好设置中添加了一个新的 日历 (Calendar) 选项卡,它允许您在外部日历应用程序(如 Google 日历、Apple 日历和 Microsoft Outlook)中订阅 Discourse 源。

:down_arrow:

工作原理

导航到您的 偏好设置 (Preferences) → 日历 (Calendar) 选项卡,然后点击 生成订阅 URL (Generate Subscription URLs)。您将获得以下应用的“一键订阅”按钮:

  • Google 日历 (Google Calendar) — 打开 Google 日历并预先填好源信息
  • Microsoft Outlook — 打开 Outlook 的网页订阅对话框
  • Apple 日历 (Apple Calendar) — 通过 webcal:// 触发原生日历应用
  • 复制 URL (Copy URL) — 适用于支持 ICS 源的任何其他日历应用

可用源

始终可用:

  • 书签提醒 (Bookmarked Reminders) — 带有提醒日期的书签

启用 discourse-calendar 插件后可用:

  • 所有事件 (All Events) — 所有论坛事件
  • 我的事件 (My Events) — 您将参加或感兴趣的事件

面向插件开发者

插件可以使用新的 register_calendar_subscription_feed API 注册额外的 ICS 源。以这种方式注册的源在启用插件后会自动出现在“日历”偏好设置选项卡中。

安全性

订阅 URL 使用范围限定的用户 API 密钥,这些密钥被限制为只读 ICS 格式访问。密钥会进行速率限制,并且 URL 仅在生成时显示一次——用户可以随时重新生成,这将撤销旧的 URL。

14 个赞

感谢 @Falco,但我该如何移除公司选项?我发现在我的社区中看到专有服务的广告令人反感。

您可以用 CSS 隐藏它。

2 个赞

非常感谢您的这项实现——这将提高日历/事件插件对许多社区的可用性!

我与 @hellekin 有着同样的反对意见:在 Discourse 中,我们处于一个开源环境中。在我们的社区中,没有人使用谷歌日历或微软日历。如果用户需要这些专有服务的链接,他们应该自己决定,而不是由应用程序来决定。因此,我更希望在创建订阅 URL 的步骤(例如使用一些复选框)时就选择外部日历服务的类型,而不是之后再选择。

“筛选”增强功能

我们在 Discourse 实例上拥有多个社区。它们通过群组权限分隔,有些用户是一个以上的社区的成员。如果能对“Discourse Calendar - All Events”URL 进行筛选,使其仅显示特定社区的日历条目,将会非常方便。示例文本 URL

https://discourse.example.com/discourse-post-event/events.ics?user_api_key=c2aa22d800dd473b62d199d796742382&group=[groupname]

通过此增强功能,可以将在特定(!)社区的 Discourse 事件分享到他们自己的网站上,例如使用 WordPress 插件“ICS calendar”。

2 个赞

另一个小的建议增强:如果您想在两个不同的客户端(例如,两台设备上的 Thunderbird)上订阅 Discourse 事件,您需要复制两次 URL。但目前 URL 只显示一次。如果您添加第二个客户端,则必须重新生成 URL,而您会丢失第一个 URL。

由其中一个组中的用户生成的提要难道不是已经以这种方式工作了吗?您测试过吗?

你只需要复制一次,然后粘贴到你需要的两个客户端中即可。

如果你忘记了一个客户端,可以一键重新生成。

1 个赞

这相当不错。一个可能的源信息流点子也可能是“已保存的搜索”(Saved Searches)插件。