Comments and Feedback for ToDo


I now have mailing lists established to discuss issues and suggestions regarding the development of this cookbook recipe. Please consider posting your comments, feedback and questions there so that I could see them more quickly. Thanks.

2005-12-02, Julian I. Kamil

Please place your comments and feedback as comment bubbles in the section below with the appropriate title.

Can't get XToDo to work at all

I'm sure I'm missing something very simple here, but when I try to run XToDo on my wiki it creates three warning messages in the wiki header, all relating to the include_once line in config.php. The warnings are failed to open stream: No such file or directory in..., failed opening 'cookbook/XToDo.php' for inclusion and Cannot modify header information - headers already sent by.... I'm sure this is some form of path error, but despite changing the include_once entry to every conceivable relative and absolute path, I can't seem to get around it. By the way, I've triple-checked (more actually) - the files are in the correct places. Any help gratefully received.


I use the XToDo since a year with great success. But unfortunately since I updated my WIKI to the newest Version 2.2.0-beta63 the macros todolist and todosimplelist doesn't work at all. Is there a conflict with an change in the update? Up to which version does XToDo work? Thank you!


I'm with MarBen here, not displaying in pmwiki Version 2.2.0-beta 61, either. It's a compatibility issue with pmwiki, I think, as I've tried several older versions of xtodo to no avail. Is there a fix on the way?


