manual redmine
Post on 27-Dec-2015
368 Views
Preview:
TRANSCRIPT
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
Sumario
1
Lista de Figuras
2
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
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
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
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
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
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
• 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
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
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
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
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
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
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
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
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
• 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
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
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
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
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
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
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
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 username=redmine@somenet.foo 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 username=redmine@somenet.foo 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
rake redmine:email:receive\textit{imap RAILS}ENV="production" \\
host=imap.foo.bar username=redmine@somenet.foo 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
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
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
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
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
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
• 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
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
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
• 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
• 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
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
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
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
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
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
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
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
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
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
Figura 3.14: Nova requisicao
Figura 3.15: Barra lateral de requisicoes customizadas
Figura 3.16: Menu de Atalhos
46
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
• 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
top related