Instalar dotProject

Publicado: 30/04/2023 em Programação, Serviços IP
Tags:, , ,

1)Ambiente inicial (que iremos alterar)
$ apt-cache policy mysql-server
mysql-server:
Instalado: 8.0.32-0ubuntu0.22.04.2

$ php -v
PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies

$ apachectl -v
Server version: Apache/2.4.52 (Ubuntu)

2) Selecionar a língua default para o sistema (pt_BR.UTF-8)
$ echo $LANG
# apt-get install locales
# dpkg-reconfigure locales
…selecionando pt_BR.UTF-8 UTF-8

3) Atualizar data e hora do servidor
# dpkg-reconfigure tzdata

Para verificar:
# date
Dom Set 17 13:14:05 -03 2017

4) Instalar complementos do PHP
# php -v
PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
# apt install php-mbstring php-gd php-zip php-cgi php-xml php-intl

5) Definir parâmetros do PHP
# vim /etc/php/8.1/apache2/php.ini
memory_limit 128M
session.auto_start = 0
session.use_trans_sid = 0
date.timezone = America/Sao_Paulo

6) Preparar base de dados
mysql> create database nome_base;
mysql> CREATE USER nome_usuario@localhost IDENTIFIED BY 'senha_escolhida';
mysql> GRANT ALL PRIVILEGES on nome_base.* to 'nome_usuario'@'localhost';
mysql> FLUSH PRIVILEGES;

7)Baixar o pacote e já desempacotá-lo a partir da pasta raiz do virtualhost
https://sourceforge.net/projects/dotproject/ (dotProject-2.2.0.zip)

8) Criar um HostVirtual para a aplicação: /etc/apache2/sistes-available/dotproject.conf


<VirtualHost *:80>
   ServerAdmin info@exercicio.com.br
   DocumentRoot /var/www/html/project/
   ServerName dotproject
   ServerAlias www.dotproject.exercicio.com.br
   <Directory /var/www/project/>
      Options FollowSymLinks
      AllowOverride All
   </Directory>
</VirtualHost>

# a2ensite dotproject.conf
# /etc/init.d/apache2 restart

9) Instalar PHP7.4
Obs: no momento deste post o dotProject estava incompatível com o PHP8. Vamos usar o php7.4
# add-apt-repository ppa:ondrej/php && sudo apt update
# apt-get install php7.4 php7.4-mysql libapache2-mod-php7.4 php7.4-mbstring php7.4-gd php7.4-zip php7.4-xml php7.4-intl
# update-alternatives --set php /usr/bin/php7.4
# a2dismod php*
# a2enmod php7.4
# systemctl restart apache2
# update-alternatives --set php /usr/bin/php7.4
# php -v
PHP 7.4.33 (cli) (built: Feb 14 2023 18:31:54) ( NTS )
# apt show php7.4 -a
add-apt-repository ppa:ondrej/php --remove

Obs: de forma alternativa, para listar as alternativas de versões PHP instaladas e poder fazer a escolha desejada, utilize o comando update-alternativas acima da seguinte forma:
# update-alternatives --config php

10) Instalar módulo português do dotProject (na pasta “locales” da instalação do dotProject)
No momento da publicação deste post, baixar o arquivo dotProject-2.2.0.zip disponível em https://sourceforge.net/projects/dotmods/files/
Obs: a instalação deve gerar a pasta locales/pt_br, com os arquivos necessários dentro desta pasta.

11) Acertar os privilégios das pastas e dos arquivos
a) Fazer todos os diretórios terem modo 755
find . -type d -exec chmod 755 {} \;

b) Fazer todos os arquivos terem modo 644
find . -type f -exec chmod 644 {} \;

12) Acessar a url do projeto e fazer a instalação/configuração da aplicação
http://endereco/project

Tela inicial de Instalação do dotProject

13) Fornecer as Informações de configuração da base de dados

Configuração da base de dados do dotProject

14) Remover pasta de instalação do dotProject (por segurança)
Após instalação ser bem sucedida, remover pasta de instalação:
# rm -R install

15) Aplicar patches
a) Modificar o código em modules/files/index_table.php na linha 172:
DE
$q2->addGroup('f.file_version_id DESC');

PARA
$q2->addGroup('f.file_version_id');
$q2->addOrder('f.file_version_id DESC');

b) modules/tasks/todo.php linha 137:
$q->addWhere( "ta.task_start_date is not null AND ta.task_start_date != '0000-00-00 00:00:00'" );

c) modules/tasks/tasks.php line 232: "AND (task_percent_complete < 100 OR task_end_date is null) "
e linha 240 "AND (task_percent_complete < 100 OR task_end_date is null) "