I found a workaround: change file XToDo.php on line 117 and 120:


     117: Markup('todolist',       'directives', ...
     120: Markup('todosimplelist', 'directives', ...


     117: Markup('todolist',       'fulltext', ...
     120: Markup('todosimplelist', 'fulltext', ...

I still don't have a solution for the todoversion markup.

2007-08-20, MarBen

This gives an error at my, but as I understood someone named PKHG found a solution. PKHG, are you willing to share your solution (adjustments) with us? That would be really great! Any other help would be great to anyway, as I'm a real pmwiki newbie. It would be good to have the ToDo stuff up and running.

Thanks Max

2007-12-02, mwiertz

The workaround above worked for me, if I remember correctly and my short test today was ok. But I made some more changes to the script for my website. What error do you get?

2007-12-05, NH

Skin CSS not used in Edit Form

I have integrated the skin css file by using the $SkinDirUrl variable, but on the edit ToDo item form the variable seems to be empty. The result is a really ugly layout. ;) I'd really like to fix it. Thanks for any hints.

Bug in XToDoListGet()

I get a warning from XToDo (v 1.14) when I have no items in my list:

    Warning: Invalid argument supplied for foreach()
    in .../pmwiki/cookbook/XToDo.php on line 610

If I change a return statement in XToDoListGet(), the warning goes away. Line 511:

    if (empty($todo_list)) return;
    if (empty($todo_list)) return array();

Good catch, nbk, that's a bug. I'll fix the code in the next release. Update: This has now been fixed in version 0.4.7, released on 2005-11-02.

2005-10-25, Julian I. Kamil

An 'after today' selector feature?

I would like to hide item that have a due date in the past. How could I do that ? Is there a kind of due='after today' selector ?


David, we do not have that selector at the moment. However, I do think that an 'after today' selector could be useful, so I'll add that to the list of features for the next release. Update: This has now been implemented in version 0.4.8, released on 2005-11-03.

2005-10-28, Julian I. Kamil

Bug with to do list in Main.HomePage

I found a small bug when i display a todo list in Main.Homepage :

if the page is called by index.php?n=Main.HomePage, its ok but it doesn't work if its called by index.php without args, even if Main.Homepage is displayed as default.

It seem that $pagename is not set correctly in this case. Seems like a pmwiki bug, but it can be worked around by a simple test like : if ($pagename) $pagename='Main.Homepage'; in the display sections.


I'll take a look at this issue, too, and make sure that it's not a bug in the plugin. Update: This has now been fixed in version 0.4.7, released on 2005-11-02.

2005-10-28, Julian I. Kamil

Translation issue with 'create date' field title

I found a small bug : line 212: "Create Date :" should be $todo_field_names[5] it's better for translate.

And a bug : line 54; when you change Date Format (ex.d-m-Y) there is a bug with Due date; every task are OverDue (in red) except Completed task


Thanks, juytter. Update: This has now been fixed in version 0.4.7, released on 2005-11-02.

2005-11-02, Julian I. Kamil

Possible 'object move' error

I think I found a bug. After I click "submit", I got "Object Move" page and no way to go back the todo list page. Could anyone help me with this? Thanks.


Aaron, do you have more information regarding this problem? Is there a page I can visit to replicate the error?

2005-11-21, Julian I. Kamil

I put the following three lines in a page.

(:todoform category='<name>,..':)

My enviroment is WinXP + II5 + PHP4.3.10. When I click the submit on the "todoform", there is a response page showing out. The page has the information that is shown in the following.

Object Moved This document may be found here (<----this is a link)

And, when I see the "here" link, I found it link to "http://localhost/pmwiki-stf/pmwiki.php?action=todo&do=create-todo-item" (I'm using a localhost.)

When I go back to the page, I did found the item that I added in todolist. I just cannot understand why I got the "Object Moved" page.

Thank you for your help.


I had the same problem on a Windows 2K IIS4/5. The problem is that IIS does not support $_SERVER['REQUEST_URI'] correctly , i have problems with several php-scripts depending on this.

a simple workaround is this (put it at the beginning of XToDo.php or even pmwiki.php as it perhaps fixes more problems ) :

 //version from manual (did not work for me)

 if(!isset($_SERVER['REQUEST_URI'])) {
  $arr = explode("/", $_SERVER['PHP_SELF']);
  $_SERVER['REQUEST_URI'] = "/" . $arr[count($arr)-1];
  if ($_SERVER['argv'][0]!="")
   $_SERVER['REQUEST_URI'] .= "?" . $_SERVER['argv'][0];

... or (the second one worked better for me !! )

// IIS bugfix (even better put this into your pmwiki, as it also fixes problems with login-page!

 if(!isset($_SERVER['REQUEST_URI'])) {
   $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'] ."?" . $_SERVER['argv'][0] ;

P.S. there is a similar problem with $_SERVER["DOCUMENT_ROOT"] which can be similated with dirname(dirname(__FILE__)) until you have your correct path ;)

see: for many IIS-Related Bugfixes !!! Avoid IIS if you can and use Apache ;)

I tried to run the script on IIS even with bugfixing the REQUEST_URI, but the way of creating urls is very BUGGY , when you dont have mod-rewrite and IIS. I GIVE UP !!! ( there is cheating very much in the code by cutting parts of the url, which is not very reliable if you work with IIS !!! The way the scriptauthor cheats/works with REQUEST_URI is very bad, he should have used real $_GET variables !!!

2006-02-18, Daniel . U

I don't see any problem with the markups you have above, except that I hope you did not mean to put the angle brackets literally. So:

(:todoform category='<name>,..':)

should really be:

(:todoform category='Category 1, Category 2':)

and so on. If that does not help, I would have to ask someone with a Windows environment to try to replicate your issue. Unfortunately, I don't have access to an IIS setup to be able to do so. Can anyone else help?

2005-12-02, Julian I. Kamil

Suggestion for time granularity

It'd be great, if the list could check for a specified time and not only for a date. Nowadays the ToDos have to be resolved timely and not day wise... ;-)

2005-11-25, Malte

Malte, you must be living in the fast lane... :-) I'll take your suggestion into consideration.

2005-12-02, Julian I. Kamil

Useful modifications

Mail notification

Main tasks page

Great script! This is useful. I made many modifications to it, to customize the output, etc. The most useful one is a mailing notification, since adding a new task does not actually update the page and so will not otherwise generate a mail post for those who use them. Here is an example of my new mail function. The last few lines show how you could identify whether a checkbox form field called "notify" is checked (with value "yes") and then use the result to determine if an additional notification should be sent to a second user.

 $user1 = '<>';
 $user2 = '<>';
 function mwmail($to) {
   global $user1;
   global $user2;
   $from = $user1;
   $subject = "Task Update";
   $text = "This is an automated message.\n\n"
       . "A task has been updated.\n\n"
       . "Task: ".$_POST['todo-description'];
   mail($to, $subject, $text, "From: $from");
   if ($_POST['notify']=='yes') {
     mail($user2, $subject, $text, "From: $from");

I then insert the lines below in two places.

 global $user1;

The two places are both before "WritePage" statements. One is in the function XToDoCreateToDoItem, and the other is in the function XToDoUpdateToDoItem.

Notes pages

Automated mail notifications after creating or changing notes is easier, since the notes are actual wiki pages in the XToDo[Group] group, where [Group] refers to the group of the main task page. To get the automated notifications for notes, just create the group script XToDo[Group].php in your "local" directory, and set it up with statements like "$MailPostsDelay = 0;".

Suggestions: sorting; date criteria

How about a feature to sort on multiple criteria, instead of just one? I could not get it to work that way.

For relative dates, it would be handy to have a way to provide listings in the past 30 days, a date range like "today-30 to today".

Defaults in form fields


I ended up deleting this line from the script, in the function XToDoFormOwner.

 if (empty($selected)) $output[] = "<option selected></option>\n";

Deleting it seemed to make the first listed owner be the default, instead of a null default, and this is what I wanted.

Due date

It was handier to have the default due date be a week in advance. I changed this from the first section, to the second section below, in XToDoFormDueDate.

    $output[] = "<div><input type='radio' name='todo-due-date'
      value='{$tomorrow_date}' {$default_checked}> {$tomorrow_date}
      (tomorrow) </div>";
    $output[] = "<div><input type='radio' name='todo-due-date'
      value='{$next_week_date}'> {$next_week_date} (next week) </div>";

    $output[] = "<div><input type='radio' name='todo-due-date'
      value='{$tomorrow_date}'> {$tomorrow_date} (tomorrow) </div>";
    $output[] = "<div><input type='radio' name='todo-due-date'
      value='{$next_week_date}' {$default_checked}> {$next_week_date}
      (next week) </div>";

This moves from tomorrow's date to next week's date.

User-based colors

Another trick is to provide highlighting based on the user. Here is an example of changes to XToDoListDisplay.

  if ($owner=='Michael') $owner_color='green';
  $output[] = "|| [[{$pagename}?action=todo&do=edit-todo-item&todo-item=
    {$group_name} | {$todo_item['name']}]] ||%".$owner_color."%{$owner}%%:
    %class=todo-category-text%({$todo_item['category']})%% {$notes} 
    |||||||||||||||| \n|| || ||".$todo_priority_names[$todo_item
    ['priority']]."|| {$overdue[0]}{$completed[0]}{$todo_item['status']}
    {$completed[1]}{$overdue[1]} || {$todo_item['create_date']} || 
    {$overdue[0]}{$todo_item['due_date']}{$overdue[1]} || {$completed[0]}
    {$todo_item['completed_date']}{$completed[1]} || \n";

This puts the owner in a red font, unless it is "Michael", when it will be green. You will also notice here that I swapped the order of the rows and added another (blank) table column, to improve readability.

Cleaner tables

Deleting most of the table formatting often helps improve readability. Here is a clean layout with bold descriptions.

 $HTMLStylesFmt['todo'] = <<< EOT
 .todo-form { border: none; }
 .todo-form tr td { border: none; font-weight: plain; text-align: left; }
 .todo-form tr td.heading { text-align: right; }
 table.todo-list { background-color: #FEFCCD }
 table.todo-list tr.row1 { color: gray; }
 table.todo-list tr.row1 td { }
 table.todo-list tr.row2 { }
 table.todo-list tr.row2 td { }
 table.todo-list tr:last-child.row1 td { border-bottom: none; }
 table.todo-list th { }
 table.todo-list tr td { }
 table.todo-simple-list { }
 table.todo-simple-list tr td { border: none; }
 .todo-category-text { }
 .todo-description-text { font-weight: bold; }
 .todo-overdue-text { }
 .todo-completed-text { }
 .todo-legend { text-align: center; font-size: smaller; }

2005-12-01, Mike

Mike, these are really good tips, thanks. I'll see about incorporating the mail notification feature first, that's very useful.

2005-12-02, Julian I. Kamil

Ignore Group of ToDo item?

I'd like to share my ToDo items across different groups. I have Projects group that I'd like the ToDo items available to the individuals to use in their Profile Pages, but can't because Profile is a separate group. Can I disable this feature?

2005-12-07, Josiah Ritchie

At present, this cannot be easily done without code modifications, because the markup handler looks specifically for the group of the page to determine where to store or look for the to do items. However, this is is definitely useful to have, so I'll add it to my list of to do items to be implemented... ;-)

2005-12-15, Julian I. Kamil

It can be accomplished fairly easy by adding the following code to your xtodo.php file:

Line 107:

  • Markup('todosimplelist_alt', 'directive', '/\\(:todosimplelist\\s*(.*?):\\)/e', "XToDoSimpleListMarkup_alt('$pagename', '$1')");

Line 168:

  • function XToDoSimpleListMarkup_alt($pagename, $args) {
    $args = ParseArgs($args);

    if (!empty($args['status']))    $criteria['status']    = $args['status'];
    if (!empty($args['category']))  $criteria['category']  = $args['category'];
    if (!empty($args['sort']))      $criteria['sort']      = $args['sort'];
    if (!empty($args['completed'])) $criteria['completed'] = $args['completed'];
    if (!empty($args['due']))       $criteria['due']       = $args['due'];
    if (!empty($args['created']))   $criteria['created']   = $args['created'];
    if (!empty($args['show']))      $options               = XToDoGetShowOptions($args['show']);

    global $DefaultPage;
    if (empty($pagename)) $pagename = $DefaultPage;

    return XToDoSimpleListDisplay_alt($pagename, $colorize = ($args[''][0] === 'colorize'), 
       $criteria, $options);


Line 716:

  • function XToDoSimpleListDisplay_alt($pagename, $colorize, $criteria, $options) {
    global $todo_completed_status_name, $todo_overdue_status_name, $todo_summary_length, $todo_status_codes;
    global $todo_status_icons;

    $group_name = FmtPageName('Todo', 'ToDoInclude');
    $todo_group = "XToDo";
    $todo_items = XToDoListGet($todo_group, $criteria);

    $output[] = "\n||class=todo-simple-list \n";

    foreach ($todo_items as $todo_item) {
$days_to_due = (int) ceil((strtotime($todo_item['due_date']) - time()) / 86400);
        if ($colorize) list($overdue, $completed) = XToDoGetDisplayHighlight($todo_item);
        $checked = ($todo_item['status'] === $todo_completed_status_name) ? "\"Completed on: 
            {$todo_item['completed_date']}\"" : "\"Due in:  days ({$todo_item['due_date']})\"";
        $display_description = XToDoAbbreviateText($todo_item['description'], $todo_summary_length);
	$todo_status_code = XToDoIsItemOverdue($todo_item) ? $todo_status_icons[$todo_overdue_status_name] : 
	$todo_status_code = " ||  ";
	$notes = empty($todo_item['notes']) ? '' : "»  {$todo_item['notes']} ";
        $output[] = "|| [- [[?action=todo&do=edit-todo-item&todo-item={$todo_item['name']}&todo-
            group=&todo-group-name= | Edit]] -] ||[{$todo_item
            ['priority']},{$todo_item['urgency']}] {$overdue[0]}{$completed[0]}{$completed[1]}
            {$overdue[1]}  ||\n";

    return FmtPageName(implode('', $output), $pagename);


Then enter the name of the Group and pagename into the $group_name variable above.

Call the list with (:todosimplelist_alt:)

2006-01-26, Brett DeWoody?

Fixing form-field names

It is not a good idea to use hyphens in form-field names, such as todo-due-date. Referencing these fields with JavaScript does not work. The hyphens should be removed.

2005-12-09, Mike

You're right, Mike. I don't program much JavaScript, so I didn't realize this until you pointed that out. I will see about converting dashes into underlines. Thanks.

2005-12-15, Julian I. Kamil

I changed all - with _ , so feel free to use the fixed version (base is the current latest see attachment above, this version also has the bugfix for removed empty todo-owner, also i simplified the entry-form to only have the most important fields. it also contains the REQUEST_URI bugfix for IIS (Windows-Server)


use at your own risk as it is still very buggy, due to the way the scriptauthor relies on replacing things out of REQUEST_URI, and relies on mod_rewrite on. => it still does not work for me, but somebody can try to improve it... ;(

2006-02-18 , Daniel Unterberger

I cannot get category="group name" to work

Hi i am trying to show a todo list from another wiki group in a different group. Lets say i have a "project/todos" "and i am trying to put that in my homepage which is "main/homepage". I use (:todolist colorize category='project':). But it does not seem to show up. ANd i looked into wiki.d folder , i do have XToDoProject.xxxxxxxx. I use pmwiki standalone version thnx

2005-12-13, Kursad?

Kursad, you can select to do items based on one or more categories that you define in your configuration as members of $todo_category_names array (see the 'Installation' section above). It is different from the group name of the Wiki page. See the above posting from Josiah Ritchie suggesting that group names should be allowed as another selection criteria. Until that is implemented, you won't be able to select items that belong to other groups.

2005-12-15, Julian I. Kamil

I wanted to create individual to-do lists for each user that would display only their assigned tasks. This required adding one line of code to the XToDo.php file. The new lne is the "owner" line:

function XToDoSimpleListMarkup($pagename, $args) {

    $args = ParseArgs($args);

    if (!empty($args['status']))    $criteria['status']    = $args['status'];
    if (!empty($args['category']))  $criteria['category']  = $args['category'];
    if (!empty($args['sort']))      $criteria['sort']      = $args['sort'];
    if (!empty($args['completed'])) $criteria['completed'] = $args['completed'];
    if (!empty($args['due']))       $criteria['due']       = $args['due'];
    if (!empty($args['created']))   $criteria['created']   = $args['created'];
    if (!empty($args['owner']))    $criteria['owner']    = $args['owner'];
    if (!empty($args['show']))      $options               = XToDoGetShowOptions($args['show']);

    global $DefaultPage;
    if (empty($pagename)) $pagename = $DefaultPage;

    return XToDoSimpleListDisplay($pagename, $colorize = ($args[''][0] === 'colorize'), $criteria, $options);


2006-01-22, Brett?

I´d like to jump to a spoecified Group.Site after updating a todo item.


everytime a update a todo item i am redirected to the Site Main.HomePage in PMwiki. But I´d like to go to TodoGroup.TodoList automatically. How can i configure this?

2006-02-08, Sven?


Yes, you can. go to XToDo.php. Find "update", change this line $next_page = "{$url_parts[0]}}"; to $next_page = "{$url_parts[0]}?{$url_parts[1]}";

I have a new question: Anybody can point me how to integrate XToDo with PmCalendar? (so I can display todo due date in calendar).


Is is normal?

Hi, When I put the PRE wiki tag [ @ the markup for the todo list is always interpreted as the todo list. Is it normal?

Second question : in the markup definition, 'directive' is used In the Pmwiki doc all the time is 'directives' wich is used. Where is the trick? 22 Feb 06, Stephane Brussels

Others dates formats?

Hi, As we works with european dates, we need to use d/m/Y format. I try to do that by changing the todo_date_format parameter, wich is okay for all the screen output. But there are some trouble with the calculation for the due dates and in certain case the saved date are changed (year plus one,...) So the question is : todo_date_format is used to output the datas, but is it also the case in the calculations?

Thks for the help

22 Feb 06, Stephane Brussels

Other Useful Selectors

Excellent recipe!
Now for the suggestions:
How about 'today+1', 'today+2' for tomorrow, day after tomorrow, etc. Of course, 'today-2' would be the day before yesterday. In the same vein, how about 'm=now', 'm=now+1', 'm=now-2' for this month, next month, two month ago, etc. You get the idea.

21 Mar 06, Rohan Khaleel

Problems Displaying To Do's

I must be doing something wrong. I have a very simple page here:

yet when I enter To Do's in the form, they do not appear in the list. What am I missing?

2006/06/23 Steve

I also have this problem:

My To Do's do not appear in the list, even though I know I followed the howto. I've checked and the files have been created (XToDoSite.000001 and XToDoSite.000002) Please help.

2009/06/11: Do you have a solution for this?

2009/03/28 linda?

Redirect after delete

Hi, everytime deleting a a todo item from the simplelist i am redirected to instead of How can i configure this?

31 Oct 06, Dirk Lesniewsky

2006/10/31 lesn?

Change last line in XToDoDeleteToDoItem function:

header("Location: {$pagename}");

header("Location: ?n=$Group.$Name");

4 Sep 07, Adamkovič Rudolf - Salutis

Valid XHTML Fix

Howdy everyone, XToDo does not currently give valid XHTML 1.0 Transitional (what PmWiki is) or CSS2. I've changed the code on my site, but the code source doesn't have the changes. Here are my changes to give valid XHTML 1.0 Transitional (but not CSS2, see footnote):

In 'XToDo.php'
line 301:    $action = "{$_SERVER['REQUEST_URI']}?action=todo&do=create-todo-item";
line 379:    $action = "{$url_parts[0]}?action=todo&do=update-todo-item";
line 692:    $output[] = "|| [- [[{$pagename}?action=todo&do=edit-todo-item&todo-item={$todo_item['name']}&todo-group={$todo_group}&todo-group-name={$group_name}
                      | Edit]] -] {$todo_status_code}||[{$todo_item['priority']},{$todo_item['urgency']}] {$overdue[0]}{$completed[0]}{$display_description}{$completed[1]}{$overdue[1]}
                      {$notes} ||\n";
line 713:    $output[] = "|| [[{$pagename}?action=todo&do=edit-todo-item&todo-item={$todo_item['name']}&todo-group={$todo_group}&todo-group-name={$group_name}
                      | {$todo_item['name']}]] ||".$todo_priority_names[$todo_item['priority']]." ||".$todo_urgency_names[$todo_item['urgency']]." || {$todo_item['p*u']}
                      ||{$overdue[0]}{$completed[0]}{$todo_item['status']}{$completed[1]}{$overdue[1]} || {$todo_item['create_date']} || {$overdue[0]}{$todo_item['due_date']}{$overdue[1]}
                      || {$completed[0]}{$todo_item['completed_date']}{$completed[1]} || \n|| ||%class=todo-category-text%{$todo_item['category']}%% {$owner} &mdash;
                      %class=todo-description-text%{$todo_item['description']}%% {$notes} |||||||||||||| \n";
line 725:    .todo-form tr td { border: none; font-weight: plain; text-align: left; padding: 4px; }
line 301:    $action = "{$_SERVER['REQUEST_URI']}?action=todo&amp;do=create-todo-item";
line 379:    $action = "{$url_parts[0]}?action=todo&amp;do=update-todo-item";
line 692:    $output[] = "|| [- [[{$pagename}?action=todo&amp;do=edit-todo-item&amp;todo-item={$todo_item['name']}&amp;todo-group={$todo_group}&amp;todo-group-name={$group_name}
                      | Edit]] -] {$todo_status_code}||[{$todo_item['priority']},{$todo_item['urgency']}] {$overdue[0]}{$completed[0]}{$display_description}{$completed[1]}{$overdue[1]}
                      {$notes} ||\n";
