[[PageOutline(2-5,Contents,pullout)]] = Subtickets support for Trac tickets == Description This plugin offers a sub-ticket feature for managing tickets. Subtickets are useful for when several tickets are developed and released under one master ticket. The master ticket in the example below called the Root ticket, has multiple subtickets defined under it. The following screenshot demonstrates how the subtickets are displayed below the Description section of a ticket: [[Image(trac-subtickets-plugin_001.png)]] Relations between tickets are stored in a table called `Subtickets` with just two columns: ''parent'', ''child'' and that eases reporting considerably when compared to ChildTicketsPlugin (which currently has more configuration options). For further information on reporting, see SubticketsPlugin/Reporting. == Bugs/Feature Requests Existing bugs and feature requests for SubticketsPlugin are [https://github.com/trac-hacks/trac-subtickets-plugin/issues here]. If you have any issues, create a [https://github.com/trac-hacks/trac-subtickets-plugin/issues new issue]. == Download You can download zipped source from [https://github.com/trac-hacks/trac-subtickets-plugin/zipball/master here]. == Source You can check out the source for SubticketsPlugin from [https://github.com/trac-hacks/trac-subtickets-plugin.git here] using Git, or browse the source with [https://github.com/trac-hacks/trac-subtickets-plugin GitHub]. == Installation 1. Download the [https://github.com/trac-hacks/trac-subtickets-plugin/zipball/master zip file], unpack it and run: {{{#!sh python setup.py bdist_egg }}} 1. Install it in one of the following ways: {{{#!sh cp dist/*.egg path/to/trac/env/plugins }}} {{{#!sh easy_install dist/*.egg }}} {{{#!sh python setup.py install }}} 1. Enable the plugin in your `trac.ini` file as follows: {{{#!ini [components] tracsubtickets.api.* = enabled tracsubtickets.web_ui.* = enabled }}} 1. Upgrade your Trac environment: {{{#!sh trac-admin upgrade }}} == Configuration This plugin shares some of the configurations with ChildTicketsPlugin. Most settings are ticket type dependent, such as `defect` and `task` in the example below: {{{#!ini # Select column headings in child listing # Id and summary are always displayed type.defect.table_columns = priority,keywords,owner type.task.table_columns = # display id and summary only # Control which fields are inherited from parent to child when creating child type.defect.child_inherits = keywords,milestone type.task.child_inherits = version,cc # Control the visual appearance of the create subticket link. Config value shall be one of "button" and "link" add_style = button # Enable ticket modification (except comments) when a parent is closed (default=true) no_modif_when_parent_closed = false # Normally SubticketsPlugin will refuse closing parents when a child is non-closed and similarly # reopening a child whose parent is closed. These behaviours can be suppressed by adding # either of the action names tho this setting: skip_closure_validation = resolve,reopen # The number of child levels is controlled by the following setting, where # -1 (default) means infinity and zero means one level of children. recursion_depth = 2 # - three levels of children }}} If IniAdminPlugin is installed, the configuration can be edited through the administration panel `subtickets`. The plugin detects which ticket types are defined and creates config values accordingly. Config values are ''not'' deleted when ticket types are deleted and they will disappear from the admin panel only when trac is restarted. Also note that as long as a config value is not changed wrt. its hardcoded default value, it is not added to `trac.ini`. === Incompatibilities with earlier versions '''With <= 0.4.1:''' In order to obtain a not-too-unreasonable sorting of config values in the admin panel, all ticket type-specific config values now have the prefix `type.` == Interaction with ticket workflows If the ticket workflow includes actions `resolve` and `reopen`, they will block and show an error message when: * trying to `resolve` a ticket with one or more non-`closed` children * trying to `reopen` or modify fields of a `closed` ticket with one or more `closed` parents. This behaviour can be inhibited; see above. == About i18n/l10n support This plugin is prepared for localization. The patched version is available at the Git repo now. The English message texts are still the (POSIX) default. If this isn't your preferred language, you can: 1. check if it is already available from the [TracPluginTranslation Trac plugin l10n project] at [https://www.transifex.com/projects/p/Trac_Plugin-L10N/resource/tracsubtickets Transifex] or 2. do it yourself, see the [t:CookBook/PluginL10N#Dotranslatorswork l10n cookbook page for Trac plugins] for more details. Contributing your translation is highly appreciated! You could send it to the plugin's maintainer or contribute to [TracPluginTranslation Trac plugin l10n project] via [http://www.transifex.net/projects/p/Trac_Plugin-L10N/ Transifex]: Top translations: Trac_Plugin-L10N ยป [https://www.transifex.com/projects/p/Trac_Plugin-L10N/resource/tracsubtickets tracsubtickets][[BR]] [[Image(http://www.transifex.net/projects/p/Trac_Plugin-L10N/resource/tracsubtickets/chart/image_png, title=Go to Trac_Plugin-L10N project page on Transifex.net, link=http://www.transifex.net/projects/p/Trac_Plugin-L10N/resource/tracsubtickets/)]] Kindly provided by [[Image(https://ds0k0en9abmn1.cloudfront.net/static/charts/images/tx-logo-micro.png, link=http://www.transifex.net/, title=the open translation platform, valign=bottom)]] == Author/Contributors '''Author:''' [wiki:itota] [[BR]] '''Maintainer:''' [wiki:thenor] [[BR]] '''Contributors:''' [wiki:hasienda], Chris Nelson