Diff for Doc/Dev/Kronolith/CustomEvents between 3 and 4

+ How to show cutomcustom 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.