Extension:IssueTracker

From MediaWiki.org
Jump to: navigation, search
MediaWiki extensions manual
Crystal Clear action run.png
Issue Tracker

Release status: beta

IssueTrackerSmall.jpg
Implementation Tag, Special page
Description A simple and powerful bug tracking and issue tracking extension developed to make this process easier for your team.
Author(s) Federico Cargnelutti (Federico.Ctalk)
Latest version 1.0 (2008-03-08)
MediaWiki 1.9.0 or greater
License GNU General Public License 2.0 or later
Download SVN
Change Log
Hooks used
LanguageGetSpecialPageAliases

ParserAfterTidy

Translate the IssueTracker extension if it is available at translatewiki.net

Check usage and version matrix; code metrics
This extension does not work with MediaWiki 1.21+ (using wfLoadExtensionMessages)

The IssueTracker extension is a simple and powerful bug tracking and issue tracking system developed to make this process easier for your team. It introduces the <issues /> tag to the MediaWiki markup, which can be used to produce an issue and bug tracking system.

Features[edit | edit source]

Version 1.0[edit | edit source]

  • View, add, edit and archive issues.
  • Search issues.
  • Filter issues.
  • List issues (new, resolved, closed, archived and/or any other custom tag).
  • Access Control List (group of users can have a different access levels).
  • Anonymous issue management.
  • MVC architecture, easy to extended.

Version 1.1(not yet released)[edit | edit source]

  • Attachments.
  • Issue change history. (See bugzilla:59665)
  • Changelog support.
  • Email notifications.
  • Users can monitor specific issues.

Screencast[edit | edit source]

YouTube: IssueTracker

Screenshot[edit | edit source]

IssueTracker - Listing Page

Usage[edit | edit source]

The IssueTracker extension provides a custom tag, <issues />, that allows the inclusion of an issue tracker in any wiki page. It's possible to customize almost every aspect of the extension, such as permissions, user groups, colours, titles, and templates. It supports searching and several types of filtering.

To embed an issue tracker into a page, use the <issues /> tag:

<issues />

If a project name is not provided, the extension will use the page namespace as the default project name. You can create multiple issue trackers by providing different project names, for example:

<issues project="My Project" />

To hide the filter and search forms you can set the search and filter options to false:

<issues project="My Project" search="false" filter="false" />

By default, users must be logged in to add, edit or achieve issues. If you want to allow anonymous issue management, set the authenticate option to false:

<issues project="My Project" authenticate="false" />

Options[edit | edit source]

  • project = String : The project name (default: page namespace).
  • authenticate = Boolean : User authentication (default: true).
  • search = Boolean : Display search form (default: true).
  • filter = Boolean : Display filter form (default: true).

Requirements[edit | edit source]

The IssueTracker extension requires MediaWiki 1.9.0 or greater.

Download[edit | edit source]

Archive File[edit | edit source]

Available formats: zip | tar.gz

Subversion Repository[edit | edit source]

Use SVN to checkout a copy of the source code. I highly recommend you to get the trunk version of the extension until a stable version is released. I do what I can to ensure that SVN versions are build-able and run-able, but clearly beta versions in SVN should not be considered stable.

Check out the current development trunk with:

$ cd extensions/
$ svn checkout http://svn.fedecarg.com/repo/MediaWiki/IssueTracker/trunk/ IssueTracker

Installation[edit | edit source]

1. Copy the IssueTracker/ directory into the extensions folder of your MediaWiki installation. Note: Make sure that the extensions/ directory and the IssueTracker/ directory are both readable and executable by everyone.

2. Add the following line to the LocalSettings.php file:

require_once $IP . '/extensions/IssueTracker/IssueTracker.php';

3. Create the database table, executing the following script on your MySQL administration tool. In case you are using Wiki SQL table prefixes, do not forget to add that prefix as prefix to the table name issue_tracker.

