User Tools

  • Logged in as: anonymous (anonymous)
  • Log Out

Site Tools


mantisbt:global_categories_requirements

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
mantisbt:global_categories_requirements [2007/07/28 03:48] – Added review comments. vboctormantisbt:global_categories_requirements [2008/10/29 04:25] (current) – external edit 127.0.0.1
Line 12: Line 12:
  
 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. 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 ===== ===== Proposed Approach =====
Line 26: Line 28:
   [Child] Language   [Child] Language
  
-Individual projects should be able to choose if they should inherit parentscategories or not, and if they should inherit global categories or not.  Default settings would be to inherit globalsbut not parents' +==== Phase 1: Using Category ID's ==== 
 + 
 +This is probably the most difficult and error-prone phase of the entire processinvolving a completely new approach to storing and working with categories as entities.  It will involve changes to many API's, as well as a special conversion process in ''admin/schema.php'' to change the database schema to fit the new paradigm. 
 + 
 +==== Phase 2: Add Global Categories ==== 
 + 
 +Building on the work from phase 1, global categories will be supported using the special Project ID value '''0''' to denote independence from specific projects.  Projects themselves will also need to gain a new value/flag ''inherit_categories'' (default to true) to determine if issues for that project can be set to global categories. 
 + 
 +==== Phase 3: Add Catergory Inheritence ==== 
 + 
 +The final main phase will be the introduction of category inheritence between projects.  The inheritance hierarchy will gain its own ''inherit_categories'' value (default no)to indicate that its issues can be set to the parents' categories. 
  
  
Line 32: Line 45:
 ===== Database Changes ===== ===== Database Changes =====
  
-  * add **id int(10)** field on ''project_category_table'' with //auto_increment// flag to keep unique category_id values. +==== Phase 1 ==== 
-  * **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 to ''project_category_table''+This will be a multi-step process consisting of the following changes:
-  * 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.+
  
 +  * create ''mantis_category_table'':
 +    * **id int(10)** primary key, with //auto_increment// flag
 +    * **project_id int(10)** index, value //0// will represent global categories.
 +    * **name varchar(100)**
 +    * **status tinyint(4)** index
 +    * **user_id int(10)**
 +  * modify ''mantis_bug_table''
 +    * add **category_id int(10)** as foreign key to ''mantis_category_table''
 +  * run custom upgrade function that will find existing categories, and create entries in new format
 +  * run custom upgrade function that will convert bugs' **category** value to **category_id**
 +  * modify ''mantis_bug_table''
 +     * delete **category** column
 +  * delete ''mantis_project_category_table''
  
-  Admin update script will need to add **id** values to each category, and update all bugs to use the new **category_id**+==== Phase 2 ==== 
 +  * modify ''mantis_project_table'' 
 +    * add **inherit_categories tinyint(4)** to denote project will inherit global categories
  
 +==== Phase 3 ====
 +  * modify ''mantis_project_hierarchy_table''
 +    * add **inherit_categories tinyint(4)** to denote project will inherit categories from parent
  
  
mantisbt/global_categories_requirements.1185608915.txt.gz · Last modified: (external edit)

CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki