=============================================== How to show custom event sources in Kronolith =============================================== (`Also posted on Stack Overflow`_) .. _`Also posted on Stack Overflow`: http://stackoverflow.com/questions/1808104/how-to-show-custom-events-to-a-kronolith-calendar You can do this by implementing the listTimeObjects and listTimeObjectCategories API calls. `Nag`_ (task list) and `Whups`_ (ticket tracking) do it this way. If you are using the Git version, you can use `TimeObjects`_, which wraps everything up in a nice class. .. _`Nag`: http://www.horde.org/nag/ .. _`Whups`: http://www.horde.org/whups/ .. _`TimeObjects`: http://theupstairsroom.com/93 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.