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