line 713:    $output[] = "|| [[{$pagename}?action=todo&amp;do=edit-todo-item&amp;todo-item={$todo_item['name']}&amp;todo-group={$todo_group}&amp;todo-group-name={$group_name}
                      | {$todo_item['name']}]] ||".$todo_priority_names[$todo_item['priority']]." ||".$todo_urgency_names[$todo_item['urgency']]." || {$todo_item['p*u']}
                      ||{$overdue[0]}{$completed[0]}{$todo_item['status']}{$completed[1]}{$overdue[1]} || {$todo_item['create_date']} || {$overdue[0]}{$todo_item['due_date']}{$overdue[1]}
                      || {$completed[0]}{$todo_item['completed_date']}{$completed[1]} || \n|| ||%class=todo-category-text%{$todo_item['category']}%% {$owner} &mdash;
                      %class=todo-description-text%{$todo_item['description']}%% {$notes} |||||||||||||| \n";
line 725:    .todo-form tr td { border: none; font-weight: normal; text-align: left; padding: 4px; }
The line breaks are only to format long lines and should be removed when implementing the code.
The lines were originally broken where there was a space (i.e. ' ').
Footnote: in line 730 of 'XToDo.php' there is a pseudo-class element called "last-child." This is a CSS3 term (not CSS2) so the w3c validator will give an error for this. I recommend removing "last-child" until w3c updates it's CSS validator. However, I'm not on the dev team, so I leave the decision up to you. The code is still valid XHTML with "last-child."

