UHH>Informatik>NatS>System Web>ChecklistPlugin (05 Jun 2007, ProjectContributor) Print version

Checklist Plugin

ChecklistPlugin creates simple checklists. It handles the tags %CLI% (CheckList Item), %CHECKLIST%, %CHECKLISTSTART%, %CHECKLISTEND% and depends on the Foswiki:Extensions.SmiliesPlugin (see Plugin Info).

A %CLI% tag creates a image button and a simple click on it changes the state of the image button. The default states are 'todo' (represented by a indifferent image button) and 'done' (represented by a thumbs up image button).

If you put a bullet list or a ordered list between %CHECKLISTSTART% and %CHECKLISTEND% every bullet/ordered list item gets a checklist item.

Every state change will be saved to a topic with name <YourTopicName>ChecklistItemState. It is possible to define states (default: todo and done) and matching icons. You can also put more than one checklist into a topic.

Syntax Rules

Just type a %CLI% (CheckList Item) into a topic to create a single checklist item. A simple mouse click on it will change the state of this item. If the last state is reached the item state falls back to the first state.

If you put a bullet or ordered list between %CHECKLISTSTART% and %CHECKLISTEND% every bullet/ordered list item gets a checklist item.

To modify the states or state icons you can set it with %CHECKLISTSTART% or %CHECKLIST% tag. This tags can also be used to create "reset" buttons and state legends.

All tags can be used with attributes documented in the Attributes section.

To create a link to the checklist item state topic you can put the following forced link on your checklist topic:
If you have installed the Foswiki:Extensions.SpreadSheetPlugin you can find a statistics on this item state topic. And if you have installed the Foswiki:Extensions.EditTablePlugin you can edit the states directly on this topic.

Usage Examples

To change the state of a checklist item just click on it.

You type: You get: (simulated)
Example 1: Create a simple checklist:
  • second step icon was clicked one time
  • last step icon was clicked two times
   1 first step
   1 second step 
   1 last step 
  1. first step indifferent
  2. second step thumbs up
  3. last step indifferent
Example 2: Create a simple freehand checklist:
  • second step icon was clicked one time
  • last step icon was clicked two times
   1 first step %CLI% 
   1 second step %CLI% 
   1 last step %CLI% 
  1. first step indifferent
  2. second step thumbs up
  3. last step indifferent
Example 3: Create a checklist with three states and own icons:
  • second step icon was clicked one time
  • and third step icon was clicked two times
%CHECKLISTSTART{states="todo|doing|done" stateicons=":no:|:-I|8-)"}%

   1 first step 
   1 second step
   1 third step 
  1. first step no
  2. second step indifferent
  3. third step cool!
Example 4: Create two checklists on a topic:
(ALERT! every %CHECKLIST% and every %CLI% tag needs a name attribute)
%CHECKLISTSTART{name="first checklist"}%
   1 first step 
   1 second step

%CHECKLIST{name="second checklist"}%

   1 first step %CLI{name="second checklist"}% 
   1 next step %CLI{name="second checklist"}% 

  1. first step indifferent
  2. second step indifferent

  1. first step indifferent
  2. next step indifferent
Example 5: Create a checklist in a table:
| *state* | *todo* |
| %CLI%   | first step |
| %CLI%   | second step |
state todo
indifferent first step
indifferent second step
Example 6: Create multiple lists with tables and hard linked item states to allow add/insert/remove items:
ALERT! The %EDITTABLE% and %CHECKLISTSTART% tag have to stay in the same line.
%EDITTABLE{changerows="on" format="|label,0,#%SERVERTIME{$year$month$day$hour$min$sec}%|text,50|"}%%CHECKLISTSTART{name="list1"}%
| *STATUS<br/>(click to change)* | *Item* | 
| #2007Feb07093710 | testitem |


%EDITTABLE{changerows="on" format="|label,0,#%SERVERTIME{$year$month$day$hour$min$sec}%|text,50|"}%%CHECKLISTSTART{name="list2"}%
| *STATUS<br/>(click to change)* | *Item* |
| #2007Feb07093712 | second |


Example 7: Create a legend and a reset button:
  • Hint: You can use multiple %CHECKLIST% tags to create more than one reset button or legend at any position of your checklist topic.
%CHECKLISTSTART{showlegend="on" reset=":-I Reset"}%
   1 first step 
   1 next step

  1. first step indifferent
  2. next step indifferent

( indifferent - todo thumbs up - done ) indifferent Reset

Example 8: Create a button to set all states in a checklist to done:
  • the reset button was clicked
  • Hint: You can use multiple %CHECKLIST% tags to create more than one reset button.
   1 first step %CLI% 
   1 next step %CLI% 

%CHECKLIST{reset=":ok: set all done @done"}%
  1. first step thumbs up
  2. next step thumbs up

