sábado, 21 de junho de 2008

Customizando valores no Mantis: Prioridade

Quem utiliza o Mantis BugTracker pode não gostar dos valores default que encontram para os campos de prioridade. Mas poucos sabem, ou sabem e tem medo de alterar ou ainda sabem e ja alteraram estes valores.
Neste post vamos visulizar como alterar estes valores, bem como coloca-los para funcionar em qualquer idioma.
Apresento aqui uma forma de inserir ou até remover (não recomendado) determinado valores de campos.


Pré-Requisitos
  1. Utilizar qualquer versão do Mantis posterior à 1.0 (eu estou utilizando a versão 1.1.2)
  2. Faça um backup do banco e da pasta da aplicação (caso ocorra algum problema)
  3. SEMPRE copiar as variáveis que serão alteradas para o arquivo config_inc.php

Como o Mantis salva os dados de prioridade?
O Mantis não guarda nenhuma tabela para manter a relação de valores e codigo de cada campo. O que ele faz é salvar o codigo de cada valor configurado em suas propriedades. Podemos ir até o banco de dados e acessar a tabela mantis_bug_table e visualizar os dados contidos nela. Noque que o valore para a coluna priority foi salva como código, e não com o valor de cada campo:

Inserindo ou alterando valores de Prioridade
Segue abaixo a lista de valores bem como seu conteudo em inglês e português

CódigoTexto inglêsTexto português
10nonenenhuma
20lowbaixa
30normalnormal
40highalta
50urgenturgente
60immediateimediato

Se entrarmos no arquivo config_default_inc.php e buscarmos pela variável $g_priority_enum_string veremos os valores:

$g_priority_enum_string = '10:none,20:low,30:normal,40:high,50:urgent,60:immediate';

Como podemos ver na tabela acima temos os codigos de cada valor que é salvo no banco de dados. Sendo assim basta alterar o valor depois do codigo.
Podemos tambem inserir novos valores para que possamos ter mais opções de priorização, basta inserir uma virgula no final do ultimo registro.
No exemplo abaixo vou inserir uma nova prioridade chamada de "my priority" em ingês e "minha prioridade" em português

$g_priority_enum_string = '10:none,20:low,30:normal,40:high,50:urgent,60:immediate,70:minha prioridade';

NÃO efetue esta alteração diretamente no arquivo config_default_inc.php. Copie a variável com seus valores e cole no arquivo config_inc.php.

Também teremos que inserir esta nova prioridade nos arquivos de idiomas. Altere em cada idioma em que a aplicação é utilizada.
Vá ate o diretório instalacao_mantis/lang e selecione o arqivo alvo da alteração (no exemplo será o string_english.txt) e localize a variável $s_priority_enum_string e insira o novo valor de prioridade, como no exemplo abaixo:

$s_priority_enum_string = =10:none,20:low,30:normal,40:high,50:urgent,60:immediate,70:my priority';

Efetue a mesma alteração no arquivo string_portuguese_brazil.txt para a mesma variável, ficando assim:

$s_priority_enum_string = '10:nenhuma,20:baixa,30:normal,40:alta,50:urgente,60:imediato,70:minha prioridade';

No cadastro do bug ou na visulização veremos que o novo valor está disponível para utilização e o mesmo aparece também no Sumário



Para finalizar a customização da prioridade podemos habilitar que seja apresentado nome da prioridade da lista de bugs. Efetuamos esta alteração inserindo a variável abaixo no arquivo config_inc.php:

$g_show_priority_text = ON;




Precauções
Uma vez inserido um novo valor à um campo não remova-o. Se fizermos isso o banco de dado traz somente a informação do código cadastrado referente a este dado, como na imagem abaixo. Note que é inserido dois "@" e entre eles o código do valor:


Como remover uma prioridade criada e atualizar para uma já existente?
Se somente removermos o código mais o texto da prioridade teremos o problema acima: tanto na lista de bugs, quanto no detalhe, sumário e histórico visualizaremos o valor que foi gravado no banco de dados.
Uma vez removido este valor de prioridade precisamos atualizar estes valores no banco de dados para que estes códigos não aparecam.
Você precisará definir para qual status o valor antigo passará a ter. No exemplo abaixo vou trocar todos os bugs da tabela de bugs e histórico com "my priority" (código 70) para "none" (código 10)

--alteracao na tabela 'mantis_bug_table' que guarda os bugs
UPDATE mantis_bug_table SET priority = 10 WHERE priority = 70

--alteracao na tabela 'mantis_bug_history_table' que guarda o histórico de alteracoes do bug
UPDATE mantis_bug_history_table SET old_value = 10 WHERE old_value = 70

Com estes dois comandos em SQL, que podem ser executados no seu editor de arquivos SQL preferido, alteram os valores da prioridade antiga para a escolhida, tanto no bug quanto em seu histórico.

Aprendemos aqui a inserir ou remover valores do campo de prioridade e voltar ao valor antigo ou para outro valor, caso necessário.
No proximo post sobre customização do Mantis veremos como alteramos o valor de Severidade.

Abcs!

3 comentários:

  1. opa, tenho que dizer que acesso seu site quase que diariamente
    e tenho ele com fonte de trabalho

    também vim aqui dizer que tomei a liberdade de "copiar" alguns posts seu porém com a devida referencia. espero que não haja problemas e quero convidar você a me visitar

    http://testandosoftware.blogspot.com

    Ricardo Heineberg
    kado@univali.br

    ResponderExcluir
  2. Bom dia! eu não consegui entrar em outro post e não visualizei nenhum campo para fazer perguntas.
    Desculpa mas vou aproveitar esse espaço aqui para fazer essa pergunta.
    quais são os campos da tabela
    "mantis_project_category_table"
    pois o mantis foi gerado no postgres e essa tabela não foi gerada eu venho pesquisando mas não consegui nada preciso.
    aparentemente são esses campos (category,user_id,project_id), mas gostaria de ter certeza. Agradeço desde já.

    ResponderExcluir
  3. Olá! Encontrei sua página quando estava pesquisando sobre customização do Mantis. Gostaria de tirar uma dúvida com você.. como faço para que os campos que eu criei no relato do caso apareçam no grid do "Ver casos" ?

    tatihipolito@hotmail.com

    ResponderExcluir