wiki:SimpleMultiProjectPlugin

Version 24 (modified by falkb, 3 years ago) (diff)

Link to T:milestone:0.14-multiproject and magic T:#130

SimpleMultiProjectPlugin

Description

Lets you easily manage multiple projects with one Trac instance.

  • This implements the idea of wiki:TracMultipleProjects/SingleEnvironment.
  • Milestones and versions are assigned to their projects, and both are displayed on the roadmap. There are several possibilities to filter by projects on that page, and also the timeline.
  • Components can be assigned to all or only certain projects.
  • 'New Ticket' will just offer the associated milestones, versions and components of the chosen project. This requires a new custom-ticket field 'project'.

Still an experimental version, feedback much appreciated.

Note: The Multiple Project feature in the sense of having a meta Trac project on top of several Trac projects is discussed in T:#130 and scheduled for Trac 0.14.

Plan

#10074
roadmap page filter for certain projects
#10075
new ticket page needs support for project selection
#10076
timeline page needs support for project filtering (for tickets)
#10085
version selection depending on projects
#10086
version as date on roadmap
#10087
project-related roadmap filtering/grouping: project group boxes on|off
#10088
project-related roadmap filtering/grouping: only milestones vs. only versions
#10089
project-related timeline page filtering of wiki changes
#10090
user-defined field used to define the "project" (e.g. by using component)
#10096
support permission handling
#10119
show project description as project box header on roadmap page
#10152
Localization / translation support (L10N)
#10365
check 1.0 compatibility
#11162
improve project selection widget
#11543
Per-project ticket.default_* settings

Technical thoughts

This plugin adds a new ressource 'project' implemented by database table:

  1. smp_project: a list of all defined projects

Actually, most database tables of Trac core related to ressources would need a new column 'project_id'. This way tickets, components, milestones, versions or even wikis could attach to certain projects. Since a plugin just adds stuff but cannot change the core structure, it implements the new dimension 'project' not by adding a new column to each ressource table but rather by adding several mapping tables smp_[ressource]_project, each one mapping a certain ressource to projects:

  1. smp_milestone_project: the association of milestones to projects
  2. smp_version_project: the association of versions to projects
  3. smp_component_project: the association of components to projects

Example

Admin Interface:

http://trac-hacks.org/attachment/wiki/SimpleMultiProjectPlugin/project_admin.png


http://trac-hacks.org/attachment/wiki/SimpleMultiProjectPlugin/edit_project.png


Associate a milestone in a project:

http://trac-hacks.org/attachment/wiki/SimpleMultiProjectPlugin/edit_milestone.png


Group milestones and versions on the roadmap by project, and display only projects chosen in the filter box:

http://trac-hacks.org/attachment/wiki/SimpleMultiProjectPlugin/roadmap_projects_filter.png


display only tickets in the timeline of projects chosen in the filter box (adapted from TimelineComponentFilterPlugin):

http://trac-hacks.org/attachment/wiki/SimpleMultiProjectPlugin/timeline_projects_filter.png

Bugs/Feature Requests

Existing bugs and feature requests for SimpleMultiProjectPlugin are here.

If you have any issues, create a new ticket.

Download

Download the zipped source from here.

Source

You can check out SimpleMultiProjectPlugin from here using Subversion, or browse the source with Trac.

Installation

  1. Add a custom ticket field 'project' in your trac.ini to give tickets the information to which project they belong. Milestones selection depends on that as well.
    [ticket-custom]
    project = text
    project.label = Project
    project.value =
    
  2. Generate the plugin .egg file from sources
    python setup.py bdist_egg
    
  3. Copy the plugin to Trac, e.g.
    cp dist/SimpleMultiProject-0.0.1-py2.6.egg /instance_trac/plugins/
    
  4. Restart Apache. After installation of this plugin Trac needs a database upgrade!
    trac-admin /instance_trac/ upgrade
    

Recent Changes

[14337] by falkb on 2014-12-18 08:55:55
see #12109: another try to get plugin compatibility to Trac 1.0.2
[14336] by falkb on 2014-12-16 16:20:22
fix for previous commit [14335]: custom field 'project' should not be added to the trac env if the plugin is disabled
[14335] by falkb on 2014-12-16 16:09:45

, fixes #11573:
Thanks and kudos to Cinc for 2 nice patches!:

  • better support of custom themes (fixes #12113)
  • with [ticket-custom] option project = select , custom queries show project list as drop-down now
  • additionally: show version drop-down in ticket-change form as ordered list now

Author/Contributors

Author: crossroad, falkb, thomasd
Maintainer: crossroad
Contributors:

Attachments (8)

Download all attachments as: .zip