Это можно сделать с помощью вызовов API listTimeObjects
и listTimeObjectCategories
. Nag (список задач) и Whups (отслеживание билетов) делают это таким образом. Если вы используете версию Git, вы можете использовать TimeObjects , что обернет все в хороший класс.
Кронолит вызывает эти функции в initialize()
(при заполнении $all_external_calendars
) и listEvents()
. Он ищет во всех API эту функцию, поэтому вы можете зарегистрировать ее с собственным префиксом.
timeObject - это общее название для «вещей, которые могут быть показаны в календаре», таких как события, даты выполнения задач, ... A timeObjectCategory - это группа timeObjects , который может быть включен или отключен в группе пользователем. (В макете по умолчанию: с помощью панели в верхнем правом углу представления календаря «Календари».)
Ваша реализация для listTimeObjectCategories
должна возвращать массив с идентификатором категории в качестве ключа и видимым для пользователя именем в качестве значения. Идентификаторы категорий также отображаются внизу календаря, и пользователь может определять для них цвета.
listTimeObjects
вызывается с выбранными в данный момент категориями (массивом идентификаторов), а также с датами начала и окончания. Эти даты могут уже быть Horde_Date
объектами (чтобы быть уверенным, преобразовать их снова: $start = new Horde_Date($start)
).
Вы должны вернуть массив timeObjects , которые относятся к этим категориям и попадают в указанный временной диапазон. Ключи - это идентификаторы событий, значения - это массивы со значениями для следующих ключей:
id
title
description
start
(Horde_Date
или отметка времени)
end
(Horde_Date
или отметка времени)
category
(ID категории)
params
Если вы зарегистрируете вызов API show
, он будет использоваться для создания ссылки на деталь timeObject .