thumbs up set all done

Example 9: Insert new items in an existing checklist without state lost:
  • first step and second step was clicked before new items (first new inserted item and second new inserted item) were added
  • Hint: You can put a <whitespace>#<ID> instead of %CLI{id="<ID>"}% into a bullet or ordered list item to add/insert a checklist item with own id. This works only between %CHECKLISTSTART%...%CHECKLISTEND%.
   1 first step
      1 first new inserted item #MyFirstInsertedItem
   1 second step  
      1 second new inserted item %CLI{id="MySecondInsertedItem"}%
  1. first step thumbs up
    1. first new inserted item indifferent
  2. next step thumbs up
    1. second new inserted item indifferent


%CLI{attribute1="value1" attribute2="value2" ...}%
or %CHECKLIST{attribute1="value1" attribute2="value2" ...}%
or %CHECKLISTSTART{attribute1="value1" attribute2="value2" ...}%

%CHECKLIST{showlegend="on" reset=":-I Reset checklist"}%

Attribute Usable in Tag(s) Comment Example
anchors %CLI%
enables/disables link anchors (default: yes); if enabled a state change will scroll your topic to the clicked checklist item; useful for long checklists (useless if useajax is on) anchors="yes"
clipos %CLI%
determines the position of the checklist item icon (default: right); if you use another value than "left" the checklist item icon will be appended to a ordered or bullet list item clipos="left"
descr %CLI% a description for a checklist item used in the [[%TOPIC%ChecklistItemState]] topic; you can use it as a default option (without descr), e.g: %CLI{"my description"}% descr=""
descrcharlimit %CLI%
character limit for a description (useful if no description was given and therefore it is stripped from the text before and after a checklist item) descrcharlimit="100"
shows a button to show or hide checklist items; if you put a @<state> into the hide value, you can hide/show only items with the given state; ALERT! restriction: this button works only for items between %CHECKLISTSTART% and %CHECKLISTEND% hide="Hide/Show 'done' items @done"
id %CLI% unique id of a checklist item (default: autogenerated); useful and recommended if you insert new checklist items in an existing checklist with states id="myfirstownid"
enables/disables logging log="off"
logformat %CHECKLIST%
format of a log entry logformat="   * %SERVERTIME% - %WIKIUSERNAME% - Item %CLIID%: from %STATE% to %NEXTSTATE%"
logtopic %CHECKLIST%
log topic logtopic="%TOPIC%ChecklistLog"
logpos %CHECKLIST%
log entry position; allowed values: append, prepend logpos="append"
name %CLI%
a naming context (default: _default) - useful and recommended if you define more than one checklist on a topic (ALERT! if you use it in %CHECKLIST% you must use it in all related %CLI% tags too) name="mychecklist1"
notify %CLI%
enables/disables mail notification if a item state was changed notify="off"
pos %CHECKLISTSTART% defines the reset button and legend position (default: bottom); if you use another value than "top" the button position falls back to default pos="bottom"
it enables a reset image button with a given text or icon (default: undefined); if you put a @<state> into the reset value, you can reset a checklist to the given <state>, e.g: reset="@done :ok: set all done"; if you put a @STATESEL into the reset value you get a state selection popup with all states reset="Reset all @STATESEL"
showlegend %CHECKLIST%
if you set it to "on" a states legend with icons will be displayed (default: off),
e.g: ( indifferent - todo thumbs up - done)
states %CLI%
all known states (default: todo¦done; a list separated by a '¦') states="todo¦done"
stateicons %CLI%
icons for all states separated by a '¦' (default: :-I¦:ok:); if you use common variables like %Y% in stateicons you have to use the <nop> tag after the first %, e.g: %<nop>Y% stateicons=":-I¦:ok:"
statesel %CLI%
enables/disables state selection popup (default: off) statesel="on"
statetopic %CLI%
set the checklist item state topic (default: <YourTopicName>ChecklistItemState) statetopic="MyItemStateTopic"
static %CLI%
allow/disallow state changes of checklist items (useful if you create summary pages of some items of different checklists) static="off"
template %CLI%
template name (see Plugin settings / Templates ) template="patchday"
text %CLI% text will be attached to the item and will be clickable text="my first step"
timestamp %CLI%
timestamp format used for statictopic or tooltip substition (%TIMESTAMP%) timestamp="%SERVERTIME% - %TWIKIUSERNAME%, last state: %STATE%"
tooltip %CLI%
sets the tooltip of the state icons (substituted variables: %STATE% - current state; %NEXTSTATE% - next state; %STATEICON% - state icon; %NEXTSTATEICON% - next state icon; %STATES% - comma separated list of all states; %STATECOUNT% - number of states; %LEGEND% - a legend of all states and state icons; %TIMESTAMP% - the timestamp formated with timestamp attribute) tooltip="%STATE%"
tooltipbgcolor %CLI%
tooltip background color (statesel popup background color is also effected) tooltipbgcolor="%WEBBGCOLOR%"
tooltipfixleft %CLI%
offset to fix horizontal tooltip position tooltipfixleft="-163"
tooltipfixtop %CLI%
offset to fix vertical tooltip position tooltipfixtop="0"
useajax %CLI%
enables/disables JavaScript/AJAX based item state changes (default: on) useajax="1"


