70
Manual do Redmine Software para Gerenciamento de Projetos Marcello Henrique Dias de Moura Renato de Paula Mesquita Caroline da Cunha Mota Goiˆ ania, 19 de Fevereiro de 2009

Manual Redmine

  • Upload
    dionei

  • View
    406

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Manual Redmine

Manual do Redmine

Software para Gerenciamento de

Projetos

Marcello Henrique Dias de MouraRenato de Paula Mesquita Caroline da Cunha Mota

Goiania, 19 de Fevereiro de 2009

Page 2: Manual Redmine

Sumario

1

Page 3: Manual Redmine

Lista de Figuras

2

Page 4: Manual Redmine

Capıtulo 1

Guia de Instalacao

1.1 Instalando Redmine

1.1.1 Requerimentos

Sistemas operacionais

Redmine deveria rodar em sistemas Unix, Linux, Mac e Windows assim comoruby esta disponıvel para essa plataformas.

Ruby & Ruby on Rails

As necessidades das versoes do Rails para as versoes do Redmine para quefuncione a contento sao:

Versao do Redmine Verao Suportada Ruby Versao necessaria do Railscurrent trunk ruby 1.8.6, 1.8.7 Rails 2.2.2

trunk before r2493 ruby 1.8.6, 1.8.7 Rails 2.1.20.8.x ruby 1.8.6, 1.8.7 Rails 2.1.20.7.x ruby 1.8.6 Rails 2.0.2

Liberacoes oficiais incluem a versao apropriada do Rails em seus diretoriosexpecıficos. Portanto, nao e necessaria uma acao especıfica. Se voce baixaros fontes de um repositorio Redmine, voce pode instalar uma versao do Railsespecıfica na sua maquina rodando:

gem install rails -v=2.1.2

Notas:

• RubyGems 1.3.1 e necessario

• Rake 0.8.3 e necessario

3

Page 5: Manual Redmine

Base de dados

• MySQL 4.1 ou mais novo (recomendado)

• PostgreSQL 8

• SQLite 3

Se voce esta usando banco de dados MySQL, tem certeza de instalar o Cbindings que melhora a permformace dramasticamente. Voce pode obte-lo ro-dando gem install mysql

Componentes opcionais

• SCM binarios (eg. svn), para navegar no repositorio (deve estar disponıvelem seu PATH) Veja [[BrRedmineRepositories]] para compatibilidade necessariado SCM.

• “RMagick” (para permitir exportar imagem png do grafico de Gantt)

1.1.2 Instalacao

1. ?? e extraia os arquivos do ??.

2. Criar um banco de dados vazio chamado redmine por exemplo. ParaMySQL:

create database redmine character set utf8;

3. Copiar config/database.yml.example para config/database.yml e ed-itar este arquivo na ordem para configurar as definicoes da sua base dedados no ambiente “production”.

Exemplo para uma base de dados MySQL:

production:adapter: mysqldatabase: redminehost: localhostusername: bduserpassword: bdpasswd

4. Criar uma estrutura na base de dados, rodando o seguinte comando nodiretorio raiz da sua aplicacao:

rake db:migrate RAILS_ENV="production"

Isto vai criar as tabelas e a conta de administrador.

5. Inserir configuracao de dados padrao na base de dados, rodando o seguintecomando:

4

Page 6: Manual Redmine

rake redmine:load_default_data RAILS_ENV="production"

Este passo e opcional porem e altamente recomendado, como vocepode definir sua configuracao do scratch. Isso vai carregar as regras, tipos,estatus, workflows e numeracoes.

6. Definindo permissoes Nota: Usuarios windows podem pular essa sessao.

O usuario que rodar Redmine deve ter permissao de escrita nos seguintediretorios: files, log, tmp (criando o ultimo se nao existir).

Assumindo que voce rodou Redmine com usuario redmine:

mkdir tmpsudo chown -R redmine:redmine files log tmpsudo chmod -R 755 files log tmp

7. Testando a instalacao rodando o servidor web WEBrick:

ruby script/server -e production

Uma vez WEBrick iniciado, aponte seu navegador para http://localhost:3000/.Voce deveria ver a pagina de boas vindas da aplicacao.

8. Use a conta de administracao padrao logando assim:

* login: admin* password: admin

Voce pode ir para Admin & Settings para modificar as configuracoes daaplicacao.

1.1.3 Configurando servico SMTP

Liberacoes 0.8.x

Copie config/email.yml.example para config/email.yml e edite esse arquivopara ajustar as definicoes do seu servico SMTP.

Liberacoes 0.7.x

Em config/environment.rb, voce pode definir parametros so seu servidor SMTP:

* config.action_mailer.smtp_settings: SMTP server configuration

* config.action_mailer.perform_deliveries: set to false to disable mail delivering

Nao se esqueca de reiniciar sua aplicacao depois da mudanca.

5

Page 7: Manual Redmine

1.1.4 Backups

Backups do Redmine deveria incluir:

* dados (alocados na sua base de dados)* anexos (alocados no seu diretorio files)

Aqui temos um simples script em shell que pode ser usado para fazer back-ups diariamente (assumindo que voce esteje usando uma base de dados mysql):

1 # Dados2 / usr /bin /mysqldump −u <username> −p <password> <redmine database> | gz ip

> /path/ to /backup/db/ redmine ‘ date +%y %m %d ‘ . gz3 # Anexos4 rsync −a /path/ to / redmine/ f i l e s /path/ to /backup/ f i l e s

1.2 Atualizando

1.2.1 Atualizando de um repositorio SVN

Antes de atualizar, verifique se voce tem todos os ?? para versao que voce queratualizar.

1. Va ate o diretorio Redmine e rode o seguinte comando:

svn update

2. Migrando sua base de dados (por favor, faca um backup da sua base dedados antes de executar isso):

rake db:migrate RAILS_ENV="production"

3. Limpe o cache e sessoes existentes:

rake tmp:cache:clearrake tmp:sessions:clear

4. Reinicie a aplicacao e vai ate “Admin − > Roles & permissions” paraverificar/definir as permissoes para as novas funcionalidades, se existir.

1.2.2 Atualizando de uma liberacao baixada

1. Descompacte o novo arquivo no seu novo diretorio.

2. Copie as definicoes do seu banco de dados config/database.yml para dentrodo seu novo diretorito config.

3. Copie config/email.yml.example para config/email.yml e edite este arquivopara ajustar suas configuracoes SMTP.

6

Page 8: Manual Redmine

4. Va para seu novo diretorio redmine, e faca a migracao da sua base dedados (por favor, faca um backup da sua base de dados antes de executarisso):

rake db:migrate RAILS_ENV="production"

5. Copie o conteudo do diretorio RAILS ROOT/files para sua nova insta-lacao.

6. Inicie a aplicacao e va ate “Admin -> Roles & permissions” e verifique/de-fina as permissoes para as novas funcionalidades, se existir.

1.3 Migrando de outros sistemas

1.3.1 Trac

O Trac importamos na migracao:

• Usuario

• Componentes

• Versoes (Milestones)

• Tıquetes

• Comentario dos tıquetes e mudancas (estatus e resolucao)

• Colunas especıficas no Trac (Ex. Resolution) e adicionado como colunascustomizados no Redmine

• Arquivos dos Tıquetes e customizacoes de colunas

• Paginas Wiki e historico

Notas:

1. Senhas dos usuario sao todas definidas no trac

2. Identificacao dos tıquetes sao preservadas se nao ainda nao houver tıquetesna base de dados do Redmine

3. Customizacao de colunas sao todas criadas como texto customizado noRedmine

Voce necessita do sqlite-ruby gem (gem install sqlite-ruby) para acessar abase de dados do Trac.

Antes de iniciar, voce precisa de uma base de dados fresca do Redmine,carregando o banco de dados padrao (requerimento). Veja ??

O script foi testado com o banco de dados sqlite do Trac 0.10 e deveriafuncionar com a base de dados do Trac 0.11.

1. Rodando o seguinte comando, onde test e sua marca do ambiente Redmine:

7

Page 9: Manual Redmine

rake redmine:migrate_from_trac RAILS_ENV="test"

2. O script te perguntara sobre suas configuracoes do Trac:

Trac directory []: /var/trac/myprojectTrac database adapter (sqlite, sqlite3, mysql, postgresql) [sqlite]:Database encoding [UTF-8]:Target project identifier []: myproject

O diretorio do Trac e o diretorio raiz do seu ambiente Trac. O Redminevai procurar neste diretorio por db/trac.db (se voce escolher base dedados sqlite/sqlite3) e o diretorio attachments. Usando uma base dedados mysql ou postgresql, o script vai perguntar as informacoes paraconexao (host, nome do banco, nome do usuario e senha). O Identificadordo projeto e o identificar do projeto Redmine no qual os dados vao sercarregados (o projeto e criado se nao encontrado).

3. O script migrando seus dados:

Deleting dataMigrating components..............................Migrating milestones..............Migrating custom fields.......Migrating tickets.................................Migrating wiki...........

Components: 29/30Milestones: 14/14Tickets: 1275/1275Ticket files: 106/106Custom values: 4409/4409Wiki edits: 102/102

O script informa o numero total dos objetos migrados. Agora, voce deveriaver um projeto chamado Myproject no Redmine com seus dados do Traccarregados neste projeto.

1.3.2 Mantis

O Mantis importamos na migracao:

• Usuarios

• Projetos

• Versoes do Projeto, categorias e notıcias

• Afiliacoes do Projeto

8

Page 10: Manual Redmine

• Bugs

• Notas do Bug, arquivos, relacoes e monitores

• Customizacao de colunas

Senha dos usuario sao todas definidas no ”mantis”.Migracao de arquivos de Bug somente funcionam se eles estiverem armazena-

dos no seu banco de dados Mantis (Iste e o comportamento padrao do Mantis).O script foi testado com diferentes bancos de dados Mantis 1.0.x e deveria

funcionar com outras versoes recentes.Antes de iniciar, voce precisa de uma base de dados fresca do Redmine,

carregando o banco de dados padrao (requerimento). Veja ??

1. Rodando o seguinte comando, onde test e sua marca do ambiente Redmine:

rake redmine:migrate_from_mantis RAILS_ENV="test"

2. O script te perguntara sobre suas configuracoes do Mantis:

Please enter settings for your Mantis databaseadapter [mysql]:host [localhost]:database [bugtracker]: mantisusername [root]:password []:encoding [UTF-8]:

Forneca o adaptador, nome do host, nome da base de dados, login, senhae codificacao de caracteres do seu Mantis, ou deixe as configuracoes dosvalores por omissao.

O adptador pode ser mysql (por omissao) ou postgresql.

3. O script migrando seus dados:

Migrating users...............Migrating projects.............Migrating bugs........................................Migrating news...Migrating custom fields..

