FusionForge

Project templates

This feature was proposed on the feature request #225. It's implemented as of FusionForge 5.1.

FusionForge implements a template system for new projects, allowing the forge administrator to set up typical structures for future projects. These structures are completely normal projects, and the usual web interface can be used to define roles, permissions, trackers, forums, what tools are used, and so on. They can be projects in actual use, or dedicated projects that are only there to serve as templates.

The forge administrator(s) can see which projects can be used as templates and which cannot, by visiting the "Project list" page in the "Site admin" tab. Ordering the list by the "Template?" column will display template projects first (https://forge.tld/admin/grouplist.php?sortorder=is_template). Clicking on a project name brings to the page where some properties of the project can be changed, including the ability to be used as a template.

In the general case, forge users wishing to register a new project are presented with a menu allowing them to choose which template project to start from. They can also elect to start from an empty project (which will be very empty, and only contain one "Admin" role, no tools, nothing), unless the core/allow_project_without_template configuration variable is set to false in one of the *.ini files, in which case the user will be forced to pick a template among the available ones. If there are no projects marked as templates, then the new project will be created empty.

When the project is approved, its structure and configuration is copied from the template project. Some string replacements take place, allowing for initial values that correspond to the newly created project. In particular, UNIXNAME is replaced with the Unix name of the new project, PUBLICNAME by its public name, DESCRIPTION by its description. These string replacements take place for the package names in the FRS, for the descriptions of the mailing-lists, and for some plugins (including the extratabs plugin). Note that the actual names of the mailing-lists are constructed with a slightly different system: since they all start with the projects' Unix name, a template-devel@lists.domain will be turned into a newproject-devel@lists.domain.