Skip to content

comsolit/ComsolitBacklog

Repository files navigation

THIS REPO IS UNMAINTAINED / A NEW MAINTAINER IS NEEDED

Mantis Scrum backlog

Overview

This plugin allows to prioritize Issues of a project relative to each other and thus to manage a Scrum/Agile backlog of user stories.

The plugin adds the menu item “backlog”. The view of the backlog is separated in prioritized (at the top) and unprioritized Issues (at the bottom). The top area is the “backlog”. Items in the bottom area have not yet been added to the backlog. Issues can be moved from the bottom area to the backlog either by the action buttons in each line or by drag-and-drop.

Inside the backlog the items can be moved around by drag-and-drop.

ComsolitBacklogScreenshot.png

Installation

Place the content of this plugin inside your mantis installation under plugins/ComsolitBacklog. You also need to configure three global variables in your config_inc.php:

  • $g_comsolitBacklog_prioritizedStatus - (int) status to give to prioritized issues
  • $g_comsolitBacklog_unprioritizedStatus - (int) status of items that may appear in the unprioritized area
  • $g_comsolitBacklog_categories - (array of string) names of categories that may appear in either area

Implementation

The plugin adds an additional decimal (float) column ‘backlog_position’ to the mantis_bug_table. This value indicates the position of the Issue in the backlog with lower values indicating higher priority or position.

When an item is moved in the backlog, the new backlog_position value is calculated to be in the middle of the item before and after it, i.e.:

backlog_position=.5*(issue_before.backlog_position + issue_after.backlog_position)

If the item is moved to the top of the list than issue_before.backlog_position is assumed ot be zero.

If the item is moved to the bottom of the list than

backlog_position=issue_before.backlog_position + pow(2,16)

After enough movement operations it can happen that the limit of the databases floating point precision is reached. Therefor a ‘rebalance’ operation is performed when the minimum distance between two items falls below one. During rebalancing all Issues in the backlog get new backlog_position numbers which are multiples of pow(2,16).

Requirements, Development Status and Disclaimer

  • Minimum PHP version is 5.3
  • The code has only been tested against MySQL.
  • The code adds the core mantis table mantis_bug_table. This may harm your ability to update mantis.

Third party libraries

The plugin uses AngularJS as the only JavaScript library and Jasmine 2 for testing.