Users: 15/15Projects: 13/13Memberships: 10/10Versions: 33/33Categories: 4/4Bugs: 180/180Bug notes: 336/336Bug files: 46/46

9

Page 11: Manual Redmine

Bug relations: 11/11Bug monitors: 8/8News: 3/3Custom fields: 2/2

O script informa o numero total dos objetos migrados.

1.3.3 Outros sistemas

Voce pode procurar outros importadores submetidos pelos usuarios Redmine:

* Jira importer: #1385* Buzilla importer: #989

Esses scripts nao foram testados nem sao suportados. Se voce quer ajudar,pode enviar-me (http://www.redmine.org/account/show/1) um dump da basede dados e as ferramentas.

1.4 Baixando o Redmine

Antes de baixar o Redmine, voce tem que decidir que versao voce precisa:

1.4.1 Versao Estavel

A ultima, bem testada liberacao estavel tomadas de 0.8.x-branch (que e re-comendada para producao) e atualmente 0.8.1. Pode ser baixada usando aURL:

* http://redmine.rubyforge.org/svn/tags/0.8.1/A 0.8.x-branch (que contem atualizacoes incluıdas no proximo ?? no 0.8.x-

branch) pode ser baixada usando a URL:* http://redmine.rubyforge.org/svn/branches/0.8-stable/

1.4.2 Versao de Desenvolvimento

A bleeding-edge versao de desenvolvimento do Redmine que contem todos asnovas funcionalidade congeladas. Embora isso possa estar quebrada por algunsdias (muito raramente). A ultima versao de desenvolvimento do Redmine con-tinua no tronco (trunk) e pode ser baixando usando a URL:

* http://redmine.rubyforge.org/svn/trunk/

1.4.3 Versao Descontinuada

A ultima liberacao descontinuada continuam em 0.7.x-branch esta atuamentena revisao 0.7.4. Pode ser baixada usando a URL:

* http://redmine.rubyforge.org/svn/tags/0.7.4/

10

Page 12: Manual Redmine

1.4.4 Versoes Velhas

Se voce precisa usar uma versao antiga especıfica pela polıtica da empresa oucoisa parecida... Porque nao... Pode ser baixada escolhendo a versao que voceprecisa antes colocar o numero completo da versao no final da URL:

* http://redmine.rubyforge.org/svn/tags/{version}/

1.5 Gerenciamento de Liberacoes

Esta pagina sera um esboco de como sera manuseadas as liberacoes

1.5.1 Liberacao Principal (x.0.0)

Redmine atualmente nao faz liberacoes principais (pre-1.0.0).

1.5.2 Liberacao Menor (0.x.0)

Liberacoes menores podem quebrar compatibilidade para tras.

Mudancas permitidas

• Novas funcionalidade

• Correcao de Defeitos (Bugs)

• Correcoes de Seguranca

• Migracao de Base de Dados

Mudancas nao permitidads

Nada ate esse momento.

1.5.3 Ponto de Liberacoes (0.0.x)

Ponto de liberacoes nao deveria quebrar compatibilidade para tras.

Mudancas permitidas

• Funcionalidades Simples

• Correcao de Defeitos (Bugs)

• Correcao de Seguranca

Mudancas nao permitidas

• Novas funcionalidades com muitas mudancas

• Migracao de Base de Dados

1.5.4 Referencias

http://www.redmine.org/issues/show/1901#note-14

11

Page 13: Manual Redmine

Capıtulo 2

Guia do Administrador

2.1 Definicoes da Aplicacao

2.1.1 Definicoes Gerais

Tıtulo da aplicacao

Tıtulo que aparece no cabecalho da aplicacao.

Texto de boas-vindas

Texto mostrado na pagina inicial da aplicacao. Este texto pode conter marcasHTML.

Tema

Esta opcao da a voce a opcao de customizar temas. Redmine e fornecido comum tema alternativo, que preve principalmente questoes de colorizacao baseadoem questoes prioritarias.

Screenshot:

12

Page 14: Manual Redmine

Temas estao localizados em public/themes/. Voce pode ler sobre isso em:http://www.redmine.org/wiki/redmine/HowTo_create_a_custom_Redmine_

theme

Idioma padrao

A linguagem por omissao e selecionada quando a aplicacao nao pode determinara linguagem dos usuarios. A linguagem por omissao e tambem usada quandoenvia email para multiplos usuario. Default: English

Formato da Data

Deixamos voce escolher como mostrar as datas:

Com base no idioma do usuario : datas vao ser mostradas especificamentepara cada usuario de acordo com o formato definido por eles.

Outros formatos : Datas vao sempre ser mostradas usando o formato especı-fico

Default: Baseado na linguagem dos usuarios

Tamanho maximo do anexo

Tamanho maximo de envio de arquivos (no kibi-bytes). Default: 2048 (i.e. 2mebi-bytes)

Servidor

Nome do host da aplicacao. Este nome e usado para escrever URL no emailpara enviar aos usuarios.

13

Page 15: Manual Redmine

Protocolo

Protocolo usado para gerar links nas notificacoes por email. Default: http

Formatacao do texto

Metodos de formatacao aplicados para a campo “description” dos tıquetes, notı-cias, documentos...

Compactacao do historico do Wiki

Permitimos voce ativar compressao para historico do wikis armazenados (re-duzindo tamanho dos dados). Default: disabled

Limite do feed

Numero maximo de gravacoes contidos em alimentadores RSS. Default: 15

Usando ıcones do Gravatar

Se habilitado, usuarios ”Gravatars”:http://en.gravatar.com/ (avatar globalmentereconhecido) vai ser mostrado em diversos lugares.

2.1.2 Autenticacao

Exigir Autenticacao

Se esta opcao estiver habilitada, nenhuma pagina da aplicacao e acessıvel pe-los usuarios anonimos. Usuarios deverao autenticar para acessar a aplicacao.Default: No

Auto-login

Esta opcao deixa usuarios usar a funcionalidade auto-login. Default: Disabled

Permitido Auto-registro

This option lets you enable/disable new users self registration: Esta opcao deixavoce ligar/desligar novos usuarios de se registrarem:

disabled : usuarios nao sao permitidos de se registrarem

account activation by email : novos usuarios recebem um email contendoum link usado para tivar suas contas (usuario devem fornecer um emailvalido).

manual account activation (default) : novas contas de usuarios sao criadasmas precisam aprovacao do administrador. Administradores recebem umemail infomando sobre elas que estao pendentes de aprovacao.

automatic account activation : novos usuarios podem autenticar, logo quetenham registado.

14

Page 16: Manual Redmine

Perdi minha senha

Se esta opcao estiver habilitada, a funcionalidade de senha perdidas estaradisponıvel. Default: Yes

2.1.3 Tickets

Permitir relacionar tickets entre projetos

Se esta opcao estiver habilitada, tıquetes poderao relacionar entre diferentesprojetos. Default: No

Visualizar tickets dos subprojetos nos projetos principais por padrao

Se esta opcao estiver habilitada, tıquetes de subprojetos vao estar disponıveispor omissao na lista de tıquetes, calendario e gantt do projeto principal (Desder1198). Default: Yes

Limite de exportacao das tarefas

Numero maximo do tıquete contido na exportacao do CSV e PDF. Default: 500

campo padrao visıveis na lista de tickets

Esta configuracao permite voce definir que campos voce quer mostrar na sualista de tıquete por omissao. Somente customizando campos que sao marcadascom ’Para todos os todos os projetos’ pode ser selecionada aqui.

2.1.4 Notificacao por email

Emissiol enviado de

Endereco de email usado no campo ”From”das mensagens enviadas aos usuarios.

Destinatarios com copia oculta (cco)

Se esta opcao estiver habilitada, notificacoes por email vao estar em copia oculta.Default: Yes

Mail em texto plano

Se esta opcao estiver habilitada, email serao enviados somente em texto plano(sem HTML).

Rodape dos emails

Aqui voce pode entra com texto que vai aparecer nos email enviados pela apli-cacao.

15

Page 17: Manual Redmine

2.1.5 Repositorios

Auto-obter commits

Se esta opcao estiver habilitada, a aplicacao automaticamente retorna as novarevisoes quando um usuario consulta o repositorio. Default: Yes

Voce pode disabilitar esta opcao e automaticamente chamar o Repositorio#fetch chagesetsusando cron para regularmente retornar as revisoes para todo o repositorio embackground. Exemplo:

ruby script/runner "Repository.fetch_changesets" -e production

Voce pode tambem chamar esta tarefa de nos ganchos de um repositorio(hooks) atraves do post-commit ou post-receive, entao o changesets sao recu-perados apos cada commit. Aqui tem um tutorial para fazer isso com o git:http://finalcog.com/remine-git-post-receive

Ativa WS para gerenciamento do repositorio

Esta opcao deveria ser ativada somente se voce instalou o script para criar orepositorio SVN automaticamente. Default: No

Codificacao dos repositorios

Esta opcao deixa voce especificar a codificacao preferida de caracteres preferidapara seus arquivos (multiplos valores sao permitidos, separados por vırgula).Essa codificacao e usada para converter o conteudo dos arquivos e diff paraUTF-8 entao eles serao mostrados adequadamentes no seu navegador. Quandousar varios tipos, o primeiro sera a codificacao valida quando o conteudo eutilizado.

Para Franceses, esta opcao pode ser um bom exemplo:

UTF-8, ISO 8859-15, CP1252

Para Japoneses:

ISO-2022-JP, EUC-JP, UTF-8, SHIF_JIS, WINDOWS-31J

Referenciando tıquetes em uma mensagem de commit

Quando obter (fetched) de um repositorio, as mensagens de commit serao ver-ificadas e referenciadas ou identificacao de tıquetes serao fixados. Esta opcaodeixa voce definir palavras que pode ser usadas nas mensagens de commits parareferenciar ou consertar tıquetes automaticamente, e o estatus para aplicar noconserto de um tıquete.

Palavras por omissao sao:

• para referenciar tıquetes: refs, references, IssueID

• para fechar tıquetes: fixes, closes

Nao ha status padrao definido para fechar tıquetes. Voce vai ter que es-pecificar isso se voce quiser habilitar auto encerramento do tıquete. Se vocequer referenciar tıquetes sem usar palavras, entre com um simples: * no campo

16

Page 18: Manual Redmine

Palavras de referencia. Neste caso, qualquer identificacao do tıquete encon-trado na mensagem vai ser lincado para o repositorio.

Exemplos desse funcionamento nos commits de mensagens usando as palavraspor omissao:

This commit refs #1, #2 and fixes #3

Esta mensagem deveria referenciar os tıquetes 1 e 2 e automaticamente fecharo tıquete 3. Mais de uma palavra de identificacao de tıquete pode ser usada,basta separar por espaco, vırgula ou &.

2.2 Regras e permissoes

Papeis permite voce definir regras de permissao que membro de um projeto podeter. Cada membro do projeto tem um papel para cada projeto. Um usuariopode ter diferentes papeis para diferentes projetos.

Voce pode criar um novo papel ou editar um existente. Voce pode excluirum papel somente se ninguem usa-lo em um projeto.

2.2.1 Propriedade dos papeis

• Nome: mostra o nome do papel

• Tickets podem ser atribuıdos para este papel: se desabilitado, tıquetes naopodem ser atribuıdos para membro com este papel no projeto.

2.2.2 Permissoes

Quando editar um papel, voce pode definir permissoes marcando ou desmar-cando diferentes acoes.

2.2.3 Sistema de papeis

Existe 2 sistema de papeis no Redmine: “Nao membro” e “Anonimo”. Eles saousandos internamente pelo Redmine e nao podem ser excluıdos.

• Nao membro: este papel define a permissao que um usuario registradotem no projeto que ele nao e membro.

• Anonimo: este papel define que permissao os usuarios anonimos tem noprojeto.

Note que estas permissoes somente aplicam para projetos publicos desde deque usuarios que nao sao membros do projeto privado nem podem ve-los.

2.3 Sistema de monitoramente de tıquetes

2.3.1 Monitoramento (Trackers)

Monitoramento sao diferentes tipos de tıquetes. Para cada monitoramento vocepode definir:

17

Page 19: Manual Redmine

• se o limite do tıquete para o monitoramente deveria ser mostrado noBrRedmineRoadmap

• se o limite do tıquete para o monitoramente deveria ser mostrado noBrRedmineIssueChangelog

• um diferente fluxo de trabalho.

Se voce cria um novo monitoramento, voce pode definir um fluxo de trabalhoa fim de utiliza-lo corretamente. Note que voce pode copiar de fluxo de trabalhode monitoramento existente quando voce criar um novo (para que, selecionandoum monitoramento em “Copiar workflow de” na lista de menu na tela de “Novomonitoramento”).

2.3.2 Status do tıquete

Status do tıquete pode ser adicionado ou excluıdo livremente. Cada status temas seguintes configuracoes:

Tıquete fechado : indica que o tıquete pode ser considerado como fechado(mais que um status pode ser declarado como fechado)

Status padrao : status aplicado por padrao para um novo tıquetes (somenteum status pode ser definido com o padrao)

2.3.3 Fluxo de trabalho (Workflow)

O fluxo de trabalho permite voce definir a transicao de status de varios membrosdo projetos para permitir criar tıquetes de acordo com seu tipo.

Na tela de definicao do fluxo de trabalho, selecione o papel e o monitora-mento que voce quer para editar o fluxo de trabalho, entao click em ’Editar’.A tela permite voce selecionar e autorizar a transicao, para escolher o papel eo monitoramento. A opcao de status corrente indica o status inicial do tıquete.O campo de ”Novo status permitido”para status que pode ser aplicado.

Nota: Para permitir um papel de mudar o status de tıquete existente, vocetem que dar a ela a permissao de “status de tıquete alterado” (veja ??).

18

Page 20: Manual Redmine

No exemplo acima, Bugs com um Novo status poderia ter um status deAtribuıdo ou Resolvido pelo papel do Desenvolvedor. Aqueles que tem statusde Atribuıdos poderia obter status de Resolvido. O status de todos os outrosBugs nao podem ser modificados pelos Desenvolvedores.

2.4 Campos Customizados

Customizar campos permite voce adicionar informacoes nos Projetos, Tıquetesou Usuarios. Um campo customizado pode ser dos seguites tipos:

Integer: numero positivo ou negativo

String: uma simples linha de entrada

Text: multiplas linhas de texto

Date: data

Boolean: campos de marcar

List: menu de escolha

Algumas validacoes pode ser definidas para cada campo customizado:

Min - max length: tamanho mınimo e maximo do campo (0 significa que naoha restricao)

Regular Expression: uma expressao regular pode ser usada para validar oconteudo do campo

Exemplos:

^\[A-Z]{4}\d+$ : 4 letras maiuscula seguidas por 1 ou mais dıgitos

^[^0-9]*$ : caracteres somente - nenhum numero

Possible values : valores possıveis para um campo ”List”. Voce pode adicionar

mais valores clicando neste ıcone:

19

Page 21: Manual Redmine

2.4.1 Campos para tıquetes

Required: campo necessario para criar/salvar um novo tıquete

For all projects: se esta habilitado, este campo e usada para todos os tıquetede todos os projetos. Se desabilitado, cada projeto pode escolher quandousar este campo nos seus tıquetes (veja ??).

2.4.2 Campos para entradas de tempo gasto

Required: campo necessario para criar/salvar uma entrada de tempo gasto

2.4.3 Campos por Projetos

Required: campo necessario para criar/salvar o projeto

2.4.4 Campo para Usuarios

Required: campo necessario para criar/salvar usuario

2.5 Enumeracoes

Enumeracoes sao globais (cross-project) valores para diversas partes do sistemaRedmine:

• Atividades (time tracking)

• Categorias do documento

• Prioridade dos tıquetes

Esses ıtens podem ser adicionados, modificados e excluıdos livremente. To-dos eles tem uma configuracao que se e uma enumeracao corrente deveria terum valor padrao. Se o valor padrao do campos esta marcado, a enumeracaoselecionada vai ser padrao para aquele valor especıfico no campo(s). Se nao en-tao sera sera definido o valor padrao para uma especıfica categoria (atividades,categorias do documento ou prioridade dos tıquetes) nenhum enumeracao vaiser pre-selecionada para o campo(s) especıfico(s).

20

Page 22: Manual Redmine

2.6 Gerenciando projetos

2.6.1 Lista de Projetos

Projeto: O nome do projeto

Descricao: Um pequena descricao do projeto

Sub-projetos: Indica o numero de sub-projetos conectados a este projeto

Publico: Se este ıcone existir, qualquer um pode ver este projeto. projetosnao publicos podem ser vistos somente pelos seus usuario que obtem acessopelo administrador do projeto.

Criado em: Mostra a data de criacao do projeto.

Arquivar: Voce pode arquivar um projeto clicando sobre este ıcone . Umprojeto arquivado nao sera mais visıvel pelos seus usuarios. Isso podeser desfeito (nesta mesma tela) pelo administrador. Quando arquivar oprojeto, qualquer sub-projeto deste projeto sera arquivado tambem.

Excluir: Isto excluira o projeto. O contrario de Arquivar, voce nao pode restau-rar um projeto excluıdo. Use quanto tiver certeza que nao arrependera.

2.6.2 Adicionando ou editando um projeto

Veja ??.

21

Page 23: Manual Redmine

2.7 Gerenciando Usuarios

2.7.1 Lista de Usuarios

Status das contas:

• Este ıcone significa que a conta esta bloqueada.Um usuario que tema conta bloqueada nao pode logar e nem acessar a aplicacao.

• Este ıcone significa que a conta do usuario nao esta ativa ainda.

O botao boquear/desbloquear permite voce ativa e desativar a conta.

2.7.2 Adicionando ou editando um usuario

Um usuario designado como administrador nao tem restricoes para acessar aaplicacao ou qualquer projeto.

No modo de edicao, deixe a senha em branco que permaneca a mesma queo usuario definiu.

2.8 Autenticacao LDAP

Nativamente o Redmine suporta autenticacao LDAP usando um ou multiplosdiretorios LDAP.

2.8.1 Declarando um LDAP

Va para Administracao -> Configuracao -> Autenticacao e clique Autenti-cacao LDAP, no canto inferior direito da tela.

Entre com os dados:

Nome : nome arbitrario do seu diretorio

Servidor : o nome do servidor LDAP

Porta : A pora do LDAP (por omissao e 389)

LDAPS : verifica se voce quer ou nao usar LDAPS para acessar o diretorio

Conta : permite voce deixar esse campo em branco caso seu LDAP aceite leranonimamente, por outro lado entre com seu nome de usuario e senhapara ter acesso ao LDAP

Senha : senha da conta

DN Base : o nıvel mais alto DN da sua arvore de diretorio LDAP

Atributos de autenticacao : entre com o nome do seus atributos do LDAPpara serem usados com o nome de usuario Redmine

22

Page 24: Manual Redmine

Usuario Redmine deverial agora estar aptos a autenticar usando LDAPusuario e senha, se suas contas forem definidas para usar autenticacao LDAP.

Para testar, crie um usuario Redmine com um login que nao casa com aconta LDAP, selecione o novamente criar LDAP no mode de autenticacaona lista de menu (este campo esta visıvel na tela de contas somente se o LDAPfor declarado) e deixe a senha vazia. Tente autenticar no Redmine usando ausuario e senha LDAP.

2.8.2 Criando usuarios “On the fly”

Para checar criacao de usuarios on-the-fly, qualquer usuario LDAP vai tersua conta automaticamente criada na primeira vez que ele logar no Redmine.Para que, voce tenha que especıficar nomes de atributos (primeiro nome, ultimonome, email) que vao ser usados para criar as contas dos usuarios.

Aqui e um exemplo tıpico usando Active Directory:

Name = My DirectoryHost = host.domain.orgPort = 389LDAPS = noAccount = MyDomain\UserNamePassword = <password>Base DN = CN=users,DC=host,DC=domain,DC=org

On-the-fly user creation = yesAttributesLogin = sAMAccountNameFirstname = givenNameLastname = sNEmail = mail

Note que nomes de atributos LDAP sao case sensitive.

2.8.3 Solucao de problemas

Se voce quer usar criacao de usuario on-the-fly, esteja certo que Redmine podeobter do seu LDAP todas as informacoes para criar um usuario valido. Porexemplo, criacao de usuario on-the-fly nao funciona se voce nao tem um emailvalido no seu diretorio (voce vai receber um um erro de “Invalid username/pass-word” quando tentar logar).

Tambem, esteje certo que nao tem nenhum campo marcado como necessariopara conta de usuarios. Estes campos customizados deveria prenir contas deusuario serem criadas dinamicamente.

2.9 Recebendo emails

Como no 0.8.0, o Redmine pode ser configurado para permitir criacao ou co-mentario de tıckets via email.

23

Page 25: Manual Redmine

2.9.1 Configuracao

Voce pode configurar o Redmine para receber emails em um dos seguintes mo-dos:

• Encaminhando emails de seu servidor de email:

– Pros: compatıvel com um servidor de email remoto, o email e pro-cessado instantaneamente, rapido, sem recarregamento de ambiente)

– Contras: necessita de algumas configuracoes em seu agente de trans-ferencia de email (ex. Postfix, Sendmail...)

• Enviando emails de um servidor IMAP:

– Pros: facil de configurar, nao necessita configurar seu MTA. com-patıvel com um servidor de email remoto

– Contras: os emails nao sao processados instantaneamente (uma tarefado cron precisa ser adicionada para ler emails periodicamente)

• Lendo emails de um entrada padrao:

– Pros: otimo para testes

– Contras: lento (o ambiente e recarregado cada vez que um email elido), necessita de algumas configuracoes em seu MTA

Recuperando emails de um servidor de email

Um script independente pode ser usado para encaminhar emails recebidos doseu servidor de email. Este script le um email puro de uma entrada padrao e oencaminha para o Redmine via uma solicitacao HTTP. Pode ser encontrado emseu diretorio redmine: extra/mail_handler/rdm-mailhandler.rb.

Para poder usa-lo, voce deve habilitar a API que recebe emails: Va a Con-figuracoes do programa -> Emails recebidos , verifique Habilitar WS paraemails recebidos e entre com ou gere uma chave secreta.

Copie rdm-mailhandler.rb para seu servidor de email e configure seu MTAUso:

rdm-mailhandler [options] --url=<Redmine URL> --key=<API key>

Required:

-u, --url URL do servidor Redmine

-k, --key chave API do Redmine

General options:

-h, --help mostra esta ajuda

-v, --verbose mostra informac~oes extra

-V, --version mostra informac~ao da vers~ao e sai

Issue attributes control options:

-p, --project=PROJECT identificador do projeto

-t, --tracker=TRACKER nome do tipo de monitoramento

--category=CATEGORY nome da categoria

--priority=PRIORITY nome da prioridade

-o, --allow-override=ATTRS permitir que o conteudo do email sobrescreva atributos

especificados por opc~oes anteriores

ATTRS e uma lista de atributos separada por vırgulas

24

Page 26: Manual Redmine

Exemplos:

# Projeto n~ao especificado. Os Emails NECESSITAM conter a palavra chave do ’Projeto’:

rdm-mailhandler --url http://redmine.domain.foo --key secret

# Projeto consertado e tipo de monitoramento especificado, mas os emails podem sobrescrever

# ambos os atributos do tipo de monitoramento e prioridade

rdm-mailhandler --url https://domain.foo/redmine --key secret \\

--project foo \\

--tracker bug \\

--allow-override tracker,priority

Aqui esta um exemplo para um Postfix alias:

foo: "|/path/to/rdm-mailhandler.rb --url http://redmine.domain --key secret --project foo"

Recuperando emails de um servidor IMAP

Uma tarefa de varredura (redmine:email:receive_imap) pode ser usada pararecuperar emails recebidos de um servidor IMAP.

Opc~oes IMAP disponıveis.

host=HOST Servidor host de IMAP (default: 127.0.0.1)

port=PORT Porta do servidor IMAP (default: 143)

ssl=SSL Usar SSL? (default: false)

username=USERNAME Conta IMAP

password=PASSWORD Senha IMAP

folder=FOLDER Pasta para leitura IMAP (default: INBOX)

Issue attributes control options:

project=PROJECT identificador do projeto

tracker=TRACKER nome do tipo de monitoramento

category=CATEGORY nome da categoria

priority=PRIORITY nome da prioridade

allow_override=ATTRS permitir que o conteudo do email sobrescreva atributos

especificados por opc~oes anteriores

ATTRS e uma lista de atributos separada por vırgulas

Essas opcoes estao disponıveis no trunk ou no seguinte 0.8.1

move\textit{on}success=MAILBOX move emails que foram recebidos com sucesso para o MAILBOX

ao inves de deleta-los

move\textit{on}failure=MAILBOX move emails que foram ignorados para o MAILBOX

Exemplos:

# Nenhum projeto especificado. Os emails NECESSITAM conter a ’palavra chave’ do Projeto:

rake redmine:email:receive\textit{imap RAILS}ENV="production" \\

host=imap.foo.bar [email protected] password=xxx

# Projeto consertado e tipo de monitoramento especificado, mas os emails podem sobrescrever

# ambos os atributos do tipo de monitoramento e prioridade

rake redmine:email:receive\textit{imap RAILS}ENV="production" \\

host=imap.foo.bar [email protected] password=xxx ssl=1 \\

project=foo \\

tracker=bug \\

allow_override=tracker,priority

# Move com sucesso os emails para caixa de emails ’lidos" e os emails falhos para

# a caixa de emails ’falhos’

25

Page 27: Manual Redmine

rake redmine:email:receive\textit{imap RAILS}ENV="production" \\

host=imap.foo.bar [email protected] password=xxx \\

move\textit{on}success=read move\textit{on}failure=failed

Emails que sao ignorados (usuario desconhecido, projeto desconhecido...)sao marcados como “Vistos” mas nao sao deletados do servidor IMAP.

Lendo emails de uma entrada padrao

Uma tarefa de varredura (redmine:email:receive) pode ser usada para ler umunico email puro da entrada padrao.

Opc~oes de controle dos atributos do ticket:

project=PROJECT identificador do projeto

tracker=TRACKER nome do tipo de monitoramento

category=CATEGORY nome da categoria

priority=PRIORITY nome da prioridade

allow_override=ATTRS permitir que o conteudo do email sobrescreva atributos

especificados por opc~oes anteriores

ATTRS e uma lista de atributos separada por vırgulas

Exemplos:

# Nenhum projeto especificado. Os emails NECESSITAM conter a ’palavra chave’ do Projeto:

rake redmine:email:read RAILS\textit{ENV="production" < raw}email

# Projeto consertado e tipo de monitoramento especificado, mas os emails podem sobrescrever

# ambos os atributos do tipo de monitoramento e prioridade

rake redmine:email:read RAILS_ENV="production" \\

project=foo \\

tracker=bug \\

allow\textit{override=tracker,priority < raw}email

2.9.2 Como funciona

Quando recebe um email, Redmine usa o Endereco Remetente do email paraachar o usuario correspondente. Emails recebidos de desconhecidos ou usuariosbloqueados sao ignorados.

