N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
En complément de mes précédents articles sur ce sujet ( Ajouter une étape dans le workflow Mantis – Mantis 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 :
Voici le workflow que je souhaite obtenir : 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
Bonjour,
Vraiment très bien ce tuto! tout a fait ce que je cherche !
Par contre malheureusement j’ai un petit pb, je ne vois nulpart les nouveaux status et mes anciens status 30 (ack) et 40 (confirmed) sont toujours présents, a la fois dans la liste des status en bas et toujours dans les listes de selection.
Avez vous une idée pour résoudre ce pb??
Merci beaucoup!
Greg
Bonjour,
Afin de pouvoir vous aider il me faudrait un peu plus de détails :
Pour ma part j’ai testé sur une nouvelle installation de mantis 1.2.15 sans problèmes.
Merci beaucoup pour votre réponse rapide! Je suis en version 1.2.8.
J’ai fait les deux méthodes dans le doute, en premier modifier les fichiers « a la mano » et vu que ca ne fonctionnait pas, j’ai utilisé le rar en PJ de l’article. Mais même résultats.
Je vais peut etre essayer de monter en version 1.2.15 dans ce cas…
Je viens de passer en 1.2.15. Mais toujours ce problème malheureusement :/
Par contre je viens de regarder le workflow dans l’admin, et la par magie les nouveaux status sont apparut. J’ai donc pu paramétrer le workflow car rien n’était définit (rien de cocher sur les nouveaux status).
Et maintenant c’est bon!
Merci beaucoup pour ce tuto et ton aide!
Dans le cas ou le bugtracker comporte déjà des éléments, il est donc nécessaire de modifier le workflow dans l’administration.
Je n’avais pas rencontré ce problème comme je l’avais testé sur une plateforme vierge.
Merci de tes précisions 🙂
Bonjour,
merci pour le tuto.
Juste une précision pour ceux qui sont allez trop vite comme moi en le suivant (j’ai négligé la partie traduction dans custom_strings_inc.php et je me suis retrouvé avec un workflow ayant des états incochables, car avec des libellés absents dans mes 2 langues français et anglais): le workflow personnalisé est en fait stocké dans la table mantis_config_table.value: ça indique le nombre d’états (« a:… »), suivi des index de chaque état de départ avec ses états possibles d’arrivée, chaque état étant séparer du suivant par un point-virgule –> un UPDATE de ce champ permet de créer le workflow voulu (avec tous les libellés d’états), et enfin de cocher ce qu’il en est vraiment.
Cordialement.
Bonjour
Nous sommes en 1.3 et pour le fichier custom_strings_inc.php, nous n’avons modifié que le $s_status_enum_string et pas les autres variables ( $s_waiting_internal_validation_bug_button, $s_waiting_internal_validation_bug_title …), ni le fichier my_view_inc.php.
Et pourtant tout fonctionne …
Par ailleurs, pourquoi certaines variables sont en majuscule et d’autres en minuscule ? Nous, nous avons même mis des noms différents dans les 3 fichiers et ça ne pose pas de pb, par exemple recette_presta dans config_inc et dans custom_constants_inc alors que nous avons mis recette presta (sans _) dans customs_strings_inc. Et c’est bien le « sans _ » qui s’affiche partout.
Bonjour,
Merci pour votre retour.
Cet article est assez ancien et la version 1.3 de mantis apporte de nombreux changements.
Je n’ai pas restesté ce processus qui a sans doute du être simplifié depuis.
Cordialement,
Hervé
Bonjour
Un grand merci pour ce tuto très clair. J’ai réalisé toutes les étapes et c’est presque tout bon.
J’ai juste un souci sur la dernière partie concernant l’affichage des bugs dans chacune des box.
J’ai bien toutes mes box correspondant à tous mes statuts mais le filtre ne se fait pas correctement. Tous les bugs se retrouvent affichés dans chacune des box quelque soit so statut.
J’ai installé MantisBT 2.0
Quelqu’un a t’il déjà eu ce problème.
Merci
Bonjour,
Il est possible que ce point ait été changé sur la version 2.0 de mantis.
Je n’ai pour l’instant pas eut le temps de tester ces changements sur cette version.
J’essaierais de mettre à jour l’article en conséquence.
Cordialement,
Hervé
j’ai déposé un topic sur le forum Mantis. Je posterai une note ici si j’ai du nouveau par ailleurs.
Merci
En version 2.0.0, le code permettant le filtrage des bugs dans my_view_inc.php ont changé.
Dans les blocs de code définissant les filtres:
$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;
——–
FILTER_PROPERTY_CATEGORY devient FILTER_PROPERTY_CATEGORY_ID
FILTER_PROPERTY_SEVERITY_ID devient FILTER_PROPERTY_SEVERITY
FILTER_PROPERTY_STATUS_ID devient FILTER_PROPERTY_STATUS
FILTER_PROPERTY_RESOLUTION_ID devient FILTER_PROPERTY_RESOLUTION
FILTER_PROPERTY_PRODUCT_BUILD devient FILTER_PROPERTY_BUILD
FILTER_PROPERTY_PRODUCT_VERSION devient FILTER_PROPERTY_VERSION
Et aussi,
$url_link_parameters qui devient $t_url_link_parameters
Et là, tout fonctionne
Merci encore pour ce tuto ( le plus complet du Web … y compris les tutos en anglais)
Génial merci pour ces informations et votre analyse, ravi de voir que cet article peut être utile 🙂
Ceci devrait aider ceux qui sont bloqués avec Mantis BT 2.0 !
J’espère pouvoir m’y mettre bientôt.
Cordialement,
Hervé
et j’ai oublié
FILTER_PROPERTY_HIDE_STATUS_ID qui devient FILTER_PROPERTY_HIDE_STATUS
Bonjour, je suis sous le version 2.0 et j’ai un problème, mon status c’est bien ajouter à la liste des statut dans les filtre et son workflow est configurer. Mais il n’est pas présent dans la liste des statut lors de modification … Quelqu’un aurais la solution ? Merci.
les statuts accessibles depuis le formulaire de modification sont définis grace à la variable
g_status_enum_workflow
En théorie, pour un bug à un statut donné, vous devriez pouvoir accéder à tous les status présents dans
$g_status_enum_workflow[VOTRE_STATUT]=’XX:xxxx,YY:yyyy’;
C’est à dire que vous devriez pouvoir sélectionner xxxx et yyyy
Bonjour, merci pour ta réponse mais si ce que tu dis est correct j’ai un problème car j’ai bien configurer cette ligne et j’ai aussi essayer avec les autres statuts mais aucun changement. Les seules changements que je vois ce trouve dans $g_satus_enum_string, où je peux ajouter ou supprimer des statuts mais sans que ça affecte la liste dans le formulaire de modification.
J’ai régler mon problème en bidouillant ma bdd mais je suis pas convaincu de la propreté de ma solution.
Bonjour,
Je travail acutellement sur mantis bt. On m’a demandé de faire un workflow par catégorie. J’aimerai si c’est possible et si oui comment faire. Par projet pas de souci j’y arrive.
Merci de votre aide
Bonjour,
Ce n’est pas possible de faire cela.
Les portées de configurations sont au minimum au niveau d’un projet.
Cordialement,
Hervé
Merci de votre réponse rapide.
En faite le probléme que j’ai c’est que dans les workflows que j’utilise donc 50 projets différents un seul projet n’affiche pas le bon workflow et je ne comprend pas pourquoi. impossible de modifier le statut d’un bug
Bonjour,
Est-il possible d’avoir deux workflow différent au sein de Mantis ?
En effet je souhaiterais avoir un Workflow pour mon projet 1 et un deuxième workflow ( différent du premier ) pour mon projet 2.
cordialement
Bonjour Romain,
C’est tout à fait possible effectivement.
Cet article date un peu et ne précise pas forcément l’approche la plus pratique.
Il reste d’actualité pour la configuration des informations des différents status.
Pour avoir des workflow différents pour 2 projets il vous suffit de redédinir les valeurs :
status_enum_string et status_enum_workflow via la configuration dans l’administration 🙂
Cordialement,
Hervé