6.0.0-beta13
4/11/26
  • How to show custom event sources in Kronolith

([http://stackoverflow.com/questions/1808104/how-to-show-custom-events-to-a-kronolith-calendar Also posted on Stack Overflow])

You can do this by implementing the {{listTimeObjects}} and {{listTimeObjectCategories}} API calls. [http://www.horde.org/nag/ Nag] (task list) and [http://www.horde.org/whups/ Whups] (ticket tracking) do it this way. If you are using the Git version, you can use [http://theupstairsroom.com/93 TimeObjects], which wraps everything up in a nice class.

Kronolith calls these functions in {{initialize()}} (when filling {{$all_external_calendars}}) and {{listEvents()}}. It searches all APIs for this function, so you can register it with your own prefix.

//timeObject// is a generic name for "things that can be shown on a calendar", like events, task due dates, ... A //timeObjectCategory// is a group of //timeObjects//, which can be enabled or disabled in a group by the user. (In the default layout: using the panel in the upper-right corner of the calendar view, "Calendars".)

Your implementation for {{listTimeObjectCategories}} should return an array, with a category id as the key, and the user-visible name as the value.

{{listTimeObjects}} is called with the currently selected categories (an array of id's), and a start and end date. These dates might already be {{Horde_Date}} objects (to be sure, convert them again: {{$start = new Horde_Date($start)}}).

You should return an array of //timeObjects// that belong to these categories and fall in the specified time range. The keys are event id's, the values are arrays with values for the following keys:

  • {{id}}
  • {{title}}
  • {{description}}
  • {{start}} ({{Horde_Date}} or timestamp)
  • {{end}} ({{Horde_Date}} or timestamp)
  • {{category}} (Horde category, not timeobject category)
  • {{params}}

If you register the {{show}} API call, this will be used for creating the link to the //timeObject// detail.