Description
Enumerations are used in Mantis to represent a set of possible values for an attribute. Enumerations are used for access levels, severities, priorities, project statuses, project view state, reproducibility, resolution, ETA, and projection.
Mantis provides the administrator with the flexibility of altering the values in these enumerations. The rest of this topic explains how enumerations work, and then how they can be customised.
How enumerations work?
core/constant_inc.php
This file defines the constants that correspond to those in the enumeration. These are useful to refer to these enumerations in the configs and the code.
define( 'VIEWER', 10 )
define( 'REPORTER', 25 )
define( 'UPDATER', 40 )
define( 'DEVELOPER', 55 )
define( 'MANAGER', 70 )
define( 'ADMINISTRATOR', 90 )
config_defaults_inc.php
This file includes the defaults for the enumerations. The configuration options that are defaulted here are used in specifying which enumerations are active and should be used in Mantis. However, the strings included in the enumerations here are just for documentation purpose, they are not shown to the user (due to the need for localisation). Hence, if an entry in this enumeration is not found in the corresponding localised enumeration (i.e. 70:manager), then it will be printed to the user as @70@.
$g_access_levels_enum_string =
'10:viewer,25:reporter,40:updater,55:developer,70:manager,90:administrator';
lang/strings_german.txt
The specific language strings provide the localised strings for enumerations. But again, the master list is the enumeration in the configs, the ones in the language files are just used for finding the localised equivalent for an entry. Hence, if a user changes the config to have only two types of users developers and administrators, then only those will be prompted to the users even if the enumerations in the language files still includes the full list.
$s_access_levels_enum_string =
'10:Betrachter,25:Reporter,40:Updater,55:Entwickler,70:Manager,90:Administrator';
How can they be customised?
Let say we want to remove access level "Updater" and add access level "Senior Developer".
custom_constant_inc.php
This file is supported for the exclusive purpose of allowing administrators to define their own constants while maintaining a simple upgrade path for future releases of Mantis. Note that this file is not distributed with Mantis and you will need to create it if you need such customisation. In our example, we need to define a constant for the new access level.
define ( 'SENIOR_DEVELOPER', 60 );
config_inc.php
// Remove Updater and add Senior Developer
$g_access_levels_enum_string =
'10:viewer,25:reporter,55:developer,60:senior_developer,70:manager,90:administrator';
// Give access to Senior developers to create/delete custom field.
$g_manage_custom_fields_threshold = SENIOR_DEVELOPER;
custom_strings_inc.php
This file is introduced for a similar reason to that of custom_constant_inc.php, which is to define custom strings. The advantage of defining them here is to provide a simple upgrade path, and avoid having to re-do the changes when upgrading to the next Mantis release. Note that you will need to create this file if you need such customisation. The file is automatically detected and included by Mantis code (v0.18.0aX).
# Note that we don't have to remove the Updater entry from the localisation file
if ( lang_get_current() === 'english' ) {
$s_access_levels_enum_string =
'10:Betrachter,25:Reporter,40:Updater,55:Entwickler,60:Senior Developer,70:Manager,90:Administrator';
}
Conclusion
We have covered how enumerations work in general, and how to customise one of them. If you are interested in customising other enumerations, a good starting point would be to go to "Mantis Enum Strings" section in
config_defaults_inc.php. This section defines all enumerations that are used by Mantis.
For versions that are older than 0.18.0, custom_*_inc.php files are not supported, and hence you will need to change in the actual constants / language files directly. |