d) No arquivo baixado do locale português faltou o seguinte arquivo: lang.php
Se ele não existir na pasta locales/pt_br, crie o arquivo com o seguinte conteúdo:

<?php
$dir = basename(dirname(__FILE__));
$LANGUAGES["pt_br"] = array ($dir, "Português", "Português", "pt_br");
?>

e) No arquivo baixado do locale português faltou o seguinte arquivo: locales.php
Se ele não existir na pasta locales/pt_br, crie o arquivo com o seguinte conteúdo:

<?php
//$locale_char_set = 'iso-8859-1';
$locale_char_set = 'utf-8';
// 0 = sunday, 1 = monday
define('LOCALE_FIRST_DAY', 0);
define('LOCALE_TIME_FORMAT', '%I:%M %p');
?>

 

16) Configurar para o português
Em System Admin -> System Configuration, mudar a caixa “Host Locale” para pt_br, conforme figura abaixo.

Configurar dotProject para locale pt_br

 

Depois fazer System Admin -> Default User Preferences, e mudar a caixa “Locale” para Português, conforme figura abaixo.

Configurar opção de idioma para o português.

 
Pronto. Fazer logout e quando fizer novamente login o dotProject já estará no idioma Português.

17) Complementação da tradução para o português
Algumas mensagens continuaram em língua inglesa mesmo após da utilização dos arquivos de traduções. Abaixo uma lista de outras mensagens que necessitaram de serem inseridas nos arquivos de tradução:
a) No arquivo locales/pt_br/system.inc:
"Add a new Custom Field to this Module"=>"Adicionar um novo Campo personalizado a este Módulo",
"Billing Code Table"=>"Tabela de códigos de cobrança",
"custom fields"=>"campos personalizados",
"Custom Field Editor"=>"Editor de campo personalizado",
"Custom field editor"=>"Editor de campo personalizado",
"Custom Fields - Add/Edit"=>"Campos Personalizados - Adicionar/Editar",
"default user preferences"=>"Preferências Padrões do Usuário",
"Default User Preferences"=>"Preferências Padrões do Usuário",
"Field Description"=>"Descrição do Campo",
"Field Display Type"=>"Tipo do campo",
"Field Name/Identifier"=>"Nome/Identificador do Campo",
"HTML Tag Options"=>"Opções de Tags HTML",
"Import Contacts"=>"Importar Contatos",
"List of Options"=>"Lista de Opções",
"New Custom Field In"=>"Novo Campo Personalizado no",
"System Configuration"=>"Configuração do Sistema",
"system configuration"=>"Configuração do Sistema",
"(No Spaces)"=>"(Sem Espaços)",
"Checkbox"=>"Caixa de Selecao",
"Select List"=>"Lista Escolha",
"Separator"=>"Separador",
"Text Input"=>"Entrada de Texto",
"Text Area"=>"Area de texto",

b) No arquivo locales/pt_br/common.inc
"End"=>"Fim",
"no departments"=>"Não há departamentos",
"Search"=>"Procurar ",
"Start"=>"Início",

c) No arquivo locales/pt_br/projects.inc
"All Projects"=>"Todos Projetos",
"All Users"=>"Todos Usuarios",
"All w/o in progress"=>"Todos w/o em progresso",
"Assigned Users"=>"Usuarios Atribuidos",
"Attach a file"=>"Anexe um arquivo",
"Collapse"=>"Recolher",
"Comments"=>"Comentarios",
"Cost Code Filter"=>"Filtro de codigo de custo",
"Division"=>"Divisao",
"Done"=>"Feita",
"Events"=>"Eventos",
"Expand"=>"Expandir",
"Future Task"=>"Tarefa Futura",
"Go"=>"Executar",
"Hide 100% Complete"=>"Ocultar 100% Completa",
"Hide Inactive"=>"Ocultar Inativa",
"Incomplete Tasks Only"=>"Apenas Tarefas Incompletas",
"Internal Company"=>"Empresa Interna",
"Key"=>"Filtro",
"Move to Folder"=>"Mover para a Pasta",
"Move to Project"=>"Mover para o Projeto",
"My projects"=>"Meus Projetos",
"new event"=>"novo evento",
"new file"=>"novo arquivo",
"new forum"=>"novo forum",
"New Log"=>"Novo Log",
"No Project Association"=>"Nenhuma Associacao a Projeto",
"One Level"=>"Um Nivel",
"organize tasks"=>"organizar tarefas",
"Overdue"=>"Atrasada",
"Priority"=>"Prioridade",
"Project Hours"=>"Horas do Projeto",
"Scheduled Hours"=>"Horas Programadas",
"Should have started"=>"Deveria ter iniciado",
"show all"=>"Mostrar Tudo",
"Show Archived"=>"Mostrar Arquivado",
"Show captions"=>"Mostrar legendas",
"Show Tasks"=>"Mostrar Tarefas",
"Show work instead of duration"=>"Mostrar trabalho em vez da duracao",
"Sort by Task Name"=>"Classificar por Nome da Tarefa",
"Sort Tasks By Name"=>"Classificar Tarefas Por Nome",
"Started and on time"=>"Iniciadas e Em Dia",
"Task Logs"=>"Logs de Tarefas",
"Task Owner"=>"Dono da Tarefa",
"Template"=>"Modelo",
"User Filter"=>"Filtro de Usuario",

