This is an old revision of the document!
Table of Contents
Global Categories Requirements
Author: John Reese
Introduction
Categories in Mantis are specific to a single project, and can only be used by issues in that project. But there are many times, especially in organizations with many different projects, that it would be very useful to have not only shared sets of categories, but inherited categories from parent projects as well. This would greatly simplify and automate multiple project administration.
Current Approach
In the current Mantis system, all shared categories must either be created or copied between projects and subprojects by hand. Modifying one category means manually modifying every other project that category exists in to reflect the same change. There is also no way to handle global categories other than to copy categories from one project to every other project. Adding a new project or subproject later means more work to copy categories to it as well.
Proposed Approach
Categories should be able to created in a global configuration and will be available for All Projects. When assigning a category to an issue, the category list should include all global categories, as well as categories from all parent projects (and parents' parent projects, etc.). Preferably, global categories and inherited categories should be separated from project-specific categories, and all categories listed should contain the associated project's name in brackets. For example, a category list could look like so:
General Unknown --- [Parent] Database [Parent] Documentation --- [Child] Interface [Child] Language
Individual projects should be able to choose if they should inherit parents' categories or not, and if they should inherit global categories or not. Default settings would be to inherit globals, but not parents'.
Database Changes
- add id int(10) field on
project_category_table
with auto_increment flag to keep unique category_id values. - project_id field on
project_category_table
will use value'0
' to denote global categories that can be shared by all projects. - category field on
bug_table
will change to category_id int(10) as foreign key toproject_category_table
. - add inherit_categories_global tinyint(4) field on
project_table
to denote whether the project will inherit global categories . - add inherit_categories_parents tinyint(4) field on
project_table
to denote whether the project will inherit categories from parent projects.
- Admin update script will need to add id values to each category, and update all bugs to use the new category_id
Feedback
Any feedback should be placed below.