Se o assunto do email contem algo como Re: [xxxxxxx #123], o email eprocessado como uma resposta e uma nota e adicionada ao ticket #123. Docontrario, um novo ticket e criado.

Porjeto alvo

O projeto alvo pode ser especificado usando a opcao projeto quando receberemails.

Se voce nao usar esta opcao, os usuarios terao de especificar no corpo doemail a qual projeto o ticket devera ser adicionado. Isso pode ser feito inserindouma linha no corpo do email como esta: "Projeto: foo".

Exemplo (corpo do email):

Este e um novo ticket que sera adicionado ao projeto foo.

Aqui nos temos a descric~ao do ticket

[...]

Projeto: foo

26

Page 28: Manual Redmine

Voce pode configurar um projeto padrao usando a opcao projeto e deixar osusuarios sobrescreverem este projeto padrao usando a opcao permitir-sobreescreverquando receber emails. Exemplo:

# Cria tickets no projeto foo por padr~ao

rake redmine:email:receive\textit{imap [...] project=foo allow}override=project

Claro, permissoes de usuarios sao checadas e este email seria ignorado se ousuario que enviou este email nao for autorizado a adicionar tickets ao projetofoo. Tenha certeza que o projeto alvo nao usa campos customizados necessariosem valores padrao para seus tickets, do contrario a criacao do ticket falhara.

Atributos do ticket

Baseado nas opcoes usadas quando receber emails (veja a opcao permitir-sobreescrever),os usuarios podem ser capazes de sobrescrever alguns atributos quando sub-meter um ticket. Isso pode ser feito usando as seguintes palavras-chave nocorpo do email (assim como Projeto): Tipo de monitoramento, Categoria,Prioridade, Status.

Exemplo (corpo do email):

Este e um novo ticket que sobrescreve alguns atributos

[...]

Projeto: foo

Tipo de monitoramento: Bug

Prioridade: Urgente

Status: Resolvido

Observadores

Se o usuario que mandar o email tiver a permissao “Adicionar observadores doticket” os usuarios que estao nos campos Para ou Cc do email sao automatica-mente adicionados como observadores do ticket criado.

Formatacao de email e anexos

O Redmine tenta usar a parte de texto simples do email para preencher a de-scricao do ticket. Se um email HTML-only e recebido, marcadores HTML saoremovidos de seu corpo.

Anexos de email sao automaticamente anexados ao ticket, a menos que seutamanho exceda as ?? definidas nas configuracoes da aplicacao.

27

Page 29: Manual Redmine

Capıtulo 3

Guia do usuario

3.1 Principais funcionalidades

Suporte para multiplos projetos

• Gerencia todos seus projetos com uma unica instancia do Redmine

• Cada usuario pode ter um papel diferente para cada projeto

• Cada projeto pode ser declarado como publico (visıvel por qualquer um)ou privado (visıvel somente por membros do projeto)

• Modulos (ex. wiki, repositorio, monitoramento de tıquetes, ...) podem serhabilitados ou desabilitados por projeto

Suporte para multiplos sub-projetos

• Gerencia pecas relacionadas do projeto como sub-projetos do projeto prin-cipal.

Controle de acesso baseado em funcoes ou papeis flexıveis

• Voce define seus papeis e atribui permissoes com um simples click

28

Page 30: Manual Redmine

Figura 3.1: Permissao de usuarios

Flexıvel sistema de monitoramento de tıquetes

• Define sua propria prioridade e tipos de tıquetes

• Transicao de fluxo de trabalho pode ser definido para cada tipo ou funcaodo tıquete atraves de uma interface de administracao (uma configuracaopor omissao e carregada durante a instalacao da aplicacao)

29

Page 31: Manual Redmine

Figura 3.2: Lista de tıquetes

Figura 3.3: workflow

Grafico de Gantt e calendario

• Grarico de gantt automatico e calendario baseado nas datas dos tıquetes

30

Page 32: Manual Redmine

Figura 3.4: Grafico de Gantt

Funcionalidade de rastreamento temporal

• O tempo pode ser descrito no projeto ou a nıvel de tıquete

• Relatorio simples para visualizar tempo gasto por usuario, tipo de tıquete,categoria ou atividade

Figura 3.5: Tempo gasto

Campos personalizados

• Voce pode definir seu proprio campo personalizado por tıquete, tempogasto, projetos e usuario

31

Page 33: Manual Redmine

• Diferentes formatos sao permitidos: text, date, boolean, integers, drop-down lists and checkboxes

• Campos personalizados podem ser mostrados na lista de tıquetes e usuadoscomo filtro apenas para organizar campos

Notıcias, documentos e gerenciamento de arquivos

• Voce pode facilmente postar mensagens e compartilhar arquivos

Wiki por projeto e foruns

• Wiki usa sintaxe de texto e links livres dentro do wiki usando conchetes

• Diferencas e visualizacao de anotacoes sao permitidas

Figura 3.6: Editando wiki

32

Page 34: Manual Redmine

Navegador de repositorio e visualizacao de diferencas

• Repositorios pode ser anexados por projeto

• Redmine deixa voce navegar entre o conteudo, visualizar cada alteracao

• Visualizador de diferenca e anotacoes

• Suporta os SCM: http://subversion.tigris.org/Subversion, http://www.nongnu.org/cvs/CVS, http://www.selenic.com/mercurialMercurial,http://darcs.netDarcs e http://bazaar-vcs.orgBazaar.

Figura 3.7: Anotacao

33

Page 35: Manual Redmine

Figura 3.8: Navegando no codigo

Figura 3.9: Diferencas

Feeds & notificacoes por email

• Atividade do projeto, mudancas do repositorio, notıcias, tıquetes, mu-danca nos tıquetes sao permitidas como Atom feeds

Suporte para autenticacao multipla com LDAP

34

Page 36: Manual Redmine

• Redmine deixa voce autenticar usuario com LDAP

• Contas podem ser criadas on-the-fly quando o usuario e encontrado nodiretorio (opcional)

Suporte para auto-registro de usuario

• Opcionalmente, voce pode permitir usuario de registrarem on-line

• 3 metodos de ativacao de contas sao permitidos: automatico (nenhumaconfirmacao e requerida), manual (por administradores) ou atraves de umauto gerador de URL enviado via email

Suporte a multiplas linguagensObrigado aos muitos contribuidores, Redmine ainda esta disponıvel nas

seguintes linguagens:

• Bulgarian

• Czech

• Danish

• Dutch

• English

• Finnish

• Chinese

• French

• German

• Hebrew

• Hungarian

• Italian

• Japanese

• Lithuanian

• Korean

• Norvegian

• Polish

• Portuguese

• Romanian

• Russian

• Serbian

35

Page 37: Manual Redmine

• Spanish

• Swedish

• Ukrainian

Suporte a multiplas base de dados

• Redmine roda com MySQL, PostgreSQL ou SQLite

3.1.1 Funcionalidades solicitadas

Veja uma lista delas em funcionalidades solicitadas.

36

Page 38: Manual Redmine

3.2 Contas

3.2.1 Minha conta

Esta tela permite voce editar as definicoes da sua conta: ultimo nome, primeironome, endereco de email, idioma.

Notificacoes de email

Se Notificacoes de email esta habilitado, voce vai receber notificacoes so-bre qualquer evento que ocorrer sobre os projetos que pertencem a (tıquetesadicionados ou editados, novos documentos, ...).

Se nao habilitado, voce vai somente receber notificacoes sobre os tıquetesque voce esta envolvido no (autor ou atribuıdo) e sobre eventos que voce estamonitorando (ex. tıquetes, forum).

Senha

Para mudar sua senha, entre com sua senha antiga e sua nova senha 2 vezes. Otamanho da senha deve estar entre 4 e 12 caracteres.

Se sua conta usa alguma altenticacao externa (LDAP), voce nao pode mudarsua senha no Redmine.

3.2.2 Minha Pagina

Esta pagina deixa voce mostrar varias informacoes sobre seu projeto.Para personalizar sua pagina, clique em Personalizar esta pagina. Entao

voce pode escolher que informacoes quer mostrar e onde mostra-las.

3.2.3 Senha Perdida

Se voce esqueceu sua senha, o procedimento e deixar voce escolher uma nova.Na tela de autenticacao, voce clica em *Perdi minha senha*. Entre com seu

endereco de email e submeta o formulario. Um email sera enviado para vocecontendo um link que vai permitir voce mudar sua senha.

Note que esta funcionalidade pode ser disabilitada pelo administrador. Tam-bem, se sua conta usa autenticacao externa (LDAP), este procedimento estaindisponıvel.

3.2.4 Registrar

Para registrar, voce pode obter uma conta sem a intervencao do administrador.Na tela de autenticacao, clique em Registrar. Preencha o formulario e

envie-o. Um email sera enviado a voce. Para ativar sua conta, use o link queesta contido neste email.

Note que esta funcionalidade pode ser disabilitada pelo administrador.

37

Page 39: Manual Redmine

3.3 Definicoes do Projeto

3.3.1 Propriedades

Publico : se esta habilitado, o projeto pode ser visualizado por todos os seususuario, incluındo aqueles que nao sao membro do projeto. se desabilitado,somente os membros do projeto tem acesso a ele, de acorco com seu papel.

Sub-projeto de : permite voce definir um projeto pai. A hierarquia dos pro-jetos e limitada a 2 nıveis. Um projeto pai nao pode ser um sub-projetodele mesmo.

Nome : mostra o nome do projeto (deve ser unico).

Descricao : descricao que aparece na visao geral do projeto.

Identificador : usado pela aplicacao para varias coisas (ex. nas URLs). Deveser unico. Para cada projeto criado, o identificador nao pode ser modifi-cado.

Campos personalizados : Selecione um campo personalizado que voce querusar para os tıquetes do projeto. Somente o administrador pode definirum novo campo personalizado.

3.3.2 Modulos

Esta tela permite voce escolher os modulos que voce quer usar no projeto.Disabilitando um modulos nao exclui ele. Somente previni usuarios de

acessa-los. Depois de um modulo disabilitado, voce pode habilita-lo nas con-figuracoes do projeto. Voce pode por exemplo disabilitar o modulo de ’Mon-itoramento de tıquetes’ para um simples projeto. Tıquetes existentes nao saoexcluidos, voce pode acessa-los novamente habilitando o modulo.

3.3.3 Membros

Esta tela deixa voce definir membros do projeto e seus papeis. Um usuariopode ter somente um papel em um projeto (mas diferentes papeis em outrosprojetos).

3.3.4 Versoes

Versoes do projeto permite voce monitorar e planejar mudancas. Voce podeatribuir para uma versao e visualizar a lista de tıquetes atribuıdos para cadaversao no planejamento.

3.3.5 Categoria de tıquetes

Categoria de tıquetes permite voce organizar seus tıquetes. Categorias por ex-emplo corresponde a diferentes componentes do seu projeto.

38

Page 40: Manual Redmine

3.3.6 Wiki

Cada projeto pode ter um dono para cada wiki. Para ativar isso de um nomepara seu pagina principal e clique em ’Salvar’.

3.3.7 Repositorio

Um repositorio (SCM) pode ser associado para cada projeto. Cada repositorioe configurado, voce pode navegar e visualizar mudancas (changesets). As mu-dancas tambem podem aparecer em Visualizar atividades.

3.3.8 Foruns

Cada projeto pode ter um ou mais foruns de discussao.

3.4 Repositorios

Redmine nativamente suporta integracao com diferentes SCM: Subversion, CVS,Mercurial, Darcs, Git, and Bazaar.

Note que voce precisa instalar o binario apropriado para seu servidor Red-mine e ter certeza que eles estao disponıveis no PATH (caminho padrao para osbinarios).

SCM Testado com ComentariosSubversion 1.3 & 1.4 1.3 or higher required

CVS 1.12.12 1.12 required, won’t work with CVSNTMercurial 0.9.3

Bazaar 1.0.0.candidate.1Darcs 1.0.7Git 1.5.4.2

Por exemplo, se voce quer acesar o repostitorio Subversion no Redmine, vocepode ter que instalar os binarios do svn no servidor Redmine.

3.4.1 Anexando um repositorio existente para o seu pro-jeto

Nas configuracoes do projeto, tenha certeza que o modulo do “Repositorio” estahabilitado e va para aba “Repositorio”. Selecione o SCM que corresponde a seurepositorio e entre com o caminho ou URL do seu repositorio.

Importante: Quando voce navega pela primeira fez no repositorio, o Redmineatualiza as descricoes de todos os commits existenes no banco de dados dele.Isto e feito apenas uma vez por repositorio, mas pode demorar (va descansarum pouco) se o seu repositorio tem centenas de commits

Para evitar isso, voce pode faze-lo off-line. Depois de ter declarado seurepositorio no Redmine, rode o seguinte comando:

ruby script/runner "Repository.fetch_changesets" -e production

39

Page 41: Manual Redmine

Todos os commits vao ser obtidos pelo banco de dados Redmine.

Repositorio Subversion

Protocolos habituais suportados (Ex. http:, svn:, file:), somente entre coma URL do seu repositorio.

Exemplo:

http://host/path/to/the/repository

Voce pode especificar um nome de usuario e senha se o seu repositorio requerautenticacao.

Nota: se voce quer acessar o repositorio usando svn+ssh://, voce tem queconfigurar svn+ssh para ser nao interativo. Isto requer definir um chave publi-ca/privada para autenticacao ssh.

Repositorio CVS

Entre:

• A URL do repositorio (pode ser um caminho ou uma conexao, ex. :pserver).

• O nome do modulo

Exemplo:

:pserver:login:password@host:/path/to/the/repository

Repositorio Git

Redmine solicita um bare e local repositorio para permitir navegacao. Imagineque voce queira navegar no lista de gerenciamento to-do do projeto Donebox:a URL clone e git://github.com/ook/donebox.git No servidor onde voceroda o redmine, cria um diretorio acessıvel pelo usuario rodando no seu servidorRedmine:

$ sudo mkdir -p /var/redmine/git_repositories$ sudo chown rails:rails /var/redmine/git_repositories$ cd /var/redmine/git_repositories

Note a segunda linha: mude para a permissao de dono e groupo para dousuario rails. E claro, voce tem que substituir de acordo com as configuracoesdo seu servidor (pode ser www-data ou para sysadmin ruins: root). Tenha emmente que este usuario tem que estar apto a rodas comandos git.

Agora e o momento para criar seu bare repositorio:

$ pwd/var/redmine/git_repositories$ git clone --bare git://github.com/ook/donebox.gitInitialized empty Git repository in /var/redmine/git_repositories/donebox/remote: Counting objects: 401, done.remote: Compressing objects: 100% (246/246), done.remote: Total 401 (delta 134), reused 401 (delta 134)Receiving objects: 100% (401/401), 179.55 KiB | 185 KiB/s, done.Resolving deltas: 100% (134/134), done.

40

Page 42: Manual Redmine

Pronto! va para sue projeto redmine na aba de configuracoes, abaixo dorepositorio e escolha git, entao coloque o caminho para o diretorio .git /var/red-mine/git repositories/donebox/. Salve. Procure o seu repositorio na aba:voce pode navegar agora.

Nota: E claro que repositorios git nao atualizam por si mesmos. Voce temque puxar regularmente por suas proprias mao ou por um processo cron que vaifazer isso por voce.

41

Page 43: Manual Redmine

3.5 Visao Geral do Projeto

A visao geral do Projeto vai dar a voce um visao do projeto como um todo. Dolado esquerdo acima na area Issue tracking voce vai ter um visao de quantosDefeitos, Funcionalidade e Correcoes estao aberta e fechadas. Em Membersvoce pode ver quem sao os membros do projeto em particular que e o admin-istrador. Em Latest news voce pode ver quais sao as ultimas notıcias desseprojetos.

TODO: Escreva sobre monitoramente de tıquetes e configuracoes...

Figura 3.10: Visao Geral do Projeto

Do lado superior direito voce ve RedmineLogin|Sign in e RedmineRegis-ter|Register. O RedmineLogin|Sign in e usado para autenticar. O RedmineReg-ister|Register para registrar, que pode ser disabilitado pelo administrador.

TODO: Fazer links para outras areas... TODO: Screenshot sem plubici-dade...

42

Page 44: Manual Redmine

3.6 Atividade do Projeto

A pagina de Atividade do Projeto vai mostras o historico das ultimas ativi-dades em cada projeto.

Isto vai incluir mudancas como:

• Problemas, Funcionalidade, Correcoes

• Verificacoes nos repositorios (Changesets)

• Area de notıcias

Os ıcones abaixo sao mostrados por padrao. Never the less you can activatelist of changes to the wiki or to the Forums area (Messages).

(TODO: Add screenshot)Na lista de tıquetes ha um espaco reservado para Defeito, Funcionalidade e

Correcao?

• Um novo tıquete foi criado.

• Tıquete foi resolvido.

• O tıquete foi fechado.

• Uma nota foi adicionada no tıquete.

• Isso significa que foi feito um commit no repositorio.

• Notıcias foram adicionadas.

• Uma mensagem no forum foi mudada ou adicionada.

• Um comentario nas mensagens do forum foi adicionado.

• Um pagina wiki foi editada ou criada.

• ??

• Um novo documento foi adicionado ou mudado.

• Um novo projeto foi adicionado.

(TODO: Check attachment, and projects ?)

43

Page 45: Manual Redmine

3.7 Monitorando tıquetes

Tıquetes e a alma do negocio no Redmine. O tıquete esta ligado ao projeto,pode ser atribuıdo a um usuario, podem ser anexado a uma versao, etc.

3.7.1 Adicionando um novo tıquete

Pessoas podem criar um novo tıquete quando elas estao em ?? configurado peloAdministrador do Redmine. (Papel: Tipos de ticket > Novo tipo).

Entao criando umnovo tıquete, um dos mais importantes ıtens e o ??, que vaidefinir a natureza do tıquete. Por padrao, Redmine vim com 3 tipos diferentes:problema, funcionalidade, e suporte.

3.7.2 Atualizando um tıquete existente

(TODO: descrever e enviar um screenshot do painel atualizado)

3.7.3 Editando um tıquete existente

Para editar um tıquete existente, voce tem que ter a permissao no papel Geren-ciamento de Tickets > Editar tickets. Este direito da a voce um link mais nafrente do painel ”Atualizar”. Clicando nesse link voce pode editar Assunto e aDescricao do tıquete.

Figura 3.11: Link mais

3.8 Lista de tickets

3.8.1 Visao geral

A lista de tickets fornece um meio de olhar para os tickets abertos para umprojeto.

3.8.2 Aplicando e salvando filtros

A lista de tickets mostra tickets abertos por padrao. Padrao e ?? podem serusados para construir uma requisicao customizada. Uma vez que os filtros estao

44

Page 46: Manual Redmine

Figura 3.12: Visao geral dos tickets

prontos, clique em para renovar a lista de tickets. Clique em paralimpar os filtros.

Figura 3.13: Filtros da lista de tickets aplicados

Requisicoes customizadas podem ser salvas clicando em . Um formulariote permite nomea-lo e selecionar as colunas que voce deseja que sejam mostradasna lista de tickets para esta requisicao (ambos padrao e ?? podem ser mostra-dos). Marcando o atributo publico farao a requisicao visıvel para todos, docontrario somente voce o vera.

Uma vez salvo, a requisicao e listada na ??.

3.8.3 Menu de atalhos

Um menu de contextos aparece quando clicado com o botao direito (ALT +Botao esquerdo para usuarios do Opera) em um ticket da lista de tickets. Essemenu oferece varios atalhos para edicao rapida, repriorizar, redesignar, copiar,mover ou deletar o ticket.

Note que voce tem que clicar com o botao direito fora do link doticket, do contrario o menu do contexto padrao do navegador e mostrado.

45

Page 47: Manual Redmine

Figura 3.14: Nova requisicao

Figura 3.15: Barra lateral de requisicoes customizadas

Figura 3.16: Menu de Atalhos

46

Page 48: Manual Redmine

3.8.4 Editando multiplos tickets

Da lista de tickets, voce pode editar/mover/deletar multiplos tickets selecio-nando multiplos tickets e clicando com o botao direito na selecao. O ticketpode ser selecionado tanto usando as caixas de selecao ou cliclando nas colunascom as teclas Control ou Shift pressionadas. Voce pode tambem usar o pequenomarcador no canto superior esquerdo da lista para selecionar/deselecionar todosos tickets.

Figura 3.17: Multipla edicao

3.8.5 Aba lateral

Figura 3.18: Barra lateral

A aba lateral contextual a direita da lista de tickets fornece links para variascoisas diferentes:

• um link rapido para a lista de tickets padrao sem qualquer outro filtroaplicado (apenas tickets abertos), o que e util quando voce esta vendouma requisicao customizada e quer voltar a lista de tickets padrao

47

Page 49: Manual Redmine

• um link para ??, que e um relatorio de todos os tickets em um nıvel doprojeto (em contraste com a ?? que fornece uma visao geral no nıvel daversao)

• um link para ??, que fornece uma visao geral do nıvel do projeto de todosos tickets fechados e procurados, organizados pelas versoes do target

• links para varios nıveis de requisicoes customizadas:

– requisicoes globais (cross-project)

∗ requisiscoes publicas∗ requisicoes privadas

– requisicoes do projeto atual

∗ requisicoes publicas∗ requisicoes privadas

3.9 O Registro de Alteracoes

3.9.1 Visao Geral

O Redmine fornece um regitro de alteracoes, que fornece uma visao geral denıvel-projeto de todos os tickets fechados, organizados por versao alvo.

Figura 3.19: Registro de mudancas

Considerando o fato de que isto e uma visao geral do que mudou em umaversao-alvo especıfica somente tickets fechados que tem o campo versao-alvopreenchido sao mostrados nessa visao geral.

48

Page 50: Manual Redmine

3.9.2 Barra lateral

A barra lateral contextual a direita do registro de alteracoes fornece diversascoisas:

• caixas de selecao e um botao de confirmacao para incluir/excluir tickets detipos de monitoramento especıficos no registro de alteracoes (quais tiposde monitoramento sao mostrados aqui com caixas de selecao dependem da?? individual)

• links para a versao-alvo configurada do projeto onde cada um liga-se aoproprio registro de alteracoes comecando com a versao-alvo selecionada

Figura 3.20: Barra direita

49

Page 51: Manual Redmine

3.10 Sumario do Ticket

3.10.1 Visao Geral

O sumario do ticket fornece um relatorio da quantidade de todos os tickets emum nıvel-projeto (em contraste com a visao geral da versao que fornece umavisao geral de nıvel-versao). Este relatorio e dividido em diferentes blocos ondecada bloco mostra a quantidade de tickets abertos/fechados/total por:

• Tipo de monitoramento

• Prioridade

• Usuario ao qual o ticket foi designado

• Usuario que abriu o ticket (o autor)

• Versao

• Categoria

Figura 3.21: Sumario do tıquete

3.10.2 Links “saiba mais”

Cada tipo de monitoramento, prioridade, usuario designado, autor, versao ecategoria ligam-se a ?? que tem o item selecionado como filtro atual. Os numerosdos tickets nos relatorios forncevem links “saiba mais” para suas respectivasvistas na ??.

50

Page 52: Manual Redmine

3.10.3 Relatorios detalhados

Cada bloco de relatorio pode ser selecionado para obter-se um relatorio detal-hado dele. Isso nao mostra somente a quantidade de tickets abertos/fechados/-total mas fornece tambem detalhes para todos os outros ?? configurados. Aimagem abaixo mostra o relatorio detalhado das versoes.

Figura 3.22: Sumario da versao

3.11 Planejamento

3.11.1 Visao geral

Se voce selecionar o Planejamento voce tera uma visao geral do estado atual doseu projeto, como se segue:

Figura 3.23: Planejamento

La voce pode selecionar quais tickets estao abertos e quais estao fechados.Se voce esta interessado em uma lista detalhada de quais tickets nao estaoresolvidos voce pode simplesmente clicar no numero a esquerda de aberto, masse voce quiser saber quais tickets ja estao resolvidos simplesmente clique nonumero a esquerda de fechado. A barra verde indicara quao longe voce estade completar seu milestone (99%).

51

Page 53: Manual Redmine

Se voce clicar na versao (0.8 a direita de ) voce pode obter uma visaomais detalhada do estado atual, geral de uma versao especıfica. Esta e a ??.

Voce pode mudar a configuracao de um modo em que vera uma area comtodos os tickets relacionados diretamente abaixo da milestone. Esse comporta-mento pode ser mudado como administrador na area do ??.

3.11.2 Barra lateral

A barra lateral contextual a direita do planejamento fornece diversas coisas:

• uma caixa de selecao para incluir versoes-target completas no planeja-mento

• caixas de selecao e um botao de confirmacao para incluir/excluir ticketsde tipos de monitoramento especıficos no planejamento (quais tipos demonitoramento sao mostrados aqui com caixas de selecao dependem da?? individual)

• links para as versoes-target configuradas do projeto onde cada um liga-seao proprio planejamento comecando com o target-version selecionado

52

Page 54: Manual Redmine

3.12 Visao geral da versao

A visao geral da versao fornece uma visao detalhada estado atual, geral daversao especıfica. Isso inclui:

• uma lista de todos os tickets designados a uma versao especıfica, in-cluindo barra de progresso que indica uma porcentagem de abertos/ter-minados/fechados baseado em %-terminado e nos status dos tickets, visu-alizados por diferentes cores gradientes

• o conteudo da pagina-wiki que foi configurada para ser anexada a versao

• um bloco que mostra o total do monitoramento de tempo de todo o tempoestimado e gasto do ticket designado para a versao

• um bloco que mostra as estatısticas do ticket usando a mesma barra deprogresso de ativos/terminados/fechados agrupados por:

– Designado Aos Usuarios

– Autores

– Categorias

– Prioridades

– Tipos de Monitoramento

Ambos os “agrupados por criterio” e as proprias estatısticas (o numero detickets) fornecem links “saiba-mais” para a lista de tickets que pre-carrega osfiltros especıficos fornecendo, dessa forma, links rapidos para tickets de um autorespecıfico, categoria, etc.

Figura 3.24: Versao

A visao da versao pode ser acessado de ??, clicando na versao especıfica.

53

Page 55: Manual Redmine

3.13 Notıcias

Na area de notıcias voce pode publicar novos itens sobre o projeto ou qualquerassunto desejado.

Voce pode dar um tıtulo aos novos itens, um resumo e uma descricao de-talhada. O resumo sera mostrado na area de Ultimas notıcias da pagina?? enquanto que a descricao sera mostrada se voce clicar no tıtulo (nesse casoRelease 0.8.0 release candidate) do item das notıcias.

Se voce tem a permissao para criar novos itens entao voce pode editar umaentrada existente de notıcias.

Figura 3.25: Editando Notıcias

Figura 3.26: Visao Geral das Notıcias

54

Page 56: Manual Redmine

Se voce tem permissao para criar novos itens de notıcias voce tem um “sinalde mais” verde no canto direito superior da tela. Se voce clicar nele poderaadicionar um novo item de notıcias. La voce tem que inserir o Tıtulo, Resumoe a Descricao do item das notıcias.

Figura 3.27: Adicionando Notıcias

3.14 Wiki

3.14.1 Criando uma nova pagina wiki

Como em qualquer wiki, e so adicionar um link para uma pagina colocando-odesta forma:

[[MinhaNovaPaginaWiki]]

Entao salve, e clique nesse link: voce criou uma nova pagina wiki com nome“MinhaNovaPaginaWiki”. Parabens.

55

Page 57: Manual Redmine

3.15 Acesso

A pagina de Entrar e usada para acessa o projeto para o qual voce foi ativado.O link Perdi minha senha so e mostrada se o administrador o tiver ativado.

Figura 3.28: Acesso

56

Page 58: Manual Redmine

3.16 Registrar

A pagina de Registro e usada para registrar um novo usuario. Um novo usuariotem de fornecer informacoes sobre seu Login , Password , Nome , Sobrenomee Email endereco e qual linguagem o usuario gostaria de usar para a interfacedo usuario.

O administrador pode controlar se isso sera mostrado.

Figura 3.29: Tela de registro

57

Page 59: Manual Redmine

Capıtulo 4

Guia do Desenvolvedor

4.1 Download

4.1.1 Ultimas versoes estaveis 0.7.4 e 0.8.0 (2008-12-30)

Lancamentos do Redmine podem ser encontrados em RubyForge. Veja o http://www.redmine.org/wiki/redmine/Changelog para detalhes e ?? para instrucoesde instalacao.

4.1.2 Codigo fonte atual

Voce pode obter o codigo fonte atula do Redmine do repositorio Subversionhospedado no Rubyforge. Esse e o melhor modo de obter o Redmine se vocquiser se beneficiar das ultimas melhorias. Usando o repositorio SVN vocetambem pode atualiza-lo mais facilmente.

A URL do repositorio e: http://redmine.rubyforge.org/svn

Desenvolvimento

Voce pode ?? o ultimo codigo em desenvolvimento direto da fonte com um dosseguintes comandos:

svn co http://redmine.rubyforge.org/svn/trunk redminesvn co svn://rubyforge.org/var/svn/redmine/trunk redmine

0.7 & 0.8 Estaveis

Voce pode ?? o ultimo codigo fonte estavel com um dos seguintes comandos:

svn co http://redmine.rubyforge.org/svn/branches/0.8-stable redmine-0.8svn co svn://rubyforge.org/var/svn/redmine/branches/0.8-stable redmine-0.8

Ele criara um diretorio de nome redmine-0.8 e voce podera atualizar suacopia do Redmine usando svn update nesse diretorio.

58

Page 60: Manual Redmine

4.1.3 Fontes alternativas

• Redmine Bitnami Stack – um instalador que desenvolve Redmine 0.7.3 etudo que e necessario para roda-lo (Apache, MySQL, Subversion, Ruby,Rails, etc.). Disponıvel para Windows, Linux, Mac x86 e Mac PPC.

4.1.4 Corrigindo defeitos

Se voce obter esse erro enquanto tentava conferir seu codigo:

erro "PROPFIND 200 OK"

Por favor contate seu administrador de rede e peca-o para habilitar a extensaoWebDAV em seu proxy.

4.2 Usando Git para contribuir com Redmine

A arvore fonte do Redmine esta armazenada no Subversion, e tudo gera feedsla dentro de vez em quando. Os que ja estao acostumados a usar Git preferemusa-lo por suas caracterısticas de ramificacao e juncao, e porque voce nao precisater acesso commit do SVN para realizar um commit.

Cuidado: O repositorio git em complete.org nao e mantido atualizado, sendoque esse texto foi pela ultima vez modificado Segunda, 8 Set 2008. E re-comendavel que voce clone “GitHub mirror” http://github.com/edavis10/redmine/tree/master para o ultimo trabalho em desenvolvimento.

Se voce esta procurando para instrucoes do Subversion, elas podem ser en-contradas na ??.

4.2.1 Inicializacao

Se voce ainda nao tem Git, veja o Guia de 5 minutos do Git nos links abiaxopara informacao sobre os downloads. Voce precisara da versao do Git a partirda 1.5.x. Para comecar, execute estes comandos:

git clone git://git.complete.org/branches/redmine-integrationcd redmine-integrationgit config --add remote.origin.fetch +refs/remotes/svn/\textbf{:refs/remotes/svn/}git fetch

4.2.2 Exploracao

Voce pode ver todos os ramos que o Git obteve para voce:

git branch -r | less

Voce vera uma saıda como essa (muitas linhas foram omitidas):

origin/HEADorigin/fb-bug-259-gitorigin/fb-bug-261-issue-redirectorigin/fb-bug-641-context-donesvn/git

59

Page 61: Manual Redmine

svn/issue_relationssvn/mailing_listssvn/tags/0.6.3svn/tags/0.6.3@1011svn/timesvn/trunksvn/wiki

O Git esta dando manutencao aos ramos “origin” (nao ha ramo correspon-dente do Subversion). Os ramos svn sao copias identicas do mesmo ramo norepositorio Subversion do Redmine.

Voce baseara seu trabalho fora desses ramos.

4.2.3 Iniciando Seu Atributo

Com o git, ramos sao baratos e juncoes sao faceis, entao voce geralmentecomecara um novo ramo para cada atributo no qual voce trabalhar. Um unicoramo provavelmente correspondera a um unico ticket no Redmine quando voceenviar o patch.

Voce podera basear seu patch no trunk do svn. Entao seu ramo sera montadodesta forma:

\$ git branch meu-atributo svn/trunkBranch meu-atributo set up to track remote branch refs/remotes/svn/trunk.\$ git checkout meu-atributo

A primeira linha criou um ramo chamado my-feature, que sera baseado nosvn/trunk. O segundo comando verifica aquele ramo, que quer dizer que a copiana qual voce esta trabalhando e alterada para o ramo, e qualquer commit feitosera postado naquele ramo.

Note que o ato de commitar nao envia patch algum para mais ninguem;assim como o Git e distribuıdo, os commits sao armazenados localmente ateque voce esteja pronto para joga-los no trunk.

Voce pode executar git branch para ver em qual ramo voce esta – ele teraum asterisco proximo a ele, desta forma:

$ git branchmastergit my-feature

4.2.4 Trabalhando em seu atributo

Agora que voce criou seu ramo, e hora de trabalhar.Aqui estao alguns comandos que voce talvez queira usar:

60

Page 62: Manual Redmine

tarefa comandoCommitar mudancas consideraveis git commit -a

Adicionar um novo arquivo ao repositorio git add filenameRemove um arquivo do repositorio e do diretorio atual git rm filenameRenomeia um arquivo no repositorio e diretorio atual git mv oldname newname

Visualiza historico git logPede ajuda git commandname --help

Observe que git command e o mesmo que git-command. Voce pode usarman git-command para ver a pagina de manual para qualquer comando Git.

4.2.5 Unindo ao trunk

Se voce esta trabalhando em seu atributo ja a algum tempo, pode ser que oSubversion tenha atualizado. Idealmente voce deve comparar seu trabalho coma ultima revisao do trunk, para entao fazer seu patch funcionar com ele. Paraatualizar seus patches e aplica-los acima do ultimo trunk, faca o seguinte:

git fetchgit rebase svn/trunk

4.2.6 Enviando seu Patch

Quando tiver acabado de trabalhar em seu patch, tenha certeza de commita-loao Git. Entao voce pode gerar diffs.

Voce pode gerar um grande diff, que inclua todas as mudancas feitas ao ramo,ate mesmo se elas foram feitas em multiplos commits. Execute o seguinte:

git diff svn/trunk..HEAD > /tmp/feature.diff

Isso significa“calcule a diferenca entre o trunk e o ultimo commit deste ramo,e armazene-o como diff em /tmp/feature.diff”. Entao va ao redmine.org, crieum ticket, e adicione /tmp/feature.diff a ele.

Se voce desejar enviar um patch em cada commit, execute git format-patch svn/trunk.Voce gerara um arquivo para cada commit, completo com o registro de com-mit. Entao voce podera adicionar cada um desses ao redmine.org. Embora,normalmente, um grande diff sera mais usado.

4.2.7 Links Externos

• Git homepage http://www.git.or.cz/

• 5-Minute Git Guide http://software.complete.org/site/wiki/GitGuide

4.3 Tutorial de Plugin

Nota: Para seguir esse tutorial, voce necesita executar o Redmine devel r1786ou mais recente.

61

Page 63: Manual Redmine

4.3.1 Criando um novo Plugin

A criacao de um novo plugin pode ser feita usando o gerador de plugin doRedmine A sintaxe para esse gerador e:

ruby script/generate redmine_plugin <nome_do_plugin>

Abra um prompt de comando e ”cd”para seu diretorio do redmine, entaoexecute o seguinte comando:

% ruby script/generate redmine_plugin Enquetes

A estrutura do plugin e criada em vendor/plugins/redmine_enquetes:

create vendor/plugins/redmine_enquetes/app/controllerscreate vendor/plugins/redmine_enquetes/app/helperscreate vendor/plugins/redmine_enquetes/app/modelscreate vendor/plugins/redmine_enquetes/app/viewscreate vendor/plugins/redmine_enquetes/db/migratecreate vendor/plugins/redmine_enquetes/lib/taskscreate vendor/plugins/redmine_enquetes/assets/imagescreate vendor/plugins/redmine_enquetes/assets/javascriptscreate vendor/plugins/redmine_enquetes/assets/stylesheetscreate vendor/plugins/redmine_enquetes/langcreate vendor/plugins/redmine_enquetes/READMEcreate vendor/plugins/redmine_enquetes/init.rbcreate vendor/plugins/redmine_enquetes/lang/en.yml

Edite vendor/plugins/redmine_enquetes/init.rb para ajustar as infor-macoes do plugin (nome, autor, descricao e versao):

<code class="ruby">require ’redmine’

Redmine::Plugin.register :redmine_enquetes doname ’Plugin de Enquetes’author ’John Smith’description ’Um plugin para gerenciar enquetes’version ’0.0.1’

end</code>

Agora reinicie o programa e navegue para http://localhost:3000/admin/info.Depois de logar, voce devera ver um novo plugin na lista de plugins:

Figura 4.1: Lista de Plugins

62

Page 64: Manual Redmine

4.3.2 Gerando um modeloVamos criar um modelo simples de Enquete para nosso plugin:

ruby script/generate redmine_modelo_plugin enquetes enquete question:string yes:integer no:integer

Isso cria o modelo de Esquete e o arquivo de migracao correspondente.Note que as migracoes com data marcada nao sao suportadas pela engine

de plugin atual do Redmine (Engines). Se suas migracoes estao nomeadas comdata amrcada, renomeie-as usando ”001”, ”002”, etc.

Migre o banco de dados usando o seguinte comando:

rake db:migrate_plugins

Observe que cada plugin tem seu proprio plano de migracoes.Edite app/models/enquete g.rb no seu diretorio de plugin para adicionar

o metodo #vote que sera chamado do nosso controlador:

<code class="ruby">class Enquete < ActiveRecord::Basedef vote(resposta)increment(resposta == ’yes’ ? :yes : :no)

endend</code>

4.3.3 Gerando um controlador

Por enquanto, o plugin nao faz nada. Entao vamos criar um controlador paranosso plugin. Podemos usar o gerador de controlador para isso. A sintaxe e:

ruby script/generate redmine_contolador_de_plugin <nome_do_plugin> <nome_do_controlador> [<actions>]

Volte para o prompt de comando e execute:

% ruby script/generate redmine_controlador_de_plugin Enquetes enquete index vote

exists app/controllers/

exists app/helpers/

create app/views/enquetes

create test/functional/

create app/controllers/controlador_enquetes.rb

create test/functional/controlador_enquetes_teste.rb

create app/helpers/ajudante_enquete.rb

create app/views/enquete /index.html.erb

create app/views/enquete /vote.html.erb

Um controlador ControladorDeEnquete com 2 acoes (#index e #vote) ecriado.

Edite app/controllers/controlador_enquetes.rb no diretorio redmine_enquetespara implementar essas 2 acoes.

class ControladorDeEnquetes < ApplicationController

unloadable

def index

@enquetes = Poll.find(:all)

63

Page 65: Manual Redmine

end

def vote

enquete = Enquete.find(params[:id])

enquete.vote(params[:answer])

flash[:notice] = ’Voto salvo.’

redirect_to :action => ’index’

end

end

Entao edite app/views/enquetes/index.html.erb que ira mostrar as en-quetes existentes:

<h2>Enquetes</h2>

<% @enquetes.each do |enquete| %>

<p>

<%= enquete[:question] %>?

<%= link_to ’Yes’, {:action => ’vote’, :id => enquete g[:id], :answer => ’yes’},

:method => :post %> (<%= enquete gc[:yes] %>) /

<%= link_to ’No’, {:action => ’vote’, :id => enquete g[:id], :answer => ’no’},

:method => :post %> (<%= enquete gc[:no] %>)

</p>

<% end %>

Voce pode remover vote.html.erb ja que nenhuma renderizacao e realizadapela acao correspondente.

Agora, reinicie seu programa e navegue para http://localhost:3000/enquete.Voce devera ver as 2 enquetes e podera votar nelas:

Figura 4.2: Vefificacao

Observe que os resultados da enquete sao zerados a cada pedido se voce naoexecutar o programa no modo de producao, ja que nosso ”modelo”de enquete earmazenado numa variavel de classe nesse exemplo.

4.3.4 Estendendo menus

Nosso controlador funciona perfeitamente mas os usuarios tem de saber a urlpara ver a enquete. Usando o plugin API do Redmine, voce pode estender osmenus padrao. Entao vamos adicionar um novo item ao menu de programas.

Estendendo o menu de programas

Edite init.rb na raiz do seu diretorio de plugin para adicionar a linha seguinteno final do bloco ”plugin registration”:

64

Page 66: Manual Redmine

Redmine::Plugin.register :redmine_enquete do

[...]

menu :application_menu, :enquete, { :controller => ’enquetes’, :action => ’index’ },

:caption => ’Enquetes’

end

A sintaxe e:

menu(nome_do_menu, nome_do_item, url, options={})

Existem 4 menus que voce pode estender:

• :top_menu - menu superior esquerdo

• :account_menu - menu superior direito com links de entrar e sair

• :application_menu - menu principal mostrado quando o usuario nao estadentro do projeto

• :project_menu - menu principal mostrado quando o usuario esta dentrodo projeto

As opcoes disponıveis sao:

• :param - a chave de parametro que e usada para a identificacao do projeto(padrao e :id)

• :if - uma Proc que e chamada antes de renderizar o item, o item pemostrado somente se retornar true

• :caption - o texto explicativo do menu pode ser:

– um Sımbolo string localizado

– uma String

– uma Proc que pode tomar o projeto como argumento

• :before, :after - especifica onde o item do menu deve ser inserido (ex.:after => :activity)

• :last - se marcado para true, o item ficara no final do menu (ex. :last => true)

• :html_options - uma lista de opcoes html que sao passadas para link_toquando renderizando um item do menu

Em nosso exemplo, adicionamos um item ao menu do programa o qual estavazio por padrao. Reinicie o programa e va para http://localhost:3000:

Agora voce pode acessar a enquete clicando na aba de Enquetes da tela deboas vindas.

65

Page 67: Manual Redmine

Figura 4.3: Menu de aplicacao

Estendendo o menu do projeto

Agora, vamos considerar que a enquete e definida no nıvel do projeto (mesmoque este nao e o caso em nosso exemplo modelo de enquete). Entao, ao inves,poderıamos adicionar a aba Enquetes ao nosso menu do projeto. Abra init.rbe substitua a linha que foi adicionada logo antes dessas 2 linhas:

Redmine::Plugin.register :redmine_enquete do

[...]

permission :enquete, {:enquetes => [:index, :vote]}, :public => true

menu :project_menu, :enquete, { :controller => ’enquetes’, :action => ’index’ },

:caption => ’Enquetes’, :after => :activity, :param => :project_id

end

A segunda linha adiciona nossa aba Enquetes ao menu do projeto, logo antesda aba Atividades. A primeira linha e requerida e declara que nossas 2 acoes doControladorDeEnquetes sao publicas. Vamos voltar depois para explicar issocom mais detalhes.

Reinicie o programa novamente e va para um dos seus projetos:

Figura 4.4: Menu do projeto

Se voce clicar na aba Enquetes, voce devera notar que o menu do projeto naoesta mais sendo mostrado. Para fazer o menu do projeto visıvel, voce temqueinicializar a variavel de instancia do controlador @project.

Edite seu ControladorDeEnquetes. Para faze-lo:

def index@project = Project.find(params[:project_id])@enquete = Enquete.find(:all) # @project.enquetes

end

A identificacao do projeto esta disponıvel no parametro :project_id porcausa da opcao :param => :project_id na declaracao de item do menu acima.

Agora, voce deve ver o menu do projeto enquanto estiver vendo a enquete:

66

Page 68: Manual Redmine

Figura 4.5: Menu do enquete

4.3.5 Adicionando novas permissoes

Por enquanto, qualquer pessoa pode votar na enquete. Vamos faze-la mais con-figuravel trocando a declaracao de permissoes. Vamos declarar 2 permissoes combase em projetos, uma para ver a enquete e outra para votar. Essas permissoesnao sao mais publicas (a opcao :public => true foi removida).

Edite init.rb para substituir a declaracao de permissoes anterior com essas2 linhas:

permission :view_enquete , :enquete gcs => :indexpermission :vote_enquete , :enquete gcs => :vote

Reinicie o programa e acesse http://localhost:3000/roles/report:

Figura 4.6: Relatorio de permissoes

Voce agora e capaz de dar essas permissoes para as funcoes existentes.Claro, alguns codigos precisam ser adicionados ao ControladorDeEnquetes

para as acoes serem, de fato, protegidas de acordo com a permissao do usuarioatual. Para isso, precisamos somente adicionar o filtro :authorize e ter certezaque a variavel de instancia @project esta devidamente configurada antes dechamar esse filtro.

E assim que se pareceria a acao #index:

class PollsController < ApplicationController

unloadable

before_filter :find_project, :authorize, :only => :index

[...]

def index

@enquete = Poll.find(:all) # @project.enquete gcs

end

[...]

67

Page 69: Manual Redmine

private

def find_project

# a variavel @project deve ser configurada antes de chamar o filtro de autorizac~ao

@project = Project.find(params[:project_id])

end

end

Retomar o projeto atual antes da acao #vote pode ser feito usando um modosimilar. Depois disso, visualizar e votar nas enquetes somente estara disponıvelpara usuarios admin ou usuarios que tem uma funcao apropriada no projeto.

4.3.6 Criando um modulo de projeto

Por agora, a funcionalidade da enquete e adicionada para todos seus projetos.Mas voce podera querer habilitar enquetes para somente alguns projetos. Entao,vamos criar um modulo de projeto ’Enquete’. Isso e feito incluindo as declaracaode permissoes dentro da chamada do #project_module.

Edite init.rb e mude a declacao de permissoes:

project_module :enquete dopermission :view_enquetes, :enquetes => :indexpermission :vote_enquetes, :enquetes => :vote

end

Reinicie a aplicacao e va para uma das suas configuracoes do projeto. Cliquena aba Modulos. Voce devera ver o modulo Enquetes no final da lista de modulos(desabilitada por padrao):

Figura 4.7: Definicoes dos modulos

Voce pode agora habilitar/desabilitar enquetes em nıvel de projeto.

4.3.7 Melhorando a visualizacao de plugins

Adicionando folhas de estilo

Vamos comecar adicionando uma folha de estilo para nossa visualizacao do plu-gin. Crie um arquivo chamado voting.css no diretorio assets/stylesheetsdo seu plugin

68

Page 70: Manual Redmine

a.vote { font-size: 120%; }a.vote.yes { color: green; }a.vote.no { color: red; }

Quando iniciar seu programa, as propriedades do plugin sao automaticamentecopiadas para public/plugin_assets/redmine_enquete / pela Engine Railspara faze-las disponıveis atraves do seu servidor web. Entao qualquer mudancanas folhas de estilo ou javascript do plugin requerem um reinıcio do programa.

Entao, adicione as seguintes linhas ao final de app/views/enquetes/index.html.erbpara que sua folha de estilo seja incluıda no cabecalho da pagina pelo Redmine:

<% content_for :header_tags do %><%= stylesheet_link_tag ’voting’, :plugin => ’redmine_enquetes’ %>

<% end %>

Observe que a opcao :plugin => ’redmine_enquetes’ e necessaria quandochamar o ajudante stylesheet_link_tag.

Javascripts podem ser incluıdos na visualizacao de plugins usando o ajudantejavascript_include_tag da mesma forma.

Configurando o tıtulo da pagina

Voce pode configurar o tıtulo HTML de dentro da visualizacao usando o aju-dante html_title helper. Exemplo:

<% html_title "Polls" -%>

69