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/31 11:09] – Cleanup database changes jreesemantisbt: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 33: Line 45:
 ===== Database Changes ===== ===== Database Changes =====
  
-  modify ''mantis_project_category_table'' +==== Phase 1 ==== 
-    * add **id int(10)** primary key, with //auto_increment// flag + 
-    * **project_id** will use value '''0''' to denote global categories that can be shared by all projects.+This will be a multi-step process consisting of the following changes: 
 + 
 +  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''   * modify ''mantis_bug_table''
-    * **category** change to **category_id int(10)** as foreign key+    * 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'' 
 + 
 +==== Phase 2 ==== 
 +  * modify ''mantis_project_table''
     * add **inherit_categories tinyint(4)** to denote project will inherit global categories     * add **inherit_categories tinyint(4)** to denote project will inherit global categories
 +
 +==== Phase 3 ====
   * modify ''mantis_project_hierarchy_table''   * modify ''mantis_project_hierarchy_table''
     * add **inherit_categories tinyint(4)** to denote project will inherit categories from parent     * add **inherit_categories tinyint(4)** to denote project will inherit categories from parent
- 
-  * Admin update/upgrade script will need to add **id** values to each category, and update all bugs to use the new **category_id** 
- 
  
  
mantisbt/global_categories_requirements.1185894545.txt.gz · Last modified: 2008/10/29 04:31 (external edit)

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