Как показать пользовательские события в календаре Kronolith - PullRequest
1 голос
/ 27 ноября 2009

Я хочу отображать события из внешнего источника в календарных представлениях Кронолит . Я не хочу делать это, экспортируя события в iCal, а затем отображая их как внешний календарь. События сгруппированы в несколько календарей, пользователь должен иметь возможность отключить / включить эти календари.

1 Ответ

0 голосов
/ 27 ноября 2009

Это можно сделать с помощью вызовов 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 .

...