2007/07/12 Diafygi

Valid XHTML Fix didn't help

I tried the XHTML-fix, but I still can't get this to work. Could you please help?

The files are created, but the the list doesn't show. Check Please help!

2009/12/04 linda?

Fix for pmwiki-2.2.34

A couple of changes fixed it to work again with pmwiki-2.2.34. Please check Cookbook./XToDo-0.5.2.phpΔ

simkin October 22, 2011, at 02:20 PM

Migration to PHP 5.5

	Markup('todoform',       'inline',    '/\\(:todoform\\s*(.*?):\\)/e',       "Keep(XToDoFormMarkup('$pagename', '$1'),'')");
	Markup('todolist',       'directives', '/\\(:todolist\\s*(.*?):\\)/e',       "XToDoListMarkup('$pagename', '$1')");
	Markup('todosimplelist', 'directives', '/\\(:todosimplelist\\s*(.*?):\\)/e', "XToDoSimpleListMarkup('$pagename', '$1')");

if(function_exists('Markup_e')) { # new format, no /e

	Markup_e('todoform',       'inline',    '/\\(:todoform\\s*(.*?):\\)/',       "Keep(XToDoFormMarkup('$pagename', \$m[1]),'')");
	Markup_e('todolist',       'directives', '/\\(:todolist\\s*(.*?):\\)/',       "XToDoListMarkup('$pagename', \$m[1])");
	Markup_e('todosimplelist', 'directives', '/\\(:todosimplelist\\s*(.*?):\\)/', "XToDoSimpleListMarkup('$pagename', \$m[1])");

} else {

	Markup('todoform',       'inline',    '/\\(:todoform\\s*(.*?):\\)/e',       "Keep(XToDoFormMarkup('$pagename', '$1'),'')");
	Markup('todolist',       'directives', '/\\(:todolist\\s*(.*?):\\)/e',       "XToDoListMarkup('$pagename', '$1')");
	Markup('todosimplelist', 'directives', '/\\(:todosimplelist\\s*(.*?):\\)/e', "XToDoSimpleListMarkup('$pagename', '$1')");


2014/03/04 Norbert H?

Please place your comments and feedback as comment bubbles in the section above with the appropriate title.

Talk page for the ToDo recipe (users?).