Use this examples to check your installation:

  1. first step
  2. next step

State TODO
first step
next step

  • System 1
  • System 2


Plugin Settings

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

  • One line description, is shown in the TextFormattingRules topic:
    • Set SHORTDESCRIPTION = Create simple checklists.

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

  • Setup states and icons (defaults: todo¦done and :-I¦:ok:; remove # for setup):
    • # Set STATES = todo|doing|done
    • # Set STATEICONS = :-(|:-I|:ok:

  • Enables 'reset' button (default: disabled with undefined value; value is a text or icon):
    • # Set RESET = [Reset all]

  • Enables/Disables state legend (default: off)
    • # Set SHOWLEGEND = on

  • Enables/Disables link anchors (default: on)
    • # Set ANCHORS = off

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

  • Enables/Disables mail notification (default: off; old bevavior: on)
    • # Set NOTIFY = on

  • Enables/Disables AJAX feature (JavaScript based item state changes):
    • # Set USEAJAX = off

  • Sets the icon state tooltip:
    • # Set TOOLTIP = Click me to change my state '%STATE%' to '%NEXTSTATE'.

  • Sets offsets to fix horizontal/vertical tooltip position:
    • # Set TOOLTIPFIXLEFT = 0
    • # Set TOOLTIPFIXTOP = 0

  • Enables/Disables state selection popup (default: off):
    • # Set STATESEL = on


Templates allows you to setup all plugin attributes bounded to a template name. Only uppercase letters are allowed for a template name.

Syntax:    Set TEMPLATE_template name_attribute name = attribute value

Template Usage: %CLI{template="template name"}% (the same for %CHECKLISTSTART%, %CHECKLIST%).


  • Default
    • Set TEMPLATE_DEFAULT_STATES = todo|done

  • Patchday
    • Set TEMPLATE_PATCHDAY_STATEICONS = :no:|:yes:|:skull:|%Y%
    • Set TEMPLATE_PATCHDAY_STATES = notpatched|patched|reboot|done
      There are %STATECOUNT% states (%STATES%).

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 server where TWiki is running.

  1. Download the ZIP file from the Plugin web (see below)
  2. ALERT! if you upgrade this plugin it is a good idea to backup your old plugin setups, e.g.: cp data/System/ChecklistPlugin.txt data/System/ChecklistPluginOld.txt
  3. Unzip ChecklistPlugin.zip in your twiki installation directory. Content:
    File: Description:
    data/System/ChecklistPlugin.txt Plugin topic
    data/System/VarCHECKLIST.txt documentation
    data/System/VarCHECKLISTSTART.txt documentation
    data/System/VarCHECKLISTEND.txt documentation
    data/System/VarCLI.txt documentation
    lib/Foswiki/Plugins/ChecklistPlugin.pm Plugin Perl module
    pub/System/ChecklistPlugin/itemstatechange.js JavaScript/AJAX module
  4. Linux/UNIX: Don't forget to change owner of data/System/ChecklistPlugin.txt to your WWW server uid/gid (e.g: chown wwwrun:wwwrun ...).
  5. Configure the Plugin:
    • Run the configure script to enable the Plugin
    • Change the Plugin settings as needed
  6. Test if the installation was successful: see Examples section

Plugin Info

Plugin Author: TWiki:Main.DanielRohde
Plugin Version: v1.026 (21 Oct 2009)
Change History:  
v1.026 (21 Oct 2009) TWiki:Main.DanielRohde: added timestamp feature requested by TWiki:Main.VickiBrown; fixed uninitialized value bugs;
v1.025 (15 Oct 2009) TWiki:Main.DanielRohde: added documentation requested by TWiki:Main.PeterThoeny; added hide entries feature requested by Christian Holzmann; added log feature requested by TWiki:Main.VickiBrown
v1.024 (20 Apr 2007) TWiki:Main.DanielRohde: fixed missing ')' in generated JavaScript commands
v1.023 (1 Mar 2007) TWiki:Main.DanielRohde: fixed minor anchor link bug reported by TWiki:Main.KeithHelfrich; fixed tooltip position bug
v1.022 (12 Feb 2007) TWiki:Main.DanielRohde: improved AJAX performance; added new feature (state selection for reset button); fixed %TOC% bug reported by TWiki:Main.HelenJohnstone; fixed some minor and major bugs (mod_perl, description stripping, static feature, 'text' icons); removed useforms feature
v1.021 (31 Jan 2007) TWiki:Main.DanielRohde: fixed some major bugs (mod_perl, plugin preferences); improved performance (AJAX); fixed minor IE caching bug (AJAX related); added new attributes (tooltip, descr, template, statesel) requested by TWiki:Main.KeithHelfrich; fixed installation instructions bug reported by TWiki:Main.KeithHelfrich
v1.020 (15 Jan 2007) TWiki:Main.DanielRohde: added AJAX feature (useajax attribute) requested by TWiki:Main.ShayPierce and TWiki:Main.KeithHelfrich
v1.019 (14 Dec 2006) TWiki:Main.DanielRohde: fixed major default options bug reported by TWiki:Main.RichardHitier
v1.018 (30 Aug 2006) TWiki:Main.DanielRohde: fixed notification bug reported by TWiki:Main.JosMaccabiani; fixed a minor whitespace bug; add static attribute
v1.017 (9 Aug 2006) TWiki:Main.DanielRohde: fixed access right bug; disabled change/create mail notification (added attribute: notify)
v1.016 (18 Apr 2006) TWiki:Main.DanielRohde: fixed access right bug reported by TWiki:Main.SaschaVogt
v1.015 (9 Feb 2006) TWiki:Main.DanielRohde: fixed mod_perl preload bug (removed use warnings;) reported by Foswiki:Main.KennethLavrsen
v1.014 (6 Feb 2006) TWiki:Main.DanielRohde: fixed mod_perl bug; fixed deprecated handler problem
v1.013 (3 Feb 2006) TWiki:Main.DanielRohde: fixed anchor bug; fixed multiple save bug (performance improvement); fixed reset bugs in named checklists
v1.012 (2 Feb 2006) TWiki:Main.DanielRohde: fixed a minor statetopic bug; improved autogenerated checklists (item insertion without state lost); improved docs
v1.011 (23 Jan 2006) TWiki:Main.DanielRohde: fixed documentation; fixed reset bug (that comes with URL parameter bug fix); added statetopic attribute
v1.010 (28 Nov 2005) TWiki:Main.DanielRohde: fixed URL parameter bugs (preserve URL parameters; URL encoding); used CGI module to generate HTML; fixed table sorting bug in a ChecklistItemState topic
v1.009 (25 Nov 2005) TWiki:Main.DanielRohde: fixed stateicons handling; fixed Foswiki:Extensions/TablePlugin sorting problem
v1.008 (9 Nov 2005) TWiki:Main.DanielRohde: fixed docs; changed default text positioning (text attribute); allowed common variable usage in stateicons attribute; fixed multiple checklists bugs
v1.007 (7 Nov 2005) TWiki:Main.DanielRohde: added new feature (CHECKLISTSTART/END tags, attributes: clipos, pos); fixed bugs
v1.006 (4 Nov 2005) TWiki:Main.DanielRohde: added new attribute (useforms); fixed legend bug; fixed HTML encoding bug
v1.005 (2 Nov 2005) TWiki:Main.DanielRohde: fixed major bug (edit lock); fixed html encoding; improved doc
v1.004 (1 Nov 2005) TWiki:Main.DanielRohde: added unknown parameter handling (new attribute: unknownparamsmsg); added 'set to a given state' feature; changed reset behavior; fixed typos
v1.003 (1 Nov 2005) TWiki:Main.DanielRohde: added attributes (showlegend, anchors); fixed states bug (illegal characters in states option); improved documentation (thanx TWiki:Main.PeterThoeny); fixed typos; fixed some minor bugs
v1.002 (31 Oct 2005) TWiki:Main.DanielRohde: fixed cache problems; fixed HTML/URL encoding bugs; fixed reload bug; fixed reset image button bug; added anchors
v1.001 (27 Oct 2005) TWiki:Main.DanielRohde: added new features ('reset','text' attributes); fixed major 'name' attribute bug; fixed documentation bugs
v1.000 (27 Oct 2005): TWiki:Main.DanielRohde: Initial version
TWiki Dependency: $TWiki::Plugins::VERSION 1.024
CPAN Dependencies: none
Other Dependencies: Foswiki:Extensions.SmiliesPlugin
Perl Version: 5.005
License: GPL (GNU General Public License)
Foswiki:Extensions/Benchmark: GoodStyle 97%, FormattedSearch 99%, ChecklistPlugin 92%
Plugin Home: http://foswiki.org/Extensions/ChecklistPlugin
Feedback: http://foswiki.org/Extensions/ChecklistPluginDev

Related Topics: SitePreferences, Plugins

-- TWiki:Main.DanielRohde - 27 Oct 2005

-- TimoBaumann - 12 Oct 2015

Copyright � by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback