It's better when it's simple

User Tools

Site Tools


ToDo Plugin

Compatible with DokuWiki

  • 2024-02-06 "Kaos" yes
  • 2023-04-04 "Jack Jackrum" yes
  • 2022-07-31 "Igor" yes
  • 2020-07-29 "Hogfather" yes

plugin Create a simple, checkbox based ToDo List

Last updated on
Syntax, Action

Similar to do, structtasks

Tagged with task, taskmanagement, todo

Needed for bulletodo

Previous authors: Babbage

Download and Installation

Search and install the plugin using the Extension Manager. Refer to Plugins on how to install plugins manually.

Usage and examples

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].

Uncheck All Button

Add ~~TODO:UNCHECKALL~~ to the page. This generates a button with the label “Uncheck all todos”. Once clicked, all ToDos of this page are reset. A minor edit with the summary “Unchecked all ToDos” is created.

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 today's date

Completion User (Who checked it)

Filter by user who checked 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.

However, Backlinks to the TODO do not currently work. Also, if you use the Move Plugin, the link will not be updated/moved if the details page that the link points to is moved.

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

Known Issues

The ~~TODOLIST~~-functionality finds every <todo>…</todo> item, even when inside a code or a file block. Also, after being rendered on a TODOLIST page, toggling the checkbox of that item will update its code accordingly. This was reported in Issue #12 on Github


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 Gschwendt): 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 Eibler): zip version 2014-03-17 ( (by leibler):

  • 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-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 Eibler):

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

Version 04/11/2013 (by Leo Eibler):

  • 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/leibler):

  • 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.
  • When TODO links are turned ON per here, could Backlinks to the original TODO be made to work? That way, when TODO details are entered, it's easy to get back to the TODO item and check the box complete. :-)
  • 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.
    • This behavior can be changed on the configuration page so that the link points to a page named after the link
  • absolutely great plugin! thank you!
    Would it be possible to allow also dates formatted 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 having it in a list-like format (under each other) 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. — runout 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. — runout 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:”.
  • It would be great to have the option to be able to include wiki formatted links within the task so when I have a task to review another page in the wiki or an external URL I can put a formatted link in with a meaningful label rather than the full and often long URL displaying in the task and in the task list



Is it possible to see time dedicated between own tasks and colleagues and friends?

plugin/todo.txt · Last modified: 2024-03-04 10:59 by einhirn

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki