The TimeTablePlugin handles the tag %TIMETABLE% and creates a weekly timetable. The timetable is rendered with HTML tables and should work with all modern web browsers. Please take a look at the feature list for more information.

It also handles the tag %TTCM% (TimeTable Compatibilty Mode). The compatibility mode allows the usage of all Foswiki:Extensions.CalendarPlugin event types. The %TTCM% tag should be placed into the description field of an event and must contain a time range and optional colors in a comma separated list (<time range>[[','<foreground color>][','<background color>]]), e.g:
you type:
   * 22 May 2006 - %TTCM{"7:00-1:00pm,white,black"}% Meeting
   * 23 May 2006 - 24 May 2006 - %TTCM{"7am-4pm,yellow"}% Conference
you get:
  • 22 May 2006 - 07:00am-01:00pm Meeting
  • 23 May 2006 - 24 May 2006 - 07:00am-04:00pm Conference

The %TTTOPICSETUP% (TimeTable Topic Setup) tag allows you to define default foreground/background colors (eventfgcolor/eventbgcolor attributes) and a time zone (timezone attribute) for all events on a topic. Please use it only once on a topic.

Examples: (png images):


The TimeTablePlugin supports
  • two time formats: 12 and 24 hour format (attribute: timeformat)
  • (self-defined) time zones (attributes: timezone, timezoneabbr)
  • all HolidaylistPlugin and CalendarPlugin event types if the compatibility mode is enabled (compatmode="on")
  • navigation to other weeks (only if compatibility mode is enabled: compatmode="on")
  • own colors for every event (add the foreground/background colors to a event definition or use the %TTCM% tag of the compatibility mode)
  • event definitions from other topics (attribute: topic) - including override of the time zone (e.g. topic="EvenTopic2:-3)
  • customization of
    • all text outputs and colors (attributes: name, headerformat, ...)
    • the table rendering (attributes: days, startdate, timeinterval, showtimeline, ...)
  • a default setup for foreground/background colors and time zone on a topic (%TTTOPICSETUP% tag)
  • URL parameters: all attribute settings can be overwritten by URL parameters (ttp_<attribute>=<value>), e.g. TimeTablePlugin?ttp_days=14;ttp_tableborder=10;ttp_descrlimit=7

Syntax Rules

Events are defined with bullets. Following event types are supported to define entries for the timetable:

Event Type Syntax Example(s)
Single  * DDD - HH:MM - HH:MM - description  * Mon - 09:00 - 11:00 - Meeting
 * DDD - HH:MM - HH:MM - description - background color  * Mon - 09:00 - 11:00 - Meeting - green
 * DDD - HH:MM - HH:MM - description - foreground color, background color  * Mon - 09:00 - 11:00 - Meeting - white,black
List  * DDD, DDD,... - HH:MM - HH:MM - description  * Mon,Tue - 08:00 - 8:15 - Breakfast
 * DDD, DDD,... - HH:MM - HH:MM - description - background color  * Mon,Tue - 08:00 - 8:15 - Breakfast - yellow
 * DDD, DDD,... - HH:MM - HH:MM - description - foreground color, background color  * Mon,Tue - 08:00 - 8:15 - Breakfast - white,black
Interval  * DDD - DDD - HH:MM - HH:MM - description  * Mon - Fri - 12:15 - 13:00 - Lunch
 * DDD - DDD - HH:MM - HH:MM - description - background color  * Mon - Fri - 12:15 - 13:00 - Lunch - green
 * DDD - DDD - HH:MM - HH:MM - description - foreground color, background color  * Mon - Fri - 12:15 - 13:00 - Lunch - white,black
Duration instead of an end time (HH:MM) in a time range of a single/list/interval event you can define an event duration in days (d), hours (h) and/or minutes (m), e.g. one day: 1d ; one day and two hours: 1:2d ; one day, two hours and 30 minutes: 1:2:30d ; two hours: 2h ; two yours and 30 minutes: 2:30h ; 30 minutes: 30m  * Mon - 10:00 - 2h - every Monday 2 hours at 10 o'clock

If you enable the compatibility mode (see Attributes or Plugins Settings sections) you can also use all Foswiki:Extensions.CalendarPlugin event types. Examples:
%TIMETABLE{compatmode="1" startdate="12 Jun 2006"}%

   * 12 Jun - %TTCM{"10am-5pm,yellow"}% Every 12th of June between 10am and 5pm
   * E Wed - Every Wednesday (whole-time)
   * 12 Jun 2006 - 19 Jun 2006 - %TTCM{"12:15pm-1pm,white,black"}% Lunch with Mary
   * 13 Jun 2006 - 10:00-12:00 Meeting 
   * 14 Jun 2006 - Meeting - 01pm-03pm,green
  • The parameter of the %TTCM% tag must not contain any whitespaces.
  • Time ranges in a description field must not contain any whitespaces.
  • If no %TTCM% tag or no time range was specified in a description of a Foswiki:Extensions.CalendarPlugin event the event gets a full-time event (12:01am-11:59pm o'clock, 0-24h).


Usage: %TIMETABLE{attribute1="value1" attribute2="value2" ...}%

Example: %TIMETABLE{lang="Deutsch" timeinterval="15" }%

Attribute Comment Default/Example
clicktooltip if enabled JavaScript tooltips are only shown with a mouse click to the table cell instead of 'mouse over' (related: clicktooltiptext) clicktooltip="off"
compatmode if set to "1" all Foswiki:Extensions.CalendarPlugin event types are supported (related: compatibility mode attributes); ALERT! the description field can contain a time range (without any whitespaces, e.g. 1pm-2pm) or a %TTCM%-Tag (e.g. %TTCM{"7:00-1:00pm,white,black"}% ) with a time range and optional foreground and background color and without any whitespaces compatmode="0"
days days to show days="7"
endtime a end time, e.g. 18:00, 6:00pm, … endtime="8:00pm"
lang Language used for weekdays in the table header and for event entries (e.g: English, Deutsch, Français, Español, Nederlands, Dansk, suomi, …) lang="English"
rotatetable enables/disables table rotation rotatetable="off"
showweekend show weekend if set to '1' showweekend="1"
starttime a start time, e.g. 7:00, 8a.m., 9:15a.m. … starttime="7:00am"
textwrapper sets the text wrapper for the event entry text (default: browser); plugin: text is wrapped by the TimeTablePlugin (old behavior but stable); browser: text is wrapped by the web browser textwrapper="plugin"
timeformat time format; allowed values: 12, 12am, 12p.m., 12a.m, 12p.m. and 24 timeformat="24"
timeinterval interval steps in minutes for the timeline timeinterval="30"
timezone a hour offset (allowed values: -12 … 0 … +12) for time correction or a time zone abbreviation (e.g. UTC, CET …) timezone="0"
timezoneabbr a comma separated list of time zone abbreviations with UTC offsets; the standard time zone abbreviations will be extended with this user defined abbreviations timezoneabbr="CET:+1, MEST:+2"
topic a comma separated list of source topics; you can add a time zone to any source topic name by adding a ':' and a hour offset (-12 … +12) or a time zone abbreviation, e.g: topic="MySourceTopic:-2" ALERT! this time zone feature overrides the timezone attribute of a %TTTOPICSETUP% tag topic="%TOPIC%"
wholetimerow enables/disables a whole-time event row (related attributes: wholetimerowtext, wholetimerowtitle) wholetimerow="0"
workingendtime working hours end time workingendtime="5:00pm"
workingstarttime working hours start time workingstarttime="9:00am"
Compatibility Mode:
(ALERT! compatmode="on" is required ALERT!)
cmheaderformat table header format of a day; a subset of strftime conversion specifiers is supported (only date not time specifiers; see manual page or Foswiki:Development.ConvergeDateTimeFormattingModels) cmheaderformat="<font title=\"%A - %d %b %Y\" size=\"-2\">%a<br/>%e</font>"
daynames custom day names (a list separated by a '¦' and starting on Monday; overrides lang attribute) daynames="M¦T¦W¦T¦F¦S¦S"
forcestartdate if set to 1 the timetable starts with the given startdate ('0' means: the timetable view starts with Monday') forcestartdate="0"
month set a month (e.g. Jan, Feb … or 01, 02, … 12 ) or a month offset (e.g. +0, +1, -2,...) month="+1"
monthnames custom month names (a list separated by '¦' and starting on January; overrides lang attribute) monthnames="J¦F¦M¦A¦M¦J¦J¦A¦S¦O¦N¦D"
navnext navigation button to the next n days navnext="&gt;&gt;"
navnexttitle title text (tooltip text) for the navigation button to the next n days navnexttitle="Next %n day(s)"
navprev navigation button to the previous n days navprev="&lt;&lt;"
navprevtitle title text (tooltip text) for the navigation button to the previous n days navprevtitle="Previous %n day(s)"
startdate a start date (e.g. '1 Oct 2005') or a day offset (e.g. '10', '+30' or '-30') startdate="+0"
year set a year (e.g. 2005, 2006 …) or a year offset (e.g. +0, +1, -1, …) year="+0"
Table formatting:
clicktooltiptext tooltip text of table entries if clicktooltip is enabled clicktooltiptext="Click me for more information"
descrlimit per line character limit for the description (ALERT! depends on the textwrapper attribute: if textwrapper="plugin" this limit is a character limit; if textwrapper="browser" the width of a event entry table cell is set to <descrlimit>em) descrlimit="10"
displaytime display time in the event description of the timetable displaytime="0"
eventbgcolor default background color of an event cell (you can override this with an event entry) eventbgcolor = "#AAAAAA"
eventfgcolor default text color of an event cell (you can override this with an event entry) eventfgcolor = "black"
fontsize default font size (see Known Issues and Bugs) fontsize="xx-small"
headerformat table header format of a day; a subset of strftime conversion specifiers is supported (only date not time specifiers; see manual page or Foswiki:Development.ConvergeDateTimeFormattingModels) headerformat="<font title=\"%A - %d %b %Y\" size=\"-2\">%a</font>"
monthheaderbgcolor month header background color (default: tableheadercolor) monthheaderbgcolor="%WEBBGCOLOR%"
monthheaderfgcolor month header text (foreground) color (default: black) monthheaderfgcolor="black"
monthheaderformat month header format (related: showmonthheader) monthheaderformat="%B"
name header content of the first column name = "&nbsp;"
nowbgcolor highlight current time in the timeline with a background color nowbgcolor="black"
nowfgcolor highlight current time in the timeline with a forgeround color nowfgcolor="white"
showmonthheader enables/disables monthheader; if compatmode=on the montheader is shown by default showmonthheader="off"
showtimeline show timeline left, right, or on both sides showtimeline="both"
tablebgcolor table background color tablebgcolor="white"
tableborder table border (default: undefined) tableborder="1"
tablecellpadding table cell padding (default: 0) tablecellpadding="5"
tablecellspacing table cell spacing (default: 1) tablecellspacing="1"
tablecaption table caption shown above the timetable tablecaption="Timetable"
tablecolumnwidth width of a table column (default: undefined) tablecolumnwidth="80px"
tabledatacellwidth width of an entry cell (default:undefined); ALERT! it has no effect if a tablecolumnwidth was set tabledatacellwidth="80px"
tableheadercolor color of the table header tableheadercolor="%WEBBGCOLOR%"
tablewidth table width (default: undefined) tablewidth="100%"
todaybgcolor highlight today column with a background color todaybgcolor="black"
todayfgcolor highlight today column with a foreground color todayfgcolor="white"
tooltipdateformat tooltip date format (for %DATE% substition of tooltipformat); a subset of strftime conversion specifiers is supported (only date not time specifiers; see manual page or Foswiki:Development.ConvergeDateTimeFormattingModels) tooltipdateformat="%y/%d/%m"
tooltipfixleft positive or negative offset from the left to fix tooltip position tooltipfixleft="-163"
tooltipfixtop positive or negative offset from the top to fix tooltip position tooltipfixtop="0"
tooltipformat format of a tooltip (substituted variables: %DATE% - date (see tooltipdateformat attribute), %TIMERANGE% - time range, %DESCRIPTION% - description field, %LONGDESCRIPTION% - complete entry) tooltipformat="%DATE%<br/>%TIMERANGE%<br/> %DESCRIPTION% "
weekendbgcolor highlight weekends with a column background color weekendbgcolor="%WEBBGCOLOR%"
weekendfgcolor highlight weekends with a column foreground color weekendfgcolor="black"
wholetimerowpos whole-time event row position (default: top), allowed values: top, bottom, both wholetimerowpos="top"
wholetimerowtext text in the time line of the whole-time event row wholetimerowtext="24h"
wholetimerowtitle alternate text for the wholetimerowtext wholetimerowtitle="whole-time events"
workingbgcolor highlight working hours in the timeline with a background color workingbgcolor="white"
workingfgcolor highlight working hours in the timeline with a foreground color workingfgcolor="black"

  • You can use TextFormattingRules for some attribute values: tablecaption, name, navnext, navprev, wholetimerowtext.
  • Every attribute of %TIMETABLE% can also be used as plugin setting. You only have to use capital letters.
  • Every attribute setting can be overwritten by URL parameters (ttp_<attribute>=<value>), e.g. if you add a ?ttp_days=30 to the topic URL the TimeTablePlugin shows 30 days.


%TIMETABLE{compatmode="on" wholetimerow="on"}% %TIMETABLE{compatmode="1" startdate="12 Jun 2006" rotatetable="on" days="1" forcestartdate="on" timeinterval="60"}%
  • Mon,Tue - 9 - 14 - MONTEST1 - green
  • Mon - 9 - 11 - MONTEST2 - yellow
  • Mon - 10 - 13 - MONTEST3 - white,black
  • Mon - 12 - 15 - MONTEST4

  • Tue - 9 - 9:30 - TUETEST1
  • Tue - 9 - 10:00 - TUETEST2
  • Tue - 10:00 - 11:00 - TUETESTFO
  • Tue - 9 - 11:30 - TUETEST3
  • Tue - 12 - 15 - TUETEST4

  • Wed - 7 - 9 - WEDTEST1
  • Wed - 9 - 11 - WEDTEST2
  • Wed - 11 - 13 - WEDTEST3
  • Wed - 13 - 17 - WEDTEST4

  • Thu - 7 - 20:30 - THUTEST1
  • E Thu - THUTEST2 %TTCM{,green}%

  • Fri - 7 - 10 - FRITEST1
  • Fri - 12 - 15 - FRITEST2
  • E Fri - FRITEST3 %TTCM{10-10:30,cyan}%

  • Sat - 5 - 10 - SATTEST1 - white,blue
  • Sat - 6 - 21 - SATTEST2 - yellow
  • Sat - 11 - 22 - SATTEST3 - green

  • Sun - 9:18 - 17:35 - SUNTEST1 - red
  • Sun - 18:00 - 18:15 - SUNTEST2 - yellow

Plugin Settings

Plugin settings are stored as preferences variables. To reference a plugin setting write %<plugin>_<setting>%, i.e. %NEWPLUGIN_SHORTDESCRIPTION%

  • One line description, is shown in the TextFormattingRules topic:
    • Set SHORTDESCRIPTION = Render a weekly timetable

  • Debug plugin: (See output in data/debug.txt)
    • Set DEBUG = 0

  • Time format (default: 24, allowed: 12, 12pm, 12am, 12a.m.,12p.m., 12PM, 12AM, or 24):
    • # Set TIMEFORMAT = 12

  • Timetable start time (default: 7:00am):
    • # Set STARTTIME = 7am

  • Timetable end time (default: 8:00pm):
    • # Set ENDTIME = 8pm

  • Enable/Disable whole-time event row (default: disabled):
    • # Set WHOLETIMEROW = 1
    • # Set WHOLETIMEROWPOS = top
    • # Set WHOLETIMEROWTEXT = 24h
    • # Set WHOLETIMEROWTITLE = whole-time events

  • Character limitation of a description in a table cell line (default: 10):
    • # Set DESCRLIMIT = 15

  • Show timeline on the left, right or both sides (default: both):
    • # Set SHOWTIMELINE = left

  • Language (default: English - see manual page of Date::Calc perl module, e.g: English, Deutsch, Français, Español, Nederlands, Dansk, suomi, …):
    • # Set LANG = Deutsch

  • Set tooltip offsets (depends on your Skins):
    • # Set TOOLTIPFIXLEFT = -163
    • # Set TOOLTIPFIXTOP = 0

  • Set unknown parameter message (default: %RED% Sorry, some parameters are unknown: %UNKNOWNPARAMSLIST% %ENDCOLOR% <br/> Allowed parameters are (see %SYSTEMWEB%.TimeTablePlugin topic for more details): %KNOWNPARAMSLIST%)
    • # Set UNKNOWNPARAMSMSG = Following parameter(s) is/are unknown: %UNKNOWNPARAMSLIST%

Note: Every attribute of %TIMETABLE% can also be used as plugin setting. You only have to use capital letters.

Known Issues and Bugs

  • font sizes larger than default font size (1em) may cause non matching timelines (browser dependent);
    workaround: don't use fontsizes larger than 1em; or use px units; or set textwrapper to plugin (e.g. %TIMETABLE{textwrapper="plugin" fontsize="18pt"}%)
  • some browsers (known: IE7) cut text lines of table cells with a row count equal 1 if textwrapper="browser" (default)
    workaround: use textwrapper="plugin" attribute

Plugin Installation Instructions

Note: You do not need to install anything on the browser to use this plugin. The following instructions are for the administrator who installs the plugin on the Foswiki server.

  • Download the ZIP file from the Plugin web (see below)
  • Install the required Perl modules (Date::Calc and POSIX), e.g: perl -MCPAN -e "install Date::Calc"
  • Unzip TimeTablePlugin.zip in your Foswiki installation directory. Do not forget to change file permissions. Content:
    File: Description:
    data/System/TimeTablePlugin.txt Plugin topic
    data/System/VarTIMETABLE.txt Documentation
    data/System/VarTTCM.txt Documentation
    data/System/VarTTTOPICSETUP.txt Documentation
    lib/Foswiki/Plugins/TimeTablePlugin.pm Plugin Perl module
    lib/Foswiki/Plugins/TimeTablePlugin/TimeTable.pm Plugin Perl library
    pub/System/TimeTablePlugin/timetabletooltips.js JavaScript library
    pub/System/TimeTablePlugin/example.png example image 1
    pub/System/TimeTablePlugin/example2.png example image 2
  • Configure the Plugin:
    • Run the configure script to enable the Plugin
    • Change the Plugin settings as needed
  • Test if the installation was successful:
    • see Examples section

Plugin Info

Plugin Author: Foswiki:Main.DanielRohde
Copyright: © 2006, Foswiki:Main.DanielRohde
License: GPL (GNU General Public License)
Plugin Version: V1.017 (23 Oct 2009)
Change History:  
V1.017 (23 Oct 2009) Foswiki:Main.DanielRohde: added hidettcm attribute requested by TWiki:Main.StevenCorfman; fixed line breakes in rotated tables;
V1.016 (14 Nov 2008) Foswiki:Main.DanielRohde: added overflow:auto style; fixed unknownparamsmsg bug;
V1.015 (29 Jul 2008) Foswiki:Main.DanielRohde: fixed rotated table bugs (tooltips, showweekend="off")
V1.014 (10 Jul 2008) Foswiki:Main.DanielRohde: added documentation requested by TWiki:Main.PeterThoeny; added rotated table feature requested by TWiki:Main.VickiBrown; fixed doc bug reported by TWiki:Main.JoeGainey
V1.013 (24 May 2007) Foswiki:Main.DanielRohde: fixed major time parsing bug reported by Foswiki:Main.LarsEik; fixed major bug: events with a time range before start time should not be displayed; fixed major TTCM bug reported by Foswiki:Main.ArthurClemens; added URL parameter feature; added new attributes (textwrapper, tableborder, tablewidth, tablecell…); added browser based text wrapping feature requested by Foswiki:Main.ArthurClemens
V1.012 (14 May 2007) Foswiki:Main.DanielRohde: fixed readTopicText bug reported TWiki:Main.JoachimRahn; added month header feature (attributes: showmonthheader, monthheader…); added new tooltip feature (clicktooltip…)
V1.011 (1 Mar 2007) Foswiki:Main.DanielRohde: added fontsize attribute; fixed HTML bug (validation);
V1.010 (19 Feb 2007) Foswiki:Main.DanielRohde: added tablecolumnwidth and tabledatacellwidth attributes requested by TWiki:Main.VickiBrown; added tooltip feature (tooltip… attributes);
V1.009 (7 Aug 2006) Foswiki:Main.DanielRohde: added duration feature; added time zone abbreviations; improved performance; fixed conflict rendering bug; fixed time zone bugs (whole-time event handling, topic include)
V1.008 (2 Aug 2006) Foswiki:Main.DanielRohde: added timezone feature requested by TWiki:Main.BenWatts; fixed major midday/midnight (12pm/12am) bug reported by TWiki:Main.BenWatts; fixed overlapping day bug; fixed periodic event bug; fixed minor bugs (stylesheet bug: annoying JavaScript errors; empty event row)
V1.007 (23 Jun 2006) Foswiki:Main.DanielRohde: fixed major bug (wholetimerow: empty column)
V1.006 (23 Jun 2006) Foswiki:Main.DanielRohde: fixed major mod_perl bug (paging in compatmode); added whole-time row feature; fixed minor bugs (empty column color; cutted text)
V1.005 (8 Jun 2006) Foswiki:Main.DanielRohde: fixed typos (documentation); added new features (compatmode only): inline time range feature and navigation; minor improvements (table header, …)
V1.004 (31 May 2006) Foswiki:Main.DanielRohde: fixed typos (documentation, timeformat); added new attributes (days, forcestartdate, nowfgcolor, nowbgcolor); fixed minor bug (periodic repeater); added new event type (list)
V1.003 (24 May 2006) Foswiki:Main.DanielRohde: added compatibility mode (Foswiki:Extensions.CalendarPlugin event types); added documentation and new attributes; fixed bugs (bgcolor bug; conflict rendering; documentation; error logs; warnings);
V1.002 (22 May 2006): Foswiki:Main.DanielRohde: fixed major bugs (conflict handling, preferences); added documentation;
V1.001 (19 May 2006): Foswiki:Main.DanielRohde: fixed some major bugs (conflict entries, parameter handling, long descriptions); added documentation;
V1.000 (16 May 2006): Foswiki:Main.DanielRohde: Initial version
Foswiki Dependency: $Foswiki::Plugins::VERSION 1.021
CPAN Dependencies: CPAN:Date::Calc
Other Dependencies: none
Perl Version: 5.005
Plugin Home: http://foswiki.org/Extensions/TimeTablePlugin
Feedback: http://foswiki.org/Extensions/TimeTablePluginDev

Related Topics: Plugins, DeveloperDocumentationCategory, AdminDocumentationCategory, DefaultPreferences, SitePreferences

-- Foswiki:Main.DanielRohde - 16 May 2006
Topic revision: r1 - 29 Jan 2019, AdminUser
This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding Wiki-Colivre? Send feedback