It's better when it's simple

User Tools

Site Tools


ToDo Plugin

Compatible with DokuWiki

  • 2017-02-19 "Frusterick Manners" unknown
  • 2016-06-26 "Elenor Of Tsort" unknown
  • 2015-08-10 "Detritus" yes
  • 2014-09-29 "Hrun" yes

plugin Create a simple, checkbox based ToDo List

Last updated on
Syntax, Action

Similar to do

Tagged with task, taskmanagement, todo

Previous authors: Babbage

Download and Installation

Download and install the plugin using the Extension Manager using the above URL. Refer to Plugins on how to install plugins manually.

Download URL has changed: Moved download link to Github “stable” branch so you don't risk downloading a broken development version. — Christian MargChristian Marg

2014-06-10 15:11

Update Instructions: Since version 2014-03-17 the searchpattern integration is deprecated. Use the new ~~TODOLIST~~ built-in method.

Update Instructions: The versions since 2013-04-05 are not compatible with DokuWiki versions prior 2012-10-13 “Adora Belle”. If you want to use an old DokuWiki version, you have to use the todo plugin version 2010-08-16 by Babbage!

Usage and examples

Mostly deprecated since 2014-03-17: There is an additional instruction page at in german and english which describes the installation, the settings and the DokuWiki SearchPattern Plugin suggestion.

Creating tasks

After installing the plugin, simply enter this information on the page you wish to create the todo list:

   <todo>Title of todo Action</todo>

Each <todo> tag will create one checkbox for the action.

To create a checkbox that is check by default, create your todo like this:

   <todo #>Title of todo Action</todo>

Using bulleted lists (*) is recommended, as it will allow you to more easily make a 'list' out of your items to do.

Assign tasks to persons

To assign users use the @ symbol like this:

   <todo @leo>Task for leo</todo> 
   <todo @leo #>Completed task for leo</todo>

The name of the user can use:

  • the following characters: a-z, A-Z, 0-9, .-_
  • No (white)spaces are allowed!

So @leo.eibler, @Leo_Eibler will work but @Leo Eibler will not work!

|Ver. 2013-04-11 user assignment source screenshot|

Ver. 2013-04-11 user assignment result screenshot

Multiple users can be assigned in one todo (separated by space character). This way a todo can show up in todo lists of different users.

 <todo @leo @runout @somebody>Task for leo and runout and somebody</todo>

Render username

Render the username as id, full name or not at all, allowed values: user or real or none

<todo @somebody username:real>Task with real username of somebody shown</todo>

Start and Due date

Set a start and/or due date and get colored output if todo has started or is due

<todo start:YYYY-MM-DD>Text</todo>
<todo due:YYYY-MM-DD>Text</todo>
<todo start:YYYY-MM-DD due:YYYY-MM-DD>Text</todo>

Colors,… can be set in the style.css file in the plugin directory (lib/plugin/todo)

Show/Hide Start/Due Date

Do (not) show the Start/Due date, allowed values: yes or no

<todo showdate:yes start:YYYY-MM-DD>Text</todo>


Formatting is not allowed inside of the <todo></todo> tags. However, if you wish for your text to be bold or have some other type of style (other than the default one provided), you can surround the todo tag with the formatting of your choice. The resulting action text should then be displayed with your choice of formatting when your changes have been saved.


A quickbutton for inserting todo syntax is available in the editor toolbar. You can click the button (which is pictured as a checked-checkbox) or you can use the keyboard shortcut of [T].

Lightweight Task Management System - Lists

The new version (since version 2014-03-17) of the todo plugin allows to create an easy to use task management system to collect all todos from all pages on a single page.

First turn off caching



Omit Pages from TODOLISTs

If you have pages you never want to include in TODOLISTs, you can put following on these pages:


Display all open and closed todos from all pages


Counting todos and checked todos

Print a summary of checked todos and total todos like (10/14)

~~TODOLIST short:yes~~

Assignments (users to tasks)

