Content
View differences
Updated by Oliver Günther about 3 hours ago
This feature covers **global** sub-types, managed by instance administrators and available to every project.
_Project-owned project. Project-owned sub-types, the project permission, in-project visibility isolation feature_ <mention class="mention" data-id="76571" data-type="work_package" data-text="##FND-110" data-display-id="FND-110">##FND-110</mention> isolation, and promotion to global are a separate, larger feature (to be creatd)
**As an** OpenProject administrator administrator
**I want to** create and manage global sub-types under an existing work package type
**so that** I can offer instance-wide variations of a type that present as the parent but can behave differently.
## Acceptance criteria
* I can create a global sub-type under any root type
* A sub-type cannot itself have sub-types. The application enforces a single level
* A sub-type cannot be its own parent, and standard types cannot be sub-typed or re-parented
* A new sub-type is independent except for its name name
* Related features ##FND-101 ##FND-102
* A sub-type appears in administration nested under its parent and labelled with its composite name ("Bug: Hardware")
* A sub-type inherits its core settings from the parent and cannot edit them: color, `is_milestone`, `is_in_roadmap`, and `is_default` are shown read-only and always follow the parent
* A sub-type carries only its own variant label, used in administration, and the composite name
* A sub-type's display name is always the parent name
* The system prevents creating a cyclic dependency between reuse sources
* The entire capability is hidden and inert unless the `work_package_subtypes` feature flag is enabled
## Permissions and visibility considerations
* **To whom is this feature visible?** Instance administrators (the existing global type administration).
* **When is it not visible?**
* Feature Flag turned off
* off, all non-admin users.
## Translation considerations
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">English</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">German</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">French (verify)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Spanish (verify)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Sub-type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Untertyp</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sous-type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Subtipo</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Parent type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Übergeordneter Typ</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Type parent</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Tipo principal</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Source type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Quelltyp</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Type source</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Tipo de origen</p></td></tr></tbody></table></figure>
* Document the hierarchical name (`"TYPE: SUBTYPE"`) used in admin, possibly on hover, and API.
## Out of scope
* Project-owned sub-types, the `:manage_subtypes` project permission (<mention class="mention" data-id="76548" data-type="work_package" data-text="##FND-106" data-display-id="FND-106">##FND-106</mention>). permission, in-project visibility isolation, and promotion to global (Feature 8).
* Per-aspect reuse behavior beyond the default parent links <mention class="mention" data-id="76543" data-type="work_package" data-text="##FND-101" data-display-id="FND-101">##FND-101</mention>, <mention class="mention" data-id="76544" data-type="work_package" data-text="##FND-102" data-display-id="FND-102">##FND-102</mention> links (Features 1, 2, 3).
* Project activation and the one-per-family rule <mention class="mention" data-id="76548" data-type="work_package" data-text="##FND-106" data-display-id="FND-106">##FND-106</mention> rule (Feature 5).
* Display routing across the product ##FND-105 (Feature 4).
_Project-owned
**As an** OpenProject administrator
**I want to** create and manage global sub-types under an existing work package type
**so that** I can offer instance-wide variations of a type that present as the parent but can behave differently.
## Acceptance criteria
* I can create a global sub-type under any root type
* A sub-type cannot itself have sub-types. The application enforces a single level
* A sub-type cannot be its own parent, and standard types cannot be sub-typed or re-parented
* A new sub-type is independent except for its name
* Related features ##FND-101 ##FND-102
* A sub-type appears in administration nested under its parent and labelled with its composite name ("Bug: Hardware")
* A sub-type inherits its core settings from the parent and cannot edit them: color, `is_milestone`, `is_in_roadmap`, and `is_default` are shown read-only and always follow the parent
* A sub-type carries only its own variant label, used in administration, and the composite name
* A sub-type's display name is always the parent name
* The system prevents creating a cyclic dependency between reuse sources
* The entire capability is hidden and inert unless the `work_package_subtypes` feature flag is enabled
## Permissions and visibility considerations
* **To whom is this feature visible?** Instance administrators (the existing global type administration).
* **When is it not visible?**
* Feature Flag turned off
*
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">English</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">German</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">French (verify)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Spanish (verify)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Sub-type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Untertyp</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sous-type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Subtipo</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Parent type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Übergeordneter Typ</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Type parent</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Tipo principal</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Source type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Quelltyp</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Type source</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Tipo de origen</p></td></tr></tbody></table></figure>
* Document the hierarchical name (`"TYPE: SUBTYPE"`) used in admin, possibly on hover, and API.
## Out of scope
* Project-owned sub-types, the `:manage_subtypes` project permission (<mention class="mention" data-id="76548" data-type="work_package" data-text="##FND-106" data-display-id="FND-106">##FND-106</mention>).
* Per-aspect reuse behavior beyond the default parent links <mention class="mention" data-id="76543" data-type="work_package" data-text="##FND-101" data-display-id="FND-101">##FND-101</mention>, <mention class="mention" data-id="76544" data-type="work_package" data-text="##FND-102" data-display-id="FND-102">##FND-102</mention>
* Project activation and the one-per-family rule <mention class="mention" data-id="76548" data-type="work_package" data-text="##FND-106" data-display-id="FND-106">##FND-106</mention>
* Display routing across the product ##FND-105