Action Tracker Plugin
This plugin provides support for tracking actions embedded in
meeting minutes. As you write the minutes during the meeting, you simply enter the actions into the text and as soon as the topic is saved, the actions "go live".
WARNING: TWiki-4 only. If you want to use this plugin with an earlier version of TWiki, please see here
Actions are nicely formatted for display, and automatic notification of actions is supported using 'cron'. The action tracker can also be used for private reminders, for example TODO lists and diary entries, and has been successfully applied to functions as diverse as risk management and bug tracking.
( Discussion in TWiki:Plugins/ActionTrackerPluginDev )
This version is the 'Dakar' release version. It
will not work with versions of TWiki released before 2005. Older versions of the plugin are available from
TWiki:Plugins/ActionTrackerPlugin
Features
- Actions may be embedded in TWiki topics.
- Actions can be listed using searches.
- A script is provided for automatic action notification.
- Actions can be assigned to individuals, or to predefined groups of individuals.
- Fully configurable.
Syntax Rules
Actions
Write the command
%ACTION{
attributes }%
anywhere in a TWiki topic. All the text following the final % up to the next end-of-line is taken as the action description. Standard attributes are
Name | Value | Description | Auto-completed |
who | See People | The person or team responsible for completing the action. | current user |
due | See Date Formats | The due date | today |
state | open or closed | Set to open if the action is still open; set to closed if the action is closed. To extend the state set, see Non-standard attributes. | open |
notify | See People | wikinames, or e-mail addresses, of people to notify when the action changes. See Notification for details on action notification. | |
creator | See People | Who created the action. | current user |
created | See Date Formats | Date the action was created. | today |
closer | See People | Who closed the action. | if (and only if) state="closed", current user |
closed | See Date Formats | Date the action was closed, if ever. | if (and only if) state="closed", today |
uid | 6 digit number | Unique ID of the action. See UIDs. | calculated |
For example,
%ACTION{ who="TWikiGuest" due="01 Jan 2020" state="open" notify="AttillaTheHun" }% An action for TWikiGuest
If the action description doesn't all fit on one line you can use shell-style here-document syntax to grab the next few lines. For example,
%ACTION{ who="LittleOysters" state="open" }% <<EOF
The time has come, the walrus said,
To speak of many things.
Of shoes, and ships, and sealing wax,
Of cabbages and kings.
EOF
The delimiter must be a sequence of alphanumeric characters, and the closing delimiter must be on a line of its own.
The fields with an entry in the 'Auto-completed' column are automatically filled in, if they are missing, whenever someone saves the topic containing the action. The default values are as indicated in the table. You can override this behaviour by providing values for any of these attributes when you type the action.
Note: you are
not recommended to provide a value for the
uid
(see
UIDs) field!
Action searches
Write the command
%ACTIONSEARCH{
attributes }%
anywhere in a TWiki topic. Standard attributes are
Name | Value | Description |
who | See People | Person responsible for closing the action. |
notify | See People | Persons who want to be notified of a change |
state | late , or any legal state value | Set to late to search for late actions; set to any any legal state value to search for actions in that state. See Settings for details on how to extend the state set. |
within | a number of days | Search for actions that are within a number of days of their due date. Usually used in conjunction with other attributes, such as state="open" . Works in both directions, so you can use this to search for actions which are going to fall due within a certain number of days, or a negative number for actions that fell due between a time in the past and now. |
web | Perl regular expression | A regular expression that matches the names of all the webs to search. If this attribute is omitted, the default is to search only the current web. Searching many webs is much slower, especially in a large installation. Webs marked NOSEARCHALL will not be searched. |
topic | Perl regular expression | A regular expression that matches the names of all the topics to search. If this attribute is omitted, the default is to search all the topics in the selected webs. |
due | Absolute or relative date expression. See Date Formats | Due date for the action. |
creator | See People | Who created the action. |
created | Absolute or relative date expression. See Date Formats | Date the action was created. |
closed | Absolute or relative date expression. See Date Formats | Date the action was closed, if ever. |
closer | See People | Who closed the action. |
uid | 6 digit number | Unique ID of the action. |
format | Presentation format | See Formatting tables |
header | Presentation format | See Formatting tables |
orient | Presentation format | See Formatting tables |
sort | Comma-separated list of field names | Fields to sort the matched actions by. For example, sort="$who,$due" will sort by who first and then due. This field is optional; by default the table will be sorted by due date. |
For example,
%ACTIONSEARCH{ who="me" state="late" }%
%ACTIONSEARCH{ who="me" open late }%
%ACTIONSEARCH{ who="TWikiGuest" state="open" within="7" }%
%ACTIONSEARCH{ web=".*" who="Genghis.Khan@mongol.empire.org" state="open" within="7" }%
When you are searching for fields containing dates (such as
closed
,
created
and
due
) you can prepend one of the conditions
>, <, >= and <=
to the date. For example,
closed=">1-Jan-1999"
will match all actions that have been closed at any time since 1-Jan-1999, and
created=">= 1-Jan-2000"
will match all actions created this century. You can also specify dates relative to the current date and time. See
Date Formats for details of how to specify relative dates.
For example,
%ACTIONSEARCH{ state="closed" closed="> 7 days ago"}%
will search for all actions closed in the last 7 days.
Date formats
Absolute date formats
Absolute dates are required in action specifications. Date formats must be as recognised by
Time::ParseDate
.
The following absolute date formats are recognised. Dates containing spaces must be enclosed in double-quotes.
- Dow, dd Month yy
- Dow, dd Month yyyy
- Dow, dd Month
- dd Month yy
- dd Month yyyy
- Month day{st,nd,rd,th}, year
- Month dd yyyy
- yyyy/mm/dd
- yyyy/mm
- mm/dd/yy
- mm/dd/yyyy
- mm/yy
- yy/mm (only if year > 12)
- yy/mm/dd (only if year > 12 and day < 32)
You are
strongly recommended never to use the 'mm/dd/yyyy or mm/dd/yyyy' formats, to avoid confusing users in Europe (like me). Note that due to limitations in the Time::Parsedate module, dates before 1970 will not work as expected.
Relative date formats
When you are searching for fields containing dates (such as
closed
,
created
and
due
) you can specify dates relative to the current date and time. For example:
Syntax | Example | Notes |
Dow after next | Tuesday after next | |
Dow | Tuesday | last Tuesday |
next Dow | next Thursday | |
tomorrow | tomorrow | |
today | today | |
yesterday | yesterday | |
last dow | last wednesday | |
last week | last week | 7 days ago |
now | now | |
now + count units | now + 2 years | |
now - count units | =now - 3 weeks | |
+ count units | + 31 days | |
- count units | - 2 months | |
count units ago | 10 days ago | |
People
People are identified to the action tracker using a wikiname (e.g.
Main.WilliamWallace
or simply
WilliamWallace
) or an e-mail address (e.g.
a_einstein@pto.co.ch
). The e-mail address is useful if you want to notify people who aren't registered in the wiki, but bear in mind that if they are outside your firewall, they'll get action notifications but the chances are they won't be able to edit pages and close actions.
Very annoying!
E-mail addresses of people are found by the process
described below.
You can also use the shorthand
me
for the currently logged-in user (this is
TWikiGuest
unless you have been prompted for a username and password). In actions, this will automatically be expanded when the topic is saved, and in searches it will match the currently logged in user.
Groups
You can assign an action to a group defined using a TWiki group topic (see
TWikiDocumentation). Alternatively you can give a list of people as the value of the attribute. For example,
%ACTION{who=TWikiAdminGroup ...}%
%ACTION{who="KnutHaraldsen,MagnusMagnusson" ...}%
Note in general you should not use these mechanisms for assigning actions, because the actions so created are not specific. Actions should be assigned to one person only, so that it's clear who is responsible for them.
UIDs
For administrators only:
Each action is assigned a Unique Identifier (UID) when it is created. This UID is a six-digit number, and is generated when the action is first saved by incrementing a number in a special file (
data/atUidReg
under the TWiki installation). If this file is accidentally deleted, or is not writable, then you will have problems and you may get duplicate UIDs. Normally this won't matter a hoot, as UIDs only
have to be unique within a single topic, but if you are using UIDs for something else you will need to take care.
Notification
ActionTrackerPlugin comes with a notifier script, like the
mailnotify
script used for
WebNotify (see
MonitoringSiteActivity? for more information on setting up mailnotify). This script allows you to:
- examine all the actions in all webs (except those specified NOSEARCHALL) and notify owners of the state of actions,
- find actions that have changed state, and notify people who have registered an interest in that action.
The frequency with which actions are notified depends on how you set up your cron (or equivalent) jobs on the server.
The
actionnotify
script interprets its parameters as a search expression of the same type as that used in %ACTIONSEARCH%. All actions which match that expression will be notified to their owners.
Note that the
actionnotify
script must be run from the
bin
directory. This is so it can pick up the TWiki path configuration file,
setlib.cfg
.
For example, you could set up the cron jobs as follows:
0 * * * * cd /home/twiki/bin && ../tools/actionnotify "state=\"late\""
0 8,16 * * * cd /home/twiki/bin && ../tools/actionnotify "state=\"open\" within=\"3\""
0 0 * * * cd /home/twiki/bin && ../tools/actionnotify "state=\"open\" within=\"7\"
0 0 * * 1 cd /home/twiki/bin && ../tools/actionnotify "state=\"open\" within=\"30\"
(If you don't know cron, the first 5 fields are minute, hour, day of month, month and day of week. * means 'every'). This crontab will notify actions according to the schedule:
- Actions that are late will be notified every hour, on the hour
- Actions that are still open within three days of their due date will be notified twice a day, at 8am and 4pm
- Actions that are still open within seven days of their due date will be notified once a day, at midnight.
- Actions that are still open within thirty days of their due date will be notified once a week, at midnight on monday.
A rather aggressive schedule!
Note: At Wind River they notify folks three times a week on Mon, Wed and Fri for open action items due within 8 days.
Crontab entry for geeks:
0 0 * * 1,3,5 (cd .../bin; ../tools/actionnotify state=open within=8 'web=[CEIMPSW].*' > .../logs/actionnotify.txt 2>&1)
You can configure the fields which are scanned to detect state changes; see
Settings.
Translating names to e-mail addresses
The wikiname of the user to be notified is translated to a mail address according to the following rules:
- If the user has a personal page, and that personal page contains a line or lines matching
spaces * Email: email address
or
spaces * E-mail: email address
Alternatively if the topic is a group definition (the name ends in 'Group') then the line
spaces * Set GROUP =
is used to determine the wikinames of the people in the group. These are resolved to email addresses recursively. If that fails,
- If they appear in any WebNotify in any web, in the form of a line that gives an email address, then that address is used.
- If this fails and the 'who' name is a valid e-mail address, for example person@domain.co.uk, then that name is used.
Note: If a name cannot be translated to an e-mail address using the mechanisms described above, a warning will be output to
data/warning.txt
..
The
actionnotify
script is also used to notify users who have registered an interest in being notified when an action changes. This function of the script is activated when you use the
changedsince
parameter.
changedsince
is used to specify the time period within which changed actions are interesting. Any action which has changed in the given period will be notified to all users who have registered an interest in that action using
notify
. The
changedsince
value is a relative date string, which uses the following formats
-
yesterday
-
last
dow
-
last week
-
now
- count units
-
-
count units
- count units
ago
where
units may be minutes, days, hours, weeks, months or even years.
count is just an integer.
dow is the name of a day of the week. For example:
changedsince="last monday"
changedsince="now - 3 days"
changedsince="- 36 hours"
changedsince="3 days ago"
Obviously you have to be careful to synchronise your
changedsince
expression with the activation of your cron job. The ideal is to specify the same delta as the gap between cron activations. For example,
0 0 * * * cd /home/twiki/bin && ../tools/actionnotify 'web="News" changedsince="yesterday"'
will notify registered users of action changes that occurred in the last 24 hours. Note the use of single quotes to prevent expansion in the shell.
Notes:
- Not all action changes get notified, only changes to certain sensitive fields. You can change the set of fields that are sensitive to changes by setting the NOTIFYCHANGES parameter, as described in Settings, below.
- Unlike all other search terms,
changedsince
works as an OR term rather than an AND term. If you use a compound expression like late,changedsince=yesterday
, this will not give you all late actions that changed since yesterday. Instead, it will give you all late actions and all actions that changed since yesterday.
- If you give the parameter DEBUG to the actionnotify script, it will print out the mails that would have been sent to STDOUT. This is useful for debugging, and may be useful if you have some other processing in mind (such as piping to an alternative mail program).
-
changedsince
requires RCS, and will not work with RcsLite.
Customisation
To customize the edit screen create a directory in the template directory that matches the name of the web. Copy the action tracker templates into the new directory.
Formatting search tables
The
header
,
format
and
orient
parameters of
%ACTIONSEARCH{}%
support formatting of the action table using a similar syntax to that described in
FormattedSearch. For example:
%ACTIONSEARCH{ web="Directors" state="open" format="|$who|$text|$edit|" header="|Director|Films||" orient="rows" }%
Name: | Expands To: |
$who | Who is responsible for the action |
$due | When the action is due |
$state | Current state of the action (see also note below) |
$notify | Who to notify when the action state changes |
$closed | When the action was closed, and who closed it |
$creator | Who created the action |
$created | When the action was created |
$edit | A link to the action editor for this action |
$uid | Unique identifier for the action |
$web | Name of the web containing the action |
$topic | Topic name containing the action |
$text | Formatted action text |
$n or $n() | New line |
$nop or $nop() | Is a "no operation". This variable gets removed. |
$quot | Double quote (" ). |
$percnt | Percent sign (% ) |
$dollar | Dollar sign ($ ) |
A default format for actions and action search results can be defined in this topic or the WebPreferences topic of the current web. See
Settings for more details.
Non-standard Attributes
As well as the standard attributes you can add non-standard attributes to actions, and use them in searches. For example:
%ACTION{ who="EmperorHadrian" due="1 Jan 0053" state="closed" legion="7th" cohort="6th" maniple="3rd" }% Build a wall to keep the Scots out of England
Non-standard attributes must be lower-case words. The following names may not be used for non-standard attributes:
closed
,
closer
,
created
,
creator
,
dollar
,
due
,
edit
,
format
,
header
,
late
,
n
,
nop
,
notify
,
percnt
,
quot
,
sort
,
state
,
text
,
topic
,
uid
,
web
,
who
,
within
.
To define non-standard attributes you need to set the value of EXTRAS in this topic (or to the WebPreferences topic of each web) - see
Settings below. All attributes must be given a type, which is used by the formatter, the search engine and the action editor. For example,
* %Set EXTRAS = |plaintiffs,names,16|decision,text,16|sentencing,date|sentence,select,"life","5 years","community service"|
The following types are supported:
Type | Format | Description |
select | select, size, "option 1", "option 2", ... | Can take one of the string values option1, option2,.... etc. |
names | names, size | One or more wikinames or e-mail addresses. |
text | text, size | An arbitrary text field |
date | date, size | A date in one of the formats described above. See Date Formats |
In the above,
size is a single number, which is the width (in characters) of the text box in the action editor for
text
,
names
and
date
, and the number of options to show in
select
..
Note that there is one exception to the "no redefinition" rule above; the
state
attribute can be extended to take extra states. However if you want the closure functionality (closed, closer, and late actions) to work, the
closed
state must be retained. To extend the set of states, simply include a definition of
state
in the EXTRAS definition:
* %Set EXTRAS = |state,select,1,"open","fried","boiled","poached","closed"|
Searching for non-standard attributes
You can of course search for values of non-standard attributes. For example:
%ACTIONSEARCH{ sentence="life" }%
If a non-standard attribute is declared as type
text
you can use perl regular expressions in the search. Searches for values of type
names
will match any-to-any. For example,
%ACTIONSEARCH{ car="VolkswagenBeetle,MercedesCoupe" }%
will match both of the following actions:
%ACTION{ car="VolkswagenBeetle,AudiSport" ... }%
%ACTION{ car="ToyotaSupra,MercedesCoupe,ColtLancer" ... }%
ActionTrackerPlugin Settings
These settings can be overridden in the WebPreferences topic of the current web (by defining ACTIONTRACKERPLUGIN_TABLEHEADER or ACTIONTRACKERPLUGIN_TABLEFORMAT etc).
- Set to 1 to enable debug features, including the undocumented
%ACTIONNOTIFICATIONS{}%
and %ACTIONTRACKERPREFS%
features.
- One line description, shown in the TextFormattingRules topic
- Set SHORTDESCRIPTION = Adds support for action tags in topics, and automatic notification of action statii
- The format of an action output. The following fields can be output: web, topic, text, who, due, notify, uid, creator, state, edit, and any EXTRAS you may have. These settings can be overridden in an ACTIONSEARCH command using the
format
and header
attributes. TABLEHEADER defines the column headings, TABLEFORMAT defines the contents of the columns, and if TABLEORIENT is set to "rows", action tables will be aligned as rows of values instead of the default columns of values.
- Set TABLEHEADER = | Assigned to | Due date | Description | State | Notify ||
- Set TABLEFORMAT = | $who | $due | $text | $state | $notify | $edit |
- Set TABLEORIENT = cols
- The alternative text format of an action, as seen by a mail recipient who doesn't accept HTML in mail. Used when mailing action or change notifications.
- Set TEXTFORMAT = Action for $who, due $due, $state$n$text$n
- Important changes since the last release: Colours are now defined in the stylesheet attached to this topic. The following settings are ignored:
- #Set LATECOL = yellow
- #Set BADDATECOL = red
- #Set HEADERCOL = orange
- Full URL of the CSS to use in formatting actions.
- Set CSS = /pub/TWiki/ActionTrackerPlugin/styles.css
- The format of the fields in the action editor. You can also set EDITBOXWIDTH and EDITBOXHEIGHT to override the defaults (which are 70x15) just for the action editor.
- Set EDITHEADER = | Assigned to | Due date | State | Notify |
- Set EDITFORMAT = | $who | $due | $state | $notify |
- Set EDITORIENT = cols
- If set to 1 will edit an action in a separate browser window (requires JavaScript)
- If set to 1, action edits will offer a 'Save Changes' instead of the usual 'Preview Changes' button. If this is set along with the USENEWWINDOW parameter, the subwindow should close on save, but it won't because I haven't worked out how to do this safely in JavaScript.
- The fields to scan to detect changes for actionnotify. Changes in other fields are ignored.
- Set NOTIFYCHANGES = $due,$state,$text
- Setup for Mishoo JSCalendar
- The following styles are available: system blue blue2 brown green tas win2k-1 win2k-2 win2k-cold-1 win2k-cold-2
- The following languages are available: af es ko-utf8 ru br fi lt si ca fr lt-utf8 sk cs-win hr nl sp da hr-utf8 no sv de hu pl tr du it pl-utf8 zh el jp pt en ko ro
Plugin Installation Instructions
Note: These instructions are for the TWiki maintainer. No changes to your browser are required.
This plugin makes extensive use of new features added to TWiki in the Feb 2003 release. Earlier versions lack all the features described here. Make sure you install using the zip appropriate to your TWiki installation. If you install an earlier version of the plugin with the Feb 2003 release, note that change notification will not function correctly. For best overall performance, please upgrade your TWiki to the latest released version.
- Download the ZIP file from the Plugin web (see below). Contents:
File: | Description: |
data/TWiki/ActionTrackerPlugin.txt | Plugin topic |
data/TWiki/ActionTrackerPluginQBE.txt | Query-by-example action search |
pub/TWiki/ActionTrackerPlugin/styles.css | Style sheet |
tools/actionnotify | Mailer script |
templates/actionnotify.tmpl | Page template for notify message |
templates/edit.action.tmpl | Action editor page template |
templates/actionform.tmpl | Action editor page subtemplate |
lib/TWiki/Plugins/ActionTrackerPlugin.pm | Plugin Perl module |
lib/TWiki/Plugins/ActionTrackerPlugin/Action.pm | Perl support module |
lib/TWiki/Plugins/ActionTrackerPlugin/ActionNotify.pm | Perl support module |
lib/TWiki/Plugins/ActionTrackerPlugin/ActionSet.pm | Perl support module |
lib/TWiki/Plugins/ActionTrackerPlugin/AttrDef.pm | Perl support module |
lib/TWiki/Plugins/ActionTrackerPlugin/Format.pm | Perl support module |
- Unzip
ActionTrackerPlugin.zip
in your twiki installation directory.
-
perl
ActionTrackerPlugin_installer.pl
to automatically check and install other TWiki modules that this module depends on. This script also includes an uninstaller should you ever wish to remove the plugin from your installation.
- Alternatively, manually make sure the dependencies listed in the table below are resolved.
Name | Version | Description |
---|
Time::ParseDate | >=2003.0211 | Required. Available from the CPAN:Time::ParseDate archive. |
TWiki::Plugins | >=1.026 | TWiki Dakar release. |
TWiki::Contrib::JSCalendarContrib | >=0.961 | Optional, used if installed. Used to display a neat calendar popup when editing actions. Available from the TWiki:Plugins/JSCalendarContrib repository. |
- (Dakar) Visit
configure
in your TWiki installation, and enable the plugin in the {Plugins} section.
- If the plugin is installed and enabled correctly you should see a formatted action below:
Assigned to | Due date | Description | State | Notify | |
TWikiGuest | Wed, 1 Jan 2020 | Example action | closed | | edit |
- ... and the result of a formatted search below:
Upgrade notes
Earlier versions of this plugin installed a number of files that are no longer required. Relative to the root of the TWiki installation these are:
File | What's happened |
data/Plugins/ActionTrackerPlugin.txt | Moved to data/TWiki |
templates/actionchangenotify.tmpl | Merged with actionnotify.tmpl |
bin/editaction | Merged into plugin code, using hooks added in Feb 2003 TWiki release |
bin/previewaction | Merged into plugin code, using hooks added in Feb 2003 TWiki release |
The mechanism for defining notification groups as lists of "EMail" lines in a topic in Main is no longer supported. Please upgrade to the mechanism described herein.
Plugin Info
Plugin Author: | TWiki:Main/CrawfordCurrie, http://c-dot.co.uk |
Plugin Version: | 10919 |
Change History: | |
10919 | Item2606 actionnotify can now read email addresses from password manager as well as new TWiki4 style user topics. actionnotify requires TWiki-4.0.4 + hotfix-4.0.4-1 |
8385 | Item1443 style sheet bug makes yellow warning not show |
8372 | Item1434 moved actionnotify from bin into tools |
8304 | Item1305 removing dotted style from AT. Looks horrible in IE |
8090 | Item1304 removed unnecessary warning that may be breaking some sites |
8089 | Item1305 changed dotted to solid gray, as requested |
26 Mar 2005 | 2.022 Corrected JSCalendar problems, and cleaned up lazy-loading of libraries. Added relative date specs to searches. |
8 Feb 2005 | 2.021 Documentation fixes. |
19 Nov 2004 | 2.020 Added conditions for date matching, and fixed config so that tests pass again. |
13 Oct 2004 | 2.013 If a user cuts and pastes an action with a uid in it, the action editor would get confused. This update ensures all action UIDs are unique within a topic when it is saved. |
16 Aug 2004 | 2.012 Dependency automation and Cairo readiness, further change to within behaviour (bidirectionality) |
3 Feb 2004 | Fixes for internationalisation, name matching, QBE, within= behaviour, documentation. |
21 May 2003 | Non-standard fields. Configurability of tables and action editor. Non-standard attributes. Eliminated chdir. Multi-line actions. Optimisation of notifies. |
30 Apr 2003 | Version 2.0; Large sections rewritten to take advantage of improvements in Plugin support, eliminating two scripts in bin. Added UIDs and formattable action searches |
30 Jan 2003 | Query-by-example action search with notify field; notification of change emails and actions email are sent as one; notify field was added to topic view and edit; various bug fixes by TWiki:Main/PaulineCheung |
26 Sep 2002 | Added changedsince notify support, added support for editing in a seperate window, incorporated attribute syntax corrections contributed by PeterThoeny, sorted ACTIONSEARCH output and action notifications |
14 Feb 2002 | Sorted ACTIONSEARCH results by due date; Fixed bugs editaction kills form data, Actions flagged as late the day before, TWiki table and bullet formatting doesn't work within action text |
11 Jan 2002 | Added ACTIONSEARCH for selected webs and topics; Changed action editor to use a template; Eliminated UNIX dependencies; Fixed formatting of actions in bulleted lists |
9 Jan 2002 | Bugfix version |
Perl Version: | 5.8 |
Plugin Home: | http://TWiki.org/cgi-bin/view/Plugins/ActionTrackerPlugin |
Feedback: | http://TWiki.org/cgi-bin/view/Plugins/ActionTrackerPluginDev |
Related Topics: TWikiPreferences,
TWikiPlugins
Further development
Further development of this code is welcomed. It is recommended that you unpack the distribution into a development directory and use the supplied build file which provides targets to run the test suite, and install and uninstall your development code into a test installation. Please, please,
please run, and extend if necessary, the test set!
Developer discussion is in
TWiki:Plugins/ActionTrackerPluginDev.
Copyright
This code is an original development of Motorola Inc. and is protected by the following copyrights:
- Copyright © 2002-2003 Motorola. All Rights Reserved.
- Portions Copyright © 2004,2005 Crawford Currie, http://c-dot.co.uk
License
As required for the publication of all extensions to TWiki, this
software is published under the terms of the GNU General Public
License.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details, published at
http://www.gnu.org/copyleft/gpl.html
--
TWiki:Main/CrawfordCurrie - 18:25:22 09 July 2006