Filter the assignments, allowed values: yes, no, usernames in format@username or username, or placeholders @@USER@@ or @@MAIL@@ which are replaced by username or e-mail of current logged in user.

~~TODOLIST assigned:yes~~ 
~~TODOLIST assigned:User1,User2~~ 
~~TODOLIST assigned:@User1,@User2~~
~~TODOLIST assigned:@@USER@@~~
~~TODOLIST assigned:@@MAIL@@~~ finds tasks assigned using someones email.

Show/Hide checkbox

Do (not) show the checkbox, allowed values: yes or no

~~TODOLIST checkbox:no~~

Render username

Render the username as id, full name or not at all, allowed values: user or real or none

~~TODOLIST username:real~~

Render header

Render the header as pageID, as the first header of the page or not at all, allowed values: id or firstheader or none

~~TODOLIST header:firstheader~~

Show/Hide Start/Due Date

Do (not) show the Start/Due date, allowed values: yes or no

~~TODOLIST showdate:yes~~

Completed Data Filter

Completion state

Filter the completion state, allowed values: yes or no

~~TODOLIST completed:no~~
~~TODOLIST completed:yes~~

Completion Date

Filter by date the box was checked.

~~TODOLIST completedbefore:<date>~~
~~TODOLIST completedafter:<date>~~
~~TODOLIST completedat:<date>~~

<date> can be:

Y-m-d like 2014-06-12
or a value like +10 or -10 or 0

invalid values will be substituted with todays date

Completion User (Who checked it)

Filter by user who ckeckded the box. Comma separated list.

~~TODOLIST completeduser:jack,daniel,jessie~~

Start/Due Date Filter

Filter the TODOLIST by Start/Due Date. Absolute and relative Dates are possible.

~~TODOLIST startbefore:<date>~~
~~TODOLIST startafter:<date>~~
~~TODOLIST startat:<date>~~
~~TODOLIST duebefore:<date>~~
~~TODOLIST dueafter:<date>~~
~~TODOLIST dueat:<date>~~

<date> can be:

Y-m-d like 2014-06-12
or a value like +10 or -10 or 0

invalid values will be substituted with todays date

Combined options

~~TODOLIST assigned:@@USER@@ completed:yes ~~
~~TODOLIST assigned:Gerrit,leo completed:no ~~

Some default values for these options can be set in the Configuration Manager

Filter the namespace of the task list

I've added the following option to the ~~TODOLIST~~ tag: ns:

If omitted it uses ns:all.

It can be used with the following parameters:

  • all - displays todo's from everywhere (the current default behaviour)
  • / - only displays todo's from pages containing in the ROOT namespace
  • <string> - Where string can be any text. It checks the page-id if it starts with this string and then returns the pages with todo's that do; for example:
  • . or ending in :. - display this namespace and subnamespaces (not much tested)
  • .: - display only subnamespaces (not much tested)
~~TODOLIST ns:todo~~

returns all todo's from the page todo in the root of the wiki, or from the namespaces starting with todo or from the page todo and the namespaces starting with todo.

~~TODOLIST ns:todo:~~

returns all todo's from the namespace todo.

~~TODOLIST ns:todo:r~~ 

returns all todo's from the namespaces or pages under todo, starting with an r.

Example of 'all todos'

Ver. 2013-04-11 overview over all tasks on single page using searchpattern plugin

Example of 'all todos' from many namespaces

If you want to display more than one namespace in a single page, you can put a TODOLIST for each :

~~TODOLIST ns:foo:~~
~~TODOLIST ns:bar:~~

Plugin Settings

Default: Off
This option (when enabled) will allow your actions to also link to a page with the same name. This way, if you have important details about an action, you can place them in this link.

What namespace should your actions be created in (".:" = Current NS, Blank = Root NS)

Default: [Empty]
This option allows you specify where actions links should be placed. Using “.:” will cause the actions to link to whatever namespace you are currently in. Leaving it blank or typing “:” will cause all actions to link to the root namespace. Using something like “.:actions:” will cause the actions to link to whatever the current namespace is, plus an “actions” namespace. (Added with version 9-9-09)