d) No arquivo locales/pt_br/companies.inc
"Owner filter"=>"Filtro de proprietario",
"Reset search"=>"Redefinir pesquisa",

e) No arquivo locales/pt_br/tasks.inc
"Additional Email Comments"=>"Comentários Adicionais por e-mail",
"Daily Working Hours"=>"Horas Diárias de Trabalho",
"Dates"=>"Datas",
"Dependencies"=>"Dependencias",
"Dependency Tracking"=>"Rastreamento de Dependência",
"Done"=>"Completa",
"Do not track this task"=>"Não rastreie esta tarefa",
"Human Resources"=>"Recursos Humanos",
"my pinned tasks"=>"minhas tarefas fixadas",
"Set task start date based on dependency"=>"Defina a data de início da tarefa com base na dependência",
"Should have started"=>"Deveriam ter iniciadas",
"Task Owner"=>"Dono da Tarefa",
"Tasks depending on this Task"=>"Tarefas que depende desta Tarefa",
"tasks per user"=>"tarefas por usuario",
"Task Type"=>"Tipo da Tarefa",
"Working Days"=>"Dias Úteis",

f) No arquivo locales/pt_br/calendar.inc
"Event Filter"=>"Filtro de Evento",
"All Events"=>"Todos Eventos",
"Dynamic Tasks"=>"Tarefas Dinamicas",
"Empty Dates"=>"Datas Em Aberto",
"Events I Created"=>"Eventos Eu Criei",
"My Tasks"=>"Minhas Tarefas",
"Pinned Only"=>"Fixado Apenas",
"Projects on Hold"=>"Projetos em Espera",
"Selection"=>"Selecionar",
"Show Events for"=>"Mostrar Eventos para",
"Show Todo for:"=>"Mostrar Tarefas para: ",
"Sun"=>"Dom",
"Mon"=>"Seg",
"Tue"=>"Ter",
"Wed"=>"Qua",
"Thu"=>"Qui",
"Fri"=>"Sex",
"Sat"=>"Sab",
"Sunday"=>"Domingo",
"Monday"=>"Segunda-feira",
"Tuesday"=>"Terça-feira",
"Wednesday"=>"Quarta-feira",
"Thursday"=>"Quinta-feira",
"Friday"=>"Sexta-feira",
"Saturday"=>"Sábado",
"March"=>"Março",
"April"=>"Abril",
"May"=>"Maio",
"June"=>"Junho",
"July"=>"Julho",
"August"=>"Agosto",

g) No arquivo locales/pt_br/files.inc
"All Files"=>"Todos Arquivos",
"Application"=>"Aplicação",
"Category"=>"Categoria",
"Document"=>"Documento",
"Folder"=>"Pasta",
"Folder Explorer"=>"Explorar Pastas",
"Move to Folder"=>"Mover para a Pasta",
"Move to Project"=>"Mover para o Projeto",
"new folder"=>"Nova Pasta",
"No Project Association"=>"Nenhuma Associacao a Projeto",
"No Result(s)"=>"Sem Resultado(s)",
"Task Name"=>"Nome da Tarefa",
"Unknown"=>"Desconhecido",
"Versions"=>"Versoes",

h) No arquivo locales/pt_br/admin.inc
"back"=>"Voltar",
"Confirm Password"=>"Confirme a Senha",
"Company"=>"Empresa",
"Inform new user of their account details?"=>"Informar o novo usuário sobre os detalhes da conta?",
"User Role"=>"Papel do Usuário",
"Password"=>"Senha",
"Required Fields"=>"Campos Obrigatórios",
"select dept"=>"Selecione Dept.",
"show all"=>"Mostrar todos",
"show this month"=>"Mostrar este mês",
"sort by"=>"ordenar por",
"submit"=>"Enviar",

i) No arquivo locales/pt_br/ticketsmith.inc
"Open Ticket Report"=>"Relatorio de Chamado Aberto",
"Open Tickets"=>"Chamados Abertos",
"Report as PDF"=>"Relatório em PDF",

Referências:
1- Correções no locales pt_br

Deixe um comentário, pois isto é muito motivante para continuarmos este trabalho