CREATE TABLE `issue_tracker` (
  `issue_id` int(10) NOT NULL auto_increment,
  `type` varchar(5) NOT NULL default 't_bug',
  `title` varchar(100) NOT NULL,
  `summary` text NOT NULL,
  `status` varchar(5) NOT NULL default 's_new',
  `assignee` varchar(40) NOT NULL,
  `user_name` varchar(40) NOT NULL,
  `user_id` int(10) NOT NULL,
  `project_name` varchar(100) NOT NULL,
  `deleted` int(1) NOT NULL default '0',
  `history` text NOT NULL,
  `priority_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `date_created` timestamp NOT NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`issue_id`),
  KEY `user_id` (`user_id`)
);

Customization[edit | edit source]

Customization options are available and can be set in the IssueTracker.config.php file.

Issue Types[edit | edit source]

$type['t_bug'] = array('name' => 'Bug', 'colour' => 'FFDFDF');
$type['t_fea'] = array('name' => 'New Feature', 'colour' => 'E1FFDF');
$type['t_imp'] = array('name' => 'Improvement', 'colour' => 'FFFFCF');
$type['t_doc'] = array('name' => 'Doc', 'colour' => 'F9F9F9');
$type['t_fee'] = array('name' => 'Feedback', 'colour' => 'E5D4E7');
$type['t_tes'] = array('name' => 'Test', 'colour' => 'DFE2FF');

You can add as many issue types as you want, for example:

...
$type['t_pat'] = array('name' => 'Patch', 'colour' => 'EEEEEE');

Issue Status[edit | edit source]

$status['s_new'] = array('name' => 'New', 'colour' => 'F9F9F9');
$status['s_asi'] = array('name' => 'Assigned', 'colour' => 'F9F9F9');
$status['s_res'] = array('name' => 'Resolved', 'colour' => 'B8EFB3');
$status['s_clo'] = array('name' => 'Closed', 'colour' => 'F9F9F9');

Permissions[edit | edit source]

$perms['list']     = array('group' => '*');
$perms['view']     = array('group' => '*');
$perms['add']      = array('group' => '*');
$perms['edit']     = array('group' => '*');
$perms['archive']  = array('group' => '*');
$perms['delete']   = array('group' => '*');
$perms['assign']   = array('group' => 'sysop');
$perms['assignee'] = array('group' => 'devel');

By default:

  • list: Any group can access the listing page.
  • view: Any group can view issues.
  • add: Any group can add issues.
  • edit: Any group can edit issues.
  • archive: Any group can archive issues.
  • delete: Any group can delete issues.
  • assign: Only the "Sysop" group can assign issues.
  • assignee: Issues can only be assigned to users in the "Devel" group.

Change Log[edit | edit source]

Version Release Date Description
1.0b 08 Mar, 2008 Version 1.0 beta released
1.0b 11 Mar, 2008 Added new hook: ParserAfterTidy

Known Bugs[edit | edit source]

Can't edit a bug in MW 1.19[edit | edit source]

In MediaWiki 1.19.2 (perhaps before), editing a bug throw the PHP error Argument 1 passed to UsersPager::__construct() must implement interface IContextSource, string given.

To solve this, in Actions/IssueTrackerActionAdd.php, change from

  1.   /** @see SpecialListusers **/
    
  2.   require_once 'SpecialListusers.php';
    
  3.  
    
  4.   $users = new UsersPager($group);
    
  5.   if (! $users->mQueryDone) {
    
  6.     $users->doQuery();
    
  7.   }
    

to

  1.     /** @see SpecialListusers **/
    
  2.     require_once 'includes/specials/SpecialListusers.php';
    
  3.  
    
  4.     $specialListUsers = new SpecialListUsers();
    
  5.     $users = new UsersPager($specialListUsers->getContext());
    
  6.     if (! $users->mQueryDone) {
    
  7.       $users->doQuery();
    
  8.     }
    

Can't add more than one issue tracker on a page[edit | edit source]

More than one issue tracker on a page is not properly supported. It looks fine, but when you create a new issue, it creates a new issue for every issue tracker on that page, with the exact same content, into the one tracker.

A possible solution I thought would be to add issue tags with a different project attribute. This instead created 3 issues in the same tracker. But that is different than the results above which would have created 1 in each of the 3.

Path bug[edit | edit source]

1.13.3 bug found

the same applies for 1.14.0, 1.15.1 and 1.16.0 also

Open: IssueTracker/Actions/IssueTrackerActionAdd.php

Find:

protected function _getUsers()

Change: After the opening curly bracket ( { ), add "global $IP;"

Find:

require_once 'SpecialListusers.php';

Change to:

 require_once( $IP."/includes/specials/SpecialListusers.php" );

--Lhridley 12:41, 18 June 2009 (UTC)

Special Pages name bug[edit | edit source]

In the current trunk (I don't know about 1.15) the "special pages" page of Issue Tracker is set to "Special:Issue_Tracker", which breaks the code. The new code apparently gets this name from a different source then it used to. To change this behavior open:

neno extensions/IssueTracker/IssueTracker.i18n.php

and edit the first variable, so that "Issue Tracker" becomes "IssueTracker"

$messages['en']['issuetracker'] = 'IssueTracker';

--skerit 23:27, 13 October 2009 (GMT+1)

Issue titles with quotes display incorrectly[edit | edit source]

Due to the procedure by which information from the database is displayed on the page, quotes in an issue title will be interpreted as HTML, and thus the title will appear truncated. To fix this bug, changes need to be made to 3 files:

wiki-root/extensions/IssueTracker/Views/details.html 
  • <td class="<?php echo $issue->status; ?>"><?php echo htmlspecialchars($issue->title); ?></td>
    
    should be
    <td class="<?php echo $issue->status; ?>"><?php echo htmlspecialchars($issue->title, ENT_QUOTES); ?></td>
    
  • <td><?php echo htmlspecialchars($issue->user_name); ?></td>
    
    should be
    <td><?php echo htmlspecialchars($issue->user_name, ENT_QUOTES); ?></td>
    
wiki-root/extensions/IssueTracker/Views/list.html 
  • <td><span class="<?php echo $issue->status; ?>"><?php echo htmlspecialchars($issue->title); ?></span></td>
    
    should be
    <td><span class="<?php echo $issue->status; ?>"><?php echo htmlspecialchars($issue->title, ENT_QUOTES); ?></span></td>
    
  • <td><?php echo htmlspecialchars($issue->assignee); ?></td>
    
    should be
    <td><?php echo htmlspecialchars($issue->assignee, ENT_QUOTES); ?></td>
    
wiki-root/extensions/IssueTracker/Views/edit.php 
  • echo (isset($_POST['bt_title'])) ? $_POST['bt_title'] : '';
    
    should be
    echo (isset($_POST['bt_title'])) ? htmlspecialchars($_POST['bt_title']) : '';
    

--Neatnate 18:37, 22 November 2009 (UTC)

User Groups (Special:UserRights) link broken[edit | edit source]

The "User Groups" link, at the bottom of the issue tracker, is broken when using Short Urls. To fix, in IssueTracker\Views\list.html replace (found at the end of the file):

<?php if ($this->isAllowed): ?>[<a href="/index.php?title=Special:UserRights">User groups</a>]<?php endif; ?>

with

<?php global $wgScriptPath;  if ($this->isAllowed) { echo "<a href='{$wgScriptPath}/index.php?title=Special:UserRights'>User groups</a>"; } ?>

--John Bentley 13:02, 16 May 2011 (UTC)

License[edit | edit source]

GNU General Public Licence 2.0 or later. Copyright © 2008, Federico Cargnelutti.