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 :-I image button) and 'done' (represented by a :ok: 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 :-I
  2. second step :ok:
  3. last step :-I
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 :-I
  2. second step :ok:
  3. last step :-I
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 :-I
  3. third step 8-)
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 :-I
  2. second step :-I

  1. first step :-I
  2. next step :-I
Example 5: Create a checklist in a table:
| *state* | *todo* |
| %CLI%   | first step |
| %CLI%   | second step |
state todo
first step
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 |


(click to change)

(click to change)

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 :-I
  2. next step :-I

( :-I - todo :ok: - done ) :-I 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 :ok:
  2. next step :ok:

:ok: 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 :ok:
    1. first new inserted item :-I
  2. next step :ok:
    1. second new inserted item :-I


%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
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)
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
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"}%
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)
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"
unique id of a checklist item (default: autogenerated); useful and recommended if you insert new checklist items in an existing checklist with states
enables/disables logging
format of a log entry
logformat="   * %SERVERTIME% - %WIKIUSERNAME% - Item %CLIID%: from %STATE% to %NEXTSTATE%"
log topic
log entry position; allowed values: append, prepend
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)
enables/disables mail notification if a item state was changed
defines the reset button and legend position (default: bottom); if you use another value than "top" the button position falls back to default
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"
if you set it to "on" a states legend with icons will be displayed (default: off),
e.g: ( :-I - todo :ok: - done)
all known states (default: todo¦done; a list separated by a '¦')
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%
enables/disables state selection popup (default: off)
set the checklist item state topic (default: <YourTopicName>ChecklistItemState)
allow/disallow state changes of checklist items (useful if you create summary pages of some items of different checklists)
template name (see Plugin settings / Templates )
text will be attached to the item and will be clickable
text="my first step"
timestamp format used for statictopic or tooltip substition (%TIMESTAMP%)
timestamp="%SERVERTIME% - %TWIKIUSERNAME%, last state: %STATE%"
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 background color (statesel popup background color is also effected)
offset to fix horizontal tooltip position
offset to fix vertical tooltip position
enables/disables JavaScript/AJAX based item state changes (default: on)


Use this examples to check your installation:

  1. first step todo
  2. next step todo

State TODO
first step
next step

  • System 1 doing
  • System 2 todo

[Reset all]


Plugin Settings

ALERT! This extension no longer processes settings from this topic. Settings should be applied in SitePreferences, or in the WebPreferences topics.

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

  • Debug plugin: (See output in working/logs/debug.log)

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

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

  • Enables/Disables state legend (default: off)

  • Enables/Disables link anchors (default: on)

  • 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 CHECKLISTPLUGIN_UNKNOWNPARAMSMSG = Following parameter(s) is/are unknown: %UNKNOWNPARAMSLIST%

  • Enables/Disables mail notification (default: off; old bevavior: on)

  • Enables/Disables AJAX feature (JavaScript based item state changes):

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

  • Sets offsets to fix horizontal/vertical tooltip position:

  • Enables/Disables state selection popup (default: off):


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

You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server.

Open configure, and open the "Extensions" section. "Extensions Operation and Maintenance" Tab -> "Install, Update or Remove extensions" Tab. Click the "Search for Extensions" button. Enter part of the extension name or description and press search. Select the desired extension(s) and click install. If an extension is already installed, it will not show up in the search results.

You can also install from the shell by running the extension installer as the web server user: (Be sure to run as the webserver user, not as root!)
cd /path/to/foswiki
perl tools/extension_installer <NameOfExtension> install

If you have any problems, or if the extension isn't available in configure, then you can still install manually from the command-line. See for more help.

Plugin Info

Change History:
v1.202 (20 Nov 2017)
Foswikitask:Item13664: Re-opened task for another brace needing an escape.
v1.201 (10 Nov 2017)
Foswikitask:Item13664: Escape braces in regular expressions for compatibility with Perl 5.22+.
v1.200 (25 Jul 2015)
Foswikitask:Item1930: Use relative pub URL paths
Foswikitask:Item12141: Allow use of arbitrary %ICON macros in graphics
Foswikitask:Item13557: Update for Foswiki 2.0
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

Related Topics: SitePreferences, Plugins

-- TWiki:Main.DanielRohde - 27 Oct 2005

PackageForm edit

Author TWiki:Main.DanielRohde
Version 1.202
Release 20 Nov 2017
Copyright © 2005-2009 Daniel Rohde
© 2008-2015 Foswiki Contributors
License GPL (Gnu General Public License)
This topic: System > ChecklistPlugin
Topic revision: 14 Jan 2018, VickiBrown
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 CFCL Wiki? Send feedback