我想在Kronolith日历视图中显示来自外部源的事件。我不想通过将事件导出到 iCal 然后将它们显示为外部日历来做到这一点。事件被分组在多个日历中,用户应该能够禁用/启用这些日历。
1 回答
您可以通过实现listTimeObjects
和listTimeObjectCategories
API 调用来做到这一点。Nag(任务列表)和Whups(票务跟踪)就是这样做的。如果您使用的是 Git 版本,则可以使用TimeObjects,它将所有内容包装在一个不错的类中。
Kronolith 在initialize()
(填充时$all_external_calendars
)和中调用这些函数listEvents()
。它会搜索该函数的所有 API,因此您可以使用自己的前缀注册它。
timeObject是“可以在日历上显示的事物”的通用名称,例如事件、任务到期日…… timeObjectCategory是一组timeObjects,可以由用户在组中启用或禁用。(在默认布局中:使用日历视图右上角的面板“日历”。)
您的实现listTimeObjectCategories
应该返回一个数组,其中类别 id 作为键,用户可见的名称作为值。类别 ID 也显示在日历的底部,用户可以为它们定义颜色。
listTimeObjects
使用当前选择的类别(一个 id 数组)以及开始和结束日期调用。这些日期可能已经是Horde_Date
对象(可以肯定的是,再次转换它们:)$start = new Horde_Date($start)
。
您应该返回属于这些类别并在指定时间范围内的timeObjects数组。键是事件 id,值是具有以下键值的数组:
id
title
description
start
(Horde_Date
或时间戳)end
(Horde_Date
或时间戳)category
(类别编号)params
如果您注册show
API 调用,这将用于创建指向timeObject详细信息的链接。