Should the actions have strike-through applied when checked?

Default: On
This option (when enabled) will place a strike-through in the actions that have been completed. When disabled, an action can be checked, but the text will not have strike-through applied.

Default: On
When this option is enabled, and the links option is disabled, then clicking on the text of an action will mark that action as being complete. (Added with version 10-14-09)


Please request your features and issues in the tracker at


For the current default download package (see start of this page) one should refer to its GitHub Atom Feed:

Older / by hand

Version 05/14/2014 (by Markus Gschwendtrunout

): zip version 2014-05-14 * :!: This is no part (yet) of the “officicial” distribution but Markus' own version of the plugin, if you are installing Markus' ZIP, there may be some (but mainly harmless) confusion in the Extension Manager

  • new option ~~TODOLIST checkbox:yes|no~~
  • new option ~~TODOLIST username:user|real|none~~
  • new option ~~TODOLIST header:id|firstheader|none~~
  • Configuration of default values for above option in the Configuration Manager.
  • If AllowLinks is off, render the TodoText as a link to the page where the todo is located
  • new option: start and due date. (css) colored output when todo is started or due
  • Assign multiple users to a todo

Version 03/17/2014 (by Leo Eiblerleibler

): zip version 2014-03-17 ( (by leiblerleibler


  • if a todo is checked or unchecked a descriptive summary (text in todo) will be used for history
  • todos can be assigned to email address
  • @@MAIL@@ and @@USER@@ matches both for logged in users email address
  • @@USER@@ matches logged in users username

Additional changes in 03/17/2014 (by Klap-inKlap-in


  • New listing syntax: ~~TODOLIST~~ with simplified filter options.
  • Refactoring of code breaks the compatibility with current version (2013-06-16c) of searchpattern plugin
  • Not fixed issue with searchpatterns: checking/unchecking of todos in searchpatterns listing don't work correct
  • Checks modification dates, to protect against overwriting
  • Locking in javascript, so only one request is done simultaneously
  • Update javascript, refactor and reformat php
  • Some other translatable texts

Version 04/13/2013 (by Christian Marg and Leo Eiblerleibler


  • Bugfix script.js chk.attr('checked') by Christian Marg
  • Bugfix configuration option Strikethrough

Version 04/11/2013 (by Leo Eiblerleibler


  • add user assignment for todos (with @username syntax in todo tag e.g. <todo @leo>do something</todo>)
  • add handler method _searchpatternHandler() for dokuwiki searchpattern extension.
  • bugfix: encoding html code (security risk <todo><script>alert('hi')</script></todo>) - bug reported by Andreas
  • bugfix: use correct <todo> tag if there are more than 1 in the same line - migrate changes made by Christian to current version of plugin (changed behaviour - when multiple todo-items have the same text, only the clicked one is checked)
  • add description / comments and syntax howto about integration with searchpattern
  • check compatibility with dokuwiki release 2012-10-13 “Adora Belle”
  • remove getInfo() call because it's done by (since dokuwiki 2009-12-25 “Lemming”)

Version 04/05/2013 (by Leo Eibler/leiblerleibler


  • migrate to new dokuwiki version (use instead of sack()).
  • add german language file.

Version 08/16/2010 (by Babbage):

  • Fixed another bug where javascript would not decode the action text properly (replaced unescape with decodeURIComponent).

For a full changelog, please visit (up to v2010-08-16) and (since v2013-04-05)

Possible features for a next release

Please post your feature requests on GitHub

  • Implement time management by using square brackets [<startdate> for latest starttime and ]<enddate> for latest finish time. done: 2014-05-14 on github (missing feature: filter by dates) see bug #16
  • Additional Option to render a list without ckeckboxes:
    ~~TODOLIST checkbox:no|yes~~
    interesting to put the list in the sidebar:
    ~~TODOLIST assigned:@@USER@@ checkbox:no completed:no~~
    done: 2014-05-11 on github
  • Headers of the list with the first Header of the Page instead of the namespaces:
    ~~TODOLIST header:firstheader~~
    done: 2014-05-11 on github
  • Assign multiple users to a todo <todo @user1 @user2>task</todo> done: 2014-05-15 on github
  • Additional option to render the real name of the user instead of the username or nothing (e.g. useful when using @@USER@@):
    <todo username:user|real|none>
    ~~TODOLIST assigned:@@USER@@ username:none~~
    done: 2014-05-11 on github
  • Can we have a filter of tasks “completedon”, completedbefore and completedafter (similar to duebefore etc) so that we can see when tasks were completed. Would be good to be able to list tasks by completed date (got to keep those minions working somehow
  • make it possible to have more than one todo tag in the same line (e.g. separated by \\)
    this might be useful to have more than one todo in a box in a table (workaround to assign a task to multiple users)
  • Would be cool to have tags , display single page of tagged tasks, formatting inside task, quick links to the page, and priority of the task!! thanks:!
  • Can we have the list of tasks filtered on the start and due dates? Allow filtering of jobs to show just those due in the next 7 days, or jobs starting in the next 7 days. Full examples in the GIT page for how it might work. Update : I think this might now work using the duebefore and due after with the +10 -10 relative references only I can't get this to work myself.
    Should work, only issue: then only tasks with given dates will be shown. We need an 'start-/due-ignore' option to solve this.
  • Thank you for this wonderful plugin. I have one request. In TODOLIST, each todos links to the original page where it's located, Since table header does same action, in my opinion, that links are not needed. Instead, when I click the todo, mark as done would be nice. Also, since it's a link, changing text color doesn't work on the TODOLIST. Thanks for reading.
  • absolutely great plugin! thank you!
    would it be possible to allow also dates formated DD.MM.YYYY (which is very common in Austria ;-))

    I'm from Austria too ;) but the only useful order in the date format is YMD - especially for sorting.
    Things are possible but don't make sense in some way.
  • Thank you for this excellent plugin! Would it be possible to augment each to-do item with two more fields: (a) details and (b) action taken? They are useful especially in cases where items are assigned to different people. The fields could be possibly hidden and get displayed only if a spoiler-like button is pressed. The first is needed in order to describe the assignment in detail and (b) should be a description by the person who acted on the assignment.
  • Very nice plugin! Started using it only 5 minutes ago and I already love it. I do have 1 question: is it possible to display tasks, without hav in a list-like format (under eachother) instead of on 1 lineing to use an actual list or paragraphs? I guess I might be able to achieve this by using \\
    Also, it would be nice to allow links inside the todo, now I have to put a link after the todo or place it outside the todo, resulting in a line being half todo half link
  • I'm looking for a short kind of info string to be displayed after a page link, displaying how many todos the page have and how many of them that are checked, such as “(5/10)”

    See the short option. — runoutrunout

    2017-08-28 10:12
  • Is it possible to show a list of todos filtered by “completed by” and “when” depending on who checked the checkbox? Again its to keep the minions working. I'd like to add a section for each tech to my “dashboard” page that shows me who has completed what tasks and when. I currently have an outstanding task list for each tech but not a list of the work they say they've completed. Something along the lines of ~~TODOLIST completedby:tech1 showcompleteddate:yes showcompletedtime:yes completedafter:-1~~ will show me the work they have completed today(no matter who it was assigned to). Also something like ~~TODOLIST assigned:tech1 completed:yes showcompletedby:yes showcompleteddate:yes showcompletedtime:yes completedafter:-1~~ will show me their own tasks completed in the last day, when completed and by whom.

    try the option completeduser for filtering which user has checked the box. Showing the completed-date is not implemented. — runoutrunout

    2017-08-28 09:35
  • Change link option from “pages with the same name” to “by Attribute”. For Example “@link:T0012” if a automatic naming scheme could be implemented, otherwise “@link:wiki:test:start” or external target like phone NR “@link:tel:+1356465654” or Websites “@link:”.


plugin/todo.txt · Last modified: 2017-08-28 11:17 by runout