Extension:Todo Tasks

This extension provides the ability to create and modify todo tasks which get assigned to some wiki user(s). The extension also provides the capability of emailing the assignee(s) of the task upon creation/modification of the task. The extension also allows each wiki user to review all of their assigned tasks. Additionally, the extension allows for review of the assigned tasks by projects. Even though this extension is similar to Extension:Tasks Extension, it has some additional functionality and the implementation is more generic due to the use of the Extension:DynamicPageList extension.

Reason for existence
Many companies have a work environment which spans multiple physical locations and employs many people. Oftentimes, meetings are held without a full quorum of attendees. Just as often, tasks and action items coming from these meetings get assigned to people, whether they are present at the meeting or not. This could lead to some tasks getting lost or forgotten.

Wiki usage in the corporate world has greatly reduced the possibility of that happening. With the use of standard templates, the documentation of these tasks is very easy, reliable, and consistent in functionality and appearance. Unfortunately, having the task documented does not guarantee that the task assignee(s) will become aware of that task.

The primary reason for this extension is to notify the task assignee(s) of whatever work they have been assigned to do. The secondary reason for the extension is to provide a simple interface to both create new tasks and view existing tasks. Another reason for the extension is to allow managerial oversight of all assigned tasks by project.

Step 1
Copy the following contents to extensions/SpecialTaskList.php

Step 2
Add the following text to your LocalSettings.php

Step 3
Make the necessary changes to your MySQL database. If you are using a prefix on your tables, replace /*$wgDBprefix*/ with your prefix. Otherwise you should create a table just named 'todo'.

Step 4
If your wiki does not already have it installed, follow the installation instructions to install the Extension:DynamicPageList extension.

Step 5
If your wiki does not already have it installed, follow the installation instructions to install the ParserFunctions extension.

Step 6
Create a Template:Todo with the following code TODO: This template is intended to be used as a note to users to indicate that more work needs to be done. To use this template, use: where the Who field is a comma-separated list of one of the following case insensitive items (in order of preference):


 * 1) Wiki user name
 * 2) A full name
 * 3) The last name of the user
 * 4) A partial name of the user

and project is a comma-separated list of valid projects as defined by MediaWiki:TodoTasksValidProjects.

Step 7
Create a Template:Todo.dpl with the following code This template is to be used only in conjunction with the Dynamic Page List Extension and the Template:Todo. DO NOT MODIFY IT

Step 8
In addition to tasks being assigned to users, tasks can optionally be associated with projects (see todo template for details). This allows for managerial oversight of tasks based on projects. In other words, by going to a special page, the manager could then get a listing of all assigned tasks for a given project.

Decide if project tracking is important. If it is not, then modify SpecialTaskList.php to have

If you decide to perform project tracking (the default), then create the MediaWiki:TodoTasksValidProjects page in your wiki. The format of this page should be similar to Make sure to fill this file with the correct Project Names. This is how the extension knows about valid projects.
 * Project 1
 * Project 2
 * etc

Usage Instructions
The todo template is self documenting. The basic idea is that whenever you want to assign a task to some user, simply add the text where the last parameter is a comma separated list of wiki usernames, full user names, or partial lastnames (case insensitive) to whom the tasks should be assigned. Even if project tracking is enabled, association of a task with a project is optional. To assign a task to a project, simply use where the last parameter is a comma separated list of valid projects as defined in Step 8.

The actual assigning of a task is done when the Save Page button is clicked when done editing the page. The act of assigning the task will send out an email to all task assignees if the md5 sum of the task text concatenated with the task assignees (but not with the task associated projects) is new. In other words, an email will go out whenever the task text is changed, task assignees are changed/reordered, or a new task is created. Note: clicking the Show Preview button when editing the page does not count as an assignment of a task.

Every user can also view their complete list of tasks. This extension will add a new user specific navigation link called My Tasks. When viewed with the MonoBook skin, this link will appear the upper right hand corner of every page. The same list can be accessed by going to Special:TaskList page. Note: to view the tasks of other users, simply go to Special:TaskList/username where username is the username of the user whose tasks you are trying to view. As of v0.7.4, it is now possible to view tasks for a list of users by simply going to Special:TaskList/username1,username2,etc. This is especially handy when a manager wants to monitor the assigned tasks for a whole team.

If project tracking is enabled (see Step 8), then there will be another wiki page entitled Special:TaskListByProject. This page can be used to view all tasks assigned to any user on a per-project basis.

Moving TODO tasks to INPROGRESS
Sometimes, it may be nice to know that tasks are not only assigned or done, but are actually being worked on. This can be easily accomplished with a few small additions/changes.
 * 1) Clone the  template and call it.
 * 2) Clone the  template and call it
 * 3) Edit SpecialTaskList.php. In function wfSpecialTaskList find the section that says something like
 * and add two more lines that look exactly like it, but change todo for inprogress

This way, whenever the user clicks on the "My Tasks" button in the upper right of every page, they will see not only all the TODO tasks assigned to them, but also all INPROGRESS tasks.

Revisions

 * v0.8.1 - October 16, 2007 - fixed a bug in post-processing of Saving A Page for tasks with project= assignments.
 * v0.8.0 - October 12, 2007 - added project tracking capability; properly report version information in Special:Version.
 * v0.7.4 - September 27, 2007 - added a new feature to allow managers to view task assignments to a whole team at once.
 * v0.7.3 - September 19, 2007 - fixed so that Special:Version page displays information correctly.
 * v0.7.2 - August 30, 2007 - properly exit out of hook function, so that other extensions can use the hook.
 * v0.7.1 - August 14, 2007 - fixed a bug which prohibited adding links with alternate text in the todo call.
 * v0.7 - Augist 14, 2007 - better handling of spaces around assignee names
 * v0.6 - August 14, 2007 - fixed a problem where if a todo task is assigned with something other than a username of a user_full_name (i.e. partial last name), the My Task List did not find that task. This now overwrites the text of the article where the task is assigned to change the assignee from the user specified text to the proper user_full_text.
 * v0.5 - August 8, 2007 - fixed a bug where the passed in text was being stripped of all wiki link syntax
 * v0.4 - August 4, 2007 - initial publication on MediaWiki website.