Настройка писем в Mantis

Я начинаю публикацию небольших стаей про настройку багтрекера Mantis. В данный момент времени я настраиваю багтрекер для удобной работы и интересные вещи, с которыми приходится сталкиваться, буду выносить в статьи.

По умолчанию Мантис отправляет в теле письма всю информацию об ошибке. Там содержится огромное количество лишней информации. Выглядит это так: вам добавили один комментарий   к ошибке, а в письме вы получаете все атрибуты бага, полное описание, шаги воспроизведения, все остальные комментарии, сделанные до этого, и всю историю работ над данной записью.

В настройках багтрекера данных вещи отсутствуют, так что придется лезть в код. Нам нужен файл core\email_api.php

Убираем лишние атрибуты

В настройках по умолчанию  письмо выглядит так:

Полное описание ошибки

Чтобы сократить этот список находим строчки:


$t_message .= email_format_attribute( $p_visible_bug_data, 'email_reporter' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_handler' );
$t_message .= $user_get_name( $t_bugnote->reporter_id );
$t_message .= $t_email_separator1 . " \n";
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_project' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_bug' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_category' );
$t_message .= e
mail_format_attribute( $p_visible_bug_data, 'email_reproducibility' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_severity' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_priority' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_status' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_target_version' );

И комментируем лишние для нас вещи:

$t_message .= email_format_attribute( $p_visible_bug_data, 'email_reporter' );
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_handler' );
//$t_message .= $user_get_name( $t_bugnote->reporter_id );
$t_message .= $t_email_separator1 . " \n";
$t_message .= email_format_attribute( $p_visible_bug_data, 'email_project' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_bug' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_category' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_reproducibility' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_severity' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_priority' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_status' );
//$t_message .= email_format_attribute( $p_visible_bug_data, 'email_target_version' );

Теперь письмо выглядит следующим образом:
Письмо с уменьшенным набором полей

Убираем историю работы над ошибкой

Файл тот же, ищем код:

# put history data
if(( ON == config_get( 'history_default_visible' ) ) && access_compare_level( $t_user_access_level, config_get( 'view_history_threshold' ) ) ) {
$t_bug_data['history'] = history_get_raw_events_array( $p_bug_id, $p_user_id );}

Тут я не исследовал глубоко использование всех переменных и решил завести свою — mail_history_default_visible

В файле config_inc.php добавляем строку:

$mail_history_default_visible = OFF;

И приведенные выше строки меняем на такие (изменение выделено цветом):

if(( ON == config_get( 'mail_history_default_visible' ) ) && access_compare_level( $t_user_access_level, config_get( 'view_history_threshold' ) ) ) {
$t_bug_data['history'] = history_get_raw_events_array( $p_bug_id, $p_user_id );}

Убираем лишние комментарии

Ищем строчки

# format bugnotes
foreach( $p_visible_bug_data['bugnotes'] as $t_bugnote ) {

Здесь идет набор всех комментариев в тело письма. Нам же нужно показать только последний. Для этого переходим от цикла к одному последнему элементу массива.


//foreach( $p_visible_bug_data['bugnotes'] as $t_bugnote ) {
$t_bugnote = array_pop($p_visible_bug_data['bugnotes']);

И комментируем последнюю закрывающую фигурную скобку ‘}’, что осталась от цикла foreach(…)

Шаги воспроизведения

Если нужно убрать описание повторения ошибки из письма, то можно закомментировать строку кода вот в таком операторе if()

if ( !is_blank( $p_visible_bug_data['email_steps_to_reproduce'] ) ) {
//$t_message .= "\n" . lang_get( 'email_steps_to_reproduce' ) . ": \n" . $p_visible_bug_data['email_steps_to_reproduce'] . "\n";
}

Теперь, после всех необходимых настроек, письма от Мантиса стали гораздо более аккуратные и легкочитаемые.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>