En complément de mes précédents articles sur ce sujet ( Ajouter une étape dans le workflow MantisMantis bugtracker : ajouter un statut personnalisée sur la page « Mon affichage » ) voici un récapitulatif global sur le changement et l’optimisation  du workflow sur mantis bugtracker.
Si vous souhaitez supprimer une étape du worklow mantis, c’est par ici

Pour information voici le workflow standard de Mantis Bugtracker :
Workflow Mantis standard

Voici le workflow que je souhaite obtenir :worklow-modifie Pour obtenir cela voici les modifications à apporter pour mettre en place ces modifications

Modification des fichiers

Dans le fichier config_inc.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#Nouveau Workflow Mantis
$g_status_enum_string                = '10:new,20:feedback,50:assigned,55:waiting_internal_validation,60:waiting_customer_validation,65:waiting_for_production,80:resolved,90:closed';
 
#Définition des changements de statuts pour les statuts standards
$g_status_enum_workflow[NEW_]='20:feedback,50:assigned,80:resolved';
$g_status_enum_workflow[FEEDBACK] ='10:new,50:assigned,55:waiting_internal_validation,60:waiting_customer_validation,65:waiting_for_production,80:resolved';
$g_status_enum_workflow[ASSIGNED] ='20:feedback,55:waiting_internal_validation,60:waiting_customer_validation,65:waiting_for_production,80:resolved,90:closed';
$g_status_enum_workflow[RESOLVED] ='50:assigned,90:closed';
$g_status_enum_workflow[CLOSED] ='50:assigned';
 
#Définition des couleurs des nouveaux statuts
$g_status_colors['waiting_internal_validation'] = '#F3E2A9';
$g_status_colors['waiting_customer_validation'] = '#E0701A';
$g_status_colors['waiting_for_production'] = '#6B67F2';
 
#Definition des changements de statuts possibles pour nos nouveaux statuts
$g_status_enum_workflow[WAITING_INTERNAL_VALIDATION] ='20:feedback,50:assigned,60:waiting_customer_validation,65:waiting_for_production,80:resolved,90:closed';
$g_status_enum_workflow[WAITING_CUSTOMER_VALIDATION] ='20:feedback,50:assigned,55:waiting_internal_validation,65:waiting_for_production,80:resolved,90:closed';
$g_status_enum_workflow[WAITING_FOR_PRODUCTION] ='20:feedback,80:resolved,90:closed';
 
#Paramètres pour la page my_views.php
$g_bug_waiting_internal_validation_status_threshold = WAITING_INTERNAL_VALIDATION;
$g_bug_waiting_customer_validation_status_threshold = WAITING_CUSTOMER_VALIDATION;
$g_bug_waiting_for_production_status_threshold = WAITING_FOR_PRODUCTION;

Dans le fichier custom_constant_inc.php

1
2
3
4
5
#Nouveaux Status de mantis
# ( La numérotation des statuts ne se suis pas, au cas ou on souhaiterais rajouter d'autres statuts intermédiaires ultérieurement )
define('WAITING_INTERNAL_VALIDATION',55); #attente de validation interne
define('WAITING_CUSTOMER_VALIDATION',60); #attente de validation client
define('WAITING_FOR_PRODUCTION',65); #attente de mise en production

Dans le fichier custom_strings_inc.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 #Nouveau Workflow Mantis traduit en Français
 $s_status_enum_string = '10:Nouveau,20:Commentaire,50:affecté,55:Attente validation interne,60:Attente validation client,65:Atttente mise en production,80:Résolu ,90:Fermé';
 
 #Titre des boutons lors du changement de statut
 $s_waiting_internal_validation_bug_button = 'En attente de validation interne';
 $s_waiting_customer_validation_bug_button = 'En attente de validation client';
 $s_waiting_for_production_bug_button = 'En attente de Mise en production';
 
 #Titre des statuts dans le listing des bugs
 $s_waiting_internal_validation_bug_title = 'En attente de validation interne';
 $s_waiting_customer_validation_bug_title = 'En attente de validation client';
 $s_waiting_for_production_bug_title = 'En attente de Mise en production';
 
 #Sujet de l'email envoyé pour notifier le changement de statut
 $s_email_notification_title_for_status_bug_waiting_internal_validation = "Le bug suivant est en attente de validation interne";
 $s_email_notification_title_for_status_bug_waiting_customer_validation = "Le bug suivant est en attente de validation client";
 $s_email_notification_title_for_status_bug_waiting_for_production = "Le bug suivant est en attente de mise en production";
 
 #Titres pour la page my_view
 $s_my_view_title_waiting_internal_validation = "En attente de validation interne";
 $s_my_view_title_waiting_customer_validation  = "En attente de validation client";
 $s_my_view_title_waiting_for_production = "En attente de Mise en production";

Il est ensuite nécessaire de modifier le fichier système my_view_inc.php pour insérer les nouveaux filtres.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# H-hennes : Nouveaux Status sur la page my_view
#En attente de validation interne
$t_bug_waiting_internal_validation_status_threshold = config_get('bug_waiting_internal_validation_status_threshold');
$c_filter['waiting_internal_validation'] = array(
	FILTER_PROPERTY_CATEGORY => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_SEVERITY_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_STATUS_ID => Array(
	'0' => $t_bug_waiting_internal_validation_status_threshold,
	),
	FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed,
	FILTER_PROPERTY_REPORTER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HANDLER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_RESOLUTION_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_BUILD => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_VERSION => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HIDE_STATUS_ID => Array(
	'0' => $t_hide_status_default,
	),
	FILTER_PROPERTY_MONITOR_USER_ID => Array(
	'0' => META_FILTER_ANY,
	),
);
$url_link_parameters['waiting_internal_validation'] = FILTER_PROPERTY_STATUS_ID . '=' . $t_bug_waiting_internal_validation_status_threshold . '&' . FILTER_PROPERTY_HIDE_STATUS_ID . '=' . $t_bug_waiting_internal_validation_status_threshold;
 
#En attente de validation client
$t_bug_waiting_customer_validation_status_threshold = config_get('bug_waiting_customer_validation_status_threshold');
$c_filter['waiting_customer_validation'] = array(
	FILTER_PROPERTY_CATEGORY => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_SEVERITY_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_STATUS_ID => Array(
	'0' => $t_bug_waiting_for_prod_status_threshold,
	),
	FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed,
	FILTER_PROPERTY_REPORTER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HANDLER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_RESOLUTION_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_BUILD => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_VERSION => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HIDE_STATUS_ID => Array(
	'0' => $t_hide_status_default,
	),
	FILTER_PROPERTY_MONITOR_USER_ID => Array(
	'0' => META_FILTER_ANY,
	),
);
$url_link_parameters['waiting_customer_validation'] = FILTER_PROPERTY_STATUS_ID . '=' . $t_bug_waiting_customer_validation_status_threshold . '&' . FILTER_PROPERTY_HIDE_STATUS_ID . '=' . $t_bug_waiting_customer_validation_status_threshold;
 
#En attente de mise en production
$t_bug_waiting_for_production_status_threshold = config_get('bug_waiting_for_production_status_threshold');
$c_filter['waiting_for_production'] = array(
	FILTER_PROPERTY_CATEGORY => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_SEVERITY_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_STATUS_ID => Array(
	'0' => $t_bug_waiting_for_production_status_threshold,
	),
	FILTER_PROPERTY_HIGHLIGHT_CHANGED => $t_default_show_changed,
	FILTER_PROPERTY_REPORTER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HANDLER_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_RESOLUTION_ID => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_BUILD => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_PRODUCT_VERSION => Array(
	'0' => META_FILTER_ANY,
	),
	FILTER_PROPERTY_HIDE_STATUS_ID => Array(
	'0' => $t_hide_status_default,
	),
	FILTER_PROPERTY_MONITOR_USER_ID => Array(
	'0' => META_FILTER_ANY,
	),
);
$url_link_parameters['waiting_for_production'] = FILTER_PROPERTY_STATUS_ID . '=' . $t_bug_waiting_for_production_status_threshold . '&' . FILTER_PROPERTY_HIDE_STATUS_ID . '=' . $t_bug_waiting_for_production_status_threshold;
 
#H-hennes : Fin des nouveaux status sur la page my_view

L’ensemble des fichiers sont à présents modifiés.

Affichage de la page my_view

Il est à présent possible d’affiner la page “my_view” en fonction des utilisateurs, de leur profil et des projets.
Voici 3 exemples d’affichage pour les profils suivants :

  • Client
  • Chef de projet
  • Développeur

Ces données sont à insérer dans “Administration / Gérer la configuration”.
Sélectionner ensuite l’utilisateur et le projet souhaité.

La clé de configuration est my_view_boxes
( Attention à ne pas mettre de “;” à la fin du tableau de configuration )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#Configuration Client
array ('reported' => 1,
	   'waiting_customer_validation' => 2
	   'feedback' => 3,
	   'resolved' => 4,
	   'assigned' => 0,
	   'unassigned' => 0,
	   'recent_mod' => 0,
	   'monitored' => 0,
	   'confirmed' => 0,
	   )
 
#Configuration Chef de projet Interne
array ( 
	   'reported' => 1,
	   'unassigned' => 2,
	   'waiting_internal_validation' => 3,
	   'feedback' => 4,
	   'waiting_customer_validation' => 5,
	   'assigned' => 6,
	   'waiting_for_production' => 7,
	   'resolved' => 8,
	   'monitored' => 9,
	   'recent_mod' => 10,
	   'confirmed' => 0,
	   )
 
#Configuration Développeur
array ( 
	   'assigned' => 1,
	   'unassigned' => 2,
	   'waiting_internal_validation' => 3,
	   'waiting_customer_validation' => 4,
	   'feedback' => 5,
	   'waiting_for_production' => 6,
	   'resolved' => 7,
	   'monitored' => 8,
	   'reported' => 9,
	   'recent_mod' => 10,
	   'confirmed' => 0,
	   )

Et voila nous en avons fini avec l’optimisation de mantis bugtracker.
Pour ceux qui le souhaite, vous pouvez télécharger directement les fichier modifiés :mantis-changement-worflow
Attention à bien remettre vos paramètres de base de données dans